|
Как защитить код
|
|||
---|---|---|---|
#18+
maytonfixxerпропущено... В скале так точно. Но даже в джаве последние три года встречаю, в основном, реактивные стримы и Completable Future. Если посмотреть более шИроко. То ФП давно уже вокруг вас. ФП - это не только программирование. Это декларативное описание грамматик и смыслов. Формы Бекуса Науэра BNF/EBNF. Xml-schema/DTD. Просто спеки для всяких DSL. И попытки втащить в языки программирования иммутабельность структур данных - это всё части ФП. Именно, так никто ж и не спорит. А что нового было изобретено за последние n лет в ООП? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 13:13 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
забыл никТебе 10 лет назад показать код на стримах - ты бы ворочал носом и говорил какое говно, у меня есть циклытак и сейчас говорят ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 13:29 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
chpashaзабыл никТебе 10 лет назад показать код на стримах - ты бы ворочал носом и говорил какое говно, у меня есть циклытак и сейчас говорят ;) сейчас на циклах имхо и есть говно. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 13:44 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
andreykaTсейчас на циклах имхо и есть говно. :) этой фразой ты только что удвоил кол-во страниц в этом топике на 2 ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 13:48 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
забыл никandreykaTтак вот он я красавец. у меня есть юзкейс.ран(транзактор), а есть скажем юзкейс.ватеварелз(неТранзактар) и я такой модный программист - просто удаляю эту строку и подменяю другой. оно дальше допустим, работает но уже без транзакции. Не поянл, какую строку удаляешь и почему оно перестанет работать? Любая операция с базой имеет тип ConnectionIO - единственный способ вытянуть оттуда реальное значение - это предоставить транзактор. Если ты не предоставишь - у тебя будет просто объект типа ConnectionIO и ты его не сможешь никак заюзать. я к тому что ты можешь что то переписать или переопределить чтоб это стало опциональным требованием. а так имхо это вообще шаг назад. ты и в джаве мог написать метод типа файндолл или что угодно еще где обязательно надо передать объект типа какой нить транзакшн менеджер. и типа опа видишь теперь точно не забудешь. ога. и вот чтоб от этого бойлерплейта уйти придумали декларативный (декоративный? :)) способ с аннотацией. а то что сверху имхо это какой-то прошлый век. добро пожаловать в средневековье. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 13:49 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
chpashaзабыл никТебе 10 лет назад показать код на стримах - ты бы ворочал носом и говорил какое говно, у меня есть циклытак и сейчас говорят ;) Так и html предлагают из резалтсета формировать ^) Я кстати java-стримы тоже не люблю, как и опшионал там особо не юзаю. Потому что они перетянули лишь видимую часть, а не глубинную идею. Красота стримов и опшионалов раскрываются, когда у тебя есть монады и for-comprehension, спроси у андрейки ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 14:23 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
andreykaTя к тому что ты можешь что то переписать или переопределить чтоб это стало опциональным требованием. Ну можешь да, software меняется, это естественно, так в чем собственно вопрос? andreykaTа так имхо это вообще шаг назад. ты и в джаве мог написать метод типа файндолл или что угодно еще где обязательно надо передать объект типа какой нить транзакшн менеджер. и типа опа видишь теперь точно не забудешь. ога. Так и надо делать. А потом появляется куча джунов, которые ни черта не понимают как это работает и ответы на стекфоверфлоу становятся похожи на - ну попробуй добавить аннотацию @Whatever. супер. Правда тут четко надо различать bl-compexity и infrastrcture-complexity. Управление транзакциями - это часть бизнес-логики, хочешь ты этого или нет. Делая ее неявной ты ступаешь на очень скользкую дорожку. andreykaTи вот чтоб от этого бойлерплейта уйти придумали декларативный (декоративный? :)) способ с аннотацией. а то что сверху имхо это какой-то прошлый век. добро пожаловать в средневековье. Все ошибаются, раньше я тоже думал что это круто. Любая runtime-аннотация это нетипизированная хрень, которую ни продеюажишь ни пофиксишь, зачем тебе java тогда вообще? Не для сильной типизации ли? А от бойлерплейта уйти можно многими способами, ты сам прекрасно знаешь насколько мощные implicits в scala. Вот тебе кусок логики, полностью обернутый в IO, но ты об этом врядли догадаешься просто посмотрев на код. (Тем не менее код абсолютно без сайд-эффектов) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 14:51 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
забыл никchpashaпропущено... так и сейчас говорят ;) Так и html предлагают из резалтсета формировать ^) Я кстати java-стримы тоже не люблю, как и опшионал там особо не юзаю. Потому что они перетянули лишь видимую часть, а не глубинную идею. Красота стримов и опшионалов раскрываются, когда у тебя есть монады и for-comprehension, спроси у андрейки Стримы это вообще - последнее дело. Вот когда в айти входит очередной джун-вайтишник - то на собесе оказывается что он стримы знает а на циклах блджад ничего написать не может. Более того не понял идею зачем они вообще нужны. И кто педалит вообще идею о том что библитечная фича лучше языковой? Убил-бы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 14:57 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
maytonСтримы это вообще - последнее дело. Вот когда в айти входит очередной джун-вайтишник - то на собесе оказывается что он стримы знает а на циклах блджад ничего написать не может. Более того не понял идею зачем они вообще нужны. Ну и зачем они нужны? Хотя слабо представляю как можно "знать" стримы и не знать циклы. Циклы - такой же анахронизм как и удаление памяти в C++ приложениях. И да, большинство джава джунов сильно удивятся вопросу про освобождение памяти. Что такое цикл? Это последовательность 1) берем размер коллекции // это будет повторяться во всех циклах в любом приложении 2) создаем счетчик от 0 до размера // это будет повторяться во всех циклах в любом приложении 3) берем элемент по текущему инджексу // это будет повторяться во всех циклах в любом приложении 4) исполняем кастомную логику 5) инкрементируем текущий индекс и проверяем закончили ли // это будет повторяться во всех циклах в любом приложении 6) если не закончили идем на пункт 1// это будет повторяться во всех циклах в любом приложении А что мы делаем если // это будет повторяться во всех циклах в любом приложении ?? Правильно - наворачиваем абстракцию, и передаем в нее параметром кастомную логику - someAbstraction(doWithElement) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 15:19 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
mayton И кто педалит вообще идею о том что библитечная фича лучше языковой? Убил-бы. Зависит от. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 15:20 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
забыл никНу и зачем они нужны? Хотя слабо представляю как можно "знать" стримы и не знать циклы. Циклы - такой же анахронизм как и удаление памяти в C++ приложениях. И да, большинство джава джунов сильно удивятся вопросу про освобождение памяти. Основная идея описана здесь https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html Обратите также внимание на свойства non-interfering и stateless. От себя скажу что стримы в Java может быть и являются чем-то новым для Java-кодеров. Но для ФП это старый боян которому уже более полу-века. Отголоски ленивой обработки списков а особо важно что иммутабельных - это основа программирования вообще любой ФП парадигмы На ней строятся и циклы и логика и структуры данных. В Java streams введены в угоду какой-то части пользователей которые видели Scala и задались вопросом - а почему собсно у нас нет такой языковой возможности? Языковую им не дали. Но дали библиотеку. И дали синтаксис анонимных функций для удобства. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 15:27 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
maytonзабыл никНу и зачем они нужны? Хотя слабо представляю как можно "знать" стримы и не знать циклы. Циклы - такой же анахронизм как и удаление памяти в C++ приложениях. И да, большинство джава джунов сильно удивятся вопросу про освобождение памяти. Основная идея описана здесь https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html Обратите также внимание на свойства non-interfering и stateless. От себя скажу что стримы в Java может быть и являются чем-то новым для Java-кодеров. Но для ФП это старый боян которому уже более полу-века. Отголоски ленивой обработки списков а особо важно что иммутабельных - это основа программирования вообще любой ФП парадигмы На ней строятся и циклы и логика и структуры данных. В Java streams введены в угоду какой-то части пользователей которые видели Scala и задались вопросом - а почему собсно у нас нет такой языковой возможности? Языковую им не дали. Но дали библиотеку. И дали синтаксис анонимных функций для удобства. АА, ты про это? Ну да, я ж и говорю что в java стримы - это ни то ни се.. так, верхи идеи. В scala они и stateless и inferrable, это подразумевается само собой.. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 15:31 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
Перепутал inferrable и non-interfering ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 15:37 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
забыл никchpashaпропущено... так и сейчас говорят ;) Так и html предлагают из резалтсета формировать ^) Я кстати java-стримы тоже не люблю, как и опшионал там особо не юзаю. Потому что они перетянули лишь видимую часть, а не глубинную идею. Красота стримов и опшионалов раскрываются, когда у тебя есть монады и for-comprehension, спроси у андрейки еще надо отметить что в скале фор это не тот фор что в жаве. вернее, можно использовать как ТОТ но используют для другого. т.е. в скале фор используется прям повсеместно )) с оговоркой не для итераций и каких то сайдеффектных действий а с целью уплощения вложенностей при работе с монадами. да. прям ненарадуюсь. но я вот не уверен что это прям ФП, мне почему то кажется что фп это всего лишь некоторый ряд ограничений. а повсеместное втыкание монад и прочего - это стиль и подход. ФП - парадайм. мы не можем переопределять мы не можем писать сайдэффекты мы всегда возвращаем значение операции. вроде всё. а как ты это сделаешь - ну дело твое. просто классическая джава не очень к этому склоняет. а так скала мне прям очень нравится но я чем больше ею пользуюсь тем больше понимаю что в ней СТОЛЬКО всего что изучать не переизучать. типа вот была джава. сидели программисты и думали вон она скучная хотим такую же но 100500 свистелок-перделок, чтоб не разобраться - и в комплекте. а.. окей - на те скалу ))) развлекайся бро. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:34 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
andreykaTсидели программисты и думали вон она скучная хотим такую же но 100500 свистелок-перделок, чтоб не разобраться - и в комплекте. а.. окей - на те скалу ))) развлекайся бро напоминает анекдот про студента перед сдачей диплома и фею ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:37 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
забыл никandreykaTя к тому что ты можешь что то переписать или переопределить чтоб это стало опциональным требованием. Ну можешь да, software меняется, это естественно, так в чем собственно вопрос? andreykaTа так имхо это вообще шаг назад. ты и в джаве мог написать метод типа файндолл или что угодно еще где обязательно надо передать объект типа какой нить транзакшн менеджер. и типа опа видишь теперь точно не забудешь. ога. Так и надо делать. А потом появляется куча джунов, которые ни черта не понимают как это работает и ответы на стекфоверфлоу становятся похожи на - ну попробуй добавить аннотацию @Whatever. супер. Правда тут четко надо различать bl-compexity и infrastrcture-complexity. Управление транзакциями - это часть бизнес-логики, хочешь ты этого или нет. Делая ее неявной ты ступаешь на очень скользкую дорожку. andreykaTи вот чтоб от этого бойлерплейта уйти придумали декларативный (декоративный? :)) способ с аннотацией. а то что сверху имхо это какой-то прошлый век. добро пожаловать в средневековье. Все ошибаются, раньше я тоже думал что это круто. Любая runtime-аннотация это нетипизированная хрень, которую ни продеюажишь ни пофиксишь, зачем тебе java тогда вообще? Не для сильной типизации ли? А от бойлерплейта уйти можно многими способами, ты сам прекрасно знаешь насколько мощные implicits в scala. Вот тебе кусок логики, полностью обернутый в IO, но ты об этом врядли догадаешься просто посмотрев на код. (Тем не менее код абсолютно без сайд-эффектов) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
у имплиситов другая беда (опять же на мой взгляд я не профи-скала и думаю что юзаю ее на 10% от возможностей), у них беда в том что оно где то как то может навеситься-переопределиться а ты и знать не будешь что за чухня происходит и почему. хорошо если ИДЕ подсветит. а если нет ну будешь клики нарезать. особенно если код незнакомый. насчет декораторов (мне кажется, это более верное название, практикуемое в ноде и несте) помню был движ несколько лет назад в сторону аспектно-ориентированного программирования. типа вот СОЛИД вот буква О вот АОП - это ж прям вот то что надо давайте расширять функционал без изменения базового кода. давайте вешать на него аспекты и аспекты на аспекты а потом еще аспекты. и опа. чо за фигня чо за макароны я вашу душу почему это тут происходит. )) вроде потом отъехали. и смотрю в новых фреймворках успешно идею похерили. а в старых рекомендуют юзать только для мониторинга и логирования. угу. так и с имплиситами. пока это забавно. а дальше - time will say ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:39 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
chpashaandreykaTсидели программисты и думали вон она скучная хотим такую же но 100500 свистелок-перделок, чтоб не разобраться - и в комплекте. а.. окей - на те скалу ))) развлекайся бро напоминает анекдот про студента перед сдачей диплома и фею программист жава: господи, эх поеб-ться бы! господь: на те скалу, еб-сь, сын мой. ты про это? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:41 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
andreykaT у имплиситов другая беда (опять же на мой взгляд я не профи-скала и думаю что юзаю ее на 10% от возможностей), у них беда в том что оно где то как то может навеситься-переопределиться а ты и знать не будешь что за чухня происходит и почему. хорошо если ИДЕ подсветит. а если нет ну будешь клики нарезать. особенно если код незнакомый. так и с имплиситами. пока это забавно. а дальше - time will say В Scala3 попытаются решить эту проблему. На самом деле все дело в том что у имплиситов 4 варианта использования - и только один из них ведет к проблемам что ты описываешь. Они введут другое слово для этого, так будет понятнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 16:56 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
да? а как тебе переименование в импортах? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:04 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
andreykaTда? а как тебе переименование в импортах? :) Помню был проект где был class Document аж в трех разных пакетах. Типа xml.Document, и еще два штуки подобных. Ох и треш и содомия была когда все три надо было использовать в одном сорце. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:07 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
имплисит классы тоже тот еще кладезь. конечно не такой как переопределение или проброс значений, но там хоть ИДЕ справляется. фальшивые методы палочкой подрисовывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:11 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
andreykaTпрограммист жава: господи, эх поеб-ться бы! господь: на те скалу, еб-сь, сын мой. ты про это? ага, в ночь перед релизом ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:19 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
andreykaTда? а как тебе переименование в импортах? :) Юзал один раз, но реально надо было - ситуация 1-1 как mayton описывает. Никто ж не заставляет тебя перемиеновывать, а раз в году сгодится ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:21 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
Я не мог переименовать. Сторонние библиотеки. Со сложной лицензией. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 17:33 |
|
Как защитить код
|
|||
---|---|---|---|
#18+
maytonЯ не мог переименовать. Сторонние библиотеки. Со сложной лицензией. в скале можно сделать так Код: java 1. 2. 3. 4. 5. 6.
Мы про это ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 18:09 |
|
|
start [/forum/topic.php?fid=59&msg=39870695&tid=2121090]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 156ms |
0 / 0 |