Как вы держите все свои языки прямо?

Думаю, я немного с ума сошел.

Прямо сейчас, я работаю со следующими языками (я просто делал умственный инвентарь):

  • С++ - наш игровой движок
  • Ассемблер - низкоуровневая отладка и несколько сопроцессорных подпрограмм
  • Lua - наш язык сценариев игрового движка
  • HLSL - для шейдеров
  • Python - наша система сборки и утилиты.
  • Objective C/С++ - код платформы игрового движка для Mac и iPhone.
  • С# - Несколько инструментов, разработанных в нашем заграничном офисе.
  • Инструменты экспорта ExtendScript - Photoshop
  • ActionScript - скрипт пользовательского интерфейса
  • VBScript - некоторые связанные с электронными таблицами материалы
  • PHP - некоторые связанные с Интернетом вещи.
  • SQL - некоторые материалы, связанные с сетью и инструментами.

В дополнение к этому множество API, которые часто имеют много разных способов сделать одно и то же: библиотека std, boost,.NET, wxWidgets, Cocoa, углеродные, родные script библиотеки для Python, Lua, и т.д., OpenGL, Direct3d, GDI, Aqua, augh!

Я нахожусь в непреднамеренном объединении языков и api, не понимая, что я делаю, пока не получаю синтаксические ошибки. Я чувствую, что не могу идти в ногу с этим, и я не могу быть опытным во всех этих областях. Особенно за пределами С++ и Python, я больше программирую, смотря на руководства, которые из памяти.

У вас есть аналогичная проблема? Идеи для разграничения, чтобы вы были более эффективными? Решив, где вы хотите проявить себя? Организационные советы? Хорошие способы запоминания при переключении с Lua на С++ вам нужно снова начать использовать полуколоны? Опыты насчет того, насколько сложны мы, программисты, сделали вещи для себя?

Любые идеи приветствуются!

Ответ 1

Для любого языка, который я планирую внимательно изучать, я напишу свой собственный синтаксис в Vim. Я стараюсь сделать раскраску строгой, чтобы расцветка воспринимала очевидные ошибки, когда я их печатаю. Это помогает мне вспомнить, где поставить некоторые элементы синтаксиса на случай, если я забуду (так что//не выглядит как комментарий в python, и у меня всегда возникают проблемы с запоминанием, куда положить * или [] на C). Если я не могу вспомнить имя функции или метода, я предполагаю, что это, и если оно появляется в цвете, я знаю, что правильно записал его. Я также стараюсь выбирать разные цвета, чтобы разные языки выделялись друг от друга, это помогает моему мозгу помнить, на каком языке я пишу.

Ответ 2

Несколько вещей, которые я делаю, чтобы держать их в отдельности...

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

Попробуйте ограничить переключение контекста на 2 или 3 активных языка одновременно. Закройте все другие среды IDE или окна редактора, когда вы закончите с ними.

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

- отредактировать кий, а не очередь.

Ответ 3

Я думаю, что через некоторое время это станет естественным для вас. Когда я начинал серьезно заниматься программированием, я использовал разные языки - Java и С#. Я случайно случайно использовал некоторые функции Java на С# и наоборот. К счастью для меня многие их функции идентичны, так что он меня спас там, но по мере того, как я двигался, это не было проблемой.

Попробуйте потратить значительное количество времени на каждый язык. Сядьте и прочитайте хорошую книгу (или пару) на каждом языке и ознакомьтесь с ней. Спросите своего босса, можете ли вы провести большую часть своего времени в одной секции за раз. Вы начнете ловить больше своих ошибок, прежде чем их сделать. Для тех, кого у вас нет, именно поэтому были созданы отладчики - лучший друг программиста. У меня ужасная память, и я имею в виду ТЕРРОМ. Вы можете подумать, что это затрудняет программирование для меня, но на самом деле это не так. После использования языка в течение значительного периода времени функции, похоже, приходят к вам.

Поэтому старайтесь тратить больше времени на каждый язык, вместо того чтобы прыгать и пытаться изучить их все сразу. Информация будет придерживаться вас лучше, и вы станете намного менее взволнованы и сбиты с толку, когда придет время кодирования. Попробуйте сделать что-то, что поможет вам сосредоточиться во время программирования. Если много кофеина помогает, пойдите для этого! Если вы слушаете любимую музыку, продолжайте ее! (для меня я не могу сосредоточиться вообще с наименьшими звуками, но все разные).

Удачи!

Ответ 4

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

//Java:
int[] array1 = new int[5];
int[] array2 = {0, 1, 2, 3, 4};
//C/C++:
int array1[5];
int array2[5] = {0, 1, 2, 3, 4};
//JavaScript:
var array1 = new Array(5);
var array2 = [0, 1, 2, 3, 4];
//PHP:
$array1 = array(5);
$array2 = array(0, 1, 2, 3, 4);
//Python:
array1 = []#According to the comments, we don't care about size!
arary2 = [0, 1, 2, 3, 4]; #Could use range to create a sequence

Ответ 5

Одна из вещей, которые вы обнаружите в веб-dev, состоит в том, что, по определению, если вы хотите быть способным к сквозной работе, вам необходимо иметь как минимум 5 языков (SQL, средний уровень, html, css, js), и каждый слегка другой проект собирается добавить что-то еще (jQuery? Flash? XML?).

Я думаю, вам просто нужно это понять, но две вещи действительно помогают:

  • изучать понятия, а не синтаксис, и опираться на IDE и Google, когда вам это нужно (другая причина, связанная с конкретными вопросами собеседования, не имеет смысла), потому что они применимы ко всему, и это проще см. компоненты, относящиеся к домену, которые скользят внутрь и снаружи, чем думать, что вы изучаете нечто совершенно другое.

  • , где возможно, придерживаться похожих семейств синтаксиса языка. Я знаю, что лично считаю С# более естественным для использования, чем PHP, потому что он использует синтаксис с JS и ActionScript, из-за этого XML знакомство для меня из HTML

Ответ 6

Я согласен: существует слишком много языков и API.

Если бы вы были клиентом, а языки и интерфейсы API были похожи на футболки, вы были бы счастливы, что у вас есть самый большой выбор. Эй, если вы хотите статически типизированный язык, который дает вам большую гибкость и высокую производительность, перейдите на С++! Если вы хотите, чтобы что-то было проще в обслуживании, перейдите на Java или Python или Ruby, или вы назовете его. У вас есть выбор. Вы должны быть счастливы.

Но на самом деле вы больше похожи на парня, строящего дом, а языки и API - как винты и болты: это ваши инструменты. Если у вас есть 1000 различных типов винтов и болтов, каждый с разными характеристиками и ограничениями, то ваша работа будет кошмаром. Вы больше ориентируетесь на свои инструменты, чем на дом, который вы строите (это звонит?). Конечно, я знаю, что нет ни одного болта для всех размеров, но вы наверняка могли бы представить себе жизнь с помощью нескольких разных типов болтов, не так ли?

Я думаю, что проблема заключается в том, что ребята в строительной индустрии любят дома, которые они строят... и мы, разработчики, просто обожаем болты. Я не исключение: я просто люблю изучать новый язык или структуру. Болты такие красивые.; -)

