Size: a a a

Programming Offtop

2021 March 24

IP

Iaroslav Postovalov in Programming Offtop
Vladimir Petrakovich
А что там за лимит был? Я как раз не помню там лимитов в стиле "65к методов на приложение".
Путаю значит с чем-то. Но там точно была беда с флоатами, исключениями и стдлибой
источник

АХ

Алексей Худяков... in Programming Offtop
Раз уж тут обсуждают эрланг. А что можно почитать про все эрланговские supervisor trees & Co?
источник

VP

Vladimir Petrakovich in Programming Offtop
Iaroslav Postovalov
Путаю значит с чем-то. Но там точно была беда с флоатами, исключениями и стдлибой
Ну стдлиба - да, CLDC, ёпта
Флоаты, кажется, в ранних версиях не поддерживались, и народ угорал с арифметикой как мог
источник

AK

Anton Korotkikh in Programming Offtop
Dmitry Ponyatov
эрланговый стек позволяет в нём покрутить логику на минималках, потрогать некоторые вещи в микромасштабе, типа обновления компонентов нагорячую, с одновременным запуском нескольких версий компонента, супервизоры, кластеризацию — и уже с этим опытом выходить на mainstream технологии, и плеваться "и того нет из коробки, и этого"
многое из того, что ты написал, ксати, вообще решается оркестраторами типа кубера или номада. и то если сами компоненты в принципе готовы к масштабированию и их можно машстабировать
источник

AK

Anton Korotkikh in Programming Offtop
Алексей Худяков
Раз уж тут обсуждают эрланг. А что можно почитать про все эрланговские supervisor trees & Co?
с эрлангом в чятике, кстати странная история. его переодически обсуждают, но никто на нём не кодит, ни у кого ещё не былло тут прода на эрланге вроде бы
источник

VP

Vladimir Petrakovich in Programming Offtop
Anton Korotkikh
с эрлангом в чятике, кстати странная история. его переодически обсуждают, но никто на нём не кодит, ни у кого ещё не былло тут прода на эрланге вроде бы
Работал в конторе с эрлангом в проде
источник

AK

Anton Korotkikh in Programming Offtop
Vladimir Petrakovich
Работал в конторе с эрлангом в проде
сам обмазывался им, кодил?
источник

VP

Vladimir Petrakovich in Programming Offtop
Anton Korotkikh
сам обмазывался им, кодил?
Не, я-то и близко этого дела не касался
источник

DP

Dmitry Ponyatov in Programming Offtop
Anton Korotkikh
многое из того, что ты написал, ксати, вообще решается оркестраторами типа кубера или номада. и то если сами компоненты в принципе готовы к масштабированию и их можно машстабировать
докеры, куберы, ютуберы — а у меня виртуалка 32Мб ОЗУ ест, и отладчик и профайлер в комплекте 8)
я ж говорю "в целях обучения", для понимания внутренней идеи, ощущения природы микросервисов
источник

DP

Dmitry Ponyatov in Programming Offtop
Anton Korotkikh
с эрлангом в чятике, кстати странная история. его переодически обсуждают, но никто на нём не кодит, ни у кого ещё не былло тут прода на эрланге вроде бы
сам язык страшноватый, особенно для императивщиков — "объектов нет, дадже циклов нет! а!а!А!А! как?! как?!"
источник

AK

Anton Korotkikh in Programming Offtop
Dmitry Ponyatov
докеры, куберы, ютуберы — а у меня виртуалка 32Мб ОЗУ ест, и отладчик и профайлер в комплекте 8)
я ж говорю "в целях обучения", для понимания внутренней идеи, ощущения природы микросервисов
хм... я тогда удваиваю вопрос скобки
https://t.me/pofftop/318656

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

DP

Dmitry Ponyatov in Programming Offtop
да
источник

DP

Dmitry Ponyatov in Programming Offtop
микросервисность доведенная до абсурда, и в микромасштабе
источник

I

