На каких языках написаны игры. Я хочу делать игры. Какой язык программирования выбрать? Java - основное средство для Android-разработчика

Получил недавно в очередной раз вопрос, который слышу достаточно часто. Это вопрос про то, что надо знать, чтобы программировать игры.
И решил в этот раз не отвечать частным образом, а написать пост с моим ответом - в следующий раз буду просто давать ссылку на него всем интересующимся.
Обычно вопрос стандартен и банален: хочу делать игры, что изучать?
Но в этот раз вопрос задан в интересной форме, так что, думаю, будет интересно почитать и вопрос и ответ вместе.

Java - основное средство для Android-разработчика

Начнем с основ: документации, инструкций для языков программирования. Поскольку они являются основной ссылкой программистов, многие языки уже зарегистрированы на португальском языке, но другие - нет. Если языки с миллионами поклонников имеют только документацию на английском языке, что вы ожидаете от всех тысяч других технологий, таких как рамки, библиотеки, плагины и компоненты? Правильно: все на английском.

Поскольку большинство переводов являются результатом добровольной работы, вы будете зависеть от доброй воли других бразильцев, чтобы иметь доступ к документации на португальском языке. С другой стороны, если вы владеете английским языком, вам не нужно ждать ни того, ни другого, чтобы узнать все о технологии, которую вы хотите изучить.

Итак, полный вопрос и мой ответ.

Вопрос:

Хочется задать вопрос, которым тебя мучают наверно минимум 2-3 раза в неделю... но он меня мучает не меньше, поэтому все таки задам:)

Коротко:
я хочу делать игры. Какой язык программирования выбрать?:)

Долго:
мне 19 лет, учусь на 2 курсе не программистской специальности в принципе по случайности, о которой теперь немного жалею.
Интерес к играм у меня наверное лет с 3, еще с консолей. И дальше по возрастающей... Потом программирование на паскале, дальше С# уже на первом курсе универа. Но это все лирика, уровень был, как можно догадаться крайне низким.
Год назад мне захотелось понять, смогу ли я "поработать программистом". Выбрал то, что интересовало на тот момент и было попроще - вебдев. Надо сказать, что веб меня увлек, теперь у меня есть довольно раскрученный аккаунт на одной из бирж для таких же code monkeys как и я:) Получил неплохие знания в области, в программировании, прочитал кучу книг...
В общем вроде бы ничего плохого, но недавно все таки понял, что удовольствия от этого никакого. Примитивный (в большинстве случаев), слишком "нишевые" задач, низкая оплата да и сам код - по уровню сложности в среднем это "записки веб дизайнера", а не что-то серьезное. Теперь мне даже кажется, что я впустую потратил почти целый год - графика, физика - это совсем другая область, насколько мне удалось поверхностно ознакомиться, которая требует знаний математики, геометрии. Php, sql, js были по сути бесполезной тратой времени.
Не хочу еще раз так же "промахнуться" - посоветуй, что стоит, а что не стоит изучать? И, если не затруднит, немного аргументов и парочку основных книг. Я понимаю, что направлений в геймдеве море и я задаю слишком общие вопросы, чтобы на них ответить, но всё-таки:)
Сейчас я начал с си++, многие (и ты тоже, по-моему) рекомендуют его для игр. С другой стороны, после твоего ответа о перспективности java и дотнета в интервью я как то начал сомневаться в правильности.
В общем, так как твое мнение мне очень интересно, я надеюсь, что ты посоветуешь мне что-нибудь:)

Другим источником очень распространенного запроса являются блоги. Часто у них есть идеальное решение проблемы, которую вы пытаетесь решить, главным образом потому, что автор - программист, подобный вам, и публикует решение для экономии времени и волос у своих коллег. Это функция как для продвинутых тем, так и для плохо документированных функций.

