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)

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

В курсе. Ты уж обьясни мне непонимающему, как JDBC позволяет абстрагироваться от конкретной БД?

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

Если не секрет, в чём там была специфика проекта?

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

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

на байку

да, этажом ниже...

Случай с твоим банком единичен

В том банке один ФП язык, в моем другой. Почву пробуют будь здоров, а теперь когда команда собрана пишут на ура, да еще и быстрее чем на мейнстриме. Банки как раз обычно очень адекватные, и не фанатеют маргинальщиной как некоторые стартапы, и не думают «вот ЯП который я знаю и использовал самый лучший, остальное не нужно» как ты. Так может оказаться что ты мамонт и задачи можно уже решать в разы проще. Хорошие английские термины есть ignorance & lack of technical curiosity

да и пруфов тоже нет, sorry)

без проблем )

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

Если не секрет, в чём там была специфика проекта

Финансовый DSL, и да antlr там серьезно рассматривался, не подошел

маргинальной технологии

Таковых нет

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

Дебилушка
высер

Эка тебе бомбануло, скобчатый. Ошмётки только и летят.

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

Что, «конструкторы ракетных двигателей» сидят дома и жрут мамкин борщ, надрачивая на анафорические лямбды и пандорические захваты? Лол.

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

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

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

Не позорился бы уж. «Кортеж» — общепринятый (в академической, образовательной и инженерной среде) перевод термина «tuple» на русский язык.

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

AMQP, я не скажу почему по своему опыту, у меня все ок с JMS, но слушал команду девелоперов, которые из-за специфики своих задач возненавидели JMS

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

Они начинают тормозить на больших объймаъ данных изза кривых архитектурных решений

Пруфы замеров в студию, пожалуйста. Пруфы «кривых архитектурных решений» тоже.

Ага, кластер мемкэша онан приплел просто так

Не следует приписывать оппоненту ту чушь, которую сморозили вы сами. Я про memcached (кстати, правильное написание именно такое) ничего не говорил.

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

Результатом такого запроса будут родные коллекции языка, а не объекты, что дает возможность с ним работать с помощью map,filter,reduce,etc.

Ага, а когда твой map/filter/reduce промодифицирует половину объектов (простите, «коллекций»), то ты потом будешь руками выискивать их и коммитить.

Учи матчасть, грамотный ты наш ынтырпрайз-спец, в clojure коллекции иммутабельные, лол.

Я уже не говорю о том, что транзакции распределённый кэш идут лесом.

С транзакциями и кэшем все в порядке. Просто так пернуть решил?

Enjoy your DSL!

Уже.

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

A.Select(x=>x.y).Where(x=>SomeCond(x.y))
Для коллекций оно будет выполняться поочереди

Я думаю Нет.
результатом каждего вызова будет IEnumerable или IQueryable.
linq строит Expression Tree которе изменяется при каждом последуюм запросе.

Т.е. пока вы не обратитесь к отдельным эелементам результата или не вызовете ToList() обращения к данным не произойдет.
Ни к БД ни к коллекции ни к xml дереву.

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

Абстракции-то имеются, тока писец какие тормозные и неэффективные.

Может, вы просто не умеете их готовить? Про performance tuning слышали?

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

не выдающаяся производительность

Так и запишем: не осилили performance tuning. Да, это нетривиальная тема, на кривой козе не подъедешь. На JavaOne походили бы, что ли, послушали умных людей.

непредсказуемость

Так и запишем: не осилили документацию.

перегруженность функциями

Так и запишем: не осилили весь богатый функционал инструментов.

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

Пруфы замеров в студию, пожалуйста. Пруфы «кривых архитектурных решений» тоже.

Хм.
Вы вы утверждаете что никто никода не создает кривых архитектурных решений?

Вы точно на на нашей планете?

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

Во-во
Поэтому попросите прощения и больше так не делайте.

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

Ты просто не в курсе, как все это выглядит в высокоуровневых языках

ну-ну, а кстати, какой мне больше всего язык программирования нравится?

ты в голове держал картинку работы «с кортежами и списками» в джаве

нет, в Common Lisp, Scala, Haskell

кортежи, как из методички провинциального учителя

не уж прости, тупл писать не буду, зачем?

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

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

Что, «конструкторы ракетных двигателей» сидят дома и жрут мамкин борщ, надрачивая на анафорические лямбды и пандорические захваты? Лол.

Ок. Запишем, у ынтырпрайз-быдлокодера кончились аргументы, но начался телепатический бред. Маладца.

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

В том банке один ФП язык, в моем другой. Почву пробуют будь здоров, а теперь когда команда собрана пишут на ура, да еще и быстрее чем на мейнстриме.

Может, тут дело не в ФП, а в гибридности языков?

В любом случае, пока пруфов не будет, верится с трудом.

Финансовый DSL, и да antlr там серьезно рассматривался, не подошел

Лол, ANTLR не подошёл для финансового DSL, а Haskell подошёл? Ну это просто пушка какая-то. Скорее всего, там chief architect'ом взяли какого-то блатного зятька, который в институте хацкель задрачивал, а нормальных языков не знал. Самое правдоподобное объяснение.

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

В любом случае, пока пруфов не будет, верится с трудом.

У меня задачи чтобы ты поверил не стояло.

ANTLR не подошёл для финансового DSL, а Haskell подошёл

Давай так, ты знаешь хорошо Haskell?

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

Вы вы утверждаете что никто никода не создает кривых архитектурных решений?

Это ложь, я не утверждаю этого. Я требую пруфов в конкретной ситуации.

Но, судя по тому, что вы от ответа упорно уходите, пруфов у вас нет. Засчитываем слив?

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

в clojure коллекции иммутабельные, лол.

