LINUX.ORG.RU

Поступило предложение добавить поддержку динамических языков в OpenJVM


0

0

Джон Роуз (Sun Microsystems), предложил "Многоязыковую Виртуальную Машину" (MLWM), как часть проекта OpenJDK. Такая машина, не теряя совместимости с существующей JVM, добавит поддержку следующих функций:
* Tail Recursion (так любимую анонимусами на лоре :)
* Continuations
* Closures
* Tulpes
* Value-Oriented Types
* И многое другое

>>> Подробности

Ответ на: комментарий от anonymous

>А "философия Java" привела к тому, что Java в конце 90-х слила на desktop'е, где пользователям было абсолютно плевать на философию (а вот скорость и удобство очень даже приветствовались).

C# первой вроде бы ревизии тоже был лишен "сложных и никому не нужных рудиментов С++ таких как шаблоны и множественное наследование". Теперь у маркетологов пластинка явно сменилась, что и видно по выступлениям хмурых студентов.

Absurd ★★★
()
Ответ на: комментарий от r

> Далее ты не учел тот факт что эти штуки как замыкания вляются first-class objects и например по критерию запроса может быть выбран индекс в котором надо искать - то есть запрос может выступать в качестве ключа. Этот аспект полностью отсутствует в твоем случае - это так не реализуемо в принципе.

Я предложил альтернативный варианты. Первый был самым простым в конкретном предложенном случае.

> но вместо кода в 10 строк имеем код в 90 строк + обявление 3х новых интерфейсов.

И почему это плохо? Лучше более длинный, но читабельный код с выраженной структурой, чем предложенная вами жуткая мешанина синтаксических конструкций. Тем более, что вся программа существенно длиннее не станет (если, конечно, она не состоит из сплошных замыканий).

Fice ★★
()
Ответ на: комментарий от grob

> больше половины паттернов из книжки GoF - это обходные пути для задач, у которых есть элегантные решения в ФП, настоящем ООП и т.д.

Примеры? Про ФП не надо - там свои преимущества и недостатки. А после добавления замыканий Java не станет функциональным языком. А вот по поводу шаблонов и "настоящего ООП"...

Fice ★★
()
Ответ на: комментарий от Fice

>Лучше более длинный, но читабельный код с выраженной структурой, чем предложенная вами жуткая мешанина синтаксических конструкций.

Там _одна строка_. Я потому и предложил написать это попробовать с пнонимами. А потом общественность оценит что лучше моя строка или ярковыраженная структура в виде машанины из буков и скобок единственная задача которой вернуть 1 значение из параметров.

>Тем более, что вся программа существенно длиннее не станет

В 10 раз больше - это не похоже на существенно длинее? В моих проектах пользование замыканий исчисляется сотнями. Умножить размер в 10 раз? Я все еще не понимаю - ради чего?

r ★★★★★
()
Ответ на: комментарий от Fice

>Примеры?

С ходу - стратегия и темплейт метод - хак вокруг отсутсвия замыкания. Хочется - а нету.

r ★★★★★
()
Ответ на: комментарий от Absurd

>C# первой вроде бы ревизии тоже был лишен "сложных и никому не нужных рудиментов С++ таких как шаблоны и множественное наследование". Теперь у маркетологов пластинка явно сменилась, что и видно по выступлениям хмурых студентов.

Так оно понятно - делали изначальнло "чтоб работало". Однако, MS почти сразу сказала, что идет работа над generic'ами - они вышли в 2004 году в составе .NET FW 2.0. Их можно было уже посмотреть еще в 2003 году.

anonymous
()
Ответ на: комментарий от Fice

>Примеры? Про ФП не надо - там свои преимущества и недостатки. А после добавления замыканий Java не станет функциональным языком. А вот по поводу шаблонов и "настоящего ООП"...

Эмуляция multiple dispatch или visitor'ы, заменяемые pattern matching'ом в большинстве случаев. И т.п.

Или вот еще: http://norvig.com/design-patterns/ppframe.htm

anonymous
()

> Tail Recursion (так любимую анонимусами на лоре :)

Не анонимусами, а профессором В.С.Лугоффским.

Кроме как "титиретикам"-яйцеголовым все эти навороты не нужны. Нужна легкая быстрая JVM, а не "гибрид фонарика, бензопилы и электровеника".

Bioreactor ★★★★★
()
Ответ на: комментарий от anonymous

>> C# первой вроде бы ревизии тоже был лишен "сложных и никому не нужных рудиментов С++ таких как шаблоны и множественное наследование". Теперь у маркетологов пластинка явно сменилась, что и видно по выступлениям хмурых студентов.

>Так оно понятно - делали изначальнло "чтоб работало". Однако, MS почти сразу сказала, что идет работа над generic'ами - они вышли в 2004 году в составе .NET FW 2.0. Их можно было уже посмотреть еще в 2003 году.

>Так оно понятно - делали изначальнло "чтоб работало". Однако, MS почти сразу сказала, что идет работа над generic'ами - они вышли в 2004 году в составе .NET FW 2.0. Их можно было уже посмотреть еще в 2003 году.

Телепатии не обучен. Раз пишут что generics - это костыли для решения собственных проблем С++, значит действительно так думают. Я в общем-то и сам тогда так думал, поскольку из коммерческих компиляторов для x86 в 2000-2001 более - менее поддерживали Hardcore C++ Templates разве что Intel C++ и Comeau, и при этом они были раза в 2-3 медленнее msvc++ который на шаблоны периодически ругался с Internal Compiler Error.