Однако даже блоггеры, которые не родились в англоязычных странах, часто пишут свои блоги на английском языке. Причина проста: потому что на английском языке гораздо больше контента, спрос на английский контент гораздо выше. Технологии рождаются и умирают в одночасье, но это «язык», который вы будете использовать всю оставшуюся жизнь, будь то писать более сплоченный код, изучать новые языки программирования или завоевывать мир.

Ответ:
Действительно, направлений в геймдеве столько, что порекомендовать один язык, казалось бы сложно. Но на самом деле - нет.
Сейчас большинство игр делаются на C++ или C. Так что обычно требуется знание именно этих языков.
В то же время есть целые направления в геймдеве, где C++ вообще неважен - это браузерки и flash-игры. Там уже и опыт web-разработки бы не помешал. Я про эти направления знаю мало, поэтому посоветовать ничего не могу.
Есть еще огромный рынок казуалок, которые можно писать на чем угодно, например, на том же Java или на C#. Языки простые, а наличие бесплатных библиотек типа XNA делает их реально интересными платформами для разработки игр.
Кроме этого, все больше и больше программистов в геймдеве используют только скриптовые языки для работы - Lua, Python, Unreal script:) Они очень просты и специфичны - зависят от проекта. Любому программисту, имхо, изучить такой скрипт-язык под проект - плёвое дело. И, судя по вакансиям "требуется программист-скриптер", можно работать в геймдеве зная только скриптовые языки.

И посмотрите, как круто: вы будете лучше, чем очень гринго, потому что многие из них знают только, как говорить по-английски. В контексте хорошей практики развития спорным моментом является выбор языка для кодирования. Похоже, в нашей области довольно распространенное видение, что программирование на английском языке - лучший вариант.

Напишите в своем коде английские имена. Меня не волнует, если вы бразильский, итальянский, французский или любой другой. Имена классов, переменных, методов, все должно быть на английском языке. Мы находимся в глобализованном мире, чтобы не задумываться слишком далеко, что завтра американец будет возиться со своим кодом на португальском языке. В дополнение к проблеме согласованности: синтаксис языка, все стандартные библиотеки, все на английском языке. Это огромный когнитивный диссонанс, чтобы иметь имена на португальском языке между ними.

В итоге, я бы посоветовал сначала определиться с конечной целью. Если цель - работать в геймдеве, то стоит изучить C++ и потратить полгода-год на написание собственных маленьких игр. Хотя бы тетрисов, змеек, пятнашек и т.п. Это даст вам опыт разработки и завершения проектов, пусть и небольших. Вы изучите хоть какой-то набор базовых алгоритмов. А также наличие таких проектиков - это большой плюс на собеседовании.
Если ваша цель - создать игру-шедевр в одиночку или с минимальной командой, то изучайте flash или C# с XNA в зависимости от типа игры.
Кроме того, какой бы язык и направление вы не выбрали - регистрируйтесь и начинайте читать все профессиональные сайты, чтобы быть в курсе дел индустрии. Также на всех этих сайтах полно статей и профессиональных постов, которые позволят вам избежать многих граблей и велосипедов.
Вот несколько таких сайтов навскидку.

Это похоже на то, что вы читаете португальский журнал с несколькими абзацами на английском языке посередине. Это не так сложно, так как вы можете использовать переводчиков и словари, чтобы найти для них лучшее описание. Или вы можете создавать выражения с английскими терминами, используя синтаксис Португалии. Способ использования существительных, глаголов и прилагательных путают. Результирующим языком может быть индийский английский, но это не английский.

Короче говоря, команда, которая имеет поверхностную команду по-английски, обязательно производит плохой английский, потому что она не знает «лозунгов», которые может представить язык. Но есть еще: общеизвестно, что программисты тратят больше времени на чтение кода, чем написание. И любой программист с любым опытом согласен, что чтение кода намного сложнее, чем писать. Заставляя некоммерческую команду на английском языке работать с базой кода, написанной на этом языке, мы будем поднимать барьер, необходимый для понимания кода, что затрудняет поддержание и увеличение вероятности ошибок.

