LINUX.ORG.RU

Выпущена Scala 2.7.2 Final

 , , , ,


0

0

Scala - это язык программирования общего назначения под JVM, объединяющий в себе объектный и функциональный подходы, прозрачно взаимодействующий с Java. Изменения:

  • Generic Signatures - параметры типов скалы теперь записываются в class-файлы и видны из Java.
  • Комбинированные проекты - компилятор теперь может собирать проекты, которые содержат и .java и .scala файлы. То есть из исходных кодов на Scala можно ссылаться на еще не откомпилированные классы Java.
  • Библиотека ScalaSwing включена в дистрибутив. Это адаптация Swing к Scala.
  • Collections: Включено добавление Девида Маклвера: неизменяемые (immutable) IntMap, LongMap, TreeHashMap и изменяемые (mutable) ArrayStack и OpenHashMap.
>>> Changes

>>> Download

>>> scala-lang.org

★★★★★

Проверено: maxcom ()

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

>В питоне эта необходимость минимальна, так как подход к написанию кода совсем другой

Эти сказки расскажешь поинерам. Питон стреднестатистический язык - он такой же как плюсы жаба или с#.

>А питонисты - художники,


Помастурбировал на себя? Проходи художник. Выход для художников там =>.


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


Да у тебя мания величия. При полном отсутствии здравого смысла.

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

> переносимостью между чем и чем? я гоняю свой код в основном на линуксе и маке. проблемы бывают только с наворочеными GUI

Анонимный брат, возможно, имел ввиду что моно -- поделка, не факт что готовая для реальных задач.

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

> И все сигнатуры всех функций всех библиотек ты конечно помнишь наизусть.
> Все стринговые методы не заглядывая в хелп с сигнатурами в студию.


Поиск слова в документации в vim одной строчкой в конфиге настраивается. Если документация в приличном формате, html, например.

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

> Поиск слова в документации в vim одной строчкой в конфиге настраивается.

Это для быдлокодеров. Настоящие Ъ пишут без комплишена, хелпа, подсказок и уж конечно они не будут прописывать строчку в конфигурации. Иначе станут быдлокодерами. А они должны задумчиво глядеть на код размышля о том как его сделать лаконичнее и красивше, и иногда обращаясь к клавиатуре с грацией пианистов помнящих все концерты чайковского для фортепиано набирать своими музыкальными пальцами как истинные художники код, после чего любоваться своим произвидением художественного искусства.

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

Это я к тому что быдлокодерством называется комбинация клавишь выводящая список возможных функций, а другая клавиша котора явыводит список всех функций с описанием - это типа Ъ. Мне смешно.

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

Опять же еще более смашными выглядят заявки о том что IDE не нужна на фоне того как каждый трувимаксер первое что делает это фигачит различные моды и "строчки в конфигах" и прочую фигню превращая редактор - в IDE. Это еще более смешно.

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

> Опять же еще более смашными выглядят заявки о том что IDE не нужна на фоне того как каждый трувимаксер первое что делает это фигачит различные моды и "строчки в конфигах" и прочую фигню превращая редактор - в IDE. Это еще более смешно.

Не превращая. В результате получается штука имеющая и хороший текстовый редактор и несколько полезных фичей, свойственных IDE. Текстовый редактор уровня повыше, чем Windows Notepad к eclipse мне прикрутить так и не удалось. viPlugin каждые 5 минут просит $20 и реализует заново примерно 20% нужных мне фичей. Vimplugin сначала успешно запускает gvim, но ровно через 2 секунды всё падает с ClassCastException. Счастье будет когда допилят.

Кстати, я когда-нибудь утверждал, что IDE не нужны? Если есть фичи, упрощающие и ускоряющие работу, почему бы ими не пользоваться? Проблема в том, что хороший текстовый редактор помогает больше, чем IDE. (исключение - Java)

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

>В результате получается штука имеющая и хороший текстовый редактор и несколько полезных фичей, свойственных IDE.

То есть IDE.

