Комментарии 72
Форматировать не пробовали? Говорят, помогает )
+3
Аццкийадд!
+4
Для полноты картины не хватает LowerCase и убрать все знаки препинания :)
+2
Охуенный топик!
-1
Так и вижу: using, collection initializers…
К восьмой версии будут extension methods и свой linq с преферансом и блудницами?
К восьмой версии будут extension methods и свой linq с преферансом и блудницами?
+9
Нет замыканий? Отстой…
-4
Пишите на Scala — там и замыкания, и управляемая вариантность, и синтакс-билдеры есть :)
+3
А так же можно писать jruby, jython, goorvy.
+1
Это распространённый совет.
Однако:
— для scala нет качественного ide с вышеупомянутыми пасьянсом и проститутками
— у меня есть проект на несколько сотен тыщ мильонов строчек с постоянными конструкциями типа
оно, конечно, работает. И даже понятно о чём речь. Но глаз всё же цепляется.
Переписывать все сотнитыщмильонов строк на scala — не хватит ни бюджета ни (surprise!) scala-разработчиков.
Однако:
— для scala нет качественного ide с вышеупомянутыми пасьянсом и проститутками
— у меня есть проект на несколько сотен тыщ мильонов строчек с постоянными конструкциями типа
new IConditionCheck(){ public boolean check(Object o){ return o == objectIAmLookingFor; } }
оно, конечно, работает. И даже понятно о чём речь. Но глаз всё же цепляется.
Переписывать все сотнитыщмильонов строк на scala — не хватит ни бюджета ни (surprise!) scala-разработчиков.
0
— Для scala есть плагины к Eclipse и Netbeans. Я пользовался вторым. Чего там нет, так это рефакторинга, но для функциональных языков более-менее сложный рефакторинг — это из разряда rocket science.
— А если бы появились замыкания, как бы вы сконвертировали существующий код? Предвижу ответ — вы бы не стали переписывать существующий код. Так чтобы использовать Scala, тоже не надо переписывать существующий код. Она (scala) нормально взаимодействует с java-программой.
— А если бы появились замыкания, как бы вы сконвертировали существующий код? Предвижу ответ — вы бы не стали переписывать существующий код. Так чтобы использовать Scala, тоже не надо переписывать существующий код. Она (scala) нормально взаимодействует с java-программой.
0
вообще-то, есть анонимные классы. оно очень похоже на замыкания
0
Навеяло в тему:
Как-то однажды знаменитый учитель Кх Ан вышел на прогулку со учеником Антоном. Надеясь разговорить учителя, Антон спросил: «Учитель, слыхал я, что объекты — очень хорошая штука — правда ли это?» Кх Ан посмотрел на ученика с жалостью в глазах и ответил: «Глупый ученик! Объекты — всего лишь замыкания для бедных.»
Пристыженный Антон простился с учителем и вернулся в свою комнату, горя желанием как можно скорее изучить замыкания. Он внимательно прочитал все статьи из серии «Lambda: The Ultimate», и родственные им статьи, и написал небольшой интерпретатор Scheme с объектно-ориентированной системой, основанной на замыканиях. Он многому научился, и с нетерпением ждал случая сообщить учителю о своих успехах.
Во время следующей прогулки с Кх Аном, Антон, пытаясь произвести хорошее впечатление, сказал: «Учитель, я прилежно изучил этот вопрос, и понимаю теперь, что объекты — воистину замыкания для бедных.» Кх Ан в ответ ударил Антона палкой и воскликнул: «Когда же ты чему-то научишься? Замыкания — это объекты для бедных!» В эту секунду Антон обрел просветление.
Как-то однажды знаменитый учитель Кх Ан вышел на прогулку со учеником Антоном. Надеясь разговорить учителя, Антон спросил: «Учитель, слыхал я, что объекты — очень хорошая штука — правда ли это?» Кх Ан посмотрел на ученика с жалостью в глазах и ответил: «Глупый ученик! Объекты — всего лишь замыкания для бедных.»
Пристыженный Антон простился с учителем и вернулся в свою комнату, горя желанием как можно скорее изучить замыкания. Он внимательно прочитал все статьи из серии «Lambda: The Ultimate», и родственные им статьи, и написал небольшой интерпретатор Scheme с объектно-ориентированной системой, основанной на замыканиях. Он многому научился, и с нетерпением ждал случая сообщить учителю о своих успехах.
Во время следующей прогулки с Кх Аном, Антон, пытаясь произвести хорошее впечатление, сказал: «Учитель, я прилежно изучил этот вопрос, и понимаю теперь, что объекты — воистину замыкания для бедных.» Кх Ан в ответ ударил Антона палкой и воскликнул: «Когда же ты чему-то научишься? Замыкания — это объекты для бедных!» В эту секунду Антон обрел просветление.
+9
а в Java были какие-то другие варианты замыканий? просто интересно
0
Спасибо.
0
Совсем другое дело )
0
Круговорот фич в природе какой-то.
Карл у Клары украл dynamic, а Клара у Карла украла байткод.
Карл у Клары украл dynamic, а Клара у Карла украла байткод.
+19
Тут спросили про null-безопасные операторы. Предлагались три оператора:
"?:", "?.", "?[]"
Примеры:
Неплохая была идея, кстати. Сужу по опыту работы с Groovy.
"?:", "?.", "?[]"
Примеры:
String s = a ?: "value if a is null"; String s = a?.b?.c; // s is assigned with null if a or b is null String s = a?[i]; // s is assigned with null if a is null
Неплохая была идея, кстати. Сужу по опыту работы с Groovy.
+3
В Groovy — действительно удобно. Java это не надо, для этого следует использовтаь @Nullable, @NonNull.
То же самое и по поводу замыканий — Scala язык функциональный, там они к месту. В Java можно обойтись упрощением синтаксиса для уже существующих анонимных классов — docs.google.com/Doc.aspx?id=k73_1ggr36h
Я рад ништякам — очень консервативно и по делу. Улучшенную обработку исключений и CICE всё же хотелось бы рано или поздно увидеть в языке.
То же самое и по поводу замыканий — Scala язык функциональный, там они к месту. В Java можно обойтись упрощением синтаксиса для уже существующих анонимных классов — docs.google.com/Doc.aspx?id=k73_1ggr36h
Я рад ништякам — очень консервативно и по делу. Улучшенную обработку исключений и CICE всё же хотелось бы рано или поздно увидеть в языке.
0
да, жаль. Но на sun tech days вроде бы говорили об операторе @, возвращающий левый операнд, если он не равен null, и правый в противном случае.
0
Инициализация коллекций классная!
+1
Ну вот, теперь джава догоняет C#. Только лениво как-то.
-2
Вопрос в том, нужно ли в Java все то что уже есть в С#
+3
джваве-то все-равно, а вот джава-программистам очень бы хотелось )
0
Не говори, плиз, за всех. Очень многие фишки в C# крайне вредны при коллективной разработке
+3
Например?
0
Ленивость LINQ'а. Так как ленивость в языке с возможностью побочных эффектов может порождать неуловимые баги.
0
Например введение var. Это сильно ухудшает читабельность кода.
0
НЛО прилетело и опубликовало эту надпись здесь
Наоборот.
MyClass<OtherClass, AnotherClass> my = new MyClass<OtherClass, AnotherClass>()
читается гораздо хуже чем
var my = new MyClass<OtherClass, AnotherClass>()
Мне кажется, не обязательно читать одно и то же два раза, чтобы понять смысл.
MyClass<OtherClass, AnotherClass> my = new MyClass<OtherClass, AnotherClass>()
читается гораздо хуже чем
var my = new MyClass<OtherClass, AnotherClass>()
Мне кажется, не обязательно читать одно и то же два раза, чтобы понять смысл.
0
Если использовать вразумительные имена переменных, то как раз лучше упрощать левую часть. А в этом помогает var.
0
type inference в generics — это прекрасно, сколько конструкций на пару строк написано типа Map<long.key.name,List<Set<long.other.type.name>>> list = new HashMap<и тут по-новой>
0
Да, хоть IDE и научились это дополнять и скрывать, всё равно это очевидный визуальный мусор.
0
Уж не знаю, по мне, так var в c# явно нагляднее. Логичнее видеть, что именно мы создаем, а не чему потом это присваиваем.
+1
Map<Key, Value> map = Factory.createHashMap();
0
Строки в switch! Ура!
0
Ещё есть куда расти. Пример switch из Groovy:
Последний case — это совпадение с регулярным выражением.
switch (10) { case 0 : assert false ; break case 0..9 : assert false ; break case [8,9,11] : assert false ; break case Float : assert false ; break case {it%3 == 0}: assert false ; break case ~/../ : assert true ; break default : assert false ; break }
Последний case — это совпадение с регулярным выражением.
+1
Прогресс на лицо, чувствую лет через пять можно будет переключаться с Nemerle на любой mainstream язык без такого уныния, которое испытываю сейчас=)
+3
А Nemerle разве ещё развивается?
0
Да, он развивается.
Недавно была добавлена поддержка LINQ, скоро будет релиз версии 1.0 :) У языка есть хороший плагин для поддержки в студии, а так же своя бесплатная IDE на основе visual studio shell. На днях проект стал еще более открытым — репозиторий переехал на google code.
Хотя с другой стороны, создатели языка постарались: у них получился очень сбалансированный и мощный язык, который не утратил актуальности до сих пор. Mainstream языки, какие как Java и C# (в меньшей степени), с каждой новой версией стремятся к возможностям, которые предоставляет Nemerle, но, в отличии от них, он изначально был спроектирован под эти возможности и поэтому выглядит более элегантно.
Недавно была добавлена поддержка LINQ, скоро будет релиз версии 1.0 :) У языка есть хороший плагин для поддержки в студии, а так же своя бесплатная IDE на основе visual studio shell. На днях проект стал еще более открытым — репозиторий переехал на google code.
Хотя с другой стороны, создатели языка постарались: у них получился очень сбалансированный и мощный язык, который не утратил актуальности до сих пор. Mainstream языки, какие как Java и C# (в меньшей степени), с каждой новой версией стремятся к возможностям, которые предоставляет Nemerle, но, в отличии от них, он изначально был спроектирован под эти возможности и поэтому выглядит более элегантно.
+2
Мне кажется или многое из сего навеяно языком Python?
+1
Насколько я понимаю, сохраняется полная бинарная совместимость с Java 6.0? А ништяки зачетные.
0
Дааа, проектировщикам Java7 еще далеко до проектировщиков нового стандарта С++, последние видать не любят делиться веществами…
+2
Мгм, а вопрос профана в Java. Для чего ввели dynamic конструкции?
0
Нормальный эволюционный релиз. Как тут сказали выше, консервативный. Даже Dynamic добавили как тип, а не как ключевое слово.
+1
Жалко, что не будет поддержки BigDecimal на уровне языка.
0
два плюса тебе, хороший человек!
0
На мой взгляд, могли бы добавить и синтаксические вкусности вроде свойств, инициализаторов, анонимных функций и т.п. как в C#. JVM переделывать не надо, а удобочитаемость улучшается в разы (хотя, конечно, все хорошо в меру).
0
Прочитав все это, очень рад что пишу на C#, ибо большинство изложенного у нас уже есть, причем даже покрасивее чем в Java.
-1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Что же всё-таки будет в Java 7 — окончательный список