Java-программер.
Подбираю язык для быстрой разработки небольших приложений и скриптов.
Надоела джава, потому что:
- Boilerplate code
- Иногда язык слишком многословен
- Иногда слишком много XML.
- Для очень маленьких «одноразовых» приложений лениво поддерживать инфраструктуру проекта. Иногда хочется просто накидать 50 строк в файле и запустить.
Т.е. главные критерии при выборе
- меньше писать кода
- меньше ручных действий поддержку зависимостей
После некоторых раздумий взгляд пал на Python и Scala. Написал на каждом из них по небольшой утилите. Описываю мои сомнения по каждому из них.
Python:
- Version Hell. Python 2 vs 3. Неприятная неожиданность - значительная часть библиотек есть только для Python 2. Зарядил тулу на 3-ей версии, понадобилось подключить mechanize - фейл. Она только для 2-ой версии. Immunity Debugger завязан также на 2-ую версию. Вот так сразу наткнулся в первый день.
- Dependency Hell. Казалось бы, питон - кроссплатформенный. Но куча питоновских либ - это лишь обертки над сишными либами. Иногда их установка - тот ещё геморрой. Посмотрите сюда - http://www.lfd.uci.edu/~gohlke/pythonlibs/ - некоторые либы имеют до 10 инсталлеров под винду (жесть). Часто зависимости разруливаются руками. Посмотрите stackoverflow - часто поставить всё это месево - то ещё челендж.
Scala:
- Невнятная поддержка редакторами кода. Подцветка на Notepad++ и SublimeText начинает лажать, когда начинаешь использовать фичи вроде «„“ и т.д. Из IDE пробовал только Intellij IDEA + Scala plugin - часто не может сделать автокомплит.
- Крайне скудная документация - следствие малого community. Решение проблемы, выходящей за рамки того, что описано в офиц. манах, может занять очень много времени.
- Интеграция с java отнюдь не бесшовная. Хочешь заюзать джава либу в скале - надо перевести джавовские коллекции в коллекции скалы. Чтобы можно было делать foreach, filter, map и т.д. Бойлерплейт же.
Какой ваш выбор в данной ситуации? Если питон - как боретесь с вышеописанными недостатками? Если скала - то же самый вопрос.