Size: a a a

Scala User Group

2020 August 22

NP

Nikita Pedorich in Scala User Group
источник

СП

Саша Павлычев... in Scala User Group
Ребят ФП-ки, теоретический вопрос: изучая Haskell стало понятно что чистые функции и выражения дают большие возможности для различных оптимизаций на уровне компилятора, в частности ленивость (здесь есть шаринг выражений и различные стадии вычислений). Есть ли что-то подобное на уровне компилятора Скалы ?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Саша Павлычев
Ребят ФП-ки, теоретический вопрос: изучая Haskell стало понятно что чистые функции и выражения дают большие возможности для различных оптимизаций на уровне компилятора, в частности ленивость (здесь есть шаринг выражений и различные стадии вычислений). Есть ли что-то подобное на уровне компилятора Скалы ?
нет
источник

SK

Sergey Kucherenko in Scala User Group
Саша Павлычев
Ребят ФП-ки, теоретический вопрос: изучая Haskell стало понятно что чистые функции и выражения дают большие возможности для различных оптимизаций на уровне компилятора, в частности ленивость (здесь есть шаринг выражений и различные стадии вычислений). Есть ли что-то подобное на уровне компилятора Скалы ?
компилятор скалы "не знает", есть ли у вашего кода побочные эффекты, он не умеет
источник

SK

Sergey Kucherenko in Scala User Group
это на всяких интересных оптимизациях ставит крест
источник

G

GWM in Scala User Group
Подскажите пожалуйста кто со сликом знаком, безопасно ли делать вот так вот:
filter(_.name.like(s"%$sq%"))

Где sq - произвольная строка получаемая от юзера? т.е. слик это заескейпит, или у меня тут будет sql injection?
источник

СП

Саша Павлычев... in Scala User Group
Sergey Kucherenko
компилятор скалы "не знает", есть ли у вашего кода побочные эффекты, он не умеет
В Haskell есть спец тип IO для этого, странно , что в Скала 3 в этом плане ничего не сделано для сообщества, которое активно развивает ФП в Скале.
источник

OO

Oleksandr Olgashko in Scala User Group
Саша Павлычев
В Haskell есть спец тип IO для этого, странно , что в Скала 3 в этом плане ничего не сделано для сообщества, которое активно развивает ФП в Скале.
аналогичный тип есть и в скале, но нет гарантий на уровне компилятора, что юзер не напишет сайдэффект в выражении с таким типом
источник

AP

Andrey Patceev in Scala User Group
GWM
Подскажите пожалуйста кто со сликом знаком, безопасно ли делать вот так вот:
filter(_.name.like(s"%$sq%"))

Где sq - произвольная строка получаемая от юзера? т.е. слик это заескейпит, или у меня тут будет sql injection?
Заэскейпит
источник

G

GWM in Scala User Group
Andrey Patceev
Заэскейпит
Спасибо
источник
2020 August 23

СП

Саша Павлычев... in Scala User Group
Олег, а что ты имел в виду, когда говорил, что Скала 3 будет более функционалой, больше сахара?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Саша Павлычев
Олег, а что ты имел в виду, когда говорил, что Скала 3 будет более функционалой, больше сахара?
ФП сообщество в scala последние 5 лет неизменно укрепляется. Настолько укрепилось, что сегодня это  мейнстрим и практически все новые либы фпшные.
И большая часть проблем в scala 2, которые решали в scala 3 были сформулированы ими и решали их потребности.
Новый массивный редизайн имплиситов в виде полу-тайпклассов, автоматически расширяющих синтаксис и дающих возможность вывода.
Все замуты на типах, такие как матч типы, опак типы, кайнд полиморфизм - все решают потребности ФП.
Несколько новых видов функций и унификация старых. Компактный синтаксис для (Г)АДТ.
Все остальные фичи полезны для ФП и для ООП одновременно, вроде хайлевел определений, трейт параметров и т.п
Единственная фича, которая для ООП возможно более полезна, чем для ФП - это экспорт.
источник

AD

