Стоит ли изучать экспериментальные языки? [закрыто]

25

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

C и C ++ хороши, но они старые. Такие вещи, как Haskell и Forth (и т. Д. И т. Д.), Старые и потеряли свою популярность. Я боюсь изучать C (или даже C ++) по этой же причине. Java также довольно старая и медленная, потому что она запускается JVM и не скомпилирована в нативный код.

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

  • Это наиболее часто используемое назначение для веб-приложений и приложений для мобильных телефонов (особенно для Android).
  • Что касается реальных продуктов, созданных с его помощью, единственные вещи, которые приходят на ум, это Netbeans, Eclipse (ура для создания и IDE с языком, для которого предназначена IDE - это как создание веб-страницы для написания HTML / CSS / Javascript) и Minecraft что оказывается забавным, но медленным и биполярным, насколько компьютерные спецификации. поддержка.
  • Кроме этого он используется для серверов, но, черт возьми, я не только хочу создавать / настраивать серверы .

Однако языки .NET хороши:

  • Люди смеются, если я даже упомяну VB.NET или C # в серьезном разговоре.
  • Он не является кроссплатформенным, если вы не используете MONO (который все еще находится в разработке и должен быть улучшен).
  • Не хватает низкоуровневых вещей, потому что, как и Java с JVM, он запускается / управляется CLR.

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


Во что я заглянул

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

D также выглядит красиво. Похожеочень удобный язык и скратipleисточников,представляетсясамом деле лучшечем C / C ++. Я прыгнул бы прямо с этим, но я все еще не уверен в его успехе, потому что это очевидно не очень распространено в данный момент.

Есть пара других, которые выглядели довольно хорошо, и были сосредоточены на других вещах, таких как Opa с веб-разработкой и Go by GOOGLE.


Мой вопрос

Стоит ли изучать эти "экспериментальные" языки? Я читал другие вопросы, в которых говорится, что если вы не постоянно изучаете языки и открыты ко всем языкам, у вас нет правильного мышления для программирования. Я понимаю это и до сих пор не совсем понимаю, но на самом деле, если язык не станет мейнстримом, должен ли я тратить свое время на изучение чего-то другого? Я не хочу изучать старые (или скоро будущие) языки программирования. Я знаю, что многие люди считают это чем-то важным *, но задумался ли кто-нибудь из вас (если вы еще не знали) ФОРТРАН? Моя цель - оставаться в курсе, чтобы быть уверенным, что я буду успешным в будущем.


отказ

Да, я молодой программист, поэтому я, вероятно, сделал много наивных заявлений в своем вопросе. Не стесняйтесь поправлять меня НИЧЕГО! Я должен начать учиться где-нибудь, поэтому я уверен, что многие мои знания достаточно поверхностны, чтобы привести к неправильным утверждениям или ошибкам в моем мышлении. Пожалуйста, оставьте любые ваши чувства в комментариях.


Результаты...

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

Благодарность

Freesnöw
источник
10
«Изучите все пять из Python, C / C ++, Java, Perl и LISP» (Эрик Рэймонд, Как стать хакером -> Основные навыки хакерства -> 1. Узнайте, как программировать. )
Гнат
7
Обратите внимание, что просто «старый» не означает автоматически «плохой» по умолчанию. Некоторые из самых фантастических программ были сделаны на C64 30 лет назад.
8
FWIW использует почти каждый язык - если кто-то смеется над вами за использование почти любого языка (Java медленный, .Net для суки M $, Haskell непрактичен, C ++ слишком стар и т. Д.), Смейтесь над ними и расскажите им об использовании правильный инструмент для работы;)
Martin
6
Откуда вы взяли "Haskell и ... потеряли свою популярность"?
Оставлено около
13
Для молодого программиста у вас слишком много предположений. Избавьтесь от них, они затуманивают ваш разум.
Матье М.

Ответы:

29

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

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

Кроме того, Java и .Net не интерпретируются, и я ожидаю, что вы делаете неправильные предположения, основанные на этой неправильной маркировке.

