Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
«У этого языка код медленнее => Этот язык нельзя использовать в тех же целях».
Скорость работы программ не может быть критерием выбора языка, пока не доказано, что она напрямую зависит от этого языка.
Однако, никто не будет писать модель погоды на… Scala, как и не будет на них писать систему торгов на бирже… базу данных, сервер сообщений и т.д. и т.п.
Да, они написаны на Java, но всё что написано на Java может быть написано и на Scala.
В большинстве программных продуктов большинство мест не являются узкими местами ни по скорости выполнения, ни по потребляемой памяти
В современном мире гораздо важнее поддерживаемость и удобство (а, значит, и скорость с безошибочностью) разработки.
29 лет назад реалии разработки ПО были иными, и требования к программам были иными, сложность ПО тоже многократно выросла.
Ну и напоследок, «конкурентные программы» — это ж надо так перевести! В-)
не нужно писать тесты на такие мелочи, как опечатки,
Грамотное применение типов может уменьшить число тестов в разы. Зачем мне делать assert(x.length=y.length), если у меня по системе типов в функцию передается список пар [(x,y)]?
Да нет, поможет. Хардкорное TDD вообще редко используют в статических языках, потому что не нужно. Тесты пишут уже после кода. Дилемма простая, в статике ты описываешь типы и пишешь мало тестов, а в динамике ты пишешь много тестов, очень много тестов, нужно больше тестов. И в чем профит, в экономии времени? Так в динамике время реально экономится, когда тестов не пишешь вообще :) А если их писать, то времени приходится тратить больше, чем на типы… Это хорошо видно по распределению проектов — динамика в основном используется как CRUD примочка к базе, которой упасть в принципе не страшно, для скриптов автоматизации, для прототипов и расчетов… А статика — когда куча умных перцев готовит проект на годы. И первоначальные затраты времени окупаются сторицей. Я ничего не проповедую, говорю как есть просто. У меня специфика такая, что я за динамическими языками провожу больше времени, мне холиварить вообще не о чем.
Зато я постаянно вижу стэктрэйсы от всяких API на Яве, в том числе в досаточно серьзеных проектах. Почему-то не спасает их статическая типизация.
и есть продакш.версия, в отличие от, например, хаскеля
Один раз определил и теперь все имена пользователей, состоящие только из цифр, автоматом стали numeric?
Будучи программистом на Ruby, строгая типизация в Scala ощущалась в начале как бремя…
В отличие от примера на Java, код приведён полностью, т.е. можно его запускать в таком виде и он будет работать.
#!/usr/bin/env bash
exec scala "$0" "$@"
!#
println("Hello!")
В Scala for-генератор – это синтаксический сахар для функциональной композиции.
val mapFilter = map(_+1) . filter(_ > 0) в Scala не получится — map/filter, это не полиморфные функции, а методы класса.Cтоит отметить, что при объявлении функции не обязательно было указывать тип возвращаемого значения, компилятор Scala выведет его сам.
16 месяцев функционального программирования