>Проблема в том, что хороший текстовый редактор помогает больше, чем IDE.


Можно узнать список функций хорошего текстового редактора?

>(исключение - Java)


_При чем_ тут язык? Да хоть ассемблер. Структурально жаба, c/++, c#, D, python, ruby - одна хренть. Для них нужны одинаковые IDE.

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

>>В результате получается штука имеющая и хороший текстовый редактор и несколько полезных фичей, свойственных IDE.

>То есть IDE.


Нет. Так уж повелось, что IDE используют аналог notepad для редактирования текста.

> Можно узнать список функций хорошего текстового редактора?


Первое что пришло в голову:
1. Более удобное перемещение курсора по тексту (крайние случаи, когда человек кодит не снимая правую руку с мыши во внимание не берём)
2. Более удобная работа с блоками текста (ci" - заменить содержимое строки в которой находится курсор, da{db - удалить, например, блок else, в котором находится курсор)
3. Небольшое время загрузки
4. Простое написание макросов:

qsbito!(string)([ESC]ea)[ESC]q - макрос для оборачивания слова под курсором в to!(string)(foo)
Используется просто: @s

qq0x$xjq - удалить перый и последний символ в строке и переместить курсор на следующую строку
10@q - удалить первый и последний символ в следующих 10 строках

5. Меньшая захламлённость интерфейса.

Остальное (подсветка синтаксиса, автокомплишен) в принципе уже к фичам IDE относится.

> _При чем_ тут язык?


ИМХО выше уже ответили.

> Для них нужны одинаковые IDE.


Не спорю. Но нужны в разной степени. Мнение взято не с потолка а из личного опыта.

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

> Попробуй Pida+ropevim (для питона).

Спасибо, но в данный момент нужны Java, D и tcl. Всё решится когда допилят Vimplugin, т.к. для всех трёх языков есть поддержка в Eclipse. (Хоть это и не обеспечит выполнение пунктов №3 и №5)

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

>Задам вопрос по другому - по твоему чтобы читать код - нужно IDE?

Да. Подсветка синтаксиса, навигация по коду, интеграция с отладчиком, шелл интерпретатора. Без этого тоже можно обойтись, но так удобней.

>Ага - нужды в колбасе нет.

Для меня - нет. Я предпочитаю мясо в натуральном виде. Без сои и трансжиров.

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

>И все сигнатуры всех функций всех библиотек ты конечно помнишь наизусть. Завещай свой мозк ученым.

У меня есть документация.

>Все стринговые методы не заглядывая в хелп с сигнатурами в студию.

Те, которыми я пользуюсь, я помню.

>Шо - спалился?

Используйте свой подростково-гопнический лексикон по отношению к другим, менее искушенным гражданам.

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

>1. Более удобное перемещение курсора по тексту (крайние случаи, когда человек кодит не снимая правую руку с мыши во внимание не берём)

IntelliJ IDEA посмотри, можно по методам класса скакать, можно по истории, можно по структурному поиску, можно еще хз как. Вариантов масса, только по строкам по-старому клавишами перемещаться нужно, а что, для этого тоже нужно макрос лабать?

>3. Небольшое время загрузки

А это то зачем? Ты что, все время IDE закрываешь, чтобы потом снова запустить? Бросай эту пагубную привычку. У меня IntelliJIDEA 8 секунд 15 стартует, это достаточно быстро. Для такого комбайна

>qq0x$xjq - удалить перый и последний символ в строке и переместить курсор на следующую строку

>10@q - удалить первый и последний символ в следующих 10 строках

Кому нужен такой бред? 99% прогеров такое запомнить не смогут, а могущие 1% сверходаренных программистов быстро из программистов в начальники банков переходят, там банально бабла больше платят

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

> IntelliJ IDEA посмотри, можно по методам класса скакать, можно по истории,

По *тексту*. IntelliJ IDEA ничего не сможет сделать, если она не знает в каком формате написан исходник.

> Вариантов масса, только по строкам по-старому клавишами перемещаться нужно,


И внутри строк. А в более сложных случаях, когда \n рассматривается просто как символ, IDEA бесполезна.

> а что, для этого тоже нужно макрос лабать?


Для перемещения по тексту? А из чего как ты думаешь макросы пишутся?

> Кому нужен такой бред?


Пример сильно упрощён. Такое конечно редко пригодится.

> 99% прогеров такое запомнить не смогут,


Ты предлагаешь прогерам запоминать, что делает последовательность home, del, end, backspace, down? Не правда ли проще помнить, что делает каждая из них по отдельности? В vim - то же самое, только клавиши другие.

> а могущие 1% сверходаренных программистов быстро из программистов в начальники банков переходят, там банально бабла больше платят


Не пойду в начальники банков. Там скучно. Но всё равно спасибо. :)

