LINUX.ORG.RU

Вышла Scala 2.10

 


1

3

Объявлено о выходе новой версии языка программирования Scala 2.10.

Основные нововведения:

  • классы-значения (value classes) — новый механизм, позволяющий уменьшить расходы на выделение памяти;
  • неявные модификаторы (implicit classes) теперь относятся к определению классов и призваны упростить расширения для других типов;
  • интерполяция строк (string interpolation) — новый механизм создания строк;
  • Futures и Promises призваны упростить создание многопоточного кода;
  • библиотека Akka Actors теперь является частью языка;
  • наконец-то в состав языка добавлена поддержка макросов.

Текущая стабильная версия языка программирования Scala может быть получена на странице загрузки проекта; исходные коды распространяются на условиях лицензии BSD.

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

★★★★★

Проверено: maxcom ()
Последнее исправление: mono (всего исправлений: 2)
Ответ на: комментарий от border-radius

Что такое «модулярность»? Разъясни, плиз.

Расширяемость посредством модулей.

Так ты про «модульность», а не про «модулярность». Значит я правильно ответил.

А если при этом ещё и имеется сбалансированный (богатый, но не огромный и не тормозной) рантайм, так это вообще песня.

Есть пример?

Python, начиная с 2.6.

И что там за «песня» в рантайме питона? Вопрос без подковырки, действительно интересно.

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

Ты так много платишь? Или у тебя проект очень интересный?

Средне по рынку. «Интересными» проектами интересуются только задроты, а нормальным людям надо работу работать с 9 утра до 5 вечера, не напрягая зря мозг.

Значит, ты сам специалист, а не бизнесмен? Кем ты все-таки работаешь?

Я ПМ, начальник отдела. И именно меня анально накажут, если вдруг работа встанет из-за отсутствия кадров.

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

И что там за «песня» в рантайме питона? Вопрос без подковырки, действительно интересно.

Ну, посмотри, что там есть в стандартной библиотеке и сколько весит весь рантайм с ней (подсказка кроется в размере python-static: около 6 мег). Какие конструкции есть в языке, особенно начиная с 2.6 (те же map/filter/reduce, одни list comprehensions чего стоят, кстати, на базе того же foreach for...in). Насколько удобно работать со строками (слайсы) и прочими списками. Каждый модуль автоматически обзаводится своим пространством имён (а по этому пункту многие ЯП уже в пролёте), и не нужно ничего велосипедить во избежание конфликтов. Все тривиальные низкоуровневые вещи с вероятностью 97% можно найти в стандартной библиотеке. Короче говоря, для настолько нетребовательного по ресурсам языка набора возможностей предостаточно для того, чтоб сконцентрироваться непосредственно на задаче, а не на борьбе со всякими ограничениями и подстраивании исходных алгоритмов под особенности языка в ущерб простоте и логичности.

border-radius
()
Ответ на: комментарий от border-radius

А еще питон - тормозной интерпретатор.

Ладно бы ты Java назвал - там есть все, и даже больше, чем все.

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

А еще питон - тормозной интерпретатор.

Стереотиперастия.

Ладно бы ты Java назвал - там есть все, и даже больше, чем все.

И рантайм слоновейший.

border-radius
()
Ответ на: комментарий от border-radius

Стереотиперастия.

Опровергни, тупица. Питон - реально тормоз. В любом виде, хоть PyPy, хоть Jython, хоть IronPython.

И рантайм слоновейший.

А тебе его в микроконтроллер пихать, что ли?

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

Кстати, ты всех специалистов, развивающихся в невыгодном/непонятном для тебя направлении называешь дибилами и задротами?

Да, всех. Из жалости к ним же. Потому как будут они нищими и голодными всю оставшуюся жизнь.

Для людей постоянно работать над собой и интересными проблемами является большой радостью и деньги получают хорошие. Представляешь как классно, заниматься любимым делом и деньги еще за это получать. Жаль их, реализующих свой потенциал, правда?

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

