Pull to refresh

Comments 77

>Java отпадает за неинтересностью
>за неинтересностью
а вот с этого места пожалуйста поподробнее
Java я знаю и знаю хорошо (по крайней мере, знал хорошо два года назад, вряд ли что-то глобально изменилось с тех пор). Хочется чего-то нового и удивительного.
А я считаю все это (Jython, JRuby, Jambi) костылями, на которые в серьезном приложении пологаться нельзя ибо не понятно будут они существовать завтра или нет. Исключение наверное только Groovy.
[offtop]А вообще в самой java очень много интересных и незнакомых вещей, я вас уверяю ): [/offtop]
Да много конечно, кто б спорил, но после Python с его syntax sugar на обычную Java смотреть как-то не хочется ;-)

А вот насчет вашего мнения — мы его примем во внимание! А почему Groovy отдельно стоит?
наверное потому, что за него всей душой болеют такие дяди, как Oracle
Не знал. Это причина, да ;)
Можете еще посмотреть в сторону Scala (введение на Хабре) — тоже новый, активно развивающийся язык, но немного в другом направлении от того же Groovy.
Scala да, про нее я забыл.
Еще забыли про Clojure. Недавно решил перейти на JVM с одного из эзотерических ЯП (эдакий язык-платформа) и Clojure пока фаворит.
Да, еще один. Надо будет посмотреть обязательно.
Тоже рекомендую Clojure. Очень емкий, выразительный язык с мощью макросов Лиспа.
Я тоже за Scala, с Clojure на втором месте.
Пользуясь случаем — кто-нибудь встречал мануал по написанию ЯП на основе JVM? А то проблема встала, вторые сутки мучаю гугл, а результат, мягко говоря, скромный.
вам нужен прямо язык с нуля? В чём проблема посмотреть исходники существующих?
нечто вроде, да.

Проблема, как и в любых исходниках — это не проектная документация. Куски понять можно, но причины, по которым они там появились — не всегда.
UFO just landed and posted this here
я за Groovy. Да и учить его можно и не с нуля. Плюс у него есть разные полезные фреймворки типа Grails/Griffon и GPars/Groovy++
Читаю комментарии и тоже постепенно склоняюсь к этой мысли. И вообще он какой-то клёвый — конструкции типа:
theMap = [ key : { it -> println(it) } ]
theMap.key(10)
меня начинают нереально радовать ;)
Я сейчас вот это читаю:

www.asert.com.au/pubs/Groovy/Groovy.pdf

Довольно толково, кратко и сжато написано, что такое Груви, чем он лучше Джавы и с чем его едят. За ссылку спасибо, обязательно прочитаю.
>www.asert.com.au/pubs/Groovy/Groovy.pdf
о, эту презентацию я читал) хорошо написано

>За ссылку спасибо, обязательно прочитаю.
там клёвых конструкций много-много
не хочешь изучить новый язык? ты не программист!
Скала всем хороша, один минус у нее — чуть больше матана, чем в руби, например; а так же слегка наметилась тенденция «мы захардкодим это в язык». Посмотрим, что дальше будет
Хотите нового и необычного — попробуйте Clojure. Но по-моему лучше не рисковать и писать на старой доброй Java.
Я же не ошибаюсь, когда думаю что Clojure это диалект Лиспа? Если так, то это не для меня — мои многочисленные попытки разобраться с Лиспом закончились грандиозным фейлом (по-моему, у меня просто мозги не хотят функционально работать)
Clojure — это немного другое… Не ощущения плотной стены скобок и списков, как в классических лиспах. Плюс много вкусностей типа Software Transactional Memory, Persistent Data Structures, и т. д.
Реально интересно, даже после руби.
UFO just landed and posted this here
А где разница? Groovy это практически калька с Ruby.
по синтаксическим возможностям groovy действительно может всё, что может ruby и даже, пожалуй, побольше. Но как минимум там нет описанных diggy минусов типа несобираемых/заброшенных библиотек, да и с комьюнити там всё хорошо. Ну и систаксис всё же принципиально ближе к java
UFO just landed and posted this here
UFO just landed and posted this here
отвечу выборочно:

>do end лучше, чем {}
очень субьективно

>метод без аргументов нельзя писать без (), сюда же — нету "?" в конце методов
можно, только это будет другой метод уже.

