Леша на полке клопа нашел

Sep 02, 2024 01:32

Короче, был такой программист по имени Эдсгер Дейкстра, который вместе с коллегой реально написал за первую половину 1960 года первый в мире компилятор с Алгола-60, по слухам, не имевший ошибок. Но не на таких напал, как мы с vak@Dreamwidth.
В Алголе-60 были встроенные в язык элементарные функции, типа abs, sin, cos, exp, ln и пр., которые ( Read more... )

retrocomputing

Leave a comment

Comments 16

b0p0h0k September 2 2024, 10:25:43 UTC

Я б сказал, что эту переменную надо зачищать перед началом обработки аргумента.

Reply

spamsink September 2 2024, 15:45:56 UTC
Да, это была бы минимальная правка, но она требует досконального знания структуры компилятора, а мой способ - не требует.

Reply


xxxxx September 2 2024, 18:32:21 UTC
вы таки будете смияца - сейчас ровно это происходит со скажем функцией sin в отличие от скажем функции sinf (речь о си-плюс-плюсах на amd64 архитектуре). Надо какую-то хитрую хрень написать с шаблончиками и окажется что у этих синусов совершенно разный тип (а не просто заменить double на float). Я подозреваю, что инструкция sin есть, а инструкции sinf наверное нету в процессоре - наверное в этом дело.

Reply

spamsink September 2 2024, 18:51:14 UTC
"ровно это" - это что именно?

Reply

xxxxx September 2 2024, 18:54:09 UTC
невозможность запихнуть sin в функцию в которую оно в общем-то должно полезать

Reply

spamsink September 2 2024, 19:06:37 UTC
Как это? Они ж все библиотечные, не должны отличаться от любых других. Вроде работает:

#include
#include

double apply(double(*f)(double), double val) {
return f(val);
}

int main() {
for (double x = 0; x < 3.14; x += 0.1) {
std::cout << apply(sin, x) << '\n';
}
}

Reply


fatoff September 2 2024, 22:20:49 UTC
Через много лет после Алгола, и уже много лет до сегодня. Было такое https://harbour.github.io/ng/c53g01c/ng110bc2.html

Ну вульгарис обыконвенный, но, может, не слабее фауста гёте чем в Алголе. Ну они же знали, писатели языков программирования в 1980-е о том.
Порой помогало выкручиваться, когда на момент написания когда совершенно неясно, что за выражение получится.

Reply


galkao September 5 2024, 22:15:57 UTC
Похоже, нас в школьные годы правильно Алголу учили: требовали в начале программы обнулять абсолютно всё:-) То есть любая программа начиналась с обнуления всех переменных, любой цикл начинался с обнуления всех счетчиков и т.п.

Reply

spamsink September 6 2024, 14:36:49 UTC
Там такой код, что чёрт ногу сломит. Найти место, где эту переменную можно было бы безусловно инициализировать, малореально.

Reply

xxxxx September 7 2024, 09:03:17 UTC
opencv разваливалось в одном месте потому что не обнуляло какую-то переменную на стеке. Я пожаловался, а они сказали что пусть лесом пойду, мол микрософтовский компилятор сам зануляет, а линуксями они не нанимались

Reply

spamsink September 7 2024, 15:41:10 UTC
Позорники.

Reply


Leave a comment

Up