А, как я забыл. Это тот язычок, где в случае модификации данных создаётся новая копия на каждый чих? Какой годный язычок! В enterpreseЪ его ждут с распростёртыми объятьями!

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

Так и запишем... школьник, литературу не читает, дискретку и теорию алгоритмов не проходил.
Не позорился бы уж. «Кортеж» — общепринятый (в академической, образовательной и инженерной среде) перевод термина «tuple» на русский язык.

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

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

Это ложь, я не утверждаю этого.

Почему тогда сомневаетесь что оно бывает?
Или это вы о своей лжи пишете?

Я требую пруфов в конкретной ситуации.

Какого вида пруф вас устроит?

Привести в офис и показать код?
Или Назвать компании и продукт?
Вы что в конторы обратитесь в которых я это все видел чтобы проверить правда это или нет?

Засчитываем слив?

Онан слил. Засчитываем.

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

Лол, сперва сморозил херню, а теперь пытаешься зашить порванный в клочья анус? Удачи.

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

в clojure коллекции иммутабельные, лол.

А, как я забыл. Это тот язычок, где в случае модификации данных создаётся новая копия на каждый чих? Какой годный язычок! В enterpreseЪ его ждут с распростёртыми объятьями!

Ты ынтырпрайзная мартышка, не в курсе, что модификации не происходит, а новая копия шарит одинаковые элементы с оригинальной коллекции (почитай про persistent data structure).

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

Как оно работает если какую-то сторонню функцию засунуть в предикат where?

Expression tree это как раз и есть дерево вызовов, которое будет затем исполнено.
Т.е. если в последующих в наложенных условиях вызов окажется не нужным, то он будет убран из дерева.

Lazy evaluation и возможно оптимизация

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

Слышишь, записывальщик, зачем это все осиливать, если можно взять то, что работает с пол пинка, без осиливаний? Мы вашу породу знаем, вам лишь бы осилить. А на эффективность решения поставленной задачи вам наплевать.

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

Насколько хорошо?

Хорошо.

Писали проекты?

Писал.

Какие книги читали?

Первой книгой была «The Craft of Functional Programming» Томпсона. Но я быстро сообразил, что материалы haskell.org (в частности, Typeclassopedia) стоят десятков бумажных книг. Поэтому, например, Душкина всерьёз даже не рассматривал.

Ну так что?

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

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

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

Ну так это хорошо, поциент ведь жаловался на ООП и ORM, что означает что он хочет просто достать аналог RowSet из базы и не превращать его в обьект/словарь

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

Почему тогда сомневаетесь что оно бывает?

Я не сомневаюсь, что оно («кривые архитектурные решения», являющиеся причиной плохой производительности) бывает вообще. Я сомневаюсь, что оно имеет место в конкретном случае, о котором вы утверждаете.

Какого вида пруф вас устроит?

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

Ну, как? Время пошло? Или прямо сейчас слив засчитываем?

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

Слышишь, записывальщик, зачем это все осиливать, если можно взять то, что работает с пол пинка, без осиливаний?

Да никто и не заставляет. Можешь хоть на ПХП писать. А чё? Глобально, надёжно, эффективно.

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

Можешь ответишь как бизнес обьект из 30 полей будешь без класса будешь делать? В тупл+аксессоры? lol )

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

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

В некоторых случаях и это эффективное решение.

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

А вот интересно, почему же столько маргинальный Haskell?

Потому что это не язык общего назначения.
Потому что ниша его узка.
Потому что GHC'шный неэффективный stop-the-world мусоросборщик не масштабируется.
Потому что для решения несложных, в общем, задач требуется хорошее понимание теорката.
Потому что по сути нет стандарта языка и обратной совместимости.
Потому что нет коммерческой поддержки.
Потому что нет стандартной библиотеки, сравнимой с STL или Java Runtime (да и хотя бы даже с Python).
Потому что кучки неразвиваемого кода на Hackage не канают за «качественные библиотеки».
Потому что отсутствует современное мощное IDE.
Потому что коммьюнити маргинализовано и недружелюбно.

Это для начала. Ну так что?

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

Там словари в коробке и deftype/defrecord которые делают джава классы.

Есть, но если не нужно работать с джавой, то зачем завязываться на ОО?

Ritmik
()

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

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

Не понимаете что количество точек внедрения может быть банально больше числа «мемберов» вашей «тимы» и реальным сценариям решения проблем будет отправка вас в коммандировки по провинциальной России, где вам помимо «фикса багов» придется заниматься непрофильной деятельностью и представлять компанию (FAIL). А пока вы будете лететь самолетом местных авиалиний, клиенты, попавшие «во второй эшелон» будут звонить и очень тяжело будет найти для них подходящие слова.

Вы не понимаете, что руководство не знает что такое статическая типизация, выразительность и юнит-тестирование, а знает только про статистические показатели применения технологий X, Y, Z на рынках и кучу охуительных историй, испытанных на своем опыте или опыте коллег про разного рода технологических юродивых, пропогандистов и апостолов, проповедующих с интересами совершенно параллельными интересам компании.

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

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

все остальное спокойно держится в коллекциях (хэшмапы, сеты, векторы и т.д.). В чем проблема то?

Лол, доступ к полям за O(log(n)) вместо O(1), как в нормальных языках?

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

Я не спорю, я рассказывают о технологиях того консервативного банка котором работаю и соседнего консервативного банка. Итого Java, C#, Haskell, Scala, Groovy.

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

Кроме указанного тебе O(log n) как будешь валидировать что поле вообще есть в твоей мапе? Поверишь на слово другому разработчику? А как насчет кода который надо исследовать?

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

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

Потому что на тот момент выбор Haskell был оптимальным решением для своей задачи. *ML уже выходили на пенсию, а Scala ещё была в пелёнках.

Ну так что? :)

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