После более-менее плотного знакомства со Scala пару лет назад, я не решился использовать ее. Так как мне этот язык показался несколько переусложненным, слишком динамично меняющимся и недостаточно качественно реализованным. Но время идет, ситуация, возможно, меняется. Сейчас Twitter использует Scala. Состоялся релиз web-фреймворка Lift. В блогах ScalaActors зачастую упоминаются в купе с Erlang-ом как образец использования модели актеров...
Так вот интересно, рассматривает ли уже кто-нибудь Scala как пригодный для промышленного программирования? Использует ли? Или планирует использовать? Категорически не собирается использовать?
Буду признателен за любые соображения на эту тему.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
eao197 пишет:
> решился использовать ее. Так как мне этот язык показался несколько > переусложненным, слишком динамично меняющимся и недостаточно качественно
SCALA переусложнённая ? Ну, извини ...
SCALA — это МОЩЬ !
> Так вот интересно, рассматривает ли уже кто-нибудь Scala как пригодный > для промышленного программирования? Использует ли? Или планирует > использовать? Категорически не собирается использовать?
Ну я не вижу, почему бы её не использовать.
Она генерирует точно такой же p-code, как и Java , вроде бы.
Ну, может конечно неоптимально генерировать. Но далее вроде
бы уже на уровне p-code-а Java-машина докомпилировывает
и оптимизирует.
Принципиально огромной накладухи там вроде бы нет,
ну т.е. я не заметил пока (в языке самом, не в реализации).
Я, конечно, пока не большой знаток, пока ещё не использовал,
но хочу что-то вместо Java. Либо scala, либо Jithon, либо CLOJURE.
. MZ>Она генерирует точно такой же p-code, как и Java , вроде бы.
Java не генерирует p-код. И это мало говорит о достоинствах
языка.
Насчёт Scala: не использую и не буду, т.к. не люблю всё маргинальное и ненормальное.
А кто верит шумихе — пусть посмотрит, что именно запрограммировано на Scala и стоит ли оно
того, чтобы шуметь.
Здравствуйте, MasterZiv, Вы писали:
>> решился использовать ее. Так как мне этот язык показался несколько >> переусложненным, слишком динамично меняющимся и недостаточно качественно
MZ>SCALA переусложнённая ? Ну, извини ... MZ>SCALA — это МОЩЬ !
Меня постоянно вводили в ступор такие вещи, как контравариантность и ко/контравариантные позиции аргументов.
MZ>Я, конечно, пока не большой знаток, пока ещё не использовал, MZ>но хочу что-то вместо Java. Либо scala, либо Jithon, либо CLOJURE.
Это напоминает перефразированное "Булгакова не читал..." -- не читал, но при случае прочитаю обязательно
Если серьезно, то Scala и Jython -- все-таки языки для разных задач. И если Scala как замена Java еще понятно, то вот Jython как замена Java... Ну разве что в области задач, в которых рулят скриптовые языки.
Собственно, вопрос упирается в то, считает ли кто-нибудь Scala достаточно стабильным языком, для того, чтобы тратить ресурсы на создание кодовой базы на Scala. Т.е. во главу угла ставится не столько мощность языка, сколько его собственная стабильность и наличие вокруг него достаточно развитой инфраструктуры (в виде коммунити, базы пользователей, инструментов и документации).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Так вот интересно, рассматривает ли уже кто-нибудь Scala как пригодный для промышленного программирования? Использует ли? Или планирует использовать? Категорически не собирается использовать?
Я не использовал Скалу промышленно — года полтора назад написал на ней компилятор ~3K строк — думаю версия тогда была 2.4. С тех пор пересобираю его под каждой новой версией — проблем не было.
Типоголизм я особенно не трогал — мне нужен был язык типа SML (дататипы, паттерн-матчинг, немного RAII и интероп с Java) — все это я в принципе получил, хотя из-за аннотаций типов порой трудно уместиться в 80 колонок.
Если мне придется еще что-нибуть писать под JVM — разумеется выберу Скалу, а под Net: F#
Сам Одерски некоторое время назад оценивал зрелость компилятора на уровне javac 1.4 (он был одним из разработчиков — если кто не знает).
eao197 пишет:
> Это напоминает перефразированное "Булгакова не читал..." -- не читал, но > при случае прочитаю обязательно
да читал я, читал. И, кстати, не Булгакова, а Пастернака.
> Если серьезно, то Scala и Jython -- все-таки языки для разных задач. И
Ну, функциональные и объектно-ориентированные языки общего назначения, не
понимаю, почему для разных.
> если Scala как замена Java еще понятно, то вот Jython как замена Java...
То же самое. Лучшая Java.
> Ну разве что в области задач, в которых рулят скриптовые языки.
При чём тут скриптовость ?
Если под ним Java-машина лежит, уже всё, нет скриптовости.
Здравствуйте, MasterZiv, Вы писали:
>> Если серьезно, то Scala и Jython -- все-таки языки для разных задач. И
MZ>Ну, функциональные и объектно-ориентированные языки общего назначения, не MZ>понимаю, почему для разных.
>> если Scala как замена Java еще понятно, то вот Jython как замена Java...
MZ>То же самое. Лучшая Java.
Если под Jython-ом понимается именно Jython, то это же Python, только поверх Java. По производительности он вряд ли когда-нибудь сравниться со статически-типизированной Scala.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, MasterZiv, Вы писали:
>> Ну разве что в области задач, в которых рулят скриптовые языки.
MZ>При чём тут скриптовость ? MZ>Если под ним Java-машина лежит, уже всё, нет скриптовости.
Не повторяй больше эту глупость. Код родным питоном тоже машинные коды лежат, но это не делает его компилируемым.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
eao197 пишет:
> <http://www.jython.org/Project/>, то это же Python, только поверх Java. > По производительности он вряд ли когда-нибудь сравниться со > статически-типизированной Scala.
Чем там НЕстатическая типизация вам не угодила по производительности?
Ну, есть может там накладуха небольшая, но вы же не дефуры будете
на питоне решать. А там эти +- 2 милисекунды никому не помешают.
VladD2 пишет:
> Не повторяй больше эту глупость. Код родным питоном тоже машинные коды > лежат, но это не делает его компилируемым.
Я конечно не большой эксперт, но вроде бы как именно в C-Python
код (уже P-код, конечно) интерпретируется. JAVA имеет Jit.
В питоне вроде бы его нет.
А в чём тогда по-твоему разница между компилятором и интерпретатором ?
Расскажи, пожалуйста, потому как штука сложная, где там интерпретатор,
где компилятор --- уже давно нихрена не понятно.
Здравствуйте, MasterZiv, Вы писали:
>> <http://www.jython.org/Project/>, то это же Python, только поверх Java. >> По производительности он вряд ли когда-нибудь сравниться со >> статически-типизированной Scala.
MZ>Чем там НЕстатическая типизация вам не угодила по производительности?
В данной теме это уже оффтопик. Предлагаю его не развивать, тем более, что священных войн static vs dynamic на RSDN отгремело уже достаточно.
MZ>Ну, есть может там накладуха небольшая, но вы же не дефуры будете MZ>на питоне решать. А там эти +- 2 милисекунды никому не помешают.
Не дифуры. На данный момент я занимаюсь нагруженными серверами и, временами, обработкой больших объемов данных. Лишние миллисекунды мешают, иногда очень сильно.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, MasterZiv, Вы писали:
MZ>А в чём тогда по-твоему разница между компилятором и интерпретатором ? MZ>Расскажи, пожалуйста, потому как штука сложная, где там интерпретатор, MZ>где компилятор --- уже давно нихрена не понятно.
Jython (как и IronPython) не полноценный компилятор в ява байткод, это грубо
говоря виртуальная машина для питона написанная на ява вместо си.
Здравствуйте, MasterZiv, Вы писали:
MZ>А в чём тогда по-твоему разница между компилятором и интерпретатором ? MZ>Расскажи, пожалуйста, потому как штука сложная, где там интерпретатор, MZ>где компилятор --- уже давно нихрена не понятно.
Ну нет — разница между компилятором и интерпретатором на практике весома, груба и зрима. Здесь
представлена демонстрация разницы для IronPython.
Если же мы воспользуемся jythonc версии 2.2.1 для компиляции того же самого примера
# Fibonacci numbers moduledef fib(n): # write Fibonacci series up to n
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while b < n:
result.append(b)
a, b = b, a+b
return result
Здравствуйте, MasterZiv, Вы писали:
MZ>VladD2 пишет:
>> Не повторяй больше эту глупость. Код родным питоном тоже машинные коды >> лежат, но это не делает его компилируемым.
MZ>Я конечно не большой эксперт, но вроде бы как именно в C-Python MZ>код (уже P-код, конечно) интерпретируется. JAVA имеет Jit. MZ>В питоне вроде бы его нет.
MZ>А в чём тогда по-твоему разница между компилятором и интерпретатором ? MZ>Расскажи, пожалуйста, потому как штука сложная, где там интерпретатор, MZ>где компилятор --- уже давно нихрена не понятно.
Раз в вирт. машине отсутствует поддержка динамических языков, то как вообще можно скомпилировать pyhton-код в байт-код?
obj.foo() — во что это будет компилироватья?
Может и можно, только это будет уже все что угодно, но не динамически типизированный Puthon в сегдняшнем виде.
... << RSDN@Home 1.2.0 alpha 4 rev. 1089>>
Социализм — это власть трудящихся и централизованная плановая экономика.
LP>obj.foo() — во что это будет компилироватья?
LP>Может и можно, только это будет уже все что угодно, но не динамически типизированный Puthon в сегдняшнем виде.
Компилировать динамический язык вполне реально, тот же PyPy http://codespeak.net/pypy/dist/pypy/doc/ умудряется большую часть среднетипичного кода трансформировать в статитически типизированный RPython.
Да и явовские JIT'ы ведут свою родословную от JIT динамически типизированного Smalltalk'а.
Здравствуйте, Qbit86, Вы писали:
Q>С добавлением Dynamic Language Runtime в .NET 4.0 ситуация для IronPython'а должна улучшиться.
DLR, собственно, в IronPython и появился. Они просто его оттуда вычленят и сделают более доступным для других в виде части фреймворка. Сам IronPython от этого никак не изменится.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, LaPerouse, Вы писали:
LP>>obj.foo() — во что это будет компилироватья?
LP>>Может и можно, только это будет уже все что угодно, но не динамически типизированный Puthon в сегдняшнем виде.
FR>Компилировать динамический язык вполне реально, тот же PyPy http://codespeak.net/pypy/dist/pypy/doc/ умудряется большую часть среднетипичного кода трансформировать в статитически типизированный RPython. FR>Да и явовские JIT'ы ведут свою родословную от JIT динамически типизированного Smalltalk'а.
Мне околопитоновское окружение абсолютно неизвестно, я просто исхожу из общих рассуждений о невозможности скомпилировать динамический язык в статический байт-код. Причина очевидна — нет информации о типе и взять ее неоткуда, разве что не прогнать программу в интерпретаторе и посмотреть в рантаймовые типы, делая стат. связки если можно и транслировать в сообщение об ошибке компиляции NoSuchMethodException когда нельзя. Чудес не бывает.
... << RSDN@Home 1.2.0 alpha 4 rev. 1089>>
Социализм — это власть трудящихся и централизованная плановая экономика.
Здравствуйте, z00n, Вы писали:
Z>Здравствуйте, eao197, Вы писали:
E>>Так вот интересно, рассматривает ли уже кто-нибудь Scala как пригодный для промышленного программирования? Использует ли? Или планирует использовать? Категорически не собирается использовать?
Z>Я не использовал Скалу промышленно — года полтора назад написал на ней компилятор ~3K строк — думаю версия тогда была 2.4. С тех пор пересобираю его под каждой новой версией — проблем не было.
Z>Типоголизм я особенно не трогал — мне нужен был язык типа SML (дататипы, паттерн-матчинг, немного RAII и интероп с Java) — все это я в принципе получил, хотя из-за аннотаций типов порой трудно уместиться в 80 колонок.
Z>Если мне придется еще что-нибуть писать под JVM — разумеется выберу Скалу, а под Net: F#
Z>Сам Одерски некоторое время назад оценивал зрелость компилятора на уровне javac 1.4 (он был одним из разработчиков — если кто не знает).
Я где-то с годик назад смотрел скалу и вроде как паттерн матчинг был там совсем никакой, вроде как можно было делать сопоставление только для одного объекта, или я это путаю скалу с чем-то другим?
... << RSDN@Home 1.2.0 alpha 4 rev. 1089>>
Социализм — это власть трудящихся и централизованная плановая экономика.