>сюда же — нету "?" в конце методов возвращающих логическое значение и "!"
не очень понял, честно говоря. в groovy? — это elvis и safe navigation+можно переопределить true/false для любого класса

>оператор new, вместо «православного» вызова метода .new
groovy.codehaus.org/Newify+transformation

>нет перегрузки операторов, потому как операторы не являются методами (тут я очень не уверен, если что).
есть. более того, для многих классов они уже переопределены.

>более формальный стиль кодирования, нельзя написать puts 'olala' if x > y
ну вот не факт, что это лучше обычного if

итого различия присутствуют, однако принципиальных плюсов ruby я пока не вижу
UFO just landed and posted this here
Сахар то для дебилов?:)
Тогда большинство программистов дебилы, т.к. вместо
сhar *a = "asdf";
char *b = "fdsa";
char *res = (char*)malloc(strlen(a) + strlen(b)+1);
strcpy(res, a);
strcat(res, b);

пишут банальное «asdf» + «fdsa»:)
UFO just landed and posted this here
Ну, с мэйнстримовыми библиотеками в Ruby все отлично:) И комьюнити оочень большое, в 2005 году, с появлением Rails, много Java программистов перешли на Ruby. Вон, даже Фаулер:)
А вот русское комьюнити, да, очень слабо развито…

>>по синтаксическим возможностям groovy действительно может всё, что может ruby и даже, пожалуй, побольше.
Про больше интересно, не холивара ради:) Где-то год назад смотрел Groovy, ничего нового не увидел, осталось впечатление, что это просто калька с Ruby, ну, правда заточенная под JVM. Может за это время что-то изменилось.
>Про больше интересно, не холивара ради:)

например, AST-трансформации, типа @Singleton/Immutable/Newify/Lazy, разве они есть в ruby? Навскидку могу также припомнить Grape и Power Assert
AST трансформации есть. Grape это пакеты для библиотек? rubygems:) А насчет Power Asserts — куча DSL для тестирования, на любой вкус, RSpec, Shoulda, Cucumber и т.д.
Да, похоже в Groovy ничего нового по сравнению с Ruby нет.
Ну, кроме хорошей интегрированности в JVM. Так что Groovy — выбор джавистов:)
А можно пример AST для того же singleton или lazy?
Сейчас посмотрел как @Singleton/Immutable/Newify/Lazy реализованны в Groovy. Похоже это не прямая манипуляция AST, а просто рефлекшены. Ну и @Singleton и т.п. — это просто именнованные рефлекшены. Да, и синглтон, и ленивая инициализация в Ruby есть.
Про AST я думал что-то по типу этого www.igvita.com/2008/12/11/ruby-ast-for-fun-and-profit/
>Похоже это не прямая манипуляция AST, а просто рефлекшены.

ээ… а как рефлекшен на этапе компиляции(!) обеспечит Singleton/Immutable?

>Да, и синглтон, и ленивая инициализация в Ruby есть.

то были лишь примеры полезных AST-преобразований, поторых в Ruby всё-таки нету.
>ээ… а как рефлекшен на этапе компиляции(!) обеспечит Singleton/Immutable?
Вот на этот нюанс внимания не обратил. Ruby не компиллируется.
В стандартной библиотеке — только синглтон, остальное расширениями. Но всеравно есть:)
>Grape это пакеты для библиотек? rubygems:)

не совсем. rubygems — это скорее maven, а главная же фича grape в том, что можно импортить на лету

>куча DSL для тестирования, на любой вкус, RSpec, Shoulda, Cucumber и т.д.
в groovy тоже куча фреймворков для тестирования, но и они не являются фичей языка, в отличие от power assert…
>главная же фича grape в том, что можно импортить на лету
Не понял, что значит импортить на лету?

Фича языка — всмысле возможность в ядре интерпретатора? Библиотека не считается фичей?:)
>Не понял, что значит импортить на лету?

можно запустить такой код, имея лишь Groovy, и он скачает все нужные модули на лету:
groovyconsole.appspot.com/view.groovy?id=19003

>Фича языка — всмысле возможность в ядре интерпретатора? Библиотека не считается фичей?:)
да. фичей языка не считается. да и потом, какой из ваших DSL умеет в одну строчку делать, например, такое: groovyconsole.appspot.com/edit/44002
>можно запустить такой код, имея лишь Groovy, и он скачает все нужные модули на лету:
>groovyconsole.appspot.com/view.groovy?id=19003