Telastyn
источник
Woops, извините за интерпретированный вопрос. Я смешивал там два разных оксюморонных утверждения. Я исправил это в самом вопросе.
Freesnöw
19
Ну, Haskell является старше , чем, например, Java, хотя. Но да, это не значит, что он устарел. На самом деле, эта система типов все еще на 2 десятилетия впереди Java.
Йорг Миттаг
5
@ JörgWMittag: Я думаю, это говорит о Java больше, чем о Haskell.
Тихон Джелвис
1
Я программирую только на Haskell и Java ... но, честно говоря, ни один основной язык не имеет такой системы типов, как Haskell. (И я должен сказать, что OP ..._ намного больше, чем то, что вы упомянули, работает на Java.)
Луи Вассерман,
1
Haskell уже более 20 лет, и стандартному Haskell столько же лет, сколько стандартному C ++ (оба они с 1998 года).
fredoverflow
23

Будьте в форме: получите регулярную практику

Практика делает идеальным.

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

Рекомендуемое чтение:

Изучение новых парадигм и особенностей языка

Возможно, вы не сможете перевести то, что вы используете в совершенно новом Super-Language-X, на ваш Enterprise-Language-Y, но, возможно, вы сможете узнать, когда это могло бы подойти. Возможно, вы сможете узнать, когда интегрировать другую технологию или стек в ваш проект, чтобы соответствовать конкретной цели. Или, может быть, вы будете знать, как использовать возможности языка Y, чтобы эмулировать классную функцию языка X, и реорганизовать свой код, чтобы извлечь из него пользу (и потенциально просветить других коллег по пути).

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

Рекомендуемое чтение:

Быть мастером на все руки ... Мастером некоторых?

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

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

Рекомендуемое чтение:

Оставайтесь адаптируемым

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

Это как песня Oasis "Stay Young" : оставайся молодым и непобедимым .

Если вы можете адаптироваться, вы можете выжить.

Рекомендуемое чтение:

Оставайтесь видимыми: поймите радар агентства по подбору персонала

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

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


Другие полезные темы SE

haylem
источник
Если вы собираетесь прочесть « Прохождение среднего уровня» Пола Грэма (или что-то еще, что он пишет о программировании), возьмите его с крошкой соли. Многое из того, что он говорит о практике программирования, на 50% правильно, а на 50% опасно неправильно.
Мейсон Уилер
@MasonWheeler: Это противоречиво, как и многие вещи, которые вы можете узнать у известных в отрасли «гигантов», самопровозглашенных или нет. Многие люди также не одобрили бы сочинения Зеда Шоу, как и Норвиг. Ко всему нужно подходить критически: я воспринимаю это как данность для всего и предполагаю (надеюсь), что люди на этом уровне тоже. Многие авторы будут представлять темы в свете конкретной ситуации, не подходящей для всех. На самом деле, вы видите это и здесь каждый день в ответах, но благодаря «народной» силе они будут почитаться как «лучшие» ответы. Тем не менее, это информационное.
Хайлем
8

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

  • учиться учиться (практиковаться в освоении новых навыков)
  • тренировать свой мозг, чтобы думать по-новому
  • может быть, получить какие-то менее популярные (или даже эзотерические) знания, которые есть у некоторых людей и которые могут пригодиться
    • или хотя бы поразить их своими техническими знаниями :)
  • и, конечно, это дает ценную техническую информацию. Почему C # более популярен, чем D? Может ли C ++ делать все, что может делать D? Может ли D делать больше, или это больше похоже на синтаксический сахар?

http://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/

Еще одна веская причина для изучения brainf * ck - понять, насколько простым может быть язык программирования, полный по Тюрингу. Обычный аргумент, когда программисты сравнивают языки: «ну, они все выполнены по Тьюрингу», это означает, что все, что вы можете делать на одном языке, вы можете делать на другом. После того, как вы выучите brainf * ck, вы поймете, насколько сложно использовать язык, полный Тьюринга, и как этот аргумент не выдерживает критики.

