С высоты

Jun 25, 2019 18:42


Про Clojure и что я все сильнее про него ощущаю.

В каком-то смысле это продолжение моих размышлений, куда податься после Software Disenchantment, когда я понял, что надо что-то менять, но не понял, на что именно.

Да, Clojure это прекрасный, замечательный высокоуровневый/прикладной язык, лучший на свете. Прикладной в том смысле, что на нем хорошо ( Read more... )

Leave a comment

Comments 144

binf June 25 2019, 16:06:18 UTC
Rust- гавно. Язык сверхдебильный. тонны абсолютно идиотского бойлерплейта. когнитивная нагрузка неоправданно высокая. Интрументы, ide, тулинг, либы - для Rust-а нет ничего нормального, сплошь убожество. Для плюсов это всё есть - ну нахер нужен этот ваш Rust спрашивается? Единственный бонус у него по сравнению с плюсами был - быстрая конпиляция. Но сейчас есть шланг, он тоже быстрый! Естественно на нём ничего не написано, кроме бессмысленной ерунды - Rust принято любить из далека и исключительно для понта.

Reply

binf June 25 2019, 16:45:01 UTC
А конкретики добавишь? От чего у тебя так бомбило? Мб примеров приведи? Где лишный бойлпрейт? Мб этот как раз полезный бойлерплейт, который помогает видеть кто где и как использует память и что сколько живет относительно другого? Какие-либы тебя так сильно разочаровали? Actix?

Reply

binf June 25 2019, 17:09:29 UTC
== От чего у тебя так бомбило?

После прочтения The Rust Programming Language я понял, что Rust состоит на 90% из неудобных в использовании костылей (которые почему-то называют zero-cost abstractions, забывая про ментальный cost) для преодоления искусственных ограничений по надуманной в большинстве случаев проблеме memory safety и data race safety.

== Мб примеров приведи?

https://byrd.im/go-vs-rust/

You know, tbh impl<’a> Foo for &’a [u8] is nuff said already. Each time I look at such a crazy piece of “code”, all I want is to find great man Rob Pike and shake his manly hand! Honestly, thanks for not putting this sort of unmaintainable rubbish into the language.

Reply

permea_kra June 25 2019, 17:47:08 UTC
В общем, не писал, но осуждаешь. Ок.

>Go and

Если человек добровольно пишет на Го - что-то с этим человеком явно не так. Не надо его слушать.

Reply


deep_econom June 25 2019, 16:26:19 UTC
***Писать идиоматичный ход.

Писать идиоматичный Код.

Reply


ext_3289791 June 25 2019, 17:00:26 UTC
Мы на Rust как раз самый что ни на есть кровавый энтерпрайз пишем. 😅 Ну, там где у тебя была бы Clojure.

Reply

tonsky June 25 2019, 22:46:45 UTC
и как ощущения? какие мысли? repl с eval-ом есть? или приходится рестартовать после каждого изменения?

Reply

ext_3289791 June 26 2019, 00:40:30 UTC
Да какой там repl с eval-ом... Рестарт с перекомпиляцией (у нас это пара-тройка минут), пришлось ради такого дела даже data-driven тест фреймворк писать, чтоб хоть тесты можно было менять без перекомпиляции. И дебаггер еле работает.

В целом-то нравится, но удовольствие не для всех, нужно прям очень статическую типизацию любить.

Reply

theiced June 26 2019, 13:30:36 UTC
хорошо что не на го - а то дегенератов пишущих прикладуху на го хватает.

Reply


binf June 25 2019, 17:19:56 UTC
== Я не говорю что это лучше читается или еще что-то

это на много лучше читается

== Даже Java подходит с очень большой натяжкой.

Джава нормально подходит. На 10% в среднем деградация процессора и 15-20 памяти на синтетическом helloworld-json http сервере vs. c++, и то если не заморачиваться тюнингом gc и т.п.

Соответственно

== То есть ее конечно можно разогнать, но зачем?

за тем, что на джава разработка в разы дешевле чем на С++

== Что на нем писать-то? Непонятно опять.

Очень даже понятно. Напишите нативный десктопный гуй. Весьма актуальная проблема - десктопный гуй на java/C#/js дико лагает из-за микропауз gc. Вот и попробуйте написать его на rust-е - сразу поймёте, какое rust говно

Reply

binf June 25 2019, 18:51:09 UTC
Там проблема не в GC, а отсутствии AoT и плохой применимости JIT для клиентских приложений.

На Qt/Widgets с Python/C++ UI прекраснопишется.

Reply

binf June 25 2019, 19:39:53 UTC
== Там проблема не в GC

попробуйте написать гуй-ный эвент луп с рендрингом на питоне, будете неприятно удивлены

== а отсутствии AoT и плохой применимости JIT для клиентских приложений.

в С# насколько я знаю весьма продвинутая AoT компиляция. при этом WPF/UWP приложения тормозят ни чуть не меньше java аналогов

== На Qt/Widgets с Python/C++ UI прекраснопишется.

Без питона ещё лучше - зачем этот костыль и гемор с развёртыванием? Я собственно и не встречал qt на питоне в проде, имхо какой-то миф

Reply

wizzard0 June 30 2019, 10:11:49 UTC
> в С# насколько я знаю весьма продвинутая AoT компиляция
при всей моей любви к C# и дотнету, WPF/UWP/XAML имеет столько слоев оверхеда, что никаким джитом или AOT это не победить :/ гораздо хуже веба, например.

куча 3D игрушек написано на Unity3D, в котором Mono, которое намного хуже .net/.net core, и отлично справляется с тем чтобы молотить сотни мегабайт game state вписываясь в 16ms (60 fps), а wpf это победа GoF над здравым смыслом, увы.

Reply


thedeemon June 25 2019, 17:20:12 UTC
Некоторые языки (Rust, Haskell, D с компилятором LDC) стараются превращать такой высокоуровневый код с ленивыми последовательностями, мапами, фильтрами и пр. в простые циклы без лишних аллокаций и перезаворачиваний. Нередко даже получается, но не всегда еще. Тут тема богатая, если есть интерес, можно в нее надолго и глубоко погрузиться.

Reply

tonsky June 25 2019, 23:05:24 UTC
вот тут есть засада, потому что получается что есть ситуации что иногда могут, а иногда не могут. И программист теряет контроль, и когда ему действительно важно чтобы получилось быстро, остается только идти на поклон компилятору, «авось смилостивится»

Reply

thedeemon June 25 2019, 23:33:00 UTC
Когда важно - можно проверить, получилось у компилятора или нет, если нет - что-то написать иначе, более низкоуровнево, или применить какие-то особые средства, какие-то прагмы для хаскеля или там макросы для раста. Т.е. контроль не теряется насовсем, в итоге-то все достижимо, просто порой бОльшими усилиями. Не идеально, но лучше, чем пессимистично знать, что высокоуровневый код всегда медленный.

Reply

theiced June 26 2019, 13:32:11 UTC
ну и критические места (коих всегда немного) много нойписать на жаве или, не к ночи, жини втащить.

Reply


Leave a comment

Up