Когда 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;
Когда 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;