http://norvig.com/21-days.html (Питер Норвиг)

Выучите как минимум полдюжины языков программирования. Включите один язык, который поддерживает абстракции классов (например, Java или C ++), один, который поддерживает функциональную абстракцию (например, Lisp или ML), один, который поддерживает синтаксическую абстракцию (например, Lisp), один, который поддерживает декларативные спецификации (например, шаблоны Prolog или C ++), один который поддерживает сопрограммы (например, Icon или Scheme), и тот, который поддерживает параллелизм (например, Sisal).

Astyanax
источник
7

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

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

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

Люди смеются, если я даже упомяну VB.NET или C # в серьезном разговоре.

Получить новых людей. AFAIK, VB.NET на самом деле не существует ни по какой причине, кроме как для помощи в переходе с VB6, и на самом деле не является достойной целью, но C # - настоящий язык. Это похоже на Java, за исключением того, что они добавили реальные языковые функции и несколько хороших библиотек. C # является очень популярным, хорошо поддерживаемым языком с очень хорошими инструментами в VS, которые не сосут , что плохо, и является твердым, если не исключительным, что нужно учиться.

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

MONO довольно стабильный. Плюс, в конечном счете, 90% пользователей настольных компьютеров (или 80%?) Используют Windows прямо сейчас. Если вы собираетесь разрабатывать настольное приложение, остается открытым вопрос о том, стоят ли пользователи, не являющиеся пользователями Windows, времени на поддержку, даже если вы используете кросс-платформенный язык.

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

Просто не выбирайте PHP. Единственное, чему вы можете научиться, это как не строить язык.

DeadMG
источник
1
Существенный процент недавних дополнений к стандарту C ++ существует - как значительный процент дополнений в прошлом - для исправления существующих недостатков C ++. Например, ссылки на Rvalue добавляют кучу дополнительной сложности, чтобы обойти кучу проблем с производительностью и сложностью, связанных с конструкторами копирования, которые существуют только потому, что C ++ позволяет использовать объекты в качестве типов значений, что на 100% совершенно неправильно, и есть хорошая причина, почему никакой другой язык ОО не делает этого.
Мейсон Уилер
@MasonWheeler По крайней мере C #, D и Eiffel разрешают объекты как типы значений. И RAII ооочень хорош для системного программирования!
fredoverflow
@MasonWheeler: Rvalue ссылки также позволяют совершенную пересылку и типы только для перемещения. Производительность была лишь одной из трех основных причин их появления. Объекты с типом значения просто в порядке. Плюс, конечно, вы можете писать свои собственные объекты ссылочного типа на C ++, как вам нравится.
DeadMG
Также забавно, что даже несмотря на все эти проблемы с производительностью, C ++ оставался самым быстрым языком в мире.
DeadMG
1
@FredOverflow: в C # все объекты являются ссылочными типами. Структуры могут быть типами значений, но объекты не могут, и это по очень веской причине: если объекты используются в качестве типов значений, вы бросаете огромный гаечный ключ в наследование и полиморфизм и в конечном итоге вынуждены использовать все виды уродливых хаков. как и конструкторы копирования, где назначение (или передача) объекта-потомка переменной родительского типа фактически не назначает этот объект. Это полностью облажает подстановку Лискова, что является основным смыслом использования ООП в первую очередь. Это ужасная идея, и я рад, что она никогда не завоевывала популярность.
Мейсон Уилер
6

Пара комментариев о том, что вы сказали ...

1) Каждый программист должен изучать C, даже если он старый. Это отличный язык для приближения к машине. От совета Джоэла к студентам CS ....

Выучите C до окончания школы

