@scala_ru

Страница 443 из 1499
Andrey
25.01.2017
13:30:31
отлично, Алексей. Скажи, пожалуйста, а для какой реальной бизнес-задачи пригодятся типы?
Вопрос, по своей глупости, граничит с вопросом "Для какой реальной задачи надо ходить" Потому что любую, за редкими исключениями, бизнес задачу удобнее решать с типами.

Митко Соловец?
25.01.2017
13:30:35
был бы благодарен, если бы ты на микропримере привел пример такой рутины

KrivdaTheTriewe
25.01.2017
13:31:15
или наоборот, алгебра типов позволяет лучше контроллировать сущности?
алгебра типов позволяет описать правила, а компилятор проверит, чтобы они соблюдались, в случае с джавой тывынужден всё взаимодействие в бойлер код фигачить, в котором, нет нет, да ошибешься

Andrey
25.01.2017
13:31:23
На самом деле, достаточно поработать с достаточно развесистым проект на динамических языках без типов, что бы понять какой это аод.

Google
Alexey
25.01.2017
13:31:56
был бы благодарен, если бы ты на микропримере привел пример такой рутины
val m = Map.empty[String, Int] m.get("asdf") // тут может не быть значения по ключу. хотя ты думаешь что обязательно будет

Andrey
25.01.2017
13:32:06
Митко Соловец?
25.01.2017
13:32:51
Друг, тогда и надо в вопросе так и писать.
вопрос был адресован Алексею, он был в контексте и все понял и так)

Mikhail
25.01.2017
13:32:52
val m = Map.empty[String, Int] m.get("asdf") // тут может не быть значения по ключу. хотя ты думаешь что обязательно будет
ой. ну вот это ты вобще не к месту. не знание основ языка - не проблема языка

Andrey
25.01.2017
13:33:45
я видел большой бэкенд на ноджс
А я не просто видел, а плотно участвовал в таких проектах. И прекрасно видел, как в какой-то момент уже никто не знает как проект живет в рантайме. Там ад реально с ошибками.

Alexey
25.01.2017
13:33:52
ой. ну вот это ты вобще не к месту. не знание основ языка - не проблема языка
да ладно. в том то и дело, что язык вместо помошника становится проблемой

что-то я выгоды не увидел
то что тебя заставляют проверить нашелся ли результат это и есть выгода. ты просил микропример ты его получил. теперь замени мапу на опердень, а строчку на финдок и получишь выгоду в предметной области

Mikhail
25.01.2017
13:35:01
да ладно. в том то и дело, что язык вместо помошника становится проблемой
в том то и дело, что пример который ты привел - ни к селу, ни к городу

Alexey
25.01.2017
13:35:16
Oleksandr
25.01.2017
13:35:33
@dmsol типы -- это как тесты можно и без них, но с ними проще и надежнее

Google
Mikhail
25.01.2017
13:35:35
это у тебя сейчас пример был уровня Mariano Gappa

Mikhail
25.01.2017
13:36:14
https://movio.co/blog/migrate-Scala-to-Go/

Митко Соловец?
25.01.2017
13:36:17
@dmsol типы -- это как тесты можно и без них, но с ними проще и надежнее
так, смотри, получается алгебраический тип просто описывает деволтное поведение некоторых методов и типы полей в классе?

Oleksandr
25.01.2017
13:37:50
так, смотри, получается алгебраический тип просто описывает деволтное поведение некоторых методов и типы полей в классе?
не совсем, это трейты какие-то АДТ описывает что-то так, что компилятор может потом проверить на exhaustiveness ну и АДТ -- *один из* кирпичиков правильного ФП

Митко Соловец?
25.01.2017
13:38:32
снимая эту нагрузку с программиста, за счет чего мы получаем выгоду?

и получается в этом примере компилятор ругнется?

val m = Map.empty[String, Int] m.get("asdf") // тут может не быть значения по ключу. хотя ты думаешь что обязательно будет

Nikolay
25.01.2017
13:39:27
get вернет Option

Oleksandr
25.01.2017
13:39:32
снимая эту нагрузку с программиста, за счет чего мы получаем выгоду?
как вариант, да ты через год добавил новое поле, а компилятор ругнулся, что ты его не учел где-то

Alexey
25.01.2017
13:39:40
val m = Map.empty[String, Int] m.get("asdf") // тут может не быть значения по ключу. хотя ты думаешь что обязательно будет
и мапы ты достал не Int а Option[Int] и для того чтобы попасть внутрь тебе нужно оработать кейс когда там ничего нет

