Как стать автором
Обновить
4.83

Scala *

Мультипарадигмальный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Использование Scala в enterprise-проектах

Время на прочтение1 мин
Количество просмотров9.6K
2 месяца назад e-Legion и JetBrains провели очередную конференцию для Scala-разработчиков в Санкт-Петербурге — Scaladev.

На мероприятии выступили представители из e-Legion, Jetbrains, Huawei Research, Grid Dynamics и GridGain. Выступление Павла Фатина (JetBrains) «Поддержка компиляции в Scala Plugin с использованием Zinc» уже выкладывали в блоге Jetbrains, кто пропустил — вот ссылка.

В этом же посте будет доклад и презентация Рафаэля bugzmanov Багманова из компании Grid Dynamics. В своем докладе он рассказал о своем опыте реализации типичного веб-приложения для enterprise-проекта на Scala.


Презентация

Scala rule-based inference engine

Время на прочтение6 мин
Количество просмотров8.6K
Всем привет! Хочу показать общественности свой открытый движок вывода правил (forward chaining) с поддержкой нечеткой логики, под рабочим названием Scala inference engine (sie) (код).

UPD.
Библиотека выложена в центральный репозиторий maven-а:
    <dependency>
        <groupId>net.sf.brunneng.fusie</groupId>
        <artifactId>fusie</artifactId>
    </dependency>


Читать дальше →

Видео со ScalaDev 2013. #1

Время на прочтение1 мин
Количество просмотров4.1K
Пока идут майские праздники, а у кого-то они превратились в длительный отпуск, мы решили порадовать наших хаброчитателей видеозаписями с недавней конференции Scala разработчиков ScalaDev. Конференция третья по счету организуется компанией e-legion, при поддержке JetBrains.

В этот раз количество докладов было весьма внушительным, интерес к языку со стороны джавистов растет, как и число квалифицированных Scala-программистов. В первой видеозаписи Павел Фатин, разработчик Scala плагина для IntelliJ IDEA, рассказывает про особенности нового способа компиляции Scala проектов в IntelliJ IDEA 12.




Ждите новых видео.
Программируйте с удовольствием!

Язык в языке или встраиваем XPath в Scala

Время на прочтение12 мин
Количество просмотров11K
Scala — великолепный язык. В него можно влюбиться. Код может быть лаконичным, но понятным; гибким, но строго типизированным. Продуманные до мелочей инструменты позволяют не бороться с языком, а выражать на нем свои идеи.

Но эти же инструменты позволяют писать крайне сложный код.
Использование интеллектуальной эквилибристики в стиле scalaz или вычислений на системе типов в духе shapeless — гарантия того, что ваш код поймут единицы.

В этой статье я расскажу о том, чего делать, скорее всего, не стоит.
Я расскажу как встроить в scala другой язык.
Читать дальше →

Scala-конференция в Петербурге уже завтра

Время на прочтение1 мин
Количество просмотров3.3K
Уже в завтра (11.04) состоится третья бесплатная конференция для Scala-разработчиков — ScalaDev.

Приглашаем всех в конгрессный центр «ПетроКонгресс» послушать доклады экспертов о разработке на Scala.

image

В программе:
  • Илья Ключников (Huawei Research), «Введение в lightweight modular staging и scala virtualized»
  • Павел Фатин (JetBrains), «Поддержка компиляции в Scala Plugin с использованием Zinc»
  • Дмитрий Медвинский (e-Legion), «О вариации типов»
  • Алексей Злобин (GridGain), «Легкое распределённое программирование со Scala и GridGain»
  • Рафаэль Багманов (Grid Dynamics), «Scala in a wild enterprise»
  • Дмитрий Найданов (JetBrains), «Play 2.0 в IntelliJ IDEA»

Вход свободный. Необходимо лишь зарегистрироваться.

Третья конференция для Scala-разработчиков в Петербурге