Вот только про «деньги хорошие» не надо. Они, может, и хорошие, но очень-очень маленькие. Потому что много платить за говнолиспы и какашкели никто в здравом уме никогда не станет.

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

Фактически each принимает вектор и коллбек, а в роли коллбека выступает замыкание.

Нет, в foreach аргументы имя переменной и коллекция, переменная принимает значения из коллекции и выполняется тело foreach для каждого такого связывания.

Тебе дали два ответа. Чем они тебя не устраивают?

Еще раз, не нужен аналог, нужна конкретно реализация foreach,

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

Да я как бы так, в полустебной форме спрашиваю. Я не алгоритмик, не математик, просто вспомнилось, что из-за учета таких вещей немного менялась оценка алгоритма.

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

в foreach аргументы имя переменной и коллекция, переменная принимает значения из коллекции и выполняется тело foreach для каждого такого связывания.

Приведенный мной пример полностью удовлетворяет описанию.

не нужен аналог, нужна конкретно реализация foreach,

У тебя дар выражаться туманно. Ладно, хочешь реализацию - вот тебе реализация:

fn each(v: &[int], op: fn(v: &int)) {
   let mut n = 0;
   while n < v.len() {
       op(&v[n]);
       n += 1;
   }
}
tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

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

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

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

Ты так много платишь? Или у тебя проект очень интересный?

Средне по рынку. «Интересными» проектами интересуются только задроты, а нормальным людям надо работу работать с 9 утра до 5 вечера, не напрягая зря мозг.

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

Некоторые люди, видимо задроты, живут, чтобы работать, а не работают, чтобы жить. Но каждому свое.

Значит, ты сам специалист, а не бизнесмен? Кем ты все-таки работаешь?

Я ПМ, начальник отдела. И именно меня анально накажут, если вдруг работа встанет из-за отсутствия кадров.

Ну раз на работе надо «работу работать с 9 утра до 5 вечера, не напрягая зря мозг.» То все правильно делаешь.

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

Мне одному начинает казаться, что Ritmik - это такой херовый AI, написаный на говнолиспе?

хорошо подметил

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

Вот только про «деньги хорошие» не надо. Они, может, и хорошие, но очень-очень маленькие. Потому что много платить за говнолиспы и какашкели никто в здравом уме никогда не станет.

Видимо свечка везде держалась и полная статистика на руках. Если так, то крыть это конечно нечем.

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

У тебя дар выражаться туманно. Ладно, хочешь реализацию - вот тебе реализация:

Спасибо за вариант. Но нужно именно то, что я описал. Вот примерный вариант использования (синтаксис необязательно такой):

foreach(x in collection){
   var a = f(x);
   print(a);
   g(a);
   g(x);
   ...
}

У тебя же отсутствует передача в foreach переменной, его связывания с элементами коллекции, и выполнения тела с каждым таким значением. Т.е. нужно реализовать именно такую конструкцию с такими требованиями. Ты же привел какой-то аналог императивного map-а.

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

У тебя же отсутствует передача в foreach переменной,

Что такое «передача переменной» в твоем понимании?

его связывания с элементами коллекции

Это есть.

и выполнения тела с каждым таким значением

Это тоже есть.

Ты же привел какой-то аналог императивного

Чем отличается foreach от моего «императивного map»?

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

Потому что много платить за говнолиспы и какашкели никто в здравом уме никогда не станет.

Болезный ты наш, платят не за «говнолиспы и какашкели», а за выполнение работ решающие задачу.

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

Никаких полезных для общества задач говнолишпы с какашкелями не решают. Вычисление факториалов к полезным задачам не относится.

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

Потому, что это не физика а финансы.
Мат.логика проще описывается на ФП языке.
МС F# создала исключительно с целью проникновения на финансовый рынок.