Ответ 7

У меня лично почти нет надежды на продвижение вперед без моих полдюжины закладок API и языковых ссылок, сидящих прямо на моем рабочем столе.

Ответ 8

Я чувствую вашу боль, братан.

Я не знаю, хотя; Я думаю, что знание нескольких языков (или, по крайней мере, знание нескольких языков) - это всего лишь мир, в котором мы живем, и к чему мы привыкнем. Каким-то образом. Увы, я не знаю, что секрет в том, чтобы сохранить здравый смысл. (Хотя для меня, я могу сказать, что пиво определенно помогает.)

Некоторые люди в моей команде (я тоже работаю на Real, тоже, кстати) развиваются на С++ в Windows, для Windows, и что это - все, что они делали годами, и они великолепны в этом, они любят это, и они полностью счастливы, делая это очень хорошо.

Мне, с другой стороны, я никогда не мог поселиться на каком-либо одном языке, и я не думаю, что хочу; вообще говоря, я узнал о языке в течение года за последние десять лет, некоторые из них в отличие от других (ColdFusion, кто-нибудь?), и в наши дни я почти полностью работаю над Flash, Flex и ActionScript. Если бы вы сказали мне два года назад, что я буду делать сегодня, я уверен, что я бы рассмеялся. Поддержание иногда бывает утомительным (I опубликовано аналогичным образом назад - несколько хороших ответов от других людей там), но я не могу сопротивляться проверке из нового материала, сохраняя ток и т.д.

Одна вещь, которую я скажу, однако, следуя словам Джона Т и Скотта: книги - единственный путь. Книги, по крайней мере для меня, наряду с чтением большого количества кода (хорошего - неплохого), - лучший способ позволить языку просачиваться постепенно и сплоченно в ваш мозг, и это требует времени. Как я уже сказал, мне уже почти два года с Flash, и я только начинаю чувствовать, что могу свободно говорить на ActionScript. Все сказали, что, вероятно, у меня, наверное, есть десять книг AS на моем столе, и еще два внизу ждут меня, когда я закончу то, что я сейчас читаю.

Это никогда не заканчивается. Woohoo!

PS: VBScript, правда? Фу, это ужасно. Извини чувак.;)

Ответ 9

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

Единственный способ, который я нашел, чтобы оставаться на вершине, - это не знать каждый бит каждого языка, а знать, что такое ссылочные документы и где я могу их найти. Например, я использую команду man для perl, TCL/TK и различные варианты Unix и Linux, онлайн-справочное руководство по языку для Ada, ресурсы Apple Developer для Objective-C и Cocoa.

Ответ 10

Любое планирование проекта, которое вы можете сделать, чтобы свести к минимуму переключатели контекста, может оказаться полезным. Можете ли вы отложить разработку веб-сайта до тех пор, пока код С++ не станет стабильным?

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

Ответ 11

Люди не могут многозадачно. Период.

http://www.joelonsoftware.com/articles/fog0000000022.html

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

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

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

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