Не пишите содержание или предоставляйте услугу, которая может обратиться к фанатам;)
Вы думали о Groovy? Я не думаю, что он такой же функциональный, как Scala / Clojure, но он определенно намного функциональнее Java **. В общем, я могу проделать ту же работу в Groovy примерно с 50% кода, который мне потребуется на Java.
Это потому, что Groovy синтаксически похож на Java и обеспечивает беспрепятственный доступ к библиотекам JDK, но добавление множества языковых функций (замыкания, метапрограммирование, свойства) и динамическая типизация устраняют почти все шаблоны, связанные с программированием на Java.
** Я имею в виду функциональность в смысле «функционального программирования», а не «правильная работа»
Откровенно говоря, найди другую работу.
Если вам предстоит провести следующие три года, чувствуя себя некомфортно из-за того, что вы делаете, вам следует подумать о поиске более привлекательных альтернатив.
Даже если вам удастся выучить язык, который вам нравится, если вы являетесь частью команды (а я думаю, что это так), остальной части команды этот язык может не понравиться. Если остальные кодируют на Java, а вы используете язык программирования « заполните пробел », то могут возникнуть проблемы.
Это не так уж и плохо.
Поговорите со своим начальником, расскажите ему, как вы себя чувствуете. Начните искать альтернативы и получите хороший и профессиональный «отпуск».
Нет причины, по которой у вас все еще не могут быть хорошие отношения со своим нынешним начальником. Если в конце концов у них появится новый проект для .net, вы можете вернуться. Об этом также поговорите с ними. Оставьте свои двери открытыми.
Я обращусь к вопросам, которые вы подняли по поводу Scala.
Поддержка IDE :
Scala не имеет такого же уровня или поддержки IDE У Java есть - или, если на то пошло, у F # должен быть VS10.
Тем не менее, у него одна из лучших (возможно, даже лучших?) IDE, поддерживаемых на JVM, за пределами Java. В настоящий момент NetBeans достаточно хорош, и люди постоянно говорят, что IDEA все еще лучше (по слухам). Плагин Eclipse, тем не менее, нестабилен.
Но вы упомянули трехлетний диапазон, и поддержка Scala в среде IDE должна быть значительно улучшена после выхода Scala 2.8, поскольку он обеспечит некоторую поддержку компилятора для IDE. Дата выхода не определена, но похоже, что это произойдет в течение следующих шести месяцев, может быть, трех. И плагин Eclipse будет обновлен вместе с ним.
Инфраструктура модульного тестирования In flux :
Да, если вы имели в виду, что он динамичный, развивающийся и хорошо поддерживаемый, а не застойный и заброшенный. ScalaTest, Specs и ScalaCheck - это фреймворки высшего качества, совместимые между собой и совместимые с другими фреймворками и библиотеками Java, такими как JUnit и JMock.
Фреймворки тестирования, по сути, являются почти дочерним плакатом того, что возможно с Scala. .
РЕДАКТИРОВАТЬ: Scala имеет базовую поддержку модульных тестов в своей стандартной библиотеке (scala.testing.SUnit). Однако, учитывая, что появилось много превосходных, активно поддерживаемых и бесплатных альтернатив, он устарел и, скорее всего, не будет частью библиотеки, поставляемой с Scala 2.8.
Проблемы с производительностью :
Я ничего не знаю, кроме того факта, что вы можете писать паршивый код, как и на любом другом языке. Люди, не привыкшие к функциональному программированию, часто делают вещи, которые неэффективны, например, не используют хвостовую рекурсию или конкатенацию списков, и сдвиг парадигмы, который позволяет Scala, проливает свет на это.
В любом случае, вы можете писать код Scala как быстрее, чем код Java (даже быстрее с некоторыми предстоящими функциями). И вы можете писать код Scala с функциональными возможностями почти так же быстро, как код Java.
На мой взгляд, и Clojure, и Scala не имеют большой поддержки IDE, если это действительно важно для вас. Тем не менее, вот что я могу почерпнуть из своего чтения и опыта.
Плюсы Scala
О распределенном параллелизме
Если ваши потребности в параллелизме распределены, Clojure не У меня еще есть что-нибудь для этого, если вы не запустите его поверх Terracotta или чего-то подобного, и в этом случае вы сможете использовать все его функции параллелизма. Если вы это сделаете, у вас будет лучший опыт распределенного параллелизма, чем у Scala Actors, IMO.
Заключение
IMO Scala пытается делать все и преуспевает в выполнении большей части. Clojure не пытается сделать то же самое, но то, на чем он фокусируется, более чем достаточно и преуспевает настолько хорошо, что большинство людей, действительно знающих Clojure, не захотят возвращаться к чему-то еще. Раскрытие информации : мои личные предпочтения, конечно же, в пользу Clojure. Я надеюсь, что смог быть объективным в том, что написал.
у вас будет лучший опыт распределенного параллелизма, чем у Scala Actors, IMO.Заключение
IMO Scala пытается делать все и преуспевает в выполнении большей части. Clojure не пытается сделать то же самое, но то, на чем он фокусируется, более чем достаточно и преуспевает настолько хорошо, что большинство людей, действительно знающих Clojure, не захотят возвращаться к чему-то еще. Раскрытие информации : мои личные предпочтения, конечно же, в пользу Clojure. Я надеюсь, что смог быть объективным в том, что написал.
у вас будет лучший опыт распределенного параллелизма, чем у Scala Actors, IMO.Заключение
IMO Scala пытается делать все и преуспевает в выполнении большей части. Clojure не пытается сделать то же самое, но то, на чем он фокусируется, более чем достаточно и преуспевает настолько хорошо, что большинство людей, действительно знающих Clojure, не захотят возвращаться к чему-то еще. Раскрытие информации : мои личные предпочтения, конечно же, в пользу Clojure. Я надеюсь, что смог быть объективным в том, что написал.
Не хочу возвращаться к чему-то другому. Раскрытие информации : мои личные предпочтения, конечно же, в пользу Clojure. Я надеюсь, что смог быть объективным в том, что написал. Не хочу возвращаться к чему-то другому. Раскрытие информации : мои личные предпочтения, конечно же, в пользу Clojure. Я надеюсь, что смог быть объективным в том, что написал. Это не совсем игра с нулевой суммой, выучите их все!
ps: я голосую за Clojure , я считаю его самым интересным!
Считайте, что вам повезло, что вы можете использовать JVM, потому что JVM становится все более популярной среди альтернативных языков программирования, чем Java.
Помимо Java, существует Groovy ], Scala , Clojure (диалект Лиспа на JVM), JRuby (Ruby на JVM), Jython (Python на JVM), Jaskell (Haskell на JVM), Fan (работает как на JVM, так и на .NET CLR) и многое другое, а также есть OCaml -Java , OCaml, который работает на JVM.
Таким образом, существует большой выбор языков программирования на JVM, от чисто функциональных до простых сценариев и расширенных языков объектно-ориентированного программирования.
Инструментальная поддержка Scala и Clojure может быть незрелой, но она постоянно улучшается.
Поскольку вам нравится F #, то, скорее всего, лучше всего подойдет Scala. Я предлагаю попробовать и составить собственное мнение - вы можете обнаружить, что люди недовольны тем, что не имеет для вас значения или над чем можно работать.
Я думаю, у вас отличная ситуация. Сколько людей получают разрешение на выбор языка реализации? Для всего, что доступно для JVM, выбор вашей среды не является большим ограничением.
Нет? http://code.google.com/p/noop/ (хотя экспериментально)
С точки зрения поддержки IDE и других сомнений, которые у вас возникают, Clojure ничем не лучше Scala. А для человека с опытом ML / F # (или, как правило, со строго статически типизированными языками FP) вы определенно найдете Scala намного ближе к тому, к чему вы привыкли.
Если вам нравится ML, вам может понравиться CAL , который является более или менее Haskell 98 для JVM.
Это высокое качество, очень стабильная и хорошая поддержка IDE в Eclipse, но, к сожалению, больше не находится в активной разработке.