Часть вторая: C. Обратите внимание, я не сказал C ++. Хотя C становится все более редким, он все еще является языком общения для программистов. Это язык, который они используют для общения друг с другом, и, что более важно, он гораздо ближе к машине, чем «современные» языки, которым вы будете учить в колледже, такие как ML, Java, Python, независимо от того, какой модный мусор они преподают. дней. Вам нужно потратить как минимум семестр, чтобы быть ближе к машине, или вы никогда не сможете создать эффективный код на языках более высокого уровня. Вы никогда не сможете работать с компиляторами и операционными системами, которые являются одними из лучших заданий по программированию. Вам никогда не будут доверять создание архитектур для крупномасштабных проектов. Мне все равно, сколько вы знаете о продолжениях, замыканиях и обработке исключений: если вы не можете объяснить, почему while (* s ++ = * t ++); копирует строку, или если это не самая естественная вещь в мире для вас, ну, насколько я понимаю, вы программируете на основе суеверия: врач, который не знает основ анатомии, проходящий мимо рецепты, основанные на том, что, по словам фармацевта, сработает.

2) Языки могут быть полезны для изучения мышления, даже если они не используются широко. Изучите Scheme (или LISP), чтобы понять функциональное программирование, даже если оно не модно. Из другого поста на этой доске .

Поздравляю, это звучит (для меня), как будто вы собираетесь в одну из немногих оставшихся школ, которая на самом деле пытается преподавать информатику. Схема обучения в качестве первого языка (ИМО) очень хорошая вещь. Нет, он не такой коммерческий, как многие другие, но это отличный язык для изучения реальной сущности информатики. - Джерри Коффин 20 октября 2011 года в 3:32

C, C ++ и Java являются побочными продуктами компьютерной науки. Все корни схемы в компьютерной науке. Коммерческие языки имеют такое же отношение к информатике, как McDonalds к кухне. - JasonTrue 20 октября 2011 года в 5:30

Эти парни правы; Вы путаете компьютерное программирование с информатикой - как сказал Дейкстра, это все равно, что спутать конструкцию телескопа с астрономией. Схема о лучшем языке для изучения базовых понятий в информатике. Если вы ожидаете, что получение степени информатики связано с изучением написания бизнес-приложений на Java, вы можете быть зачислены не в ту программу. - Эрик Липперт 20 октября 2011 года в 7:40

Почти все разработчики, которых я знаю, изучали C / C ++ самостоятельно. Вам не нужен университет для этого. - Mouviciel 20 октября 11 в 7:48

По той же причине, что курсы зоологии преподают эволюционную биологию, анатомию и поведение животных, а не то, как убирать стойло слона - jk. 20 октября 11 в 7:58

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

MathAttack
источник
1
«Почти все разработчики, которых я знаю, изучали C / C ++ сами. Вам не нужен университет для этого». То же самое и здесь. В моем университете они дали нам задания по Си, но не дали нам курс Си. Они просто ожидали, что мы, студенты информатики, возьмем книгу и выучим ее.
Джорджио
1
Необходимость учить С - это настоящая пытка. Мои симпатии.
DeadMG
2
На самом деле изучение C было легкой частью, настоящая пытка началась, когда нам пришлось перейти на C ++. ;-)
Джорджио
3

ЛЮБОЙ язык, который вы изучаете, изменится в ближайшие 5 лет. Речь идет не об изучении языка, который, по вашему мнению, может занять какое-то время, а скорее о том, КАК учиться. Чем больше вы будете изучать язык и чем больше будете его изучать, тем больше вы сможете в конечном итоге!

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

Я выучил японский после того, как выучил C ++, BASIC, Pascal, и я могу сказать, что изучение компьютерного языка и иностранного языка требует одинаковых навыков. Эти навыки могут быть потеряны или отточены. Если у вас есть драйв, продолжайте в том же духе и изучайте новые языки!

(ps. что касается изучения FORTRAN или ассемблера, я думаю, что полезно взять хотя бы один семестр старых языков. Это заставляет вас думать о вещах, которые вы просто считаете само собой разумеющимся на более новых языках, таких как флаги, распределение памяти и тому подобное .)