Такое есть:)
geminstaller.rubyforge.org/

В одну строчку, всмысле налету массив на переменные разбить?
Так это еще проще:)
a, b, c = [1543, 2654, 3432]


Что-то уже холивар начинается:)
>geminstaller.rubyforge.org/

это не то же самое, сами понимаете. тем более в ruby работа с модулями зачастую может быть совсем нетривиальна (если что-то нужно компилять)

>В одну строчку, всмысле налету массив на переменные разбить?

да нет же. нажмите внизу кнопочку «Execute script» и поймёте о чём я
UFO just landed and posted this here
Не рассуждайте как красноглазик, есть mono.
Ну есть, но зачем мне костыли если есть масса отличных интересных языков и продуктов и для моей платформы?
mono — для вашей платформы
На маке у моно WinForms кривовато отрисовываются(про линукс не уверен), а если использовать GTK то просто кинуть экзешник виндузятникам проблематично.
Mono работает на MacOS? Да. GTK# работает? Да. Причина неиспользования .Net выраженная в топике не корректна. Ошибку вы признавать не хотите. Очень плохо.
Скажите, а оно красиво там выглядит? Понимаете, это вам не Линупс и не винда, на Маке приложения должны выглядить нативно иначе они нафиг никому не нужны! Теперь вам понятно, почему нельзя использовать .NET на Маке? (ну или по крайней мере нельзя, пока он не научится делать Cocoa интерфейс).
Думаю плевать, если речь о сдаче зачёта/экзамена по курсе component based software development. Это раз.
Что касается именно Cocoa, то стоит наьбрать в гугле mono cocoa прежде чем говорить от отсутствии чего-либо
а вы его сами пытались использовать? Нормальная IDE есть? нормальный Debug там есть? WinForms перестали падать рамномно? GTK# уже стало немного нативнее?

Короче говоря, мы может и рады его использовать, вот только авторы его ще должны пилить и пилить
Какую ошибку?:) Вы наверно меня с автором топика перепутали.
Какая автору разница как работает GTK под Window?
автору разницы никакой, вопрос вообще не о том ;-)
Ruby — это идеологический чистый Python(не торчит процендурное прошлое), плюс синтаксис значительно слаще, а Groovy — калька с Ruby.
«Groovy — калька с Ruby»

Хахаха) Кто вам это сказал? Groovy — это расширение синтаксиса Java. У них есть общие синтаксические элементы, но не более.
Ну, во-первых у них на сайте сказано:
builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk

Во-вторых все синтаксические конструкции практически идентичны с Ruby, правда, с поправкой на Java синтаксис.
Калька и inspired одно и то же? Тогда Ruby — однозначно калька с Python, Perl или Smalltalk.

Что за нахер поправка на Java синтаксис, если он лежал в основе и любой Java код является Groovy кодом? Знаете как делали Groovy? Взяли Java&JDK и добавили:
— динамическая типизация
— замыкания
— сахар для коллекций, регулярок, некоторых операторов(switch, for)

Тоже самое, что говорить Grails — калька с Rails.
>Тогда Ruby — однозначно калька с Python, Perl или Smalltalk.
А кто спорит? По сути языки идентичны, просто каждый следующий язык более синтаксический сладкий. Например d Ruby, в отличие от Python, не торчат процедурные корни, а также итераторы удобнее.

>если он лежал в основе и любой Java код является Groovy кодом?
Это и имел в виду:)

>Тоже самое, что говорить Grails — калька с Rails.
А что, это не так?
Grails — набор DSL для:
— JSP(GSP)
— Spring MVC(Grails Controllers)
— Hibernate(GORM)
Все они появились за несколько лет до Rails. Кстати Grails написан на Java — на Groovy пишется только код самого приложения. Так что в архитектурном плане — это совершенно самобытный проект.
Я имел ввиду библиотеки появились раньше. Grails DSLs появились позже Rails, а Groovy — раньше, если мне память не изменяет.
Языки веселее учить вместе с фреймворками, посмотрите — может удасться что-то использовать:

Groovy — Grails
Scala — Akka
Clojure — STM/Incanter
Я рекомендую Ruby, как по мне так очень красивый и элегантный язык, намного интереснее Scala и Groovy.

Но если уже совсем хочется экзотики, то можно посмотреть на Clojure — такой себе LISP под JVM
Sign up to leave a comment.

Articles