LINUX.ORG.RU

Scala: A Scalable Language

 ,


0

0

На artima.com выложена статья, в которой Мартин Одерски, Александр Спун и Билл Веннерс рассказывают о возможностях их нового языка Scala ("scalable language", то есть "масштабируемый язык").

Мартин Одерски является создателем компилятора javac. Александр Спун — сотрудник Google, один из команды Google Web Toolkit.

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

anonymous

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

Ещё бы метапрограммирование скале.. Хотя неплохой пример статически типизируемого, объектно-ориентированного и функционального языка.

Legioner ★★★★★
()

>их нового языка Scala

пиздец какой новый язык.

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

>Nemerle

вы это серьёзно? прекрасный новый язык, но есть один ньюанс? нет, я спокойно отношусь к желанию сэкономить на стандартной библиотеке, но не таким способом.

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

а что, моно уже догнал (и перегнал) .net?

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

> Nemerle, Groovy ?

Nemerle осиротел. Что сможет "сообщество mono программистов" - посмотрим :)

А Groovy к сожалению очень тормознут...

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

>"сообщество mono программистов"

бугагашечки

anonymous
()

Я-то думал он для scalable environment. А там как оказалось лисп придумывают.

Фу.

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

>А Groovy к сожалению очень тормознут...

тем не менее в своём классе довольно шустр, по крайней мере побыстрее питона

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

>Ещё бы метапрограммирование скале.. Хотя неплохой пример статически типизируемого, объектно-ориентированного и функционального языка.

Что именно надо? DSL создаются и без него. Фанатам Ruby & Rspec: http://code.google.com/p/specs/

Плюс liftweb.net

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

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

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

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

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

> Метапрограмирование является подпоркой и говорит о несовершенстве семантического базиса языка программирования

Use Java 1.0, Luke!

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

По-моему нет ни одного языка, семантика которого подходила бы под все задачи. Поэтому есть 2 варианта, либо использовать много языков, выбирая каждый раз под определённую задачу один из них (очевидно, он всё равно не будет идеальным выбором), либо использовать один гибкий язык, приспосабливающийся под любую задачу. Имхо, второй вариант выглядит лучше.

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

> нет

Ну, у каждого своё "имхо"...

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

>>"сообщество mono программистов"

>Это типа Мигель теперь так себя называет?)))

А я сразу и не сообразил чего нашкрябал :)

Я просто хотел подчеркнуть, что Nemerle для M$.NET "не родной".

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

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

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

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

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

>Как это? Что вы хотели этим сказать?

То, что Nemerle разрабатывается польскими студентами интузиастами. А вы думали, что Nemerle детище Редмонда?

Ви таки знаете, что если Редмонд сделает Nemerle и F# частью своего .NET, кодемонки постепенно поймут, что те же самые программы, которые у них получаются в Visual Studio, они могут писать на бесплатном Хацкеле, ОКамле или вообще на Липсе. И под Редмондом зашатается твердыня. Канет он аки атлантида если потеряет клиентов

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

>Ви таки знаете, что если Редмонд сделает Nemerle и F# частью своего .NET, кодемонки постепенно поймут, что те же самые программы, которые у них получаются в Visual Studio, они могут писать на бесплатном Хацкеле, ОКамле или вообще на Липсе. И под Редмондом зашатается твердыня. Канет он аки атлантида если потеряет клиентов

Наивный чукотский юноша! Ви таки думаете что зашатается? Мелкие просто выпустят Haskell.NET и нет хаскелла, потому что кому он нахрен нужен со своим библиотеками, когда можно пользоваться Haskell.NET и использовать общепринятые в .NET библиотеки и фреймворки.

Например для меня, с появлением Groovy, питон/перл/руби умерли! Потому что, получая все рюшечки динамических языков, я в тоже время сохраняю полную интероперабельность с жабой. Будущее за максимально широкими платформами (Java/.NET), все что останется вещью в себе - обречено.

Тоже самое с функциональщиной, если придется что-то использовать - буду использовать Scala.

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

just FYI - F# будет включен в следующую Visual Studio

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

Re^2: Scala: A Scalable Language

>>> "сообщество mono программистов"

>> Это типа Мигель теперь так себя называет?)))

> http://okante.narod.ru/D :-D

Почитаем спасибо.

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

То есть ты хочешь сказать, что Linux умер? Ведь все что в нем есть, есть в платной ОС от Microsoft. Более того, там даже есть AD и GPO, что как известно, жутко облегчает управление и администрирование. И можно взять и купить MS Server 2008, вместо RHEL или SUSE Enterprise.

И ты думаешь Google & Yahoo & Oracle & IBM забьют на участие в разработке бесплатных OCaml и хаскеля как только в платной и дорогой Visual Studio появятся Nemerle и F#? Да у Гугля денех не хватит купить каждому сотруднику по комплекту MS VS 2008!

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