Apache DOG™ in Scala User Group
Саша Павлычев
Ребят ФП-ки, теоретический вопрос: изучая Haskell стало понятно что чистые функции и выражения дают большие возможности для различных оптимизаций на уровне компилятора, в частности ленивость (здесь есть шаринг выражений и различные стадии вычислений). Есть ли что-то подобное на уровне компилятора Скалы ?
Проблема в том чтобы выяснить чистоту функции нужно выяснить чистоту джавакода и скалакода, так что это весьма сложно.
источник

SA

Sergey Alaev in Scala User Group
Саша Павлычев
Ребят ФП-ки, теоретический вопрос: изучая Haskell стало понятно что чистые функции и выражения дают большие возможности для различных оптимизаций на уровне компилятора, в частности ленивость (здесь есть шаринг выражений и различные стадии вычислений). Есть ли что-то подобное на уровне компилятора Скалы ?
Нет, никаких особенных оптимизаций в скале нет. Более того, ФП-код медленнее императивного. Так что основное преимущество ФП в скале - это простота кода.
источник

СП

Саша Павлычев... in Scala User Group
Sergey Alaev
Нет, никаких особенных оптимизаций в скале нет. Более того, ФП-код медленнее императивного. Так что основное преимущество ФП в скале - это простота кода.
Это скорее вопрос к разработчикам компиляторов, почему ФП код медленнее. Довольно странно, что в 21 веке декоративное программирование до сих пор не победило и мы вынуждены работать с низкоуровневыми концептами вроде переменная и процедура. Насчёт простоты ФП кода я бы поспорил, тк это совсем другой стиль программирования и голову нужно перестраивать. Основной плюс ФП что он удобен при конкурентном программировании и соответственно навязывается разрабами библиотек. Хотелось бы в будущем иметь поддержку ФП на уровне инфраструктуры (компиляторы, GC)
источник

AD

Apache DOG™ in Scala User Group
Саша Павлычев
Это скорее вопрос к разработчикам компиляторов, почему ФП код медленнее. Довольно странно, что в 21 веке декоративное программирование до сих пор не победило и мы вынуждены работать с низкоуровневыми концептами вроде переменная и процедура. Насчёт простоты ФП кода я бы поспорил, тк это совсем другой стиль программирования и голову нужно перестраивать. Основной плюс ФП что он удобен при конкурентном программировании и соответственно навязывается разрабами библиотек. Хотелось бы в будущем иметь поддержку ФП на уровне инфраструктуры (компиляторы, GC)
Декоративное?
источник

СП

Саша Павлычев... in Scala User Group
Apache DOG™
Декоративное?
Сори, декларативное
источник

AT

Aλeksei Tereχin in Scala User Group
Apache DOG™
Декоративное?
+ мне нравится такое название
источник

AT

Aλeksei Tereχin in Scala User Group
Sergey Alaev
Нет, никаких особенных оптимизаций в скале нет. Более того, ФП-код медленнее императивного. Так что основное преимущество ФП в скале - это простота кода.
А есть замеры? Очень интересно посмотреть.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Саша Павлычев
Это скорее вопрос к разработчикам компиляторов, почему ФП код медленнее. Довольно странно, что в 21 веке декоративное программирование до сих пор не победило и мы вынуждены работать с низкоуровневыми концептами вроде переменная и процедура. Насчёт простоты ФП кода я бы поспорил, тк это совсем другой стиль программирования и голову нужно перестраивать. Основной плюс ФП что он удобен при конкурентном программировании и соответственно навязывается разрабами библиотек. Хотелось бы в будущем иметь поддержку ФП на уровне инфраструктуры (компиляторы, GC)
scala только только собирается получить первый компилятор с промежуточным представлением перед JVM bytecode, все нетривиальные оптимизации требуют такого представления.
Некоторые даже должны были быть включены в релиз, но пока отложены.
Я тоже полагаю, что есть у ФП кода есть потенциал производить более эффективно работающие приложения, но это вопрос следующего этапа и вовлечённости сообщества в компилятор.
источник