Ilmir in Programming Offtop
Apache DOG™
1) что мешает иметь и адт и юньоны как в скале? 2) Это не дает магической обратной совместимости точно точно можно сказать что просто дописав ещё один кейс в адт, даже сигнатуру не нужно будет менять. А ещё есть тайпклассы с имплиситами у которых дело ещё лучше эта штука работает, ты прост дописываешь ещё одну имплементацию и все работает зашибись и не ломается, ну или ТФ, где ты можешь довешивать дополнительные фички не трогая старые и ещё тонна приемов 3) добавление добра в виде A -> A | B либо ломает код, либо оно аппендонли. Если оно аппенд-онли, то это нарушение SRP (и этот чел пишет язык) и должно быть не f A|B -> C, а f A -> B и g B -> C. А если нет - оно так или иначе потребует переписывания кода во всех местах вызова, на которые конпель не ткнет, и тут все байки про "обратную совместимость" идут коту под хвост. 4) адт в этом плане рабтает лучше, ибо оно обозвано одним классом который можно не менять при добавлении новых членов. 5) То, ломает ли код замена типа на подтип заависит его вариантности, если код инвариантен, то такая замена его сломает (чел пишет язык но не знает таких элементарных вещей, чё он за язык может написать?) 6) наллабл на не наллабл и на оборот это нефига не совместимые изменения, вы делаете взаимо исключающие изменения в протоколе, и то что их можно лихо игнорировать - это не достоинство а недостаток. 7) И правильно - не совместимым изменения протокола должны отвечать бинарно несовместимые вещи. Вся соль наличия резалта чтобы сломать весь код который надеется получать что-то без ошибки. Потому что он станет получать что-то с ошибкой или другим свойством. И это нужно переписать РУКАМИ и задать поведение - тут магия не возможна, забивание болта на подобные изменения ещё ни к чему хорошему никогда не приводили.
1. Можно.
2. Нельзя. Как я в Either добавлю новый конструктор?
3. Расширение возвращаемого типа - несовместимое изменение. Ещё раз. Конкретно тебе я не запрещаю ломать код. Ломай сколько хочешь. Конкретно этот рант я написал после того, как ещё раз сломал бинарную совместимость и понял, что если бы в JVM были юнионы - мне этого делать не пришлось бы. Да, я пишу язык и от меня немного другие требования. В том числе к совместимости.
4. См 2. Как я добавлю новый конструктор в Either. Во, придумал аналогию. Смотри, у тебя есть класс String. Но от него наследоваться ты не можешь, ибо он стандартный и финальный. Функции-расширения как бы добавляют функциональность в класс, не наследуясь от него, точно так же, как и юнион типы позволяют расширить другой юнион.
5. Я рассматривал один (два) конкретный пример. Вариантность - это уже к дженерикам и там свои интересные заморочки. NB: И где этот мальчик увидел дженерики в примерах?
6. Прочти ещё раз и напиши нормально. Так дойдёт до того, что баг фиксы с добавлением обработки особого случая будут несовместимым изменением.
7. Неа, не понял ты написанного, а сразу писать комментарий.

Занятно. Я только что понял, что у меня появился хейтер. Причём такой, который хейтит не мои идеи, или взгляды, как @happy_bracket (Скобка - ты няша, несмотря на наши различия во взглядах на ХКТ), а именно меня. Что я, интересно, сделал? Не согласился с мнением, что опшн лучше нулябельности? Так вот и аргументы, почему он хуже. Но нет, надо не вести аргументированную дискуссию, как @sad_bracket, а накидывать "чё он за язык может написать". А также полностью перевирать оппонента "не совместимым изменения протокола" - я же объяснил, почему эти изменения протокола совместимые и не должны ломать пользовательский код. Подобные полемические приёмы и в до-интернетовскую не работали, а теперь, когда всё сохраняется и может быть скопировано - тем более.
источник

I

Igor in Programming Offtop
Ilmir
1. Можно.
2. Нельзя. Как я в Either добавлю новый конструктор?
3. Расширение возвращаемого типа - несовместимое изменение. Ещё раз. Конкретно тебе я не запрещаю ломать код. Ломай сколько хочешь. Конкретно этот рант я написал после того, как ещё раз сломал бинарную совместимость и понял, что если бы в JVM были юнионы - мне этого делать не пришлось бы. Да, я пишу язык и от меня немного другие требования. В том числе к совместимости.
4. См 2. Как я добавлю новый конструктор в Either. Во, придумал аналогию. Смотри, у тебя есть класс String. Но от него наследоваться ты не можешь, ибо он стандартный и финальный. Функции-расширения как бы добавляют функциональность в класс, не наследуясь от него, точно так же, как и юнион типы позволяют расширить другой юнион.
5. Я рассматривал один (два) конкретный пример. Вариантность - это уже к дженерикам и там свои интересные заморочки. NB: И где этот мальчик увидел дженерики в примерах?
6. Прочти ещё раз и напиши нормально. Так дойдёт до того, что баг фиксы с добавлением обработки особого случая будут несовместимым изменением.
7. Неа, не понял ты написанного, а сразу писать комментарий.

Занятно. Я только что понял, что у меня появился хейтер. Причём такой, который хейтит не мои идеи, или взгляды, как @happy_bracket (Скобка - ты няша, несмотря на наши различия во взглядах на ХКТ), а именно меня. Что я, интересно, сделал? Не согласился с мнением, что опшн лучше нулябельности? Так вот и аргументы, почему он хуже. Но нет, надо не вести аргументированную дискуссию, как @sad_bracket, а накидывать "чё он за язык может написать". А также полностью перевирать оппонента "не совместимым изменения протокола" - я же объяснил, почему эти изменения протокола совместимые и не должны ломать пользовательский код. Подобные полемические приёмы и в до-интернетовскую не работали, а теперь, когда всё сохраняется и может быть скопировано - тем более.
Кстати, а как на JVM можно выразить union типы? В баткоде
источник

