Я опытный программист на С++ со средними навыками Python. Причины, по которым я изучил Python, в первую очередь:
- чтобы получить другую перспективу в программировании (статический vs динамический, интерпретированный vs скомпилированный и т.д.).
- чтобы увеличить объем проектов, над которыми я могу работать (Python позволяет мне создавать веб-разработки, разрабатывать для телефонов Symbian или сбивать быстрые сценарии администрирования системы).
- в дополнение к моим навыкам С++.
Я думаю, что Python замечательный, и я считаю, что достиг этих целей. Я буду продолжать использовать его для небольших проектов, сценариев и веб-разработки.
Я сомневаюсь, что могу использовать его для средних и крупных проектов. Хотя динамическая типизация удобна, она позволяет определенному классу ошибок, которые я нахожу тревожными. Модульное тестирование и листинг могут облегчить эту проблему, но статическая типизация полностью исключает ее.
Посмотрев на некоторые языки программирования, я думаю, что Scala выглядит хорошим кандидатом: Мне нравится вывод типа, и он запускается на JVM, поэтому он должен быть доступен везде, где доступна JVM. Я также могу узнать больше о функциональном программировании при его использовании.
Но... У меня также есть некоторые сомнения, и я надеюсь, что сообщество Qaru может помочь:
- Переносимость: Linux и Windows по крайней мере я надеюсь. Как насчет мобильных телефонов, можно ли запустить его там?
- Совместимость с С++: можно ли смешивать код С++ с Scala? (JNI?)
- Парадигма программирования: я не чувствую себя комфортно с переключением на функциональное программирование (FP) в это время. Можно ли сначала использовать объектно-ориентированный и процедурный с некоторыми FP, а затем изменить пропорции по мере того, как я узнаю?
- Зрелость цепочки инструментов: какой у вас опыт работы с IDE и отладчиками? Я использую Eclipse прямо сейчас, и это кажется ОК.
- Скорость обучения: учитывая мой опыт, как быстро вы думаете, что я могу достичь уровня работоспособности с помощью Scala?
- Развертывание: как именно вы развертываете программу Scala? Является ли это банкой, это исполняемый файл?
Наконец, что вы думаете, что некоторые из недостатков Scala?