https://movio.co/blog/migrate-Scala-to-Go/
не понял как мой пример связан со статьей. просили пример как помогает - дал.

Oleksandr
25.01.2017
13:40:20
и получается в этом примере компилятор ругнется?
на этом компилятор заставляет проверить случай, когда значения в мапе нет

Alexey
25.01.2017
13:40:57
дело же не в написании кода. дело в чтении и модификации. ты видишь мапу. там сверху ктото проверил что ключ есть. достал. работает.

потом ктото рефакторнул и проверку убрал выше. потом код уехал в другую функцию. ее позвали без проверки. и все сломалось.

Митко Соловец?
25.01.2017
13:41:24
да, действительно такая строгость нужна

Oleksandr
25.01.2017
13:42:14
т.е. добавляю проверку и компилятор замолчит?
если ты явно скажешь "компилятор, я знаю, что делаю, отстань", то да, замолчит

Alexey
25.01.2017
13:42:30
т.е. добавляю проверку и компилятор замолчит?
это не просто проверка. вместе с тем, что в языке не принято бросать исклоючения это заставит тебя изменить сигнатуру функции чтобы показать, что может быть еще и негативный сценарий

это в свою очередь заставит вызывающую сторону задать бизнес вопрос - что будет если мы не найдем нужные данные.

Google
Alexey
25.01.2017
13:43:31
даже в такой банальной ситуации типы помогут тебе найти те граничные случаи которые не нашел аналитик.

Nikolay
25.01.2017
13:43:41
снимая эту нагрузку с программиста, за счет чего мы получаем выгоду?
получаем меньше runtime ошибок -> меньше возможностей выкатить такой баг в продакшн -> меньше времени на поиск и исправление потенциальной ошибки

а в продакшене всегда баги править дороже, чем на этапе разработки

Alexey
25.01.2017
13:44:14
конечно это имеет смысле в проекте который живет хоть сколько-то продолжительный срок и не перекладывает байтики гзипуя по дороге и проверяя токен.

Andrey
25.01.2017
13:44:14
https://movio.co/blog/migrate-Scala-to-Go/
> Scala monolith compiles slow > Go microservices compile fast ok

Mikhail
25.01.2017
13:44:18
Димасик конечно знатный трололо, но аргументы скала сообщества на 99% обычно ничем не лучше аргументов Mariano & Isaac, это конечно пичаль бида. И проблема даже не в самих аргументах, а в том что их пытаются приплести везде и всюду, не важно какова суть дискуссии.

Mikhail
25.01.2017
13:44:46
Чтобы уменьшить кол-во рантайм ошибок - в первую очередь надо научиться писать мало кода для решения больших задач

Vadim
25.01.2017
13:45:15
Есть более интересные примеры для этого. Например узлы дерева, или различные геометрические объекты, у которых св-ва совершненно разные

Vyatcheslav
25.01.2017
13:45:41
Чтобы уменьшить кол-во рантайм ошибок - в первую очередь надо научиться писать мало кода для решения больших задач
Или лучше так: чтобы уменьшить кол-во рантайм ошибок - в первую очередь надо научиться писать код без ошибок. Выпьем за это! :)

Alexey
25.01.2017
13:46:19
KrivdaTheTriewe
25.01.2017
13:46:35
есть хороший пример, twitter finch

Alexey
25.01.2017
13:46:54
Чтобы уменьшить кол-во рантайм ошибок - в первую очередь надо научиться писать мало кода для решения больших задач
кстати, скала подходит для этого. кода и правда занчительно меньше чем на го :)

Vyatcheslav
25.01.2017
13:49:00
Ребят, о чем вы? Типы - это реально круто. Смотришь на сигнатуру метода - и сразу понятно, что может произойти, а что нет, без каких-либо сюрпризов. Это значительно снижает нагрузку с мозга. И чем сильнее система типов - тем более строгим можно сделать интерфейс и получить еще меньше сюрпризов.

Google
Митко Соловец?
25.01.2017
13:49:25
аргументы нормальные

по крайней мере я выгоду увидел

Vyatcheslav
25.01.2017
13:50:24
Другое дело, что смотришь на какие-нибудь фримонады и ничерта не врубаешься. Хотя идея в них элементарная

Daniel
25.01.2017
13:51:19
tg://join?invite=Ai4h2D9SWO_a-Kur_k51Rg
Sorry, this group does not seem to exist.