>Тоже самое с функциональщиной, если придется что-то использовать - буду использовать Scala.

А где нужны функциональные возможности? В основном данные на предприятиях хранятся в РБД, для отображения юзерям хватает ООП императивных Java, Delphi и C#. Или вообще 1С. Куда всунуть функциональщину?

Или у вас все данные всегда в памяти в ассоциативных мапах?

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

>То есть ты хочешь сказать, что Linux умер? Ведь все что в нем есть, есть в платной ОС от Microsoft. Более того, там даже есть AD и GPO, что как известно, жутко облегчает управление и администрирование. И можно взять и купить MS Server 2008, вместо RHEL или SUSE Enterprise.

Нет, потому что линукс это несколько более масштабная весчь. А всякие OCaml/Haskell скорее можно сравнить с концптуальными проектами операционок от дедушки вирта, котороые нахрен никому не сдались.

>И ты думаешь Google & Yahoo & Oracle & IBM забьют на участие в разработке бесплатных OCaml и хаскеля как только в платной и дорогой Visual Studio появятся Nemerle и F#? Да у Гугля денех не хватит купить каждому сотруднику по комплекту MS VS 2008!

А использовать бесплатную Express версию религия не позволяет? Ее возможностей хватит 80% обезьянок. Да и сами Nemerle/F# вполне бесплатны, они даже под моно заводятся!

P.S. Слава Мигелю!

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

>А использовать бесплатную Express версию религия не позволяет? Ее возможностей хватит 80% обезьянок.

Чижолый случай. В Express версии и в TurboDelphi нет компонентов доступа к базам данных. Они не для предприятий. А 80% обезьянок программируют на предприятиях и именно разнообразные обработки данных. А не сайты на Flex и AJAX. Этим занимаются менее 1% программеров в мире

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

>Чижолый случай. В Express версии и в TurboDelphi нет компонентов доступа к базам данных. Они не для предприятий. А 80% обезьянок программируют на предприятиях и именно разнообразные обработки данных. А не сайты на Flex и AJAX. Этим занимаются менее 1% программеров в мире

Тебе кто-то мешает подключить соответствующую библиотеку к проекту и накопипастить код, радость моя? Я понимаю, тяжелое наследие дельфей и IBObject - хочется кинуть компонент на формочку и чтобы усе было, но все-таки, может стоить таки начать исполнять свои прямые обязанности и начать копипастить?

Интересно, а как в хаскелле с "компонентами доступа к данным"? А то тут о нем с таким пиететом говорят....

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

> Интересно, а как в хаскелле с "компонентами доступа к данным"?

apt-cache search haskell | grep -i sql
haskell-hsql-doc - API documentation of the HSQL library for Haskell
haskell-hsql-mysql-doc - API documentation of the hsql-mysql library for Haskell
haskell-hsql-odbc-doc - API documentation of the hsql-odbc library for Haskell
haskell-hsql-postgresql-doc - API documentation of the hsql-postgresql library for Haskell
haskell-hsql-sqlite3-doc - API documentation of the hsql-sqlite3 library for Haskell
libghc6-hdbc-postgresql-dev - PostgreSQL HDBC (Haskell Database Connectivity) Driver for GHC
libghc6-hdbc-sqlite3-dev - Sqlite v3 HDBC (Haskell Database Connectivity) Driver for GHC
libghc6-hsql-dev - Multi-Database Interface System library for GHC6
libghc6-hsql-mysql-dev - MySQL driver of the HSQL library for GHC6
libghc6-hsql-mysql-prof - MySQL driver of the HSQL profiling library for GHC6
libghc6-hsql-odbc-dev - UnixODBC driver of the HSQL library for GHC6
libghc6-hsql-odbc-prof - UnixODBC driver of the HSQL profiling library for GHC6
libghc6-hsql-postgresql-dev - PostgreSQL driver of the HSQL library for GHC6
libghc6-hsql-postgresql-prof - PostgreSQL driver of the HSQL profiling library for GHC6
libghc6-hsql-prof - Multi-Database Interface System profiling library for GHC6
libghc6-hsql-sqlite3-dev - SQLite driver of the HSQL library for GHC6
libghc6-hsql-sqlite3-prof - SQLite driver of the HSQL profiling library for GHC6

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

А что, если разрабатывать в VS Express, то нельзя к проекту прикрутить ADO.NET провайдера от нужной БД?

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

> А что, если разрабатывать в VS Express, то нельзя к проекту прикрутить ADO.NET провайдера от нужной БД?

Неверное можно, я не в курсе, я отвечал на вопрос по поводу средств доступа к БД из хаскелла. GHC, к слову сказать, разрабатывают специалисты и из Microsoft Research тоже.

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