BillyNair
источник
3

Лучше выучите как можно больше «старых» языков, если вы когда-нибудь захотите стать программистом. Начните с Lisp, получите хорошее представление о Forth, обратите пристальное внимание на эволюцию всех языков Wirth, эволюцию Fortran, взлет и падение Prolog, проникните в скрытную экосистему Ada, получите свое секретное оружие от изучения Occam. Погоня за «мейнстримом» - это самая глупая вещь, которую может сделать начинающий программист.

SK-логика
источник
+1: полностью согласен Много интересных идей, которые я получил, экспериментируя с менее распространенными языками, такими как Haskell, Scheme, Scala, SML и т. Д.
Джорджио
2

Я согласен с вами на разоблачительной части вещей. Хотя я знаю Java, C, C ++, Javascript, Python, Ruby и немного .NET (в первую очередь потому, что я ненавижу все, что касается M $ <- личное мнение), я должен сказать, что я действительно люблю программировать на D.

У D есть действительно хороший набор функций (большинство из них реализованы на C ++ / Java (языки, в которых есть абстракции классов) и т. Д.), Но единственное, что мне больше всего нравится - это дженерики и делегаты (упрощает реализацию обратных вызовов). Кроме того, вы получаете гораздо более простой синтаксис по сравнению с C ++. У D есть действительно эффективный сборщик мусора, хотя вы можете самостоятельно обрабатывать память (особенно при взаимодействии с модулями C / C ++). Хотя у D нет множества пользовательских модулей, которые не должны быть препятствием для входа. Вы можете легко взаимодействовать с существующими библиотеками C / C ++ (которые приятны), что делает его избыточным для использования модулей.

D имеет свою собственную стандартную библиотеку (Phobos), которая отвечает всем распространенным задачам программирования. Существует также альтернативная библиотека ( Tango-D2 ), которую вы можете использовать как с Фобосом, так и отдельно. Если вы веб-разработчик и нуждаетесь в написании сервера на основе событий, у Tango есть хорошая абстракция Selector (tango.io.Selector только для select (), poll (), epoll ()). Я нашел, что это работает даже лучше чем libev.

Шрипад Кришна
источник
Не то чтобы я не одобрял изучение D, но для того, кто уже знает статически типизированные, ОО и процедурные, не низкоуровневые языки, определенно стоит больше изучать язык, который подчеркивает другую парадигму или немного ближе к металлу. Там тоже не так много экспериментов с D.
Оставлено около
1
Согласовано. Я думал, что вопрос ОП был сосредоточен на том, что «экспериментальный» - это что-то, что еще не стабильно / поддерживает корпоративную поддержку / что не является общепринятым. И даже если вы пойдете на «экспериментальную» реализацию различных парадигм, я думаю, что существует всего несколько парадигм. И большинство языков реализуют один или другой. Затем мы приходим к тому, какой язык лучше / быстрее / проще в использовании / лучше всего подходит для работы под рукой. Эти факторы отличаются от программиста к программисту.
Шрипад Кришна
1

Языки разрабатываются для решения проблем в некоторой области (по крайней мере, на первых порах). Если вы не сталкивались с проблемами, которые ваши инструменты не могут решить так, как вам удобно, вы будете стучать по деревянной доске, рассчитывая стать плотником. Постарайтесь понять, какие проблемы пытаются решить языки. Единственная разница между «экспериментальным» языком и новым / хип классным языком парня заключается в деньгах, которые его поддерживают, например, Go от Google и Dart. Если они были разработаны на моем заднем дворе, они, вероятно, умрут на каком-то форуме, и все. Они выживают, только если они хорошо объясняют проблемы, которые пытаются решить. Или наоборот, как Perl и C ++, которые хорошо усваивают способы решения проблем, чтобы продолжать жить. И я мог бы предложить изучить Lua, это Язык, созданный для встраивания в программы, очень быстрый и легкий, что даст вам инструменты для решения больших или малых проблем, которые некоторые языки, такие как Java, не могут решить простым способом. На примере японского языка, если вы просто изучите синтаксис, грамматику и алфавиты, игнорируете культуру, вы никогда не поймете, почему это так сложно, и в конечном итоге забудете все об этом. Это ничего не решает для вас.

