Программист должен сконцентрироваться хотя бы на скольких языках? [закрыто]

21

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

Цифровой чувак
источник
Вы спрашиваете, потому что процессы найма ищут ключевые слова на резюме?
Брайан
@ 0A0D нет, на самом деле это было для личного интереса. Я тоже программист :)
Digital Dude

Ответы:

43

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

  1. Один язык, чтобы получить вашу первую работу - скорее всего, Java / C # / C ++
  2. Один язык для достижения цели - скорее всего, Bash / Perl / Python / Ruby
  3. Один язык, чтобы сойти с ума - скорее всего, Haskell / Clojure / Scala / F #
  4. Один язык по доменным причинам - скорее всего JavaScript / Objective C
  5. Один язык, чтобы запачкать руки - скорее всего C / Assembly
Эрик Уилсон
источник
17
Какой язык правит ими всеми?
Tester101
4
Ассамблея управляет ими всеми. Что его, почему он указан в прошлом. Сохранил лучшее за последнее.
WernerCD
9
Tester101: английский? ; о)
Джон Фишер
6
Конечно, неудивительно, что язык для получения первой работы - это не тот язык, который вы используете для достижения цели.
4
... и в темноте, свяжи их!
tchrist
53

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

Если вы знаете C #, вы, вероятно, не узнаете ничего страшного, изучая Java. Но вы бы, если бы вы узнали Haskell.

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

Фрэнк Шиарар
источник
23
+1 «Язык, который не влияет на то, как ты думаешь о программировании, не стоит знать» - Алан Перлис
Inaimathi
20
@Inaimathi: Если не знать, что это помогает оплачивать счета.
Крами восстановил Монику
5
Просто примечание: я предложил Haskell только по той причине, что он радикально отличается от C #. Трикстер, носящий асбест во мне, хотел сказать: «Изучай Smalltalk, чтобы ты мог выучить ОО»!
Фрэнк Шиарар
10
@ Цифровой чувак: тот факт, что это трудно, является своего рода точкой. Эта боль за лбом не является плохой вещью - это признак того, что ваш мозг растет. Если вы просто хотите продолжать изучать одну и ту же вещь снова и снова, изучать Java, затем C #, затем Ruby, затем C ++ (woooh, сборщик мусора не страшен!), Затем C (нет классов - страшно страшно!), А затем, возможно, получить действительно сумасшедший и попробовать Objective-C! (О-о-о-о! Два дня назад я не мог записать Mac, а теперь я могу запрограммировать один!) Моя точка зрения - если вы хотите узнать что-то новое, вы должны сделать что-то другое Следуя по той же дороге, вы попадете в то же место.
Боб Джарвис - Восстановить Монику
4
@Kramii @Inaimathi Ага, но язык, который помогает тебе оплачивать счета, влияет на то, как ты думаешь о программировании
slf 28.10.10
22

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

1) Python и Perl для категории языков сценариев

2) C ++ как «каркасный» язык

3) Java для мобильных приложений

4) C для огромного количества унаследованного кода

5) Некоторые устаревшие языки, которые я знал в молодости (Basic, Pascal, Clipper и т. Д.)

Я бы сказал, что вам нужен хотя бы основной язык и язык сценариев. Зная C #, я бы сказал, что вам нужно изучить Python, Perl или Ruby. (Я бы пошел с Python, но это просто вопрос предпочтений).

Эмилиано
источник
1
Я также согласен с вами в этом. Программист, который знает язык, должен по крайней мере должен изучить один из языков сценариев, чтобы работать с ним. Я чувствую, что это очень важно + полезно, когда вы хотите провести некоторые тесты. особенно разработка игр .. и т.д. Я думаю, я выберу Python в качестве моего дополнительного языка :)
Digital Dude
2
карма за способность быстро учиться
Аюш Гоял
Помимо языка сценариев, иногда может помочь знание языка сценариев оболочки. Определенные общие задачи в системе легче решить на языке оболочки, чем даже на языке сценариев, таком как Python.
CodexArcanum
знание C # отличается от того, чтобы быть экспертом в этом языке
Брайан
1
Паскаль вряд ли устарел язык; В эти дни в Delphi разрабатывается масса вещей.
Мейсон Уилер
8

Хорошо изучать один новый язык программирования каждый год. Но вместо того, чтобы изучать что-то похожее на то, что вы уже знаете, я посоветую вам узнать что-то радикально отличное от Scala или F #. Он покажет вам новые способы делать вещи и в конечном итоге обогатить ваши навыки программирования.

