Рубрика «scala» - 25

Нил Форд, Архитектор ПО, ThoughWorks Inc.
25 сентября 2012
перевод статьи Functional thinking: Tons of transformations

В функциональных языках программирования подходы к повторному использованию кода существенно отличаются от ООП языков, эту тему я исследовал в статье Связывание и композиция, часть 2. ООП языки стремятся иметь множество структур данных с различными операциями, в то время как функциональные языки используют несколько с небольшим количеством операций. ООП языки способствуют созданию класс-специфичных методов (class-spesific) и вы можете использовать повторно повторяющиеся части. Функциональные языки помогают достигнуть повторное использование путем поощрения применения общих преобразований в структурах данных, с помощью функций высшего порядка можно преобразовывать операции для частных случаев.

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

Основная цель этой части поспособствовать пониманию этой трансляции. Я возьму простые проблемы, которые требуют определиния и итерации, реализую решение на 5 различных языках (Java, Groovy, Clojure, JRuby и Scala) и двух функциональных фреймворках (Functional Java и Totally Lazy) для Java. Эти реализации одинаковы, однако детали отличаются от языка к языку.
Читать полностью »

Привет!

Несколько недель назад мы закончили Early Access Program, позволявшую опробовать предварительные билды IntelliJ IDEA 12. Спасибо всем, кто принял участие в программе и присылал нам свои отзывы и комментарии. Ваше пристальное внимание ко всем новым фичам, ваши идеи, предложения, баг-репорты — без всего этого продукт был бы совсем другим.

И вот, после целого года трудов, IntelliJ IDEA 12 официально выпущена и доступна для загрузки.

IntelliJ IDEA 12 раскрывает темную сторону продуктивного программирования

Конечно, все новые фичи и улучшения релиза здесь не перечислить. Каждый день мы не только добавляем что-то новое, но и пересматриваем существующую функциональность, чтобы сделать ее еще полезнее и «юзабельнее». Вот краткий список главных возможностей, ожидающих вас в IntelliJ IDEA 12.
Читать полностью »

Нил Форд, Архитектор ПО, ThoughWorks Inc.
21 августа 2012
перевод статьи Functional thinking: Rethinking dispatch

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

(прим. перевод.: dispatch method mechanism, перевод диспетчеризация методов очень часто используется, однако попадается литература по Java, которая переводит термин как назначение методов, однако я использую первый)

Читать полностью »

Нил Форд, Архитектор ПО, ThoughWorks Inc.
10 Июля 2012
перевод статьи Functional thinking: Either trees and pattern matching

В прошлой части я представил распространенную абстракцию в мире функционального программирования: Either. В этой части, я продолжу исследование Either, используя его для построения древовидных структур данных — которые в свою очередь, позволят мне имитировать сопоставление-по-образцу(pattern-matching), характерное в Scala, для построения методов обхода.
Читать полностью »

Нил Форд, Архитектор ПО, ThoughWorks Inc.
12 Июня 2012
перевод статьи Functional thinking: Functional error handling with Either and Option

Когда вы занимаетесь исследованием глубоких тем как функциональное программирование, появляются увлекательные ответвления. Я продолжаю свою мини серию переосмысления традиционных шаблонов проектирования банды четырех (GoF, Gang of Four) в функциональном стиле. Я продолжу исследование в следующей части, раскрыв поиск по образцу в Scala (pattern-matching), но для начала мне необходимо построить фундамент с помощью концепции Either. Одно из применений Either обработка ошибок в функциональном стиле, которое я разберу в этой части. После того как вы поймете магию, которую Either применяет к ошибками, я вернусь к поиску по образцу и деревьям в следующей части

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

Читать полностью »

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

Так и родилась идея создать фреймворк, который

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

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

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

Читать полностью »

в 21:20, , рубрики: java, scala, метки: ,

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

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

Введение

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

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

«Разбор полетов» — Episode 24 — А ты заполнил классный журнал?
Новый сезон в старом и надеемся полюбившимся составе. В сегодняшнем выпуске мы обсудим
Тема сочинения — Как провели лето:Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js