Больно ли изучать биты многих языков программирования?


37

Я начал свою карьеру программиста в BASIC в 9-м классе. Я немного изучил бейсик, написав простые программы для сложения, вычитания и печати. Затем я пошел в университет и взял компьютерную информацию и системную инженерию. В первый год меня учили С, и я хорошо им владею.

Затем я изучил C ++ на втором курсе. Это только научило меня некоторым знаниям ООП. Сейчас я занимаюсь PHP (вместе с HTML). Я не освоил C ++, BASIC или PHP. Сейчас я планирую перейти на мобильную разработку. Но я чувствую, что я не охватил все на изученных языках.

Это действительно имеет значение?

Ответы:


50

Мы все просто изучаем биты языков программирования. Я бы считал, что языковые исполнители - это те, кто 10 из 10 в знании языка.

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

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


16
Мне нравится этот ответ, за исключением того, что он менее «то, что вам нравится», и это больше «правильный инструмент для работы». Никто не должен использовать один и тот же язык для решения каждой проблемы. Это сделало бы плохого разработчика программного обеспечения. У каждого языка и парадигмы есть свои плюсы и минусы.
user606723

1
Учитывая, что у компиляторов и интерпретаторов есть ошибки, я не думаю, что по-человечески возможно получить 10 для большинства языков.
Jmoreno

6
Я не думаю, что даже люди, которые пишут компиляторы C ++, понимают C ++. Я имею в виду индивидуально. Очевидно, что в совокупности они должны каким-то образом понимать весь язык, но я не думаю, что на этой планете есть хоть один человек, который понимает все это. На самом деле, члены комитета, как правило, совершенно ясно понимают, что все они понимают только свою область знаний. Аналогично в Java: Мартин Одерский недавно сказал, что он считает, что в мире есть только 3 человека, которые понимают подстановочные знаки. И из тона электронной почты у меня сложилось впечатление, что он не включил себя
Йорг Миттаг

2
в этой группе, хотя он на самом деле разработал Java Generics (вместе с Филом Уодлером, конечно). Хотя, чтобы быть справедливым, подстановочные знаки были добавлены к его дизайну без его согласия, фактически против его явного несогласия.
Йорг Миттаг

1
@brian, поверь мне, тебе не нужно знать язык, чтобы иметь возможность реализовать его компилятор. Вы можете просто слепо перевести спецификацию в код. Но в результате вы изучите хотя бы некоторые основы языка - вот почему я предпочитаю изучать новые языки.
SK-logic

21

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


5
В первые два года я думаю, что мы выбирали новый язык каждые 3-4 недели, чтобы использовать Паскаль, который был основой большей части нашей проектной работы (1982-85) - некоторые из них были функциональными языками. Отчасти дело было в том, чтобы попытаться отделить «программирование» от «кодирования»
Murph

12

Я считаю, что самое важное в программировании - это понимать разные парадигмы .

В своем вопросе вы упомянули объектно-ориентированное программирование (ООП) . Если вы освоили эту тему, вы сможете объяснить ее, используя только псевдокод и, по сути, некоторое графическое представление моделирования (например, диаграммы классов UML).

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

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

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

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


2
+1 за парадигмы. Не важно сосредоточиться на синтаксическом сахаре языка X или Y (конечно, вам это нужно, если вы используете язык X каждый день на работе); что полезно, так это изучать различные парадигмы, потому что ИМХО они помогают вам быть более непредубежденными и креативными в решении проблем.
Сакиск

5

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

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


5

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


3

За свою карьеру я использовал много языков, таких как AMOS Basic, Java, C ++, PHP, VB6, Delphi и т. Д. Сегодня я использую C #, JavaScript, Ruby и некоторые Clojure на работе, а также я играл с Pyhton, Erlang, Общий Лисп и Схема.

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

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

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

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


2

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


2

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

