Динамические языки - какой выбрать? - PullRequest
4 голосов
/ 24 июня 2009

Динамические языки находятся на подъеме, и их много: например, Ruby, Groovy, Jython, Scala (статический, но имеет внешний вид динамического языка) и т. Д. И т. Д. Я имею опыт программирования на Java SE и EE, и я хочу расширить свои знания на один из этих динамических языков, чтобы лучше подготовиться к будущему.

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

Ответы [ 12 ]

0 голосов
/ 11 ноября 2014

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

Наличие информации о типе делает код намного более читабельным, и удобочитаемость должна быть вашими критериями # 1 в кодировании. Человеку дорого читать код, все, что мешает ясному и точному пониманию читателем, - плохо. В ОО-языках это еще хуже, потому что вы всегда делаете новые типы. Читатель, только знакомясь, будет колебаться, потому что он не знает типы, которые передаются и изменяются. Например, в Groovy допустимо следующее def accountHistoryReport(in, out) Читая это, я понятия не имею, что такое in и out. Когда вы смотрите на 20 различных методов отчета, которые выглядят одинаково, вы можете быстро перейти к полному убийству.

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

Мое эмпирическое правило заключается в том, что я пишу сценарии на динамических языках, а системы - на компилируемых статически типизированных языках.

0 голосов
/ 25 июня 2009

я бы проголосовал +1 за Groovy (и Grails). Вы можете печатать со стилем Java или Groovy (вы также можете смешивать оба и не беспокоиться об этом). Также вы можете использовать Java-библиотеки.

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