>Неверное можно, я не в курсе, я отвечал на вопрос по поводу средств доступа к БД из хаскелла. GHC, к слову сказать, разрабатывают специалисты и из Microsoft Research тоже.

Тут где-то был другой ананизмус, которому для работы с БД экспресса не хватало и он все орал, что она платная.

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

> А где нужны функциональные возможности? В основном данные на предприятиях хранятся в РБД, для отображения юзерям хватает ООП императивных Java, Delphi и C#. Или вообще 1С. Куда всунуть функциональщину?

Ну хотя бы посмотри примеры коды на Ruby, я вот на нем уже около года пишу (именно пишу, а не балуюсь в свободное время), там повсеместно используются лямбда-выражения. Взять хотя бы пример с файлом: f = File.open('file.txt') ... f.close

Эквивалентно File.open('file.txt'){|f| ... } А что касается РБД - ну данные то вытаскиваются императивно, но их то надо еще и обработать. Вот здесь возможности ФП раскрываются на полную катушку.

Надо время, что бы осознать, что функция (особенно анонимная) это очень нужная и естественная конструкция, которая применима почти везде.

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

>Ну хотя бы посмотри примеры коды на Ruby, я вот на нем уже около года пишу (именно пишу, а не балуюсь в свободное время), там повсеместно используются лямбда-выражения. Взять хотя бы пример с файлом: f = File.open('file.txt') ... f.close

И что?
Пример на С:
fd = open("file.txt")
if (fd > 0) {
 ...
 close(fd)
}

На яве/с++ с исключениеми вообще отлично будет.

>Эквивалентно File.open('file.txt'){|f| ... } А что касается РБД - ну данные то вытаскиваются императивно, но их то надо еще и обработать. Вот здесь возможности ФП раскрываются на полную катушку. 

Так в чем конкретно преимущество? Покажите, чем "лямбда-выражение" лучше старого-доброго подхода?

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

>Так в чем конкретно преимущество?

Функциональный подход в программировании лучше чем императивный.
- Чем лучше?
- Чем императивный.

anonymous
()

Вообще говоря, я уже начинаю присматриваться к Mono, а что, кроссплатферменный (может поддерживает не так много как java, но на всех основных есть), можно использовать функциональщину и при этом не выскивать экзотические места работы, не очень быстр? ну так и jvm не сразу стала быстрой. В общем, надо будет покурить ее.

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

> Функциональный подход в программировании лучше чем императивный.

> - Чем лучше?

> - Чем императивный.

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

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

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

Бла-бла-бла :) Ответ не засчитан. Если сравнить яву и С, то тут же можно указать отсутствие работы с указателями, исключения, автоматическую сборку мусора, байт-код. Преимущества (и недостатоки) на лицо.

А в сравнении с функциональным языком? Приведите такой же пример.

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

>Вообще говоря, я уже начинаю присматриваться к Mono, а что, кроссплатферменный (может поддерживает не так много как java, но на всех основных есть), можно использовать функциональщину и при этом не выскивать экзотические места работы, не очень быстр? ну так и jvm не сразу стала быстрой. В общем, надо будет покурить ее.

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

anonymous
()

Кто-нибудь вообще читал статью?

Корни Scala. Scala наследует значительную часть синтаксиса Java и C#, которые в свою очередь строятся на синтаксисе C и C++.

Единообразная объектная модель Scala была впервые введена в Smalltalk, затем продолжена в Ruby. Универсальная идея вложенности присутствовала в Алголе, Симуле и Beta и gbeta. Единый порядок вызовов функций и полей класса перенят из Эйфель. Подход к функциональному программированию похож на подход в SML, OCaml и F#. Множество функций высшего порядка из стандартной библиотеки Scala также присутствуют в библиотеках ML и Хаскель. Подразумеваемые? параметры скопированы с type classes Хаскеля. Библиотека многопоточности основана на подходе Эрланг и его Актерах.

Исторические корни расширяемых языков восходят к работе Петера Ландина 1966года «Следующие 700 языков программирования». В которой он упоминал Лисп, Смаллток и Iswim. Передача блоков кода как параметра в функцию восходит корнями в Смаллток и Iswim.

В других объектно-ориентированных языках также присутствуют элементы функциональной парадигмы, это такие языки как Ruby, Smalltalk и Python. На платформе Java представлены Pizza, Nice, и Multi-Java.

А кто-нибудь читал работу Одерски «A Nominal Theory of Objects with Dependent Types»?

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

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

Кто сказал? "Собака гавкаит, а караван идетъ" Где теперь тот, кто это сказал, и где жаба? Жаба везде!

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

>Кто сказал? "Собака гавкаит, а караван идетъ" Где теперь тот, кто это сказал, и где жаба? Жаба везде!

Ну попробуйте запустить java игрушку для симбиана в win mobile... Везде ява, но только с костылями.

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