Как мне справиться с необходимостью знать несколько языков программирования? [закрыто]

25

Я относительно молодой программист. Мне 23 года, и я профессионально занимаюсь программированием около 5 лет.

Как и большинство программистов, я начал с C, изучил некоторую сборку x86 для удовольствия, а затем нашел C ++, который оказался моей самой большой страстью в мире программирования. Программирование на C и C ++ заставляет вас изучать API, библиотеки и фреймворки для конкретных платформ, каждый из которых требует постоянного изучения и экспериментов. Через некоторое время мне пришлось перейти на Java и C #, поскольку спрос в моем регионе в основном на эти языки. С этими языками я вошел в мир веб-разработки, а затем мне пришлось изучать JavaScript. Поначалу разработка для .NET Framework была увлекательной, но я постоянно чувствовал, что меня связывает Microsoft (и, конечно, .NET Framework отталкивает меня от Linux). Для разработки десктопов я мог делать почти все, что делал с .NET, используя C ++ с Qt, но для веб-разработки мне пришлось искать альтернативу. Я быстро нашел Django, а затем начал изучать Python, чтобы использовать Django. В настоящее время я изучаю разработку под iOS с помощью Objective-C.

До сих пор было довольно легко выучить все эти языки (C ++ хорошо меня обучил), но я боюсь, что когда-нибудь я не смогу отследить их все. Просто для ясности. Единственные языки, которые я выучил, потому что мне нужно было C # и Java. Все остальные я выучил для удовольствия, потому что я люблю программировать и изучать новые вещи. Также мне нравится держать свои навыки в области настольных компьютеров, веб-приложений и мобильных приложений.

Мой вопрос: как вы отслеживаете несколько языков программирования? (Я имею в виду, отслеживайте изменения в этих языках и сохраняйте свои навыки) и: Есть ли такая вещь, как достаточно языков программирования?

Рафаэль
источник
20
Как ты смеешь даже думать о том, чтобы не изучать больше языков !?
Матин Улхак
9
«Каждый раз, когда я узнаю что-то новое, это выталкивает из моего мозга какие-то старые вещи. Как в тот раз, когда я прошел домашний курс виноделия и забыл, как водить машину».
Дин Хардинг
1
Программирование не связано с освоением синтаксиса языка X, программирование - с обучением программированию. Узнайте, как выбрать правильный язык для правильной работы, а затем, как только вы выберете указанный язык, изучите API и синтаксис, а затем сделайте то, что вы делаете на любом другом языке ... ПРОГРАММА!
Крис
6
некоторые языки вы никогда не забудете; другие, которых ты с нетерпением ждешь, чтобы забыть
Стивен А. Лоу
3
Вы в основном в ООП. Вы должны изучить другие языки парадигмы, такие как функциональный язык Haskell, а затем подумать об отслеживании.
Vigneshwaran

Ответы:

27

Лично я считаю, что «отслеживание» языков - пустая трата времени. Всегда хорошо подбирать новые популярные языки, но если у вас есть популярный и устоявшийся язык, такой как C ++, Python и т. Д., Вам не о чем беспокоиться. Если вы хороший программист, язык - это просто набор ключевых слов.

Там очень много существенных парадигм; возможно, старые собаки не могут выучить новые трюки, но новых трюков на самом деле не так много. Если вы обеспокоены тем, что ваш функциональный / объектно-ориентированный / управляемый событиями / какой-либо язык может не сохраняться, изучите другую парадигму; но не слишком переживайте по поводу точного выбора языка.

И что, если вы забудете ключевое слово или два после того, как некоторое время не будете пользоваться языком? Вот почему у нас есть Google.

