А теперь самая "постыдная" часть этого поста.
Мне, неожиданно, понравилось! Без всяких скидок. Вот этот вот класс программ - fail fast в качестве обработок ошибок, IO, граф, корутинки - писать удобно и приятно, я думаю, я потратил меньше времени, чем бы сделав это на python, ну и результат "интереснее".
Думаю, если бы там появилась серьезная обработка ошибок, я бы что-то сделал на тему https://stackoverflow.com/questions/25025467/catching-panics-in-golang
#panic
Но, я еще раз повторю, разработчики на Go - это та еще школота, и скачав рандомный пакет из инторнетов, даже с кучей звезд, ты заранее не узнаешь, кто его написал - седой аксакал из Google(и там все будет заебись), или вот такое вот "taskfile".
Мне, неожиданно, понравилось! Без всяких скидок. Вот этот вот класс программ - fail fast в качестве обработок ошибок, IO, граф, корутинки - писать удобно и приятно, я думаю, я потратил меньше времени, чем бы сделав это на python, ну и результат "интереснее".
Думаю, если бы там появилась серьезная обработка ошибок, я бы что-то сделал на тему https://stackoverflow.com/questions/25025467/catching-panics-in-golang
#panic
Но, я еще раз повторю, разработчики на Go - это та еще школота, и скачав рандомный пакет из инторнетов, даже с кучей звезд, ты заранее не узнаешь, кто его написал - седой аксакал из Google(и там все будет заебись), или вот такое вот "taskfile".
Stack Overflow
Catching panics in Golang
With the following code, if no file argument is given, a panic is thrown for line 9 panic: runtime error: index out of range as expected.
How can I 'catch' this panic and handle it when directly w...
How can I 'catch' this panic and handle it when directly w...
👍9😁7🥰6
Довольно очевидная мысль, но я раньше ее нигде не слышал.
#panic
* Наличие в языке runtime с hidden control flow усложняет сопряжение этого языка с компонентами на других языках. Читай c++ dynamic exceptions, go/java gc, etc. Понятно, почему? Потому что это hidden control flow может протекать между границами модулей, с понятными косяками.
* Последние несколько лет были очень плодотворными на ниве новых языков. Ну, то есть, языки и раньше появлялись, но сейчас появляются языки, на которых делают серьезный прод.
Отсюда следует довольно простая мысль - что поляна кросс-языковых инфраструктурных библиотек будет попилена между языками, в которых нет такого runtime - zig, rust, C, #hare, и так далее. Просто потому, что их можно невозбранно звать друг из друга и передавать коллбеки, не боясь, что это взорвется к херам при раскрутке исключений или вызове финалайзеров в gc. И никого не будет волновать, что tls сделан на Rust, а парсер json - на zig, пока есть четкая граница между модулями.
А до кросс-вызовов они как-нибудь договорятся, на самом деле, уже договорились, через platform abi FFI.
С++, к сожалению, там не будет места. А могло бы и быть, если бы случились https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0709r0.pdf
Но старперы из комитета по С++ предпочитают ныть, что их труды посылают к херам, да (https://www.opennet.ru/opennews/art.shtml?num=58527), вместо того, чтобы осознать и начать решать проблему.
#panic
* Наличие в языке runtime с hidden control flow усложняет сопряжение этого языка с компонентами на других языках. Читай c++ dynamic exceptions, go/java gc, etc. Понятно, почему? Потому что это hidden control flow может протекать между границами модулей, с понятными косяками.
* Последние несколько лет были очень плодотворными на ниве новых языков. Ну, то есть, языки и раньше появлялись, но сейчас появляются языки, на которых делают серьезный прод.
Отсюда следует довольно простая мысль - что поляна кросс-языковых инфраструктурных библиотек будет попилена между языками, в которых нет такого runtime - zig, rust, C, #hare, и так далее. Просто потому, что их можно невозбранно звать друг из друга и передавать коллбеки, не боясь, что это взорвется к херам при раскрутке исключений или вызове финалайзеров в gc. И никого не будет волновать, что tls сделан на Rust, а парсер json - на zig, пока есть четкая граница между модулями.
А до кросс-вызовов они как-нибудь договорятся, на самом деле, уже договорились, через platform abi FFI.
С++, к сожалению, там не будет места. А могло бы и быть, если бы случились https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0709r0.pdf
Но старперы из комитета по С++ предпочитают ныть, что их труды посылают к херам, да (https://www.opennet.ru/opennews/art.shtml?num=58527), вместо того, чтобы осознать и начать решать проблему.
🔥18🤔6👍3😢3🤬2
Вышел go 1.22, https://www.opennet.ru/opennews/art.shtml?num=60564
И, тра-та-та, в нем появился
На первый взгляд, цельнотянуто с Python, разве что, StopIteration() там нет, по понятным причинам.
Чаты кипят. В основном, возмущением.
Осталось только добавить сахарок для поимки #panic, и будет вообще лучший язык.
И, тра-та-та, в нем появился
yield
, https://go.dev/wiki/RangefuncExperimentНа первый взгляд, цельнотянуто с Python, разве что, StopIteration() там нет, по понятным причинам.
Чаты кипят. В основном, возмущением.
Осталось только добавить сахарок для поимки #panic, и будет вообще лучший язык.
www.opennet.ru
Выпуск языка программирования Go 1.22
Представлен релиз языка программирования Go 1.22, который развивается компанией Google при участии сообщества как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания…
👍17😁13🔥8😱4❤🔥3❤2🐳2🥱1🥴1
commit -m "better"
Не то чтобы это было мне жизненно необходимо, но я испытываю от этого странное чувство удовлетворения.
Настолько испытываю, что запилил альтернативу
Прямо сейчас это не имеет особого продуктового смысла, служит мне для упрощения и ускорения цепочки bootstrap. Ну и, BTW, это лучший выполнитель статического графа задач, из всех, что я изготавливал (там честные проценты выполнения, например)!
Кстати, если вы - фанат
#panic
ya make
, но на go - https://github.com/pg83/gg/blob/main/ya.go, за новогодние праздники.Прямо сейчас это не имеет особого продуктового смысла, служит мне для упрощения и ускорения цепочки bootstrap. Ну и, BTW, это лучший выполнитель статического графа задач, из всех, что я изготавливал (там честные проценты выполнения, например)!
Кстати, если вы - фанат
if err != nil {return err}
, то почитайте этот файл, и оцените, как приятно может быть писать на go, с runtime exceptions!#panic
GitHub
gg/ya.go at main · pg83/gg
freestanding ya build tool. Contribute to pg83/gg development by creating an account on GitHub.
🔥14🤮12🤡6🍾5👍4💊4❤2🤪2🆒1
От https://t.iss.one/code500/9747
А все почему?
Потому что обрабатывать ошибки через
Я несколько раз писал, и продолжу писать, что ошибки в go, если они происходят в рамках одного модуля, надо обрабатывать через #panic (например, https://t.iss.one/itpgchannel/2622), а вот уже между модулями стоит слать типизированные ошибки через
(в целом, этот совет, кстати, верен вообще для всех языков - https://t.iss.one/itpgchannel/913)
А все почему?
Потому что обрабатывать ошибки через
if err ...
- муторно, неудобно, многословно, и потому - error prone!Я несколько раз писал, и продолжу писать, что ошибки в go, если они происходят в рамках одного модуля, надо обрабатывать через #panic (например, https://t.iss.one/itpgchannel/2622), а вот уже между модулями стоит слать типизированные ошибки через
return
.(в целом, этот совет, кстати, верен вообще для всех языков - https://t.iss.one/itpgchannel/913)
💊38🤡11❤8👍3🔥2🥱1