Из письма: "Здравствуйте! Никак не могу решиться, какой язык мне лучше начать серьёзно учить (немного знаю pascal (Delphi) и C), в основном хотелось бы писать программы под линукс, но и под другие системы тоже. Так как Си уже отмирает, то не знаю что выбрать: С++ или Java. Помогите, пожалуйста, с выбором, может вообще учить что-нибудь другое, неважно что, сложнее или легче, мне важнее что лучше и нужнее… "

Ваш проект имеет уникальные функции, которые нельзя игнорировать

На мой взгляд, первая причина в том, что большинство этих людей на самом деле не хотят этого. Его нынешний проект, вероятно, имеет уникальные характеристики, которые ни я, ни Фабио Акита, ни Тьяго Мотта, ни кто-либо еще не знают. Мы не знаем уровень владения английским языком вашей команды и домен вашего приложения.

Мы также не знаем масштаб вашего проекта, если все сотрудники бразильские или если есть люди из других стран, перспективы продажи компании многонациональной компании и т.д. То есть: существует ряд факторов, которые могут и должны приниматься во внимание при принятии той или иной практики, той или иной методологии. В это время вы должны проявлять свой критический смысл: держите открытым сознание, когда речь заходит о чтении, исследовании и возникновении противоречивых мнений, но используйте свой здравый смысл и опыт, чтобы отфильтровать и решить, что подходит вашей компании, команде и культуре проекта.

Ответ 1: Я бы не сказал, что Си умирает. Для того чтобы писать на C++ и C#, нужно знать чистый Си. Ведь язык-то тот же, только добавилось объектно-ориентированное программирование. Зная Си, вы без труда освоите и Java, и C++, и C#. Ведь они все по своей сути базируются на си. Изучать новые языки намного легче, если вы уже знаете какой-то (в вашем случае Паскаль и Си). Сейчас входит в моду язык C# и J#. Советую вам установить на компьютер Microsoft Visual Studio и Borland JBuilder. И начать изучать эти языки. Так как это переносимые языки, то у них большое будущее. В частности Java используется очень широко для мобильных ОС.

Пытаться предсказать будущее - это непротиворечивость

Будет ли это в один прекрасный день заказчиком? И там вы видели: бесполезные таблицы создаются в базе данных, классах и других классах и формах и экранах и намного больше мусора, забивающего ваш проект. Пытаться предсказать любые изменения в дизайне - это непротиворечивость. Гибкие команды делают небольшие шаги, внедряя истории с приоритетами клиентов и ничего больше. Когда изменения требований меняются вместе с ними.

Короче: здравый смысл - это ключ

Давайте сделаем все код и таблицы на английском языке! Основываясь на всем, что вы прочитали, мое мнение сегодня таково: старайтесь всегда использовать английский, за исключением случаев, когда есть веские причины не использовать его. Все на английском языке, за исключением случаев, когда есть явные преимущества при использовании португальского языка.

Ответ 2: На самом деле и с C++ и с Java — работу найдешь легко, если будешь разбираться на должном уровне. Если хочешь «кодить» под Linux – лучше, конечно, С++, просто в исходниках сможешь разбираться, да и «кодить» тоже, разумеется. При этом, после С++ пересесть на Java проблем, думаю, не составит, если жизнь заставит, языки очень похожие! На мой взгляд с хорошим знанием С++ можно будет перейти на что угодно и разобраться с любой технологией.

Если ситуация противоположна ситуации, описанной выше, без сомнения, английский. Если с самого начала проекта есть уверенность, что приложение будет доступно для нескольких стран, вам нужно будет работать на интернационализации, все: спецификации, помощь, графический интерфейс. В этом случае нет причин не кодировать на английском языке.