\troll{ А ещё от hjkl меньше запястье устаёт. Можно в IDEA переназначить перемещение курсора со стрелок на hjkl? }

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

>Так уж повелось, что IDE используют аналог notepad для редактирования текста.

Плохие IDE. Хорошие имеют более продвинутый редактор. IDEA например любят именно за редактор кода.

>1. Более удобное перемещение курсора по тексту


Конкретнее пожалуста. В той же идее перемещение пот тексту _совсем_ не нотепадовское.

> 2. Более удобная работа с блоками текста


Смотрим на структурные удаления идеи - при попутке удаления оно удаляет сруктурный элемент, а не букву. то есть если удаление шимнуть на методе - оно грохнет весь метод и еще и скажет где встречается и поинтересуется че с этим сделать.

>3. Небольшое время загрузки


Нерелевантно в случае IDE которая понимает что такое проект.

>4. Простое написание макросов:


Смотрим на сурраунды и написание темплейтных реплейсов с конкретными предложениями по например у меня logd<tab> разварачивается во вставку импорта commons logging, обявления переменной лог и связывания ее с энкосинг классом. Написание таких "макросов" тоже несложное.

>5. Меньшая захламлённость интерфейса.


Меню и табы - единственно что видно.

Не надо думать что хорошая IDE это визуалстудия или ее клоны - это плохая и уродская иде как по возможностям так и по интерфейсу и идеологии. Я когда писал на C/++ вод венду - студией не пользовался из-за ее уродства - не надо думать что все IDE такие.

>Мнение взято не с потолка а из личного опыта


Каким образом появился этот личный опыт если нормальных ИДЕ для питона а тем более C++ еще нет? (CDT не смотрел).

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

>Подсветка синтаксиса, навигация по коду, интеграция с отладчиком, шелл интерпретатора. Без этого тоже можно обойтись, но так удобней.

Значит колбаса нужна?

>Я говорю, что в языках более высокого уровня, чем Java, он не необходим


Питон не является языком более высокого уровня чем жава.

>У меня есть документация.


И вызываешь ты ее....?

Автокомплишен это и есть документация. Только в виде интегрированном с редактором.

>Те, которыми я пользуюсь, я помню.


Все три? А смотреть остальные мучительно больно?

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

>ntelliJ IDEA ничего не сможет сделать, если она не знает в каком формате написан исходник.

Она знает.

>А в более сложных случаях, когда \n рассматривается просто как символ, IDEA бесполезна.


Да серьезно? Идея понимает что она внутри строки даже в "a" + "b" + "c". И отлично понимает че надо вставлять если <enter> нажат внутри строки.

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

> Питон не является языком более высокого уровня чем жава.

Не знаю насчет современной Явы с дженерикам, блэкджеком и шлюхами, но Питон точно более высокоуровневый, чем Ява образца JDK 1.2.

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

>>А в более сложных случаях, когда \\n рассматривается просто как символ, IDEA бесполезна.

>Да серьезно? Идея понимает что она внутри строки даже в \"a\" + \"b\" + \"c\". И отлично понимает че надо вставлять если <enter> нажат внутри строки.