Павел Дида
источник
Благодарность! Я немного знаю кое-где, но я понял, что не могу полностью овладеть одним языком. Всегда происходит что-то новое ..: /
Digital Dude
2
@Digital Вам не нужно осваивать каждый язык. Вы должны быть знакомы с понятиями, чтобы в случае возникновения проблемы, которая лучше всего обслуживалась бы языком, вы могли принять это решение. Это также может раскрыть вам концепции, которые вы можете использовать на основных языках.
KeithB
8

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


источник
7

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

пойти на принципы этого типа программирования, основы (например, инкапсуляция для ООП; что такое средства и что это подразумевает) и изучить некоторые принципы

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

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

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

последние два не в центре внимания, но в некотором фокусе

Belun
источник
да, я недавно взял C # essential - очень хорошую книгу для чтения и обнаружил много вещей, которые я никогда не знал, как в полной мере использовать ее. Другая книга C # в глубине, которую я слышал, также рекомендуется. Есть так много, чтобы учиться ... вот почему я начал этот пост о необходимости сконцентрировать некоторые языки.
Цифровой чувак
расставьте приоритеты в соответствии с вашей целью. Хотите сделать вашу работу проще? Вы довольны тем, где вы находитесь и чем занимаетесь? перейти на чистый код. если вы хотите работать в другой компании, которая использует другую технологию, изучите это. вы хотите изменить технологию только для разнообразия, иди к этому. выбрал свою цель и действовать соответственно
Белун
6

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

Ахмет Какичи
источник
6

Столько, сколько нужно, чтобы сделать вашу работу.

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


источник
1
или! Xóõ: en.wikipedia.org/wiki/Taa_language (африканский язык «щелчка»).
Джаред Апдайк
хе-хе, после упоминания о финском или навахо. Я думаю, что вместо этого я выберу японский язык для своего четвертого ... достаточно программирования ...
Digital Dude
1
@Jared, я думаю , что язык ТРЕБУЮЩЕЕ вырезать и вставить только сказать свое имя, может стимулировать нежелательные привычки с самого начала ...
5

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

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

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

glenatron
источник
Через некоторое время вы также можете потратить некоторое время, используя понятия, изученные на одном языке на другом. Например, после изучения функционального программирования с использованием Haskell, вы можете попытаться увидеть, какие концепции функционального программирования вы можете использовать в C #. Вы не захотите писать целую функциональную программу на C #, но ее разделы могут иметь больше смысла.
KeithB
3

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

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

Я играл с Smalltalk, и мне это нравилось. С языком было просто приятно развиваться. Как только вы привыкли к идиомам, они помогли вам быть более выразительными с вашим кодом. Я совсем не пропустил статическую типизацию, которую вы имеете в Java / C ++ / C #. Обобщения, с которыми мы живем в наших статически типизированных языках, действительно являются конструкциями, позволяющими обойти ограничения, накладываемые статической типизацией.

Я регулярно использую Ruby и Ruby on Rails, хотя сейчас я не оплачиваю работу. Принцип конструирования Руби заключался в «повышении счастья программиста». Вы должны любить это чувство, и по большей части я думаю, что оно доставляет.

В конечном итоге Java пойдет по пути LISP и Smalltalk, а C # последует их примеру. Что будет там, чтобы занять их место, еще неизвестно. В конце концов, если вы знаете, как решать проблемы, и у вас есть несколько способов нарезать и вырезать проблему, вы сможете найти работу и выбрать любой язык, который вам необходим.

Берин Лорич
источник
2

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

Так что, изучая больше .net Framework, используя C # или Java, можно поддерживать гибкость, изучение Haskell, Smalltalk, Scala, Clojure или Ruby расширит вашу технику и поможет вам мыслить по-разному, некоторые из которых вы можете использовать с пользой. вернуться к вашему основному языку, и некоторые из них могут помочь вам двигаться дальше, если Java перестанет быть царем холма.

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

Я рекомендую прочесть книгу Брюса Тейта «За пределами Java», в которой слишком хорошо подчеркивается опасность присутствия только на одном языке, отмечая взлет и падение C ++. Хотя C ++ еще далек от смерти и у него остались десятилетия, становится все более и более ограниченным использование только в ситуациях, которые не могут выиграть от повышения производительности в других языках. В отличие от этого, Sinatra, фреймворк ruby, позволяет создавать простой веб-сервис из примерно 6/7 строк кода, эквивалент C ++ может быть на порядок больше, чем этот.

Дэнни Стейпл
источник
1

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

Все хорошие материалы (книги, статьи, код и т. Д.) Для изучения языков программирования, технологий и новых концепций написаны на английском языке.

Matias
источник
1

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

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