Ключевым моделям, связанным с технологией, являются те, которые сегодня предлагают большинство рабочих мест. Только этим аргументом преподавание языка программирования с детства было бы оправдано. Но так называемое вычислительное мышление, разработанное с помощью овладения этим «языком», по мнению педагогов, является одним из инструментов творчества и более авторитетных проектов в профессиональной и личной жизни. Даже для тех, кто не очень любит номера.

Ответ 3: Если под Юникс системы, то С однозначно. Под него можно на всех (почти) языках программировать, но "родной" для него все-таки лучше. А вообще это только первое время для тебя будет большое различие между Си и Делфи — когда поймешь, как это работает в одном языке, то поймешь это и в другом.

Ответ 4: Я думаю, что лучше тебе остановить выбор на СИ++… И под Linux много что можно написать, и постепенно изучать Visual для качественного программирования под Windows.

Через набор кодов программист извлекает именно то, что он хочет с компьютера. Это похоже на диалог на языке, который может напугать мирян, но который присутствует в повседневной жизни каждого человека. «Нет промышленности, которая не затрагивается компьютерами», - сказал Джордан Будисантозо, профессор Академии лидерства в Вашингтоне, который применяет метод к классам средней школы во время лекции во время Трансформации.

Мир, пронизанный этими связями, является одной из причин, почему это обучение указывается не только для студентов, которые склонны к математике или технологическим гаджетам. Говоря языком программ, вы можете общаться лучше и автономно и иметь больше автономии. Это похоже на то, что больше не нужен переводчик. Я работаю над различными концепциями из виртуальной реальности. Геометрия, пространственное мышление, искусство, все в повседневной жизни студентов. Модные проекты, фильмы и приложения могут родиться от него, - объяснил Будисантозо.

Ответ 5: Важен не язык — важен продукт. То есть конечному пользователю Вашей программы совершенно все равно на чем она написана!

Я все же советую изучать C++, а именно Microsoft Visual C++, причем обязательно с использованием MFC, так как: 1. Классы очень экономят время; 2. Люди получают за это деньги, следовательно, с работой проблем не будет. 3. Как можно увидеть из названия — первое слово везде Microsoft, а это значит, что это актуально.

Мариана Бейлуне Абад, 22 года, составленная в музыке, является примером того, что программирование может переводить и создавать различные интересы. В колледже она занималась созданием саундтрека к играм. Он встречался с разработчиками и сначала неофициально учился у коллег. Он больше учился и с удовольствием пользовался кодами, которые он теперь инструктор супергеков.

Так же, как студент не должен быть чемпионом по математическим олимпиадам, связанным с программированием, учителя, отличные от тех, кто находится в точной области, также могут быть катализаторами вычислительного мышления. Существует два подхода: научиться программировать и программировать, чтобы учиться. В этой части это все: история, португальский.

Я тоже долго метался по оболочкам и языкам — бэйсик, паскаль, с, делфи… Но в конечном итоге остановился на Вижуал С++.

И еще: я не думаю, что Делфи и Вижуал С++ схожи, у них есть свои особенности, взять хотя бы то, что они построены на разных языках, по разному задаются объекты, да и компоненты разные. То есть, выбрав какую либо среду, скорее всего, сможешь пользоваться второй, только ограничено. Теоретически можно две среды выучить, но практически ни одну из них не будешь знать в совершенстве – просто времени не хватит. В общем, от Вашего выбора зависит, в какую ветку портала Вы попадете. Каждый кулик хвалит свое болото! А по сути это все не важно.

Программа, направленная на обучение кодов детям, имеет модели уроков, которые могут применяться учителями, которые не знакомы с предметом. Начало, которое может быть углублено в соответствии с желанием самого педагога. Эти классы охватывают предмет бумагой, ручкой, ножницами и другими общими инструментами. «Вы работаете с повторением, процедурой, абстракцией и разбиваете большую проблему на небольшие проблемы», добавляет Малута. Школы, которые предлагают регулярные быстрые курсы, могут также использовать визуальный язык для работы над программированием с младшими детьми.