Динамичный язык для изучения ради любопытства

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

Как человек, использующий только C и C #, мне любопытно выучить динамический язык, чтобы расширить свои знания. Я не знаю, что выбрать.

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

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

  • Какой динамический язык будет самым большим отклонением?
  • Что представит самые новые концепции?
  • Какой образец динамических языков?

person xyz    schedule 30.06.2009    source источник
comment
Я хотел бы предложить Python только потому, что ресурсы доступны. Однако я не уверен в уходе и новых концепциях.   -  person Cambium    schedule 30.06.2009


Ответы (9)


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

Я предполагаю, что это будет включать Scheme, Erlang и Oz

  • Какой образец динамических языков?

Я бы сказал Ruby и Python

person Niki    schedule 30.06.2009

Я бы посоветовал изучить IronPython. Как язык, он по-прежнему будет значительным отклонением для вас, но вы сможете использовать в среде .NET все, с чем вы знакомы. (Обычно я думаю, что неплохо попытаться радикально изменить только один аспект разработки за раз ... прорабатывайте разные аспекты по одному, и вам всегда будет комфортно с частью того, что вы делаете, что поможет вам быстрее изучить новую часть, ИМО.)

Кроме того, с C # 4 вы сможете вызывать IronPython из вашего кода C #, в том числе таким образом используя его динамические функции.

person Jon Skeet    schedule 30.06.2009
comment
Я собирался предложить IronPython или IronRuby, здорово изучить новый стиль программирования на основе той же согласованной структуры. Позволяет сосредоточиться на различиях в языке, а не в структуре - person JoshBerke; 30.06.2009

Функциональные языки (LISP, Scheme и т. Д.) Всегда заслуживают внимания. Они могут быть одними из самых крупных отклонений.

JavaScript - отличная ступенька для перехода от арены C к функциональной арене. Оттуда вы можете возиться с JQuery, который, хотя и не является языком, заставляет вас делать что-то непроцедурными способами.

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

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

person Tom Hubbard    schedule 30.06.2009
comment
Не уверен, что я бы классифицировал SQL как динамический язык, но это все же то, что большинство разработчиков должны знать (особенно приложения веб / корпоративного типа). - person JoshBerke; 30.06.2009

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

Еще один интересный динамический язык, на который стоит обратить внимание, - это Lua.

person boxofrats    schedule 30.06.2009

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

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

person Andrew Hare    schedule 30.06.2009

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

За исключением Lisp, я бы выбрал Ruby.

person Mikael Auno    schedule 30.06.2009

Я собираюсь проголосовать за Common Lisp здесь. Это очень динамичный язык, который можно адаптировать практически ко всему. Вы получаете не только функциональное программирование, но и объектно-ориентированное программирование, и даже процедурное, если хотите. А макросы в Лиспе очень интересно изучать, поскольку, насколько мне известно, ни один другой язык не имеет его эквивалента.

Кроме того, разработка в функциональном стиле также помогает разработке на других языках. Например, я заметил, что использую объектно-ориентированный объект в основном с неизменяемыми объектами, благодаря концепциям, на которые повлияли Lisp и Scheme. Благодаря этому я заметил улучшение стабильности и ремонтопригодности моих объектно-ориентированных приложений. Всего два цента.

person Joe M    schedule 30.06.2009
comment
Я также хотел бы добавить, что изучение схемы и чтение структуры и интерпретации компьютерных программ неоценимо. Это дало мне лучшее представление об улучшении качества абстракций данных и API в целом. - person Joe M; 30.06.2009

Я долгое время был разработчиком C ++ и C #, а недавно начал экспериментировать и изучать другие языки. Я немного поиграл с Руби, и она мне понравилась, но это было не то, что я хотел.

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

Мне пока очень нравится этот язык. Прошло всего около месяца, а синтаксис все еще иногда меня раздражает, но я действительно вижу силу сопоставления с образцом и с нетерпением жду возможности написать его снова. Сначала я боролся с концепцией неизменяемости всего. Но в основном это произошло потому, что я «вырос» на C # и C ++. C # - отличный язык, в нем есть несколько замечательных инструментов, но вы действительно получаете удовольствие от работы с некоторыми другими языками, особенно с чем-то вроде Erlang. Просто не ожидайте получить работу в качестве разработчика Erlang на полную ставку. (По крайней мере, пока).

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

person marcc    schedule 30.06.2009
comment
Я хотел бы повторить это, я еще не изучил erlang, но следующий серверный проект, который я делаю, я собирался попробовать и выполнить на erlang. Это почтенный язык с впечатляющими способностями. - person Kendall Helmstetter Gelner; 30.06.2009

Если вы действительно хотите сойти с ума, но хотите, чтобы все было хотя бы немного знакомо (я знаю, что это звучит как противоречие, но это правда), взгляните на F #. Это язык с выводом типа, но он поддерживает множество свойств динамического типа. Это функциональный язык, построенный на основе CLR, поэтому вы можете в полной мере использовать объектную систему .Net, что здорово. Поскольку это функциональный язык, существует достаточно новых концепций, чтобы действительно поработать ваш мозг.

Если вы действительно хотите сделать «самый большой шаг вперед», Clojure может вас заинтересовать. Это диалект Лиспа, построенный на JVM. Это привлекает довольно серьезное внимание как в мире Java, так и в мире Lisp. Это может соответствовать вашим целям.

person Brett Bim    schedule 30.06.2009