Преимущества видения того, как работают другие языки, помогут вам как программисту; даже если время от времени , когда вы прыгали вы делаете синтаксические ошибки (например, является проверка неравенства !=, ~=или <>). Вы должны быть осторожны, чтобы выучить не только синтаксис языка, но и лучшие практики в языке, а также просто хорошие навыки разработки программного обеспечения. Вещи, если вы изучили C, а затем изучили C ++, вы должны убедиться, что при написании кода C ++ он соответствует стилю кода C ++ (а не просто C с несколькими новыми ключевыми словами. То есть у вас есть несколько классов / объектов, предпочитайте ссылки / умные указатели над необработанными указателями и т. д.


1
Не заставляйте меня начинать Если x <b> = </ b> 5 Тогда. Я должен перепроверить весь мой код на C примерно за неделю после обслуживания чего-либо, связанного с BASIC.
user606723

2

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


2

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

Посмотрите книгу « Семь языков за семь недель» , в которой вы познакомитесь с Ruby, IO, Scala, Erlang, Prolog, Clojure и Haskell. Если вам нравятся языки, вам понравится эта книга.


1
Изучение C # после Java может расширить ваш кругозор благодаря его функциональному программированию (и другим функциям, которых нет в Java). Но если это только для обучения, Haskell, вероятно, будет намного лучше, потому что он чисто функциональный.
svick

1

Ну, C и C ++ не принесут вам никакого вреда в мобильном программировании. Вы можете использовать как с Cocoa Touch, так и с Android NDK, а иногда вам нужно для производительности. Кроме того, иногда вы хотите, потому что вы хотите написать код, который работает на нескольких платформах. В этом случае, предполагая, что вы используете не только стороннюю платформу, вы можете написать свое приложение на C / C ++ и скомпилировать в платформо-зависимых оболочках для необходимых нативных элементов (например, единственный способ получить контекст OpenGL). на iPhone с использованием собственного класса CAEAGLLayer).

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


1

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


6
Я понятия не имею, что ты пытался сказать этим.
svick

Вы понимаете, что большинство из нас не знает «хорошо» даже наших родных языков, верно?
Spidey

1

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

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


0

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

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

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

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


0

Краткий ответ: Нет.

Длинный ответ: так много работы программиста, программиста или дизайнера не зависит от конкретного языка, но очень зависит от определенной методологии. Например, объектно-ориентированное программирование очень сильно зависит от того, где существуют вещи в памяти и во время выполнения, насколько они доступны и насколько они доступны для последующего использования (наследование и инкапсуляция). Реализации отличаются, например, Java имеет наследуемый класс Object верхнего уровня, нравится вам это или нет, и C ++ не имеет ничего, что вы не укажете.

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

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

Теперь, сколько вы узнаете, это личный выбор. Я бы никогда не выучил язык ради изучения нового. Любой выбор изучения нового языка вызван либо требованием курса (в прошлом году нужно было подбирать js, php и R для одного класса), либо существующим требованием проекта (если 90% работы выполняется в Perl 6 до вас нанимают, как и оставшиеся 10% после) или выгода для конкретного приложения (например, Java в сочетании с некоторой примитивной библиотекой для статистического анализа).

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


0

Ну, я вижу это так, что вам не нужно изучать каждый кусочек языка. Но попробуйте изучить самые базовые функции, которые потребуются и на других языках.
Например, концепции OOPS требуются на всех языках, будь то Java , PHP или любой другой язык. Концепции
распределения памяти довольно похожи во многих языках программирования. Такие темы вы никогда не должны пропустить.
У каждого языка есть грамматика и правила, то же самое относится к языкам программирования; Сам Деннис Ричи принял этот факт. Поэтому нужно изучать грамматику этого языка.
Но я вижу, что вы должны изучить необычные факторы между двумя языками программирования. Они позволят вам определить, что за какой язык означает. C ++ - это все базовое ООП (объектно-ориентированное программирование), поэтому, как только вы изучите ООП концепции , вы изучите грамматику, которую вы увидите также в PHP и Java.
Мой учебный процесс был:
Visual Basic 5 (частичный) -> HTML 2.0 (частичный) -> C (частичный) -> CPP (частичный) -> Java (частичный),
а затем я снова выучил язык C, затем C ++, а затем JAVA ( завершить это время) затем я перешел на Android, так как я был знаком с Java и XML(частично) и выучил это за это время. Первая попытка научила меня меньше, но во второй попытайтесь научиться всему, что поможет вам в следующий раз.


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