Время на прочтение1 мин
Количество просмотров3.1K
11 апреля в 19:00 в центре «ПетроКонгресс» состоится третья конференция для Scala-разработчиков — ScalaDev #3.
Организаторами выступают компании e-Legion и JetBrains.

image

В программе:

  • Илья Ключников (Huawei Research), «Введение в lightweight modular staging и scala virtualized»
  • Павел Фатин (JetBrains), «Поддержка компиляции в Scala Plugin с использованием Zinc»
  • Дмитрий Медвинский (e-Legion), «О вариации типов»
  • Алексей Злобин (GridGain), «Легкое распределённое программирование со Scala и GridGain»
  • Рафаэль Багманов (Grid Dynamics), «Scala in a wild enterprise»
  • Дмитрий Найданов (JetBrains), «Play 2.0 в IntelliJ IDEA»

Вход свободный. Необходимо лишь зарегистрироваться.

Переход с Java на Scala (Clojure, Haskell, Erlang ..) как повышение абстракции программирования

Время на прочтение3 мин
Количество просмотров33K
А что такого можно написать на Scala, чего нельзя на Java?
(из разговора с одним моим знакомым другом, человеком и программистом)
The best reason to learn a new programming language is to learn to think differently.
Chad Fowler

Хочу рассказать не о простоте конструкций Scala по сравнению с Java и не о том, что в 1 строчку Scala я могу уместить 20 строк Java. А наоборот, копнуть поглубже, уронить устои ООП и посмотреть на реакцию благородной публики.
Читать дальше →

Scala WAT: Обработка опциональных значений

Время на прочтение5 мин
Количество просмотров15K
В сети и на Хабре уже довольно много статей вводного уровня про то, как начать писать на Scala, и раскрывающих особенности функционального подхода.

Какое-то время назад мы полностью перевели на Scala один из основных для веба проектов. За это время я наблюдал эволюцию разработчиков, включая свою собственную, и у меня скопился объёмный список конструкций, которые тянет написать, если вы раньше писали на Java, и для которых правильное решение на Scala может не быть сходу очевидным. Данные рекомендации могут быть не очень понятны тем, кто до сих пор пишет на Java и не видел до этого код на Scala. Я не буду разъяснять работу стандартных функций и функциональных концепций, всё ищется по ключевым словам в сети.
Читать дальше →

Релиз Scala 2.10

Время на прочтение3 мин
Количество просмотров7.9K
Сегодня, наконец-то, вышла финальная версия Scala 2.10.0, о чем на сообщают на официальном сайте.

Новые возможности:


Value классы


Теперь пользовательские классы могут наследоваться от AnyVal (раньше было возможно только от AnyRef). Это дает возможность добиться большей производительности за счет отсутствия накладных расходов по сравнению с оборачиваемым классом.
class Wrapper(val underlying: Int) extends AnyVal

У класса должен быть единственный, публичный val параметр, тип которого будет типом вашего класса во время исполнения.
Есть некоторые ограничения, частично из-за текущей реализации JVM.
docs.scala-lang.org/overviews/core/value-classes.html

Неявные классы


Ключевое слово implicit теперь можно применять не только к методам, но и к классам. Добавлены для того, чтобы упростить расширение существующих классов и уменьшить нагрузку на implicit методы. Так же, очевидно, могут иметь только один параметр (можно больше, если остальные неявные). В классе можно определять только методы, исключение — параметр конструктора.
Синтаксис:
implicit class RichInt(n: Int) extends Ordered[Int] {
  def min(m: Int): Int = if (n <= m) n else m
}

docs.scala-lang.org/sips/pending/implicit-classes.html

Читать дальше →

SORM. Новый элегантный и масштабируемый ORM фреймворк для Scala

Время на прочтение2 мин
Количество просмотров8.3K
Тот, кому доводилось иметь дело с выбором ORM для Scala, наверняка, наслышан о таких библиотеках, как Slick (Scala Query), Squeryl, Circumflex и пр., и, не менее вероятно, согласится со следующими утверждениями: они не абстрагируются от реляционных концепций, они требуют описания модели специфическими способами, API зачастую запутан и рассредоточен, и, наконец, то, насколько предложенные этими библиотеками абстракции в действительности упрощают работу с базой данных является, по меньшей мере, сомнительным.