Absurd ★★★
()
Ответ на: комментарий от anonymous

> С ходу - стратегия и темплейт метод - хак вокруг отсутсвия замыкания. Хочется - а нету.

Если шаблон Strategy реализовать с помощью замыкания, он все равно останется шаблоном Strategy. Шаблон - это не вместо замыкания, это архитектурное решение. И, по моему, использование класса для представления стратегии лучше, чем использование замыкания, т. к. это объектно-ориентированное решение, естественное и не приводящее к смешиванию разных парадигм программирования. С "template method" то же самое.

> Эмуляция multiple dispatch или visitor'ы, заменяемые pattern matching'ом в большинстве случаев. И т.п.

И причем тут тогда вообще ООП?

Так вы мне и не ответили, зачем вы вообще используете Javа, если есть C#/.NET? Идеология C# должна быть вам более близкой.

Зачем делать из Java ещё один C#?

Fice ★★
()
Ответ на: комментарий от Fice

>> Эмуляция multiple dispatch или visitor'ы, заменяемые pattern matching'ом в большинстве случаев. И т.п.
>И причем тут тогда вообще ООП?
Это про multiple dispatch и ООП? Ну это вообще смешной вопрос - RTFM.


>Так вы мне и не ответили, зачем вы вообще используете Javа, если есть C#/.NET? Идеология C# должна быть вам более близкой.
>Зачем делать из Java ещё один C#?
Мальчик, проснитесь. "Языковой" разницы между Java и C# почти нет - это сейчас почти что близнецы (поэтому и есть проекты по запуску .NET байт-кода на JVM и JVM байт-кода на .NET VM). Хотя C# сейчас постепенно дрейфует в д

У меня выбор Java обусловлен реальной многоплатформенностью и более удобными IDE.

anonymous
()
Ответ на: комментарий от Fice

>Так вы мне и не ответили, зачем вы вообще используете Javа, если есть C#/.NET? Идеология C# должна быть вам более близкой.

>Зачем делать из Java ещё один C#?

Потому что Java лучше, поэтому и пользуется. Он же объяснил, что Java лучше: "У меня выбор Java обусловлен реальной многоплатформенностью и более удобными IDE." Не сводятся преимущества языка программирования к наличию замыканий, каррингов, паттерн-матчингов и хвостовой рекурсии. Если бы без этого было невозможно/гораздо труднее, медленнее программировать, все программы бы писались исключительно на лиспе и смоллтоке и мир бы не увидел Java, C# C++ и Windows вообще. IBM бы по прежнему властвовал над миром

anonymous
()
Ответ на: комментарий от Bioreactor

> Кроме как "титиретикам"-яйцеголовым все эти навороты не нужны. Нужна легкая быстрая JVM, а не "гибрид фонарика, бензопилы и электровеника".

Замыкания - это значит навороты, а хаки с анонимными классами - это просто и красиво? Может ещё "глобально и надежно"? ;) И чем оптимизация хвостовых вызовов вам не угодила совершенно непонятно.

Hjorn
()
Ответ на: комментарий от anonymous

>Да ну, сейчас ее все меньше проектов нормально поддерживает.

Серверных нет таких.

>Да и generic'и с аннотациями все же лучше, чем ничего.

Я могу ошибаться, но после компиляции (или как там это называют) это работает и в 1.4.2. Ибо суть есть сiнтаксических сахар.

vtVitus ★★★★★
()
Ответ на: комментарий от Absurd

>Да и над перформансом они работают.

Тормоза они в логике и в бд. перфоманс java в серверном варианте не важен.

vtVitus ★★★★★
()
Ответ на: комментарий от Fice

>Если шаблон Strategy реализовать с помощью замыкания, он все равно останется шаблоном Strategy.

Ну да. Сами шаблоны - это набор бест практисес как решать типичные задачи.Так вот сих задачь часто не существует в определенных языках. В Самом ООПистом языке смолтолк удивительно но шаблона стратегии нет. ЗАтьо там все привыкли передавать замыкания в селекторы и прочую фигню - сам язык построен вокруг замыкания.

>т. к. это объектно-ориентированное решение, стественное и не приводящее к смешиванию разных парадигм программирования.

Госпаде - если бы Алан Кей это прочитал он бы повесился. Естественное. Может вы тоже начнете приводить примеры из реальной жизни для иллюстрации объектности мира? Что значит естественно? Почитайте на досуге что сказал Гамма на тему ООП и реального мира.

Каких нафиг парадигм? НАчнем с того что Java язык императивный, процедурный, объектный. Добавление замыканий не сделает его функциональным хоть упрись.

>И причем тут тогда вообще ООП?

Почитайте что такое ООП в оригинале у Алана Кея, я не то что из него сделали популяризаторы. Изщучите смолтолк чтобы понять что такое ООП.

>Зачем делать из Java ещё один C#?

Начнем с того что микрософт сделал С# из Джавы. Если бы С# имел жабский набор библиотек и таржет vm - jvm я бы с удовольствием на него перешел особенно на третий. А еще лучше ocaml компилируемый в jvm и интероперабельный с jre. Но поскольку имеем исключительно микрософтовскую технологию, а моно пока не совсем живое + развивается помикрософтовски идеологически, то пользуемся лучшим что есть на рынке.

r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.