sab123: (Default)
[personal profile] sab123
Страдаю с программой на Рже с помошью двух эяев (один сам программу ковыряет, у другого я спрашиваю вопросы для ручных изменений). Я должен сказать, что их правила констанстности - это просто п.здец, без эяя за ними вручную усмотреть невозможно - постоянно какая-то херня ломается. Эяй - и тот иногда попадает только с третьей-четвертой-пятой попытки, и при этом иногда пытается нахерачить какие-то совсем ужасные изменения, от которых его приходится отговаривать вручную.

Более того, у них нельзя иметь несколько ссылок типа shared_ptr (Rc или Arc) на один и тот же объект, и при этом вызывать на нем неконстантные методы с внутренней синхронизацией. Нет, надо чтобы или была ровно одна ссылка, или мутексом синхронизировать вообще доступ к объекту. Вкладывание мутекса в Arc при этом портит свойства автоматического сравнения и их надо вручную заворачивать.

Ну, то есть, на самом деле по-нормальному делать можно, но только в режиме unsafe. Нет, ну я знаю, что на нем в безопасном режиме нельзя даже классические списки делать. Но чтоб запрещать доступ с нескольких ссылок - это вообще-вообще.

Между прочим, превращение Option<i32> в Option<i64> делается хитрым паттерном x.map(|v| v as i64), простого конструктора для этого недостаточно.

Невероятно дебильный, многословный, и уродливый язык. Хотя до джавной кривизны, может, и не совсем дотягивает. А может и дотягивает.

P.S. Я вот тут еще подумал, и на самом деле их критерий для Arc - не только утомительный, но и неправильный. Правильным критерием должно быть что во время доступа к объекту по ссылке эта ссылка не исчезнет.

Date: 2026-03-21 12:27 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Любой иностранный язык уродлив. Кривизну родного языка мы просто не замечаем.

Ограничения на количество ссылок следуют из принятой идеологии (move semantics и способа управления памятью). Местами громоздко, зато предотвращает появление целого класса багов, которые легко сделать и трудно найти.

Например, у меня в сиплюсплюсном коде был перевод uint64 в байты через union с комментарием, что это неявно зависит от endianess и по-хорошему надо бы переделать. При переводе на ржавчину Клод расписал явно перевод по байтам, потому что иначе никак. Строк кода стало больше, потенциальный баг исчез. Причём такой баг, который сложно найти (у меня, например, нет под рукой big endian процессора).

Date: 2026-03-21 06:35 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Как откровение воспринимается, когда в первый раз. Если взять два похожих языка, например, Java и C#, и сначала изучать Java, то будет откровение, а потом C# — нуичё, ничего интересного, те же яйца вид сбоку. А если сначала C#, то наоборот.

Мне вот Перл был неинтересен, потому что встретился поздно. Ну язык и язык, регулярные выражения были знакомы по grep-у, интерпретатор из Бейсика, работа с плоскими файлами из связки bash/awk, синтаксис кривоват по сравнению со взрослыми языками. Особенно после написания самодельного корявого языка на lex+yacc.

Date: 2026-03-21 06:38 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Правильный критерий - время работы программы целиком. А то можно наоптимизировать скрепку. В моих тестах по этому критерию ржавчина уже догнала C++, так что моё почтение.

Date: 2026-03-22 01:56 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Мне всегда казалось, что слухи про то, что на Фортране получается оптимизировать лучше, чем на C/C++, мягко говоря, преувеличены. То есть враньё. Когда-то давно фортрановская математическая библиотека была лучше и компиляторы C/C++ не умели векторизацию делать, но это ж когда было.

А теперь появилась возможность легко проверить. Сейчас попрошу Клода перевести программу, ранее использованную для сравнения C++ и ржавчины, на Fortran и сравню. О результатах доложу.

Date: 2026-03-22 01:54 am (UTC)
cali4nickation: (Default)
From: [personal profile] cali4nickation
Претензии Java предьявлять спустя 30 лет странно. Сравнивать надо с языками того же поколения. Типа Scala или golang.

March 2026

S M T W T F S
12345 6 7
8910 11121314
151617 1819 20 21
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 22nd, 2026 02:24 pm
Powered by Dreamwidth Studios