(

( in Programming Offtop
Ilmir
1. Можно.
2. Нельзя. Как я в Either добавлю новый конструктор?
3. Расширение возвращаемого типа - несовместимое изменение. Ещё раз. Конкретно тебе я не запрещаю ломать код. Ломай сколько хочешь. Конкретно этот рант я написал после того, как ещё раз сломал бинарную совместимость и понял, что если бы в JVM были юнионы - мне этого делать не пришлось бы. Да, я пишу язык и от меня немного другие требования. В том числе к совместимости.
4. См 2. Как я добавлю новый конструктор в Either. Во, придумал аналогию. Смотри, у тебя есть класс String. Но от него наследоваться ты не можешь, ибо он стандартный и финальный. Функции-расширения как бы добавляют функциональность в класс, не наследуясь от него, точно так же, как и юнион типы позволяют расширить другой юнион.
5. Я рассматривал один (два) конкретный пример. Вариантность - это уже к дженерикам и там свои интересные заморочки. NB: И где этот мальчик увидел дженерики в примерах?
6. Прочти ещё раз и напиши нормально. Так дойдёт до того, что баг фиксы с добавлением обработки особого случая будут несовместимым изменением.
7. Неа, не понял ты написанного, а сразу писать комментарий.

Занятно. Я только что понял, что у меня появился хейтер. Причём такой, который хейтит не мои идеи, или взгляды, как @happy_bracket (Скобка - ты няша, несмотря на наши различия во взглядах на ХКТ), а именно меня. Что я, интересно, сделал? Не согласился с мнением, что опшн лучше нулябельности? Так вот и аргументы, почему он хуже. Но нет, надо не вести аргументированную дискуссию, как @sad_bracket, а накидывать "чё он за язык может написать". А также полностью перевирать оппонента "не совместимым изменения протокола" - я же объяснил, почему эти изменения протокола совместимые и не должны ломать пользовательский код. Подобные полемические приёмы и в до-интернетовскую не работали, а теперь, когда всё сохраняется и может быть скопировано - тем более.
> Как я добавлю новый конструктор в Either
пф, data Either a b = Left a | Right b | HehMda b
источник

АХ

Алексей Худяков... in Programming Offtop
> Вариантность - это уже к дженерикам

Потому что пока всё мономорфно, то фича простая и понятная. Как только появляется полиморфизм, то сразу становится не очень понятно. Как отличаются, например, типы ∀a. a и ∀a. Err | a?
источник

(

( in Programming Offtop
Ilmir
1. Можно.
2. Нельзя. Как я в Either добавлю новый конструктор?
3. Расширение возвращаемого типа - несовместимое изменение. Ещё раз. Конкретно тебе я не запрещаю ломать код. Ломай сколько хочешь. Конкретно этот рант я написал после того, как ещё раз сломал бинарную совместимость и понял, что если бы в JVM были юнионы - мне этого делать не пришлось бы. Да, я пишу язык и от меня немного другие требования. В том числе к совместимости.
4. См 2. Как я добавлю новый конструктор в Either. Во, придумал аналогию. Смотри, у тебя есть класс String. Но от него наследоваться ты не можешь, ибо он стандартный и финальный. Функции-расширения как бы добавляют функциональность в класс, не наследуясь от него, точно так же, как и юнион типы позволяют расширить другой юнион.
5. Я рассматривал один (два) конкретный пример. Вариантность - это уже к дженерикам и там свои интересные заморочки. NB: И где этот мальчик увидел дженерики в примерах?
6. Прочти ещё раз и напиши нормально. Так дойдёт до того, что баг фиксы с добавлением обработки особого случая будут несовместимым изменением.
7. Неа, не понял ты написанного, а сразу писать комментарий.

Занятно. Я только что понял, что у меня появился хейтер. Причём такой, который хейтит не мои идеи, или взгляды, как @happy_bracket (Скобка - ты няша, несмотря на наши различия во взглядах на ХКТ), а именно меня. Что я, интересно, сделал? Не согласился с мнением, что опшн лучше нулябельности? Так вот и аргументы, почему он хуже. Но нет, надо не вести аргументированную дискуссию, как @sad_bracket, а накидывать "чё он за язык может написать". А также полностью перевирать оппонента "не совместимым изменения протокола" - я же объяснил, почему эти изменения протокола совместимые и не должны ломать пользовательский код. Подобные полемические приёмы и в до-интернетовскую не работали, а теперь, когда всё сохраняется и может быть скопировано - тем более.
Вариантность так-то это не только про женерики. В случае функторов вариантность это способность композироваться вперёд и назад
источник

I

Ilmir in Programming Offtop
Igor
Кстати, а как на JVM можно выразить union типы? В баткоде
Через java.lang.Object и написать в аннотации (метадате) какие типы имеются в виду.
источник

(

( in Programming Offtop
(
Вариантность так-то это не только про женерики. В случае функторов вариантность это способность композироваться вперёд и назад
Хуево выразился, но смысл я думаю понятен
источник