Совсем недавно начал вникать в java, применительно к системе Android.
Возник один очень глупый (с позиции специалиста) вопрос: Как пишутся приложения/программы на языках программирования?
Я понимаю, что есть литература и самоучители. Но вот это и есть главная часть вопроса - где можно почитать про написание полноценных программ на java? Все книги обычно описывают простейшие действия из серии привет мир. Хотелось бы понять, как например на той же java пишется игра? Что вообще можно погуглить про это? По подобным запросам выдается море учебников почти стандартных. И, согласитесь, что зная действия с массивами, я вряд ли пойму логику работы графического редактора :)
Т.е между реальным применением языка и типичным самоучителем гигантская пропасть. Как преодалеть эту пропасть?
Отличное замечание! Процитирую по этому поводу Стивена Скиену:
Научившись мыслить рекурсивно, вы научитесь определять большие сущности, состоящие из меньших сущностей точно такого же типа, как и большие. Например, если рассматривать дом как набор комнат, то при добавлении или удалении комнаты дом остается домом.
Uzumeti, занавес приоткрывает критическая масса опыта и знаний. Нет сакрального учебника ведущего к просветлению, есть пара десятков обычных учебников и три года работы ведущие к просветлению.
Вам нужны базовые знания языка, принципов и парадигм программирования. С ними вы сможете писать программы даже не читая ничего по прикладным аспектам разработки. Без них вы не сможете осознать учебник или статью из практической области.
Спасибо, очень полезно. Основы языка я знаю где почерпнуть, а где вот такие парадигмы скрываются :)? Где вот эта часть описывается? Как такого рода литература называетсч обычно?
Офис...эх, я и так в офисе к большому несчастью. Не скажу, что профессиональный рост в такой среде сильно возможен. Как правило, есть задача и ее нужно каким-то образом решить. Немного получилось продвинуться по веб-программированию, но лишь благодаря морю примеров, а не понимания основ применения языков для решения :)
И, согласитесь, что зная действия с массивами, я вряд ли пойму логику работы графического редактора :)
А почему бы не предположить, что графический редактор работает с двумерным массивом, у которого по горизонтали 1024, по вертикали 768, каждый элемент может принимать значение от 0 до 65535?
Вот вам и логика работы графического редактора - заполнять массив разными цифрами.
Основы и есть все что железобетонно необходимо знать, все опирается на это.
Как пример что вы привели массивы и графический редактор.
Если взять за основу 3д редактор то выйдет следующее. Утрированно все работает на этих массивах. Модель состоит из массива точек, еще один массив описывает соединения точек из первого массива в полигоны, дальше еще один массив описывает координаты текстурной развертки по этим полигонам. Все операции в том или ином виде идут над этими массивами, причем как правило они весьма простые но математические.
В общем учите основы, дальше уже берите книжки с уклоном что вам нравится, если графика то по большей части это будут книги не языковые а матан,геометрия и т.д. .Если хочется в сеть то для начала книжку про то как это устроено, спецификации и стандарты, потом уже можно взять книжку именно по java и сетям и дело пойдет очень легко.
Любая программа даже самая огромная в конечном счете состоит из множества простейших участков кода основ.
Спасибо большое за развернутый ответ! Я примерно это так и представляю. Остается к Вам вопрос :) Что имеет смысл почитать для появления навыка решения всяческих задач? Как такие книги искать? Мне почему-то при поисках учебников ничего такого не попадалось. Только основы, напоминающие курс школьной информатики :)
Uzumeti, для начала любую удобную книгу по основам и базовым вещам java. Практически любая книга пойдет. Т.е. обязательно изучить коллекции, примитивные типы явы и их особенности, классы,интерфейсы,абстрактные классы. Object, как он устроен и его базовые методы. Обязательно строки, как они работают,хранятся. Алгоритмы математические вы и так должны знать или можете изучить из школьного\институтского курса и они универсальны. Дальше самое интересное и крайне необходимое то что многие пропускают, сразу покупайте и читайте "Паттерны проектирования" авторства "Элизабет Фримен, Эрик Фримен, Кэти Сиерра, Берт Бейтс ". После прочтения отпадет огромная куча вопросов и придет полное понимание и назначения интерфейсов\классов\абстрактных классов, событийной системы. Кроме того придет понимания работы уже любой огромной программы.
Касательно андроида, лучше сначала вникайте в обычную java se и пишите\пробуйте все на win\linux. В андроиде есть куча нюансов и java там не совсем java.
Про андройд...Да, снаскока что-то не особенно получилось осилить. Как раз заметил, что почему-то нет четкого соответствия. Она там вроде java в среде разработки, а вроде и нет :) Даже пытался на котлин перелезть, его поковырять, но там совсем темный лес. Потому, собственно, и был сформулирован вопрос, на который Вы отвечаете.