grim ★★☆☆
()
Последнее исправление: grim (всего исправлений: 1)
Ответ на: комментарий от grim

МС F# создала исключительно с целью проникновения на финансовый рынок.

Ну ну. Don Syme просто банально занимался херней за счет заведения (как и все прочие сотрудники MS Research). А то, что из его игрушки сделали продукт, так это исключительно его пробивные способности, а никак не рациональный рассчет. Никому в финансах этот F#, как и вся прочая говнофункциональщина, даром не впился.

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

Потому что много платить за говнолиспы и какашкели никто в здравом уме никогда не станет.

Болезный ты наш, платят не за «говнолиспы и какашкели», а за выполнение работ решающие задачу.

Ты точно мне ответил?

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

Никому в финансах этот F#, как и вся прочая говнофункциональщина, даром не впился.

Инфа 147%? или 152%?

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

Ты точно мне ответил?

Анону конечно. Промахнулся.

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

Никому в финансах этот F#, как и вся прочая говнофункциональщина, даром не впился.

Знакомый с которым я работал RBC Capital Markets говорит что они начинают использовать с .Net приложением.

Бизнес логика на F# вместо R гораздо проще связывается с тем что они делают

Кстати, R - это весьма популярный в финансах(не бухгалтериях а финансах) диалект Scheme который в свою очередь диалект Lisp

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

R - диалект говносхемы? Ну ты насмешил. Это такой убогий и недоделанный опенсурцный клон S+.

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

Чем отличается foreach от моего «императивного map»?

Вот смотри, как должен работать foreach (пример в лисповом синтаксисе):

(foreach [a (list 1 2 3)]
    (println a)
    (println (* a a)))

А ты привел аналог, которые придется запускать так (лисповый синтаксис, но суть не меняется)

(foreach (list 1 2 3) (fn [a]
                        (println a)
                        (println (* a a))))

Теперь понятно?

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

R - диалект говносхемы?

Нет.
R это диалект Scheme

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

Теперь понятно?

Да блин. Ты разницу объясмни, но словами. Или скажи, что такое «передача в foreach переменной».

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

Ты разницу объясмни, но словами. Или скажи, что такое «передача в foreach переменной».

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

Про «передачу переменной» там ничего не сказано, для Haskell вообще приведена mapM_, для ECMA 5, Objective C, Ocaml,Ruby, Scala - прямые аналоги кода на Rust. Короче, википедийному определению for each из Rust тоже полностью удовлетворяет.

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

Короче, википедийному определению for each из Rust тоже полностью удовлетворяет.

Это ты решил свою задачу. Я тебя не заставлял вмешиваться. Раз вмешался, то пойми, что требуется. Я просил с самого начала (промотай тред, если не веришь) аналог такого варианта

for each item in collection:
  do something to item

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

(foreach [a (list 1 2 3)]
         (println a)
         (println (* a a)))

Здесь в foreach передается имя переменной, коллекция и тело, которое будет выполнятся для всех значений переменной с указанным именем, поочередно связываемой foreach-ем с элементами коллекции.

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

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

Поправлюсь, покажу свою реализацию после твоей или после твоей «сдачи».

Ritmik
()
Последнее исправление: Ritmik (всего исправлений: 1)
Ответ на: комментарий от Ritmik

реализацию покажу, как только ты покажешь свою правильную реализацию

Пока что самое внятное, что ты сказал - это ссылка на Вики; по этой ссылке есть несколько прямых аналогов кода, который я привел.

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

Может, да. По крайней мере, в Rust.

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

Пока что самое внятное, что ты сказал - это ссылка на Вики; по этой ссылке есть несколько прямых аналогов кода, который я привел.

Ты сделал аналоги, которые у тебя получилось сделать - хорошо.

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

Ritmik
()
Последнее исправление: Ritmik (всего исправлений: 1)
Ответ на: комментарий от Ritmik

Откуда такая цифра - 10?