Митко Соловец?
25.01.2017
13:51:56
Alexey
25.01.2017
13:52:01
аргументы нормальные
тут нужно понимать, что мы же не сможем в чатике про свой опердень рассказать чтобы показать как на нем это нас спасает. поэтому только Map.get :)

Oleg
25.01.2017
13:52:31
Sorry, this group does not seem to exist.
ну расшарь сам завтипы

Admin
ERROR: S client not available

Vladimir
25.01.2017
13:52:48
вопрос на засыпку, имеет смысл тащить ch.qos.logback.classic.AsyncAppender если сейчас все на синхронном сделано и логов немного?

KrivdaTheTriewe
25.01.2017
13:52:48
или просто Map("fff") match { }

Oleksandr
25.01.2017
13:53:52
другое дело, что обычно не в меру, либо вообще без этого?
почему же, есть кодстайл и ревью "этот финт можно, этот нельзя"

Alexey
25.01.2017
13:55:21
почитал статью. вы правда хотите писать такой код? https://github.com/marianogappa/sql/blob/master/main.go

Митко Соловец?
25.01.2017
13:55:57
почему же, есть кодстайл и ревью "этот финт можно, этот нельзя"
это все правильно, а если в разных проектах стайл отличается? я не говорю даже про разные компании

Aleksey
25.01.2017
13:56:53
Ничего себе вы нафлудили. Надо будет написать статейку.

Oleksandr
25.01.2017
13:57:31
это все правильно, а если в разных проектах стайл отличается? я не говорю даже про разные компании
вряд ли их нужно намертво склеивать делается апи, и от него пляшут все перевыподверты должны быть "под капотом"

Alexey
25.01.2017
13:57:38
Ничего себе вы нафлудили. Надо будет написать статейку.
я уже полгода коплю примеры для рассказа о том где как и почему скала помогает :)

Митко Соловец?
25.01.2017
13:57:49
Олександру большой респект, просто пришел и пояснил за скалу

Google
Nikolay
25.01.2017
13:58:47
мне кажется он это последний месяц в jvm чатике делает на почти постоянной основе

Митко Соловец?
25.01.2017
13:59:16
Nikolay
25.01.2017
13:59:33
отнюдь

folex
25.01.2017
13:59:56
Господа,а у вас в последней идее осталась возможность запускать один тест/одну спеку? У меня пропала кнопка Run на спеках, осталась только на директории со спеками.

Oleksandr
25.01.2017
14:00:10
Митко Соловец?
25.01.2017
14:00:44
надо же что-то делать, пока проект компилится ?
какая нужна тачка для скалы, чтобы не сильно отвлекаться на отдых?

Aleksey
25.01.2017
14:01:52
какая нужна тачка для скалы, чтобы не сильно отвлекаться на отдых?
У меня макбук про 2013 начала года. Вообще не жду компиляцию обычно. Но проектики маленькие по джава-меркам. Не больше 50к строк.

Oleksandr
25.01.2017
14:02:18
какая нужна тачка для скалы, чтобы не сильно отвлекаться на отдых?
да любая из современных, на каком-то маке сижу так-то сбт умеет инкрементально компилить (диффами), и обычно это занимает секунды вот с нуля -- проще пойти прогуляться

folex
25.01.2017
14:02:25
Макбук про 13" 2013 года, жду 2-3 минуты, ноутом пользоваться невозможно во время компиляции

Митко Соловец?
25.01.2017
14:02:58
ну норм

Alexey
25.01.2017
14:02:59
вы так говорите, как будто по 100 строк за 5 минут пишете. меня вообще не парит скорость компиляции. все равно думаешь дольше.

мак про 2013

Aleksey
25.01.2017
14:03:31
мак про 2013
Мак про? Или макбук про?

folex
25.01.2017
14:03:31
во время написания кода время компиляции не особо парит, а вот когда надо много раз скомпилить код, чтобы что-то попробовать то так, то эдак, вот тогда парит

Alexey
25.01.2017
14:03:34
и вообще большую часть читаешь код, а не пишешь

folex
25.01.2017
14:04:03
ну например да, но не только

Alexey
25.01.2017
14:04:05
Мак про? Или макбук про?
откуда в сибири мак про? ))) макбук про 2013. 8гб

Aleksey
25.01.2017
14:04:24
У всех блин мак бук про 2013. Удивительно.

Митко Соловец?
25.01.2017
14:04:27
Алексей, ты кстати прикрутил ребель к королеву?

Страница 443 из 1499