Re[10]: Почему программисты прошлого были умнее
От: vdimas Россия  
Дата: 13.01.26 17:14
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>чтобы была выполнена проверка if(current is IntegerList).


Еще и динамическая типизация...
Как и с размеченным объединением, вариант с динамической типизацией ужасен.
Это ведь тоже две серьёзные инженерные ошибки, стоившие индустрии овердохера миллиардов...

И оно в любом случае не спасет, если объект был удалён, а ссылка на него еще есть — я ж сразу обращал внимание, что проблема валидной ссылки намного шире, и не ограничивается только null.

Требуются совершенно другие техники. А полноценный GC на тот момент тупо не взлетел бы, бо ему требуется метаинформация над полями, это ж не Лисп с его парой {CAR, CDR}.
Да и сама потребность в GC резко сужает область применения любого языка.

Еще можно как в Rust, но тогда язык был бы непригоден для массового использования в те годы, бо требовался язык, на котором могли бы сразу писать большое кол-во инженеров без программистского образования, бо его тогда ни у кого не было, и даже без программистского опыта, бо его тоже тогда ни у кого не было.

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

Т.е. мы даже сегодня не имеем удовлетворительного решения...
Но зато горазды рассуждать о том, что это можно было сделать еще в 60-е.

=====
И да, novitk там лишнее говорит, мол, в Лиспе ж динамика, т.к. сразу же тогда и сказал, что имею приличный опыт сопрягания Лиспа с нейтивом, где на границе такого сопрягания если не проверишь — получишь все эти же светошумовые эффекты. Т.е. другое дело, что в самой программе на Лисп всегда идёт проверка на конец списка и вываливание с ошибкой вместо неверной реинтерпретации...

Но всё равно от самой этой ошибки страховки нет! И можно эту ошибку передать "куда-то дальше" и она проявит себя намного позже.

т.е., если рассуждать не о последствиях ошибки (вылет системы vs "format c:"), а о самой возможности совершать ошибки, связанные с null, то в Лиспе всё аналогично. Ну просто будет постоянный вылет и всё, вместо непонятного исполнения мусора. Но с развитием защищённого исполнения, теперь всегда вылет, если идёт обращение по null, т.е. получили эффекты в точности как в Лисп, разве что не через ручную проверку на каждой операции разыменования, а через прерывания проца...
Отредактировано 13.01.2026 18:44 vdimas . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.