Так и родилась идея создать фреймворк, который
  1. возведёт абстракцию над базой данных до более высокого уровня, представляя её через стандартные типы данных Scala: примитивы, кортежи, опции, коллекции и тд., а так же стандартные кейс-классы, представляющие собой сущности,
  2. выполняя первую задачу, будет «чистым», что означает полное исключение концепций реляционной стороны из API фреймворка: никаких таблиц, строк и реляционных связей,
  3. возведёт в принцип основы функционального программирования: только немутируемые типы данных, сведение State к минимуму,
  4. будет выполнять за пользователя всё, что он может, за счёт чего достигнет минимизации boilerplate.

Как видите, задачи все стояли достаточно бескомпромиссные, однако они были решены. За счёт этого удалось добиться последовательности, простоты и вытекающей интуитивности фреймворка, — и это при отнюдь не слабых возможностях. Boilerplate удалось, и вовсе, исключить.
Читать дальше →

Закончен предварительный перевод статей по языку Scala от компании Twitter

Время на прочтение2 мин
Количество просмотров20K
С недавнего времени я интересуюсь языком Scala. Пару месяцев назад я набрел на интересную серию статей от компании Twitter. Я сносно читаю на английском, но все же приятнее читать на русском языке, если есть нормальный перевод.
Благодаря труду Мариуса Эриксена (Marius A. Eriksen) и других людей серия статей увидела свет. Всех желающих узнать больше о Scala и помочь в улучшении перевода — приглашаю под кат.

Читать дальше →

Scala как расширенная Java или Java++

Время на прочтение4 мин
Количество просмотров27K
Java существует достаточно долго, на ней написано огромное количество софта и она является лидером в своей области. Однако Java не лишена недостатков. При проектировании языка важным критерием была простота и легкость изучения языка, и эта простота заставляет писать огромное количество лишнего кода, что бы компенсировать недостаточную гибкость языка: паттерны проектирования, XML конфиги, AOP, гетеры-сеттеры, try catch finaly синтаксис и т.д. Так же очевидно что не для всех задач чистый ООП подход является оптимальным, некоторые задачи намного эффективнее выполнять в функциональном стиле.

Существует много разных языков — Groovy, Python, Ruby, JRuby и еще много других, которые потенциально могут заменить java. Так почему же именно Scala?
Читать дальше →

Обзор фреймворка Lift на Scala

Время на прочтение4 мин
Количество просмотров15K

Введение


Lift считается одним из самых сложных и в тоже время мощных web-фреймворков существующих на данный момент (хоть и мало-известным), во многом потому что активно использует функциональные возможности языка Scala. Что бы его изучить нужно приложить не мало усилий. Но это того стоит, хотя бы потому что он сильно отличается от стандартных MVC фреймворков и знание альтернативных технологий расширит ваш кругозор.

В этой статье я расскажу об основных особенностях этого фреймворка.
Читать дальше →

Ближайшие события

Реализуем RESTful Web Service на Scala

Время на прочтение7 мин
Количество просмотров16K
На прошлой неделе на Хабре было целых две статьи о реализации RESTful web-сервисов на Java. Что ж, не будем отставать и напишем свой вариант на Scala, с монадами и аппликативными функторами. Матёрые разработчики на Scala вряд ли найдут в этой статье что-то новое, а любители Django вообще скажут что у них эта функциональность есть «из-коробки», но я надеюсь что Java-разработчикам и просто любопытствующим будет интересно почитать.

Подготовка


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

Для тех, кто не хочет ходить по ссылкам уточню: мы собираемся реализовать простейший RESTful сервис для доступа к базе данных клиентов. Из необходимой функциональности — создание и удаление объектов в базе, а также постраничная выдача списка всех клиентов с возможностью сортировки по разным полям.