alfa64
источник
1

Изучение нескольких разных языков даст вам более широкое представление о программировании. Акцент на «другом» - например, изучение C # и Java не научит вас намного большему, чем изучение только одного из них. Но изучение C # или Java и функционального языка (например) будет.

Сказав это, будучи молодым программистом, я думаю, что вы получите гораздо больше пользы от того, чтобы действительно усвоить один язык, прежде чем суетиться, глядя на разные типы языков. Из вашего вопроса не совсем понятно, насколько хорошо вы знаете Java, VB.NET и C #. Уверены ли вы, что если вы напали на проект с использованием одного из перечисленных выше языков, вашим узким местом станет сам проект, а не ваше знание языка? Если бы вы проводили больше времени, спрашивая себя: «Как мне сделать это на языке ?» чем бы вы думали о реальной проблеме, вам, вероятно, нужно больше сосредоточиться на одном из ваших текущих языков.

И лично я думаю, что вы должны принять прагматичный подход к решению, какой это. Java используется для приложений Android? Отлично, если вас интересует создание приложений для Android. Не имеет значения, если это не так. C # не очень подходит для разработки не-Windows? Плохие новости, если вы заинтересованы в разработке для Linux. Не имеет значения, если нет. И так далее.

А "экспериментальные" языки вы упомянули? С практической точки зрения, они плохо подойдут для работы с другими людьми - вы, вероятно, найдете тысячу людей, которые знают C # или Java для каждого, кто знает Fantom. Для личных проектов это не обязательно проблема. Если ваша цель состоит в том, чтобы увеличить вашу возможность трудоустройства, это так.

Carson63000
источник
1

Вы могли бы сказать, что обучение программированию на таком языке, как Postscript или APL, возможно, пустая трата времени, прежде всего потому, что шансы на то, что вы когда-либо будете использовать эти знания, приближаются к нулю. Но в том же духе вы можете утверждать, что Ruby и Python - пустая трата времени, если вы никогда не собираетесь использовать их для чего-либо.

Но мало кто скажет, что изучение Lisp - это пустая трата времени, даже если вам, вероятно, придется писать Lisp как Postscript; но изучение Lisp учит вас думать по-другому о вашей проблеме (надеюсь), поэтому большинство программистов скажут вам, что это стоит вашего времени.

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

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

Я лично очень рекомендую заглянуть в Go. Я использовал его для написания одностраничных программ, которые работают лучше, чем то, что заняло бы три дня и 13 сторонних библиотек на C или C ++, и даже не было бы возможно на Python, C #, Ruby и т. Д. Он был разработан людьми, которые действительно, действительно, действительно знают свое дело.

tylerl
источник
-1

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

Плохо D, это хороший язык, но ему не хватает убойного приложения, которое было у C ++: почти полная обратная совместимость с языком № 1 того времени (C для случая C ++). Это хорошо, но этот важный маленький факт, вероятно, отодвинет D на второй план в учебниках истории.

скоро
источник
-2

C может быть старым, но он все еще очень мощный и интересный, изучение C очень поможет вам в вашем будущем "программирования".

Java не медлителен, кто бы ни сказал вам, что не знает, о чем говорит, Java узнает вас тонну об ООП

Почему бы вам просто не начать с Python, а затем перейти к C или что-то еще,

just_a_dude
источник
C также является языком общения микроконтроллеров (когда у вас есть только 4K, вы не можете позволить себе 8K runtime). Только в этом пространстве у C еще одно хорошее десятилетие активного использования.
TMN
Раньше Java была медленной - я помню, что в первые пару лет она была не просто демоном скорости. Некоторые люди думают, что производительность никогда не улучшалась.
MetalMikester