Польза goto в C++
TL;DR: Дейскстра учился писать код с goto, научился, раскритиковал применение goto, учебные программы усложнили т.к. “так сказал великий Дейкстра”, учить детей программированию стало сложнее.
TL;DR: Дейскстра учился писать код с goto, научился, раскритиковал применение goto, учебные программы усложнили т.к. “так сказал великий Дейкстра”, учить детей программированию стало сложнее.
Когда goto применялся, то приложения были простые. Сейчас ты даже калькулятор не напишешь без десяти слоёв абстракций и MVC. Я вообще не понимаю, почему это в 2024 году надо серьёзно обсуждать, это какой-то первоапрельский рофл.
Но в том то все и дело, что взяв нормальную библиотеку, например Arctic Engine, можно легко написать на С++ калькулятор всего в несколько строк кода, что-то вроде
double x = 0;
double acc = 0;
int res = 1;
int op = 0;
int next = 0;
b:
Clear();
if (res == 1) {
Print(acc);
}
if (res == 0) {
Print(x);
}
if (IsKey("1")) {
x = x * 10 + 1;
res = 0;
}
if (IsKey("2")) {
x = x * 10 + 2;
res = 0;
}
if (IsKey("3")) {
x = x * 10 + 3;
res = 0;
}
if (IsKey("4")) {
x = x * 10 + 4;
res = 0;
}
if (IsKey("5")) {
x = x * 10 + 5;
res = 0;
}
if (IsKey("6")) {
x = x * 10 + 6;
res = 0;
}
if (IsKey("7")) {
x = x * 10 + 7;
res = 0;
}
if (IsKey("8")) {
x = x * 10 + 8;
res = 0;
}
if (IsKey("9")) {
x = x * 10 + 9;
res = 0;
}
if (IsKey("0")) {
x = x * 10 + 0;
res = 0;
}
if (IsKey("+")) {
next = 0;
goto apply;
}
if (IsKey("-")) {
next = 1;
goto apply;
}
if (IsKey("*")) {
next = 2;
goto apply;
}
if (IsKey("/")) {
next = 3;
goto apply;
}
if (IsKey("=")) {
next = 4;
goto apply;
}
Show();
goto b;
apply:
if (op == 0) {
acc = acc + x;
}
if (op == 1) {
acc = acc - x;
}
if (op == 2) {
acc = acc * x;
}
if (op == 3) {
acc = acc / x;
}
if (op == 4) {
acc = x;
}
op = next;
next = 0;
x = 0;
res = 1;
goto b;