http://jobsearch.monster.com/search/?q=Haskell
11 Haskell jobs matched your search

Шансы почти 100% при высокой квалификации.

Это если вы в KZ (Казахстан?)

А если в NY, Toronto, LA то здесь людей с высокой квалификацией весьма много и многие работают на контрактах, т.е. постоянно в поисках нового.

Т.е. если платят хорошо, то на интервью придёт человек 10 после отсева по телефону.
Возьмут одного.

Ты не согласен с утверждением, что низкоквалифицированному специалисту легче найти работу, если вакансий много и соответственно конкурс маленький?

не согласен.
Если ваканчий много любому проще найти работу.
Если 10 вакансий на континент, то любому сложно.

По этому предложению становится ясно, какой ты спец, если у тебя фп ассоциируется с математикой в финансах и трейдерах. Просто финиш.

Я написал, где они востребованы и при этом хорошо оплачиваются.

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

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

И?

И все. Конструктивно же с тобой общаться не получается - ты мелешь чушь, выкручиваешься, лжешь и злостно тупишь. На счет языков, наверняка, тоже соврал - c# и java еще хоть как-то смотрятся убедительно, остального ты не понял. Ну, вместо php у тебя perl оказался, что возможно еще хуже.

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

И все. Конструктивно же с тобой общаться не получается - ты мелешь чушь, выкручиваешься, лжешь и злостно тупишь. На счет языков, наверняка, тоже соврал - c# и java еще хоть как-то смотрятся убедительно, остального ты не понял. Ну, вместо php у тебя perl оказался, что возможно еще хуже.

Что смотрятся убедительно? Что остального не понял? Что там вместо php? Какой-то нефильтрованный поток сознания пациента. Чего сказать то хотел? Ладно уж. Не волнуйся. Не получилось что-то внятное написать, ну и ладно. Ты тут во всех своих постах так обкакался, что уже и не страшно. Тебе наверно уже не привыкать.

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

Ты тут во всех своих постах так обкакался, что уже и не страшно. Тебе наверно уже не привыкать.

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

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

http://jobsearch.monster.com/search/?q=Haskell

11 Haskell jobs matched your search

А других ресурсов нет? А если, например, на indeed.com? clojure? lisp?

А если в NY, Toronto, LA то здесь людей с высокой квалификацией весьма много и многие работают на контрактах, т.е. постоянно в поисках нового.

Что тут можно сказать. Наверно и стартапов, и неновых компаний с интересными проектами много есть и создается. Конкуренция, это хорошо.

Если 10 вакансий на континент, то любому сложно.

Если 10 на континент, то сложно.

По этому предложению становится ясно, какой ты спец, если у тебя фп ассоциируется с математикой в финансах и трейдерах. Просто финиш.

Я написал, где они востребованы и при этом хорошо оплачиваются.

Хорошо, что поправился.

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

А хорошо оплачиваются это сколько? Где ты взял статистику?

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

Общение двух дислексиков - это всегда так трогательно!

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

Внимание вопрос - а причем тут анамнез?

О программировании мы побеседовали еще постов пять назад.

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

for each item in collection:
do something to item

Если вы под «do something to item» подразумеваете ее изменение, то многие ЯП не позволяют этого.

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

Ну да, известный прием при сливе засчитывать его оппоненту.

Вот последний мой ответ тебе, где уже стало совсем очевидно Вышла Scala 2.10 (комментарий)

Ты так и не ответил. Так что там на счет слива?

Не трать время, твой анамнез уже зафиксирован.

Что ты там зафиксировал, болезный? Сначала ответь по существу хоть по одной поднятой тобой же теме. Ведь, по всем пунктам облажался. И все туда же, фиксирует что-то там у себя.

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

Ты так и не ответил. Так что там на счет слива?

Там уже не на что отвечать, я отвечу - ты задашь еще 10 тупых вопросов, времени на это у меня нет. Извини.

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