LINUX.ORG.RU
ФорумTalks

52 года назад вышла статья Эдсгера Дейкстры против оператора GOTO

 ,


1

1

Собственно, сабж.

Кстати, оригинальный заголовок был «A Case Against the Goto Statemen», а на получивший известность «GOTO considered harmful» его заменил Никлаус Вирт - автор языка программирования Паскаль, который тогда был ещё и редактором журнала «Communications of the ACM», в котором и было опубликовано письмо Эдсгера Дейкстры.

★★★★★

Годный вброс был. Самая полезная, мб единственная действительно полезная, вещь, которую Вирт сделал для программирования.

WitcherGeralt ★★
()
Ответ на: комментарий от Deleted

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

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

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

Выбор языка разве что. В сишечке гото делает код чище при правильном использовании (как finally)

Stil ★★★★★
()
Ответ на: комментарий от RazrFalcon

А вот в результате он есть везде
JMP Addr
и без него - никак <--- но это не точно

superuser ★★★★☆
()
Последнее исправление: superuser (всего исправлений: 3)

отсутствие готу и оптимизации хвостовой рекурсии может заставить человека использовать циклы, которые будут выглядеть хуже и запутанней чем хвостовая рекурсия или готу

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

Таки да. В языке без исключений goto нужен для организации ветвления при обработке ошибок.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Spoofing

Тем же чем и break, continue и return в середине функции. По сути эти вещи одной природы, но народ почему-то ополчился исключительно на goto.

Reset ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Не, ну в си есть подобие raii, но оно компиляторо-специфично. Если честно, даже не в курсе, есть ли оно за пределами gcc.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от Reset

Породил сотни тысяч утят с изуродованным чувством прекрасного, и как следствие многие миллионы строк говонолегаси, которые до сих невозможно выбросить.

И всё ради чего? У чувака просто пригорело от того, что его опрокинули с его проектом Алгола 68. Вкупе с дальнейшим потугами, патологичкский nih-синдром на лицо.

Понятно, что это не вина языка как такового, просто стечение обстоятельств, но всё равно.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Слышь чо. Я как-то наткнулся на статью от ibm вроде (но это не точно), где была типа подробно разобрана реализация исключений в си на setjmp/longjmp. Я ее в букмарки добавил, но потом тот профиль фаерфокса у меня потерялся вместе со сдохшим винтом. Не накинешь чтива по теме?

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM

Не подкину. Вообще очень редко на C пишу по работе, в основном задачки всякие решаю, чисто, чтобы не тупеть, либо мелочишку для души пишу. По-этому не очень интересуюсь всякими ништяками по теме.

Я как-то раз видел реализацию try/catch и throw на setjmp и longjmp, макросах и switch для обработки кода ошибки. Но для тебя там не было ничего интересного.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Ответ на: комментарий от DELIRIUM

У корифеев разные мнение на этот счёт. Ричмонд вон целую пачку макросов наворотил.

Могут воротить что угодно, все более-менее вменяемые сишные проекты обходятся без этого.

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

Прикольно, системдно шлангом не соберётся?

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от saahriktu

То есть проблема не в операторе, а в кривых ручонках.

grem ★★★★★
()
Ответ на: комментарий от kirk_johnson

Go и Rust, уделывающие C во всех юзкейсах

Кроме тех, где неприемлем gc, в первом случае, и кроме всех, где нужно писать код, во втором.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Ответ на: комментарий от saahriktu

При злоупотреблении он превращает код в лапшу.

Это касается чего угодно, не только goto.

dimgel ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Кроме тех, где неприемлем gc, в первом случае, и кроме всех, где нужно писать код, во втором.

В точку, кстати. Если GC неприемлим, ты берешь Rust, и вместо написания очередных строк и более лучших списков пишешь программу -_-

kirk_johnson ★☆
()
Ответ на: комментарий от kirk_johnson

А потом:

Ну раст сливает потому что строки у нас неправильные, там валидация, вот переделайте пример с кастомными строками и все будет так же быстро!!2121

stasolog
()
Ответ на: комментарий от Bad_ptr

ну через прослойку fuseFS и python работает

Нет, fuse работает через userspace API. То есть ты забираешь у ядра команды, выполняешь userspace’ным кодом, и отправляешь назад. Тут речь идет о том, чтобы сделать shim level для написания модулей на Rust.

там и python есть и js даже

Ага.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от kirk_johnson

ripgrep

популярность уровня статей про монады на хаскелл
(мода на которые вроде уже сошла на нет)

firefox

я так понял они уже много лет чё-то там пилят и никак не допилят и получается медленнее плюсов

polaris

google rust polaris:
Rust In Peace... Polaris

rav1e

The fastest and safest AV1 encoder
Хрен его знает зачем это надо простому пользователю. Такое не может быть популярным.

Bad_ptr ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.