Польза goto в C++

TL;DR: Дейскстра учился писать код с goto, научился, раскритиковал применение goto, учебные программы усложнили т.к. “так сказал великий Дейкстра”, учить детей программированию стало сложнее.

Польза goto в C++
1212

Когда goto применялся, то приложения были простые. Сейчас ты даже калькулятор не напишешь без десяти слоёв абстракций и MVC. Я вообще не понимаю, почему это в 2024 году надо серьёзно обсуждать, это какой-то первоапрельский рофл.

5

Но в том то все и дело, что взяв нормальную библиотеку, например 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;

Что же поделать, если сайт, ранее посвящённый разработке игр, так и не научился поддерживать оформление кода...

1

Упаси боже учить кого-либо в любом возрасте писать подобное нечитаемое недоразумение. Автору: сложность C++ заключается вовсе не в if, for, while и т.д. Сложность, это к примеру разобраться, что за хрень auto&&, зачем она нужна и как работает.

4

Это вообще не сложность, заранее известно, что эта редкая конструкция почти всегда вредна, так как снижает читаемость кода. В тех случаях когда она повышает читаемость кода, она может быть не так вредна, но все равно она при этом может снижать понимаемость кода джунами и стажерами. И только в реализации шаблонов применение auto&& может быть оправдано

нифига себе говнокод нечитабильный...вы точно учились писать программы?

3

Конечно, можно сделать этот код более читаемым для тех кто уже знает весь с++, но идея этого кода в том что он читаемый для тех кто еще не знает весь С++, а знает только if и goto

Тут можно было обойтись простым switch... Определить все переменные в одну строку... УБРАТЬ GOTO

Конечно, это очевидно.

[]