Еще по поводу автокомплишена в IDEA, достаточно 2 раза нажать Ctrl+Alt+Space, и IDEA сама дописывает к переменной нужные методы http://blog.xebia.com/2008/11/11/intellij-8-even-smarter-code-completion/

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

> Не надо думать что хорошая IDE это визуалстудия или ее клоны - это плохая и уродская иде как по возможностям так и по интерфейсу и идеологии.

А какая хорошая? Squeak? :)

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

>Значит колбаса нужна?

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

>Питон не является языком более высокого уровня чем жава.

Питон _является_ языком более выского уровня, чем Java. Как и Groovy, как и Scala, как и Ruby, как и TCL. Использование этих языков в инфраструктуре Java показывает, что Java плохо подходит для бизнес-логики, прототипирования, быстрой разработки и скриптинга. Динамические и рантайм-возможности этих языков куда шире, чем у Java. Это не хороши и не плохо. Это - данность. Джаве - одно, Питону - другое.

>Автокомплишен это и есть документация. Только в виде интегрированном с редактором.

Автокомплит это и есть автокомлит. Это - не документация. Автокомплит показывает список сущностей, но не говорит, что они означают. Например, __str__ и __repr__ очень похожи, однако без изучения документации, абсолютно не понятно, чем они отличаются. И автокомплит тут не помощник.

>Все три? А смотреть остальные мучительно больно?

Я приблизительно помню все возможности используемого класса. Частности (например, аргументы) смотрю в документации или в коде рядом. Помнить возможности класса возможно только при изучении документации. Автокомплит не заменяет ни знание, ни умение, ни rtfm. Это просто некоторый ассистент, типа автоматической коробки передач, и не надо из него лепить священную корову. АКПП не делает из водителя Шумахера. Однако, обезьян с гранатой на дорогах прибавляет.

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

Отлично! Вы доказали, что IDEA тоже это всё умеет.

> не надо думать что все IDE такие.


Не видел M$VS много лет. Использую NetBeans (с jVi). Начальство не хочет покупать лицензию на IntelliJ IDEA.

> Не надо думать что хорошая IDE это визуалстудия или ее клоны


В M$VS в режиме C# между прочим достаточно чистый интерфейс. Особенно с Resharper'ом.

> Каким образом появился этот личный опыт если нормальных ИДЕ для питона а тем более C++ еще нет?


При чём здесь питон и C++? Java, D, tcl. Для последних двух vim+ctags более чем достаточно. Для первого - нет.

>>IntelliJ IDEA ничего не сможет сделать, если она не знает в каком формате написан исходник.

> Она знает.


Сейчас специально установлю и проверю как она знает tcl и D.

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

> Сейчас специально установлю и проверю как она знает tcl и D.

Плохо знает. Даже outline не заработал. И заменять содержимое функции согласилась только благодаря плагину IdeaVIM. Таким образом я получил vim без подсветки синтаксиса, весящий в памяти 200МБ, грузящийся 20 сек. и с кучей лишних ничего не делающих кнопок. Нафига это надо? (Прежде чем напоминать о плагинах предлагаю самостоятельно убедиться в их отсутствии)

Да, ctags поддерживает и D и tcl.

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

IdeaVIM кстати самый полнофункциональный и стабильный vim-плагин среди всех мне известных плагинов для любой IDE. Но начальство лицензию на IDEA всё-равно покупать не будет.

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

>Не знаю насчет современной Явы с дженерикам, блэкджеком и шлюхами, но Питон точно более высокоуровневый, чем Ява образца JDK 1.2.

И какие там абстракции более высокого уровня наличествуют?

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

>Squeak?

Ну сквика не видел - более старый смолтолк когда-то ползовал - бьыл относительно неплохой - ничего плохого о среде сказать не могу, лучше чем VS однозначно.

IDEA.

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

>Питон _является_ языком более выского уровня, чем Java

Ну можешь еще ты предложить абстракции более высокого уровня питона чем жаба.

>Динамические и рантайм-возможности этих языков куда шире, чем у Java


Скала может быть более высоким уровнем чем жаба - пример сущьности более высокого уровня - парсер-комбинаторы. Где в питоне более высокий уровень?