Мэтью Рид
источник
2
Только не позволяй своему боссу видеть. :) Или не программист. Они подумают, что программирование так просто, и почему программисту платят за такую ​​легкую работу.
Матин Улхак
4
Я думаю, что это правда, если вы остаетесь в рамках определенной парадигмы. Например, ОО / Императив. Это сломается, если вы посмотрите на язык, который не является обязательным.
Ричард
@Richard: я знаю, что вы не хотите сказать, что OO обязательно подразумевает императив, верно?
Фрэнк Шеарар
@Frank: Да, а не очень часто используемая группа языков (Java, C #, C ++), которые оба ...
Ричард
1
«(а) язык - это просто набор ключевых слов» - я не согласен. У каждой платформы есть локальные идиоматические способы ведения дел. Быть хорошим программистом на платформе X подразумевает гораздо больше, чем просто синтаксис. Например, отличный код JavaScript не произойдет, если я предположу, что мое мышление .NET OO - все, что мне нужно.
Беван,
54

Я беспокоюсь, что когда-нибудь я не смогу отследить их всех.

После 30 лет позвольте мне сказать это.

Да, вы сбились с пути.

Так?

Вот почему они пишут справочные руководства.

С. Лотт
источник
14

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

Ваше знание Java и его единственного наследования должно было сформировать ваше представление о C ++ и его множественном наследовании. Ваши знания Java и его GC должны были сформировать ваше представление о C ++ и его управляемой пользователем памяти. Ваши знания C ++ и его шаблонов должны были сформировать ваш взгляд на Java и его дженерики. Конечно, все эти отношения работают в обе стороны.

Если вы никогда не писали на функциональном языке, вы не оцените то, что <algorithm>пытается делать библиотека C ++ и чего ей не хватает, не имея первоклассных гражданских функций (по крайней мере, до C ++ 11). Если вы никогда не писали на языке с динамической типизацией, вы не поймете границ того, что статическая типизация может и не может сделать для вас. Если вы никогда не писали на языке без изменяемого состояния, вы не поймете штрафы, которые налагает на вас изменяемое состояние.

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

Филип Поттер
источник
8
+1 Дело не только в изучении нескольких языков (изучение языков - самая легкая часть). Изучение различных парадигм - вот что важно. Я лично считаю, что на университетском уровне студенты должны быть знакомы с этими различными парадигмами, это печальное положение дел, когда в наши дни так много университетов «МакДжава» (обратите внимание, я не говорю, что Java плохая, скажем прочитайте полный контекст, пожалуйста.). :(
Темная ночь
8

Мой вопрос: как вы отслеживаете несколько языков программирования? (Я имею в виду, отслеживайте изменения в этих языках и сохраняйте свои навыки)

Написать код. Если вы хотите следить за обновлениями языка, просто продолжайте писать код.

Есть ли такая вещь, как достаточно языков программирования?

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

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

Так что нет, такого понятия, как «достаточно», не существует. Но, безусловно, существует такая вещь, как «не стоит хлопот».

greyfade
источник
4

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

JZD
источник
4

Никогда не переставай учиться; но понимаешь, что никогда не знаешь всего обо всем. У вас всегда будет среда, в которой вы будете лучше говорить. Не волнуйся, просто продолжай веселиться.

Хавьер
источник
Правда, никогда не прекращайте учиться, но ФОКУС. Учиться всему - все равно что бегать, как курица без головы фу **, и в конце концов ты хорош в НИЧЕМ.
Славек
@Slawek: «В конце концов, вы хороши в абсолютно ничего». Почти. Лучшей версией может быть: В конце концов, вещи, в которых вы были хороши, были заменены новой технологией, о которой вы понятия не имеете.
S.Lott
3

У вас достаточно языков программирования, когда вы чувствуете, что все готово. Знание нескольких языков - это здорово, но я не знаю, дает ли знание 12, когда вы используете 2 на работе, больше, чем контекстную выгоду. Нет ничего плохого в том, чтобы знать больше языков, но в остальное время вам, вероятно, лучше улучшить свои знания по языкам и дисциплинам, которые вам больше всего нужны. Как и разговорные языки, вы хотите быть более опытными в тех, которые обеспечивают ценность в вашей жизни.

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

Кроме того, по мере того, как вы становитесь старше, время поможет вам решить (у меня гораздо меньше времени, чтобы учиться на стороне, чем до свадьбы, когда у меня были дети, я стал независимым писателем, начал заниматься карьерными вопросами и моя память начала идти на юг. Дох!).

Бернард Ди
источник
3

За последние 25 с лишним лет я выучил много языков. Через некоторое время некоторые становятся менее полезными и забываются (Perl). Давайте даже не будем говорить о 6502 сборке, Apple BASIC, Lisp, Prolog, Pascal, SPAN, FORTRAN ...

Другие языки исчезли, потом мне пришлось переучиваться (Python) через 10 лет. Не было никакого смысла идти в ногу с Python, это не займет много времени, чтобы перейти к скорости - Google / SO ваш друг.

В конце концов, язык - это всего лишь инструмент. Вы используете это для работы под рукой. Умение знает, что и когда использовать. Честно говоря, когда я начал использовать C ++, я больше никогда не хотел заниматься программированием на C. Когда я выучил C #, я больше никогда не хотел заниматься C ++.

Дейв
источник
3
сообщения о смерти Перла сильно преувеличены.
Филипп Поттер
Ничего личного против Perl. Я работал на Unix, поэтому Perl был моим любимым оружием. Я создал чертовски большие технические приложения, используя его. Затем я переехал в Windows. Теперь я снова вернулся, но приложение, которое я разрабатываю, написано на Python, поэтому, кажется, нет смысла использовать Perl и Python.
Дэйв
1

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

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

Во время обучения мы привыкли использовать Java (до этого я использовал ASP и VB5), но после окончания обучения (около 5–6 лет назад) я научился использовать C # (и Javascript), смена работы «заставила» меня перейти на VB.NET, следующая работа позволила мне использовать оба языка .NET (что я и сделал) и даже «позволила» снова использовать Java (для какого-то устаревшего инструмента, который они использовали). В настоящее время я работаю с X ++ (язык Microsoft Dynamics AX), но все еще занимаюсь разработкой в ​​.NET. Это только те языки, с которыми я работаю в своей повседневной работе, мне также нравится изучать новые языки, такие как F #, Ruby и т. Д. Изучение этих новых языков заняло всего пару дней (только для понимания синтаксиса), а остальные времени вы просто играете с языком и будете учиться постепенно.

Есть так много языков, но я склонен концентрироваться только на языках, которые действительно отличаются (например, F #). Я считаю изучение новых языков интересным и увлекательным, поэтому пока я в порядке, изучать новый язык довольно легко (по крайней мере, если мысль одинакова, C #, VB, Java одинаковы, но, например, F # совсем другой) и я не слишком беспокоюсь.

Gertjan
источник
1

Я начал свою карьеру 5 лет назад на vb6, затем перешел на php, затем на java, а затем на .net. в течение последнего года работаю над asp.net mvc2 и пробую свои силы на mvc3

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

maz3tt
источник
1

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

Адаптация к использованию новых инструментов - это компромисс. IT-индустрия полна шумихи, и от нее нужно защищаться. Это начинается с утверждения: нет, я продолжаю использовать мой старый редактор (emacs?). Но время от времени вы должны изучать новые вещи. Они действительно поправляются с годами (3-4). Если у вас есть возможность узнать что-то новое на работе с реальным проектом под рукой: не стесняйтесь, потому что это будет весело! Лучший способ отличить рекламу от реальных инноваций - это посмотреть на людей, которые ее используют. Вы лучше судите людей, чем технологии :)

Фаусто
источник
1

Я бы предложил изучать языки с разными парадигмами, такими как функциональная, ОО и логическая, потому что они очень разные.

Однако я бы не советовал изучать 3 функциональных языка или 3 OO-Languages.

Если вы хорошо читаете, может быть. Но мне трудно снова и снова изучать подобные вещи, которые оказываются почти одинаковыми, но не совсем, особенно библиотечные вещи, такие как рисование окон, вызов базы данных, библиотеки коллекций, где вы должны помнить разные имена и соглашения, но которые вести себя почти так же. Было ли это paintRect (xstart, ystart, xend, yend) или (xstart, ystart, ширина, высота)? Включая «конец» здесь, не включая его там?

Но некоторым людям не трудно научиться этим вещам.

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

неизвестный пользователь
источник
0

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

Когда-либо виденный хардкорный код Java-разработчика на C ++, это беспорядок, ожидающий взрыва ...

Проблема в том, что у всех языков есть свои ошибки, где абстракция начинает просачиваться или играть против вас. Вы можете выучить синтаксис за 1 день, но потребуется 5 лет, чтобы научиться эффективно кодировать и без ошибок. Вы используете в () или []? Почему malloc заставит ваш длительный процесс исчерпать память?

И изучение парадигм также является интересным предложением. Потому что использование Java-руководств в C или Perl-руководств в C #, вероятно, превращается в удивительную демонстрацию того, как писать запутанный код.

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

кодировщик
источник
0

Кто-то еще предложил где-то, что «каждый должен знать 3 языка».

Я склонен согласиться. Вы должны знать скомпилированный язык (C / C ++, C # и т. Д.), Интерпретируемый язык (Python, Ruby и т. Д.) И язык обработки текста (Perl, Awk и т. Д.). Я также думаю, что вы должны знать язык сценариев оболочки (Bash, в наши дни или Windows Power Shell). Тот же совет относится к инструментарию и API.

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

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

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

Адам Хос
источник
-5

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

Исследование показало, что вам нужно 10 лет обучения, чтобы быть «хорошим» во всем (программирование, игра на гитаре, танцы и т. Д.). И это правда, вам нужно 5-10 лет для написания C ++ / python / и т.д. получить навыки, необходимые для разработки коммерческого, качественного кода.

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

Рабочий стол, мобильный телефон, сервер (!!!) - это абсолютно разные среды. Вы решаете, хотите ли вы «играть» всю жизнь, или вы сосредотачиваетесь на чем-то одном и получаете достойную работу. Вероятно, люди скажут вам, что вы должны знать каждый язык на земле, потому что они пытаются сделать то же самое, чтобы улучшить свою дерьмовую работу. Но угадайте, что, они никогда не смогут сделать это, даже после прочтения «справочника» по Java, потому что на что они тогда способны? Точно НИЧЕГО.

Да - изучите графический дизайн, написание сценария и флеш, вам это понадобится! :) Я точно не знаю, что не так, но если вы делаете клиент, сервер и мобильный телефон одновременно - оставьте свою работу и не ждите до завтра, потому что вам нужно сделать это сейчас!

Мой вопрос: как вы отслеживаете несколько языков программирования?

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

Slawek
источник
1
Вы знаете, я прав - кто зарабатывает больше? Старший Java-инженер в IBM или «programmer-o-graphican-o-computerfixer-o» в какой-то местной компании по разработке веб-сайтов? Ну, я знаю хороших графиков, которые делают только графику и берут 10 000 долларов за «глупый» баннерный проект ... и некоторые ребята «я знаю все», которые делают несколько глупых веб-сайтов для тупого местного бизнеса за 150 долларов (включая графику), исправляют компьютеры в то же время и т. д. Поскольку они так мало знают во многих областях, что все, что они действительно могут сделать, это установить тему WordPress или проверить, почему msoffice не работает.
Славек
-1 за то, что был скорее напыщенным, чем ответным, и за то, что спутал свой личный опыт с миром. Я хотел бы увидеть, на какие «исследования» вы ссылаетесь. В наши дни популярно мнение, что для развития опыта в этой области требуется 10 000 часов активной практики. Это было популяризировано сочинениями Malcom Gladwell. Это, вероятно, неплохо, как правило, но это вряд ли закон физики. 10000 часов - это пять лет из 40 часовых недель, и, конечно, многие из нас вкладывают гораздо больше времени на ранних этапах нашей карьеры.
Чарльз Грант
Нет, у них есть специализация. Их специализация - программирование. Языки программирования - это просто инструменты торговли, которые можно подобрать при необходимости и выбросить, когда они не нужны. 10 000 часов вещь была популяризирована книгой Малкольма Гладуэлла. Но ты понял, что он говорил? Он говорил, что для музыкального гения, например, понадобилось 10000 часов. Он не говорил, что нужно 10 000 часов, чтобы научиться играть на пианино.
Antonio2011a
Если бы никто не выучил более одного языка, мы бы все программировали на ассемблере. Сегодня я использую Groovy, Java, Javascript, SQL, Ant и Selenium. Мне не нужно 7 человек в моей команде. Мне нужны люди, которые могут освоить новую технологию и добиться успеха.
Кевин Клайн