В качестве кирпичиков, из которых мы будем строить дом, возьмём:
  • Scala — даже не кирпичик, а скорее фундамент,
  • Unfiltered — отличная библиотека для обработки HTTP-запросов,
  • Squeryl — библиотека для запросов к базе данных,
  • Jackson — библиотека для работы с JSON, изначально написанная для Java, но на ура справляющаяся и со Scala-типами,
  • Scalaz — библиотека, позволяющая писать в коде разные забавные символы типа ⊛, ↦ или ∃, а заодно реализующая такие полезные абстракции, как аппликативные функторы, моноиды, полугруппы и стрелки Клейсли. Последние, правда, мне пока не приходилось использовать, но скорее всего это объясняется тем, что я ещё не достиг нужной степени функционального просветления.

По ходу статьи я постараюсь давать достаточно пояснений, что бы код был понятен людям не знакомым со Scala, но не обещаю что у меня получится.
В бой!

Type classes в Scala

Время на прочтение4 мин
Количество просмотров25K

В последнее время в сообществе Scala-разработчиков стали уделять всё большее внимание шаблону проектирования Type classes. Он помогает бороться с лишними зависимостями и в то же время делать код чище. Ниже на примерах я покажу, как его применять и какие у такого подхода есть преимущества.

Статься расчитана не только на программистов, пишущих на Scala, но и на Java — возможно, они получат для себя ответ, как, хотя бы в теории, выглядит решение для многих прикладных задач, в котором компоненты не связаны между собой и расширяемы уже после написания. Также это может быть интересно разработчикам и проектировщикам на любых других языках.
Читать дальше →

Видео с конференции ScalaDev

Время на прочтение1 мин
Количество просмотров7.7K
19 мая в офисе JetBrains прошла наша вторая встреча Scala-разработчиков в Санкт-Петербурге — ScalaDev.

image

Под катом вас ждут видео и презентации докладов:

«scala.reflect», Евгений Бурмако (EPFL)
«Курс молодого подрывника», Василий Ременюк (Viaden)
«Магия Scala изнутри», Александр Подхалюзин (JetBrains)
«Язык Kotlin», Светлана Исакова (JetBrains)

Читать дальше →

Scala-конференция в Петербурге через 4 дня

Время на прочтение1 мин
Количество просмотров2.3K
Уже в субботу 19 мая пройдет вторая конференция для Scala-разработчиков в Санкт-Петербурге — ScalaDev.



В программе конференции гостей ждет доклады о новых возможностях Scala 2.10, байткоде, создании эффективной и асинхронной системы, используя модель актеров и Akka2.0, а также новом языке Kotlin.

Регистрация и подробная информация о конференции по адресу: scaladev.ru.

Пишем простейший REST web-сервис на Scala

Время на прочтение5 мин
Количество просмотров18K
У меня есть сайт, написанный на Node.js, и иногда там требуется сделать что-то, для чего Node.js не предназначен: например, произвести какие-нибудь математические вычисления.

В этом примере мы будем вычислять «хеш» пароля.
Читать дальше →

Вторая Scala-конференция в Петербурге

Время на прочтение1 мин
Количество просмотров3.9K
19 мая в офисе JetBrains состоится вторая встреча Scala-разработчиков в Санкт-Петербурге. Первая встреча прошла 1 октября, отчет с видео можно посмотреть по ссылке.

image

Подробнее о докладах на странице мероприятия или под катом.

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

Читать дальше →

(Перевод) Перегрузка операторов в Scala

Время на прочтение3 мин
Количество просмотров4.7K
image

Можно долго спорить, является ли возможность перегружать операторы сильной или слабой стороной конкретного языка. Но факт остается фактом — в Scala такая возможность есть. Так почему бы её не использовать?

Материал статьи рассчитан в основном на начинающих Scala-разработчиков.
Читать дальше →