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

Scala *

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

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

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

Время на прочтение3 мин
Количество просмотров32K
А что такого можно написать на 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. А наоборот, копнуть поглубже, уронить устои ООП и посмотреть на реакцию благородной публики.
Читать дальше →
Всего голосов 52: ↑29 и ↓23+6
Комментарии83

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

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

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

Релиз 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

Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии11

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

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

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

Как видите, задачи все стояли достаточно бескомпромиссные, однако они были решены. За счёт этого удалось добиться последовательности, простоты и вытекающей интуитивности фреймворка, — и это при отнюдь не слабых возможностях. Boilerplate удалось, и вовсе, исключить.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+15
Комментарии21

Истории

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

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

Читать дальше →
Всего голосов 49: ↑46 и ↓3+43
Комментарии21

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

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

Существует много разных языков — Groovy, Python, Ruby, JRuby и еще много других, которые потенциально могут заменить java. Так почему же именно Scala?
Читать дальше →
Всего голосов 40: ↑34 и ↓6+28
Комментарии58

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

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

Введение


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

В этой статье я расскажу об основных особенностях этого фреймворка.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии31

Реализуем 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, но не обещаю что у меня получится.
В бой!
Всего голосов 24: ↑23 и ↓1+22
Комментарии10

Type classes в Scala

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

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

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

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

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

image

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

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

Читать дальше →
Всего голосов 57: ↑56 и ↓1+55
Комментарии21

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

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



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

Регистрация и подробная информация о конференции по адресу: scaladev.ru.
Всего голосов 29: ↑22 и ↓7+15
Комментарии6

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

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

В этом примере мы будем вычислять «хеш» пароля.
Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии27

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

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

image

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

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

Читать дальше →
Всего голосов 33: ↑30 и ↓3+27
Комментарии2

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

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

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

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

Материал статьи рассчитан в основном на начинающих Scala-разработчиков.
Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии35

Измерение производительности Play Framework 2.0

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

Измерение производительности Play Framework 2.0


Я уже рассказывал о программной платформе Typesafe Stack 2.0. В том посте шла речь об одном из компонентов платформы — фрэймворке Akka 2.0, реализующем модель акторов на JVM. Сегодня я хочу написать о возможностях другой составляющей Typesafe Stack — фрэймворке Play 2.0. Хотя о функциональности данного компонента уже рассказывали здесь и здесь, тема производительности решений под управлением Play 2.0 по-моему осталась не раскрытой.

Тестирование фрэймворка будет проводиться с помощью простейшего приложения разработанного на его основе. В результате выполнения тестов необходимо ответить на следующие вопросы. Какое максимально возможное количество одновременных подключений? Сколько оперативной памяти потребляют эти подключения? Сколько запросов в единицу времени может обработать тестируемое приложение?
Читать дальше →
Всего голосов 24: ↑21 и ↓3+18
Комментарии31

Пишем первый проект на Play Framework 2.0

Время на прочтение6 мин
Количество просмотров39K
13 марта состоялся релиз второй версии scala/java-фреймворка Play. На хабре уже был обзор новых фич Play 2.0. В этой же статье я хочу восполнить пробел в отсутствии мануалов на русском языке по этому интересному фреймворку на примере создания простого приложения на Java, состоящего из списка категорий и привязанных к ним вакансий.

Статья рассчитана на тех, кто совсем не знаком с Play и хотел бы его «пощупать», не тратя много времени.
Читать дальше →
Всего голосов 21: ↑18 и ↓3+15
Комментарии15

Обзор новых возможностей в playframework v2

Время на прочтение4 мин
Количество просмотров5.7K
Доброго времени суток всем. Хотел бы представить вашему вниманию небольшое описание новых возможностей Play 2. Речь в данной статье пойдет о play2 scala.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии37

Обзор Typesafe Stack 2.0 и введение в модель акторов на примере Akka 2.0

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

Typesafe Stack — современная программная платформа, которая обеспечивает возможность создания легко масштабируемых программных систем на Java и Scala. Стек функционирует на JVM, включает в себя фрэймворки Akka 2.0 и Playframework 2.0. Ядром платформы, которое обеспечивает практически неограниченную масштабируемость разрабатываемой системы, является библиотека Akka, реализующая многозадачность на основе модели акторов.
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии9

Рекурсивные функции — создание собственной математики (Scala)

Время на прочтение10 мин
Количество просмотров17K
Добрый день, Хабр!

Столь претензионным заголовком я хочу начать статью про одну из многих моделей исчисления (Computational model) — рекурсивные функции. В первой части этого поста мы разберем (в кратце, ибо подробно все расписано на Википедии) теоретическую составляющую этой модели (примитивная рекурсия), во второй же половине мы попробуем претворить данную модель в жизнь (частично) с помощью языка Scala.

1. Рекурсивные функции — что это?


Читать дальше →
Всего голосов 34: ↑31 и ↓3+28
Комментарии22

Проблемы сложности Scala

Время на прочтение1 мин
Количество просмотров3.1K
Во-первых этот тред [имеется в виду вот этот] кажется мне уж слишком пессимистичным. Scala используется в огромном и всё возрастающем числе коммерческих компаний, во многих из них работает более 100 разработчиков. Все эти люди просто делают своё дело (и в основном любят его); они не находят сложность Scala слишком пугающей.
Читать дальше →
Всего голосов 29: ↑23 и ↓6+17
Комментарии21