Или как насчет Perl 4? Между Perl 4 и Perl 5 в язык добавлены лексические замыкания. Большинство хакеров Perl согласились бы, что Perl 5 более мощный, чем Perl 4. Но как только вы это признали, вы признали, что один язык высокого уровня может быть более мощным, чем другой. Из этого неизбежно следует, что, за исключением особых случаев, вы должны использовать самое мощное, что вы можете получить.

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

{} Надрез

Пока наш гипотетический программист Blub смотрит на энергетический континуум, он знает, что смотрит вниз. Языки менее мощные, чем Blub, очевидно, менее мощные, потому что им не хватает некоторых функций, к которым он привык. Но когда наш гипотетический программист Blub смотрит в другом направлении, вверх по силовой среде, он не понимает, что смотрит вверх. То, что он видит, это просто странные языки. Вероятно, он считает их примерно равными по силе Блюбу, но с учетом всего этого и другого волосатого материала. Blub достаточно хорош для него, потому что он думает в Blub.

Однако, когда мы переключаемся на точку зрения программиста, использующего любой из языков выше энергетического континуума, мы обнаруживаем, что он в свою очередь смотрит на Блуба свысока. Как вы можете сделать что-нибудь в Blub? У этого даже нет y.

По индукции, единственные программисты, которые в состоянии увидеть все различия в мощности между различными языками, - это те, кто понимает самый мощный язык. (Это, вероятно, то, что имел в виду Эрик Рэймонд о том, что Lisp делает вас лучшим программистом.) Вы не можете доверять мнению других из-за парадокса Blub: они довольны тем, каким языком они пользуются, потому что он диктует как они думают о программах.

http://www.paulgraham.com/avg.html

Большинство приложений, которые мы отправляем, написаны на C # или VB. Когда нам нужно было добавить сценарии в приложение, мы выбрали Python (Lua был вторым). Мы изучаем F #, потому что он может сделать несколько новых вещей, которые трудно объяснить и понять, если все, что он знает, это C # / Java / VB.

Tangurena
источник
0

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

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

к лучшему или к худшему, вы также, вероятно, столкнетесь с C # и / или Java в какой-то момент, они довольно распространены.

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

Брэд Клоузи
источник
0

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

Если вам нужны предложения по изучению языков, вот несколько идей:

  1. Функциональное программирование - здесь могут быть примеры Haskell или Lisp, и смена парадигмы может быть в некоторой степени отчасти поворотной.

  2. Специфичная для базы данных - PL / SQL или T-SQL приходят на ум как нечто, что может быть полезно, если вы хотите выполнять больше серверной работы с системами, которым требуется база данных для некоторых ее функций.

  3. Языки веб-интерфейса пользователя. В качестве примеров языков, используемых в многофункциональных интернет-приложениях, можно привести ActionScript или Javascript, хотя в некоторых случаях AIR может заставить некоторые настольные приложения использовать веб-вызовы, например Twhirl, с помощью API Twitter.

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

JB King
источник
0

Программист должен знать три языка: C, английский и Something Else.

C является базовым языком, он близок к машине и имеет синтаксические правила, общие для нескольких языков высокого уровня. C заставляет вас думать о таких вещах, как структуры данных, совершенно иначе, чем Java. Кроме того, Python и Ruby vms оба встроены в C, и вы можете встроить C в оба языка, когда хотите повысить свою скорость.

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

Something Else должен быть языком, который не является процедурным, или не является статически типизированным, или строго объектно-ориентированным, или в каком-то смысле просто фундаментально отличается от C. Haskell, Scala, Python, Ruby, некоторого диалекта Лисп, чего бы то ни было ,

После этого вы можете узнать все, что требует ваша конкретная ситуация, скорее всего, C # или Java.

philosodad
источник
Буду признателен за комментарий, почему вы, анонимный критик, проголосовали за этот ответ.
Philodadad
английский язык не учит вас идее, это всего лишь способ выразить идею.
sagarmatha
@sagarmatha: Даже если бы это было правдой, а это не так , нет ничего «единственного» в том, чтобы иметь возможность выразить себя на языке общения по умолчанию в этой области. Если вы улучшите свой английский, вы сможете четко выразить свое мнение носителям английского языка и, что более важно, читать и понимать английский гораздо быстрее. Как отмечает Матиас, книги программирования и технические статьи , как правило, выходят на английском языке первых , а иногда и на английском языке только .
Philodadad
Я не понимаю, почему за вас проголосовали, но я согласен с вами, что знание английского языка так же важно, как знание основного языка программирования. @sagarmatha: Вы просто противоречили себе. Если идеи выражены на английском языке, то, несомненно, знание английского языка позволит вам освоить эти новые идеи. Насколько хорошо вы будете учиться и применять его, будет зависеть от вашей способности понимать английский язык плюс навыки программирования.
Chiurox