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


21

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

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


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

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

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

1
@blueberryfields: Свободное владение языком - это гораздо больше, чем просто словарный запас, и помимо основ, словарный запас - это небольшая его часть. Бесполезно знать, что функция существует, если вы не можете сделать что-то умное с этим знанием. Гораздо проще просто найти функцию, чем понять, как сделать что-то умное с ней. Я бы сказал, что достаточно хорошо знать документы, чтобы быстро узнать, где искать заданную функцию, если она существует, - достаточно знаний библиотеки. После этого вы будете точно помнить те, которые вы используете, и смутно помните те, которые вы не делаете.
Aaronasterling

2
@blueberryfields: В зависимости от языка / платформы , немного знаний может быть опасным . Я имею в виду следующее: если человек утверждает, что знает много библиотечных функций наизусть и ему не нужно читать документацию, я бы ожидал, что этот человек также знает все возвращаемые значения, условия исключений и подводные камни / предостережения, как Рэймонд Чен наизусть и уметь написать книгу и прочитать лекцию в Microsoft / Google и т. д. Если не считать этого, человек в итоге совершает много забавных маленьких ошибок.
rwong

Ответы:


33

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

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

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

Более прямой ответ - «это зависит».

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

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


3
да, это расширяет и мой кругозор - я думаю, что на многих языках
решаю

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

14

У вас очень интересный вопрос:

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

«Хороший» программист, под хорошим я имею в виду, что он занимается проектами разработки, не обращая внимания на классическое «я никогда не работал с этим раньше», должен выучить язык менее чем за 5 рабочих дней. Вы изучаете лучшие практики, инструменты и библиотеки в основном из двух способов: 1: чтение и 2: работа. Либо вы отскакиваете головой от кода, либо читаете кучу книг.

Через несколько лет после того, как «хорошие программисты пишут просто код» без кода C #, C ++ или Java, вы поймете, что после того, как вы научитесь разрабатывать программы, язык и технологии не так уж важны. Конечно, вы будете знать, как перемещаться по C # лучше, чем PHP, но если вы хорошо выучите, вы найдете, как пройти через Python, если потребуется.

Надеюсь, мои идеи, как вы!


+1 «Хорошие программисты пишут просто код ... язык и технологии не так уж важны» - очень верно, хотя, чтобы прийти к такому выводу, требуется много внимания.
Orbling

Спасибо, и вы все правильно поняли: 11 лет и счет ... :)
Дэвид Конде

3

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


3

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

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



2

Один

Тот, что перед вами.


1
+1 Количество языков, на которых вы должны быть экспертом, - это как минимум то количество, которое вы должны использовать. ;-)
Orbling

1

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


1

Нет, поскольку есть некоторые программисты, которые не будут экспертами ни в одном языке, но им нравится разнообразная среда, в которой они находятся, и они будут использовать разные языки в зависимости от обстоятельств, поскольку некоторые могут знать несколько серверных технологий, таких как PHP, ASP.Net в C # .Net, или VB.Net, или Java, пара скриптовых языков на стороне клиента, таких как JavaScript или Flash, и это без использования какого-либо оборудования, используемого здесь для размещения веб-контента.

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


1

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


1

Это хороший вопрос, но я не думаю, что есть стандарт. Обычно, как я видел, люди полностью разбираются в одном языке высокого уровня (C ++, Java и т. Д.) В одной среде (windows / linux, mac, solaris). Они примерно знают другой язык высокого уровня, но не до конца понимают его. (например, C ++, Java люди знают друг друга примерно). Примерно я имею в виду, что они могут сравнивать выполнение одной задачи на языке, на котором они являются экспертами, и на другом языке. И затем они умеренные в некоторых скриптовых языках. (Например, люди Linux знают bash, люди Windows знают VBA, люди Интернета знают PHP).
Для меня важен базовый алгоритм знания, а не язык. Если ваши основы хороши, есть меньше шансов испортить на любом языке.
Но да, иногда полезно знать, какой язык лучше подходит для какой задачи. например, следующий код намного быстрее в паскале, чем в C.

strcat (А, "Привет"); strcat (A, "WOrld"); strcat (A, "Я говорю привет!");

Это потому, что Паскаль сохраняет длину строки в первом месте и, следовательно, легко перейти к последнему месту. В Си конец строки равен '\ 0', и, следовательно, вам фактически придется пройти всю строку для операции strcat.


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.