>Автокомплит показывает список сущностей, но не говорит, что они означают.


И что?

>И автокомплит тут не помощник.


Он помошник там где ты будешь смотреть в документацию с цалшью найти нужную функцию, а не с целью выяснить тонкие отличия - о чем и говорилось выше: найди какие методы есть у стринга.

>Частности (например, аргументы) смотрю в документации или в коде рядом.


И еще говоришь что комплит не нужен.

>Автокомплит не заменяет ни знание, ни умение, ни rtfm.


Зато он тебе подскажет как точно называется функция которая ты знаешь есть, какие есть функции и какие у них аргументы. БЕз обращения к докам. А ртфм он не призван заменять - его назначение - ассистировать тебе в написании кода а не в чтении.


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

>Сейчас специально установлю и проверю как она знает tcl и D.

tcl и D знает плохо. Но мы ведь говорим о необходимости IDE вообще.

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

> Но мы ведь говорим о необходимости IDE вообще.

Там вроде речь была не про необходимость IDE, а про то, что IDEA всегда знает на чём написан файл.

Кроме того, бОльшая часть фичей IDEA становятся абсолютно бесполезны если приходится разбирать левый формат.

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

Это я к тому, что вообще IDE полезны и повышают продуктивность, но при отсутствии текстового редактора толку от них не много.

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

> tcl и D знает плохо.

Подозреваю, что причина в проприетарности. :) Открытые eclipse и ctags уже знают и то и другое на очень приличном уровне.

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

> Ну можешь еще ты предложить абстракции более высокого уровня питона чем жаба.

Ну например, жаба оперирует примитивными типами данных, а tcl -- инструментами, Tool Command Language.

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

>>Не знаю насчет современной Явы с дженерикам, блэкджеком и шлюхами, но Питон точно более высокоуровневый, чем Ява образца JDK 1.2.

>И какие там абстракции более высокого уровня наличествуют?

Для начала, в нем есть нормальные функции. Еще - замыкания (нормальные, а не анонимными классами), лямбды (хотя и примитивные), нормальные кортежи и списки, паттерн матчинг (хотя тоже примитивный), list и generator comprehensions.

tailgunner ★★★★★
()

> Scala

Когда смотрел по ней англоязычную статью, показалось, что язык слишком перегружен (даже больше, чем Си++). Посоветуйте какой-нибудь туториал для тупого анонимуса, лучше на русском.

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

Такого не существует. Надо читать книгу, которую пиарят на scala-lang.org

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

> Автокомплит не заменяет ни знание, ни умение, ни rtfm

4.2 в джаве m пишется в комментарии над методом и в автокомплите при выборе вариантов пишется полный m для выбранного варианта (в отформатированном HTML-виде). Соотвественно я себя ловлю, что мне проще написать new Random().nextInt и дополняя метод почитать по нему справку (3 секунды), чем переключаться на браузер/окно помощи, искать там класс, метод и т.д.

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

Проблема С++ не в перегруженности а в нелогичности многих вещей и связке граблей в самых неожиданных местах.

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

>Ну например, жаба оперирует примитивными типами данных, а tcl -- инструментами, Tool Command Language.

Че-че-че? Какими инструментами? "Everything is a command".

Это ни разу не более высокий уровень абстракции.

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

>Для начала, в нем есть нормальные функции. Еще - замыкания (нормальные, а не анонимными классами), лямбды (хотя и примитивные), нормальные кортежи и списки, паттерн матчинг (хотя тоже примитивный), list и generator comprehensions.

И где тут хоть одна сущьность более _высокого_ уровня?

Может чтобы было более понятно: языки более высокого уровня: XSLT, SQL, Prolog, Erlang.

Почему сейчас модным стало поняние eDSL для языков? Потому что это тут же представляет более высокий уровень внутри этих языков: LINQ в С#, SQL в Scala, Parser Combinators в Haskell, Scala.

Что в питоне есть такого что переводит его на более высокий уровень? Эдак возможность ассемблерных вставок в С можно предьявить как "более высокий уровень". Это просто то чем эти языки отличаются - их фичи. А уровень - это трансформация деревьев в XSLT, когда ты работаешь не со структуркой со ссылками - а концепция дерева и процесса его трансформации - уже в ядре. Это придекаты и модель резолюции в прологе. И т.д.

А если просто перечисли че есть в одном а чего нету в другом - так жабаскрипт или С# всех давно порвал.

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

> Может чтобы было более понятно: языки более высокого уровня: XSLT, SQL, Prolog, Erlang.

А Erlang с какой радости сюда попал? Почему он более высокоуровневый, чем Java и Python?

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

> А Erlang с какой радости сюда попал?

Собственно, +1

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

>А Erlang с какой радости сюда попал? Почему он более высокоуровневый, чем Java и Python?

По причине процессов, акторов и распределенности.

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

>>А Erlang с какой радости сюда попал? Почему он более высокоуровневый, чем Java и Python?

>По причине процессов, акторов и распределенности.

Не вижу препятствий, из-за которых в Python нельзя было бы реализовать spawn, ! и receive. В Scala, например, реализовали.

Кстати, где в Erlang актеры? Процессы есть, а актеры где?

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

>Не вижу препятствий, из-за которых в Python нельзя было бы реализовать spawn, ! и receive.

Не вижу препятствий чтобы их реализовали на любом языке. От этого он не станет более высокоуровневым.

> Кстати, где в Erlang актеры?


http://en.wikipedia.org/wiki/Actor_model

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

>>Не вижу препятствий, из-за которых в Python нельзя было бы реализовать spawn, ! и receive.

>Не вижу препятствий чтобы их реализовали на любом языке. От этого он не станет более высокоуровневым.

Следовательно, тот факт, что в Erlang-е они реализованы, не делает Erlang высокоуровневым языком.

>> Кстати, где в Erlang актеры?

>http://en.wikipedia.org/wiki/Actor_model

Еще раз: где в Erlang актеры? Где в языке само понятие "актера", где специфические для этого понятия конструкции языка?

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

>Следовательно, тот факт, что в Erlang-е они реализованы, не делает Erlang высокоуровневым языком.

Высокоуровневым языком его делат то, что это его естественные абстракции.

Чтобы было более ясно - штука типа:

SQL.select("*").from("table").where("a > 0")

может быть реализована на любом языке. Это не приблизит нас к нужной абстракции в этом языке. Это значит что можно реализовать соответствующую библиотеку которая абстракциями языка попытается выразить другие абстракции.

Например синхронизированный метод в жабе - это не то же самое что использование мьютекса в С++. Хотя мьютексом можно достигнуть того же эффекта.

>Еще раз: где в Erlang актеры


ТАм где мессаже пассинг семантикс.

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

>>Для начала, в нем есть нормальные функции. Еще - замыкания (нормальные, а не анонимными классами), лямбды (хотя и примитивные), нормальные кортежи и списки, паттерн матчинг (хотя тоже примитивный), list и generator comprehensions.

>И где тут хоть одна сущьность более _высокого_ уровня?

Все они.

> Может чтобы было более понятно: языки более высокого уровня: XSLT, SQL, Prolog, Erlang.

Как-то не становится понятнее. XSLT и SQL вообще не являются ЯП (да, я слышал о Тьюринг-полноте XSLT). Ты бы хоть прикола ради дал определение того, что именно переводит язык на "более высокий уровень".

> Почему сейчас модным стало поняние eDSL для языков? Потому что это тут же представляет более высокий уровень

Т.е. перевод на более высокий уровень - это возможность создания eDSL? По этому критерию SQL не прокатывает. Erlang и XSLT, наверное, тоже.

Это не говоря о том, что по такому определению Ассемблер и Си - это языки одного уровня.

> А если просто перечисли че есть в одном а чего нету в другом - так жабаскрипт или С# всех давно порвал.

Ну так введи определение, а? Для меня более высокий уровень - это выразительность. Напиши пример карринга на Питоне и Яве.

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

>Все они.

Ну тогда С всех уделал ассемблерными вставками.

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


Позволяет оперировать абстракциями более высокого уровня.

>XSLT и SQL вообще не являются ЯП


Не являются ЯП _общего назначения_. Конечно.

>Т.е. перевод на более высокий уровень - это возможность создания eDSL?


Нет. Возможность введения абстракций более высокого уровня или имение их в своем ядре. Все сводится в общем к модели вычислений. Чем более высокоуровневыми абсракциями оперируют вычисления - тем более высокий уровень языка.

Перечисленные мной имеют такие абстракции в ядре. Язык который позволяет описать eDSL - позволяет вводить эти абстракции - то есть тянется к более высокому уровню.

>Это не говоря о том, что по такому определению Ассемблер и Си - это языки одного уровня.


Нет. Что такое вообще абстракция? Абстракция от чего? Cи абстрагирует программу от вычислительной модели в виде последовательности инструкций процессора, и переводит его последовательность аппликации функций к их аргументам и возможности определения этих функций. Возможность описания структур позволяет абстрагироваться от модели представления данных в виде последовательности байтов и превразает их в сложные жлементы с заданной структурой и языком манипулирования элементами. Объекты - еще более высокий уровень - позволяет оперировать структурами и набором операций как единым целым, дает возможность порождения структур из других структур(наследование), модель вычислений превращает в message passing. Пролог - дает возможность описания логических предикатов, механизм вычисления вообще абстрактен от модели вычисления на процессоре, сама программа - это уже набор высказываний, а модель вычислений - это ризонинг относительно этих высказываний. SQL абстрагируется от модели хранения данных и манипулирования ими оперируя абстракцией реляционной алгебры.

Вернемся к питону и жабе: где там различия в уровне? Языки объектные, оперируют пследовательностями аппликаций функций к аргументам, модель вычислений одинаковая. Отличия их сводятся только к разным спискам разновидностей абстракций одного уровня или в удобстве в том или ином случае. Но языки эти _одинаковые_.

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

>>Следовательно, тот факт, что в Erlang-е они реализованы, не делает Erlang высокоуровневым языком.

>Высокоуровневым языком его делат то, что это его естественные абстракции.

Какие на хрен абстракции? spawn/spawn_link -- это BIF-ы, receive и ! являются встроенными операторами языка, но с таким же успехом они могут быть операторами в любом языке с перегрузкой операторов (в тех же самых C++, C#, Ruby, Scala и т.д.; ScalaActors тому подтверждение).

>SQL.select("*").from("table").where("a > 0")

>может быть реализована на любом языке. Это не приблизит нас к нужной абстракции в этом языке.

Только в случае, если корректность всего этого выражения проверяется в run-time. Если же с помощью метапрограммирования данная конструкция разворачивается, транслируется и проверяется в compile-time, то... Вот например, использование Embedded SQL добавляет в язык нужную абстракцию или нет?

>>Еще раз: где в Erlang актеры

>ТАм где мессаже пассинг семантикс.

Тогда Windows -- это прямая реализация актеров.

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

>Какие на хрен абстракции?

Такие.

>Только в случае, если корректность всего этого выражения проверяется в run-time.


Что такое "корректность"?

>Если же с помощью метапрограммирования данная конструкция разворачивается, транслируется и проверяется в compile-time, то...


...то хрен тебе чем это поможет. Разве что у тебя уже компилятор научился распознавать лиалекты SQL и компилить ЯВУ "для постгреса", "для мускуля", "для оракела" и тд.

Рантайм и компилетайм тут _вообще_ не при чем.

>Вот например, использование Embedded SQL добавляет в язык нужную абстракцию или нет?


Конечно.

>Тогда Windows -- это прямая реализация актеров.


А для тебя актер это что-то такое что должно быть непосредственно обявлено и обвешано ярлыками? типа если не стоит extends Actor - то уже и не актер?

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