The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск генератора лексических анализаторов re2c 3.0, opennews (??), 28-Янв-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


2. " Выпуск генератора лексических анализаторов re2c 3.0"  +11 +/
Сообщение от Ононимусemail (?), 28-Янв-22, 09:26 
В умелых руках, goto безареден. Да и сшенерированный код прежде всего должен работать, а не быть суперчитаемым
Ответить | Правка | Наверх | Cообщить модератору

3. " Выпуск генератора лексических анализаторов re2c 3.0"  +4 +/
Сообщение от myhand (ok), 28-Янв-22, 09:33 
> Да и сшенерированный код прежде всего должен работать, а не быть суперчитаемым

Это тебе до первого использования отладчика так кажется...

Ответить | Правка | Наверх | Cообщить модератору

27. " Выпуск генератора лексических анализаторов re2c 3.0"  +2 +/
Сообщение от Аноним (27), 28-Янв-22, 12:33 
> Это тебе до первого использования отладчика так кажется...

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

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

Ответить | Правка | Наверх | Cообщить модератору

46. " Выпуск генератора лексических анализаторов re2c 3.0"  +/
Сообщение от myhand (ok), 29-Янв-22, 05:59 
Для отладки "освоения логики программы" нинада.  Панятна.

Спасибо, что объяснил.

Ответить | Правка | Наверх | Cообщить модератору

7. " Выпуск генератора лексических анализаторов re2c 3.0"  –9 +/
Сообщение от Аноним (-), 28-Янв-22, 09:49 
В умелых руках goto, как правило, не нужен. Аккуратный структурный код, как правило, не требует goto. Если вы применяете goto, значит скорее всего вы говнокодер. Оператор goto применяется 1 раз в тысячу лет.
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

9. " Выпуск генератора лексических анализаторов re2c 3.0"  +11 +/
Сообщение от Аноним (9), 28-Янв-22, 09:50 
Ты еще скажи в ассемблере jmp aka goto не нужен.  
Ответить | Правка | Наверх | Cообщить модератору

12. " Выпуск генератора лексических анализаторов re2c 3.0"  –1 +/
Сообщение от Аноним (-), 28-Янв-22, 09:54 
>Ты еще скажи в ассемблере jmp aka goto не нужен.  

Нет. Не скажу, потому-что ассемблер мнемонический язык низкого уровня, где 1 мнемоника соотвествует машинной команде. А в языках высокого уровня прыжок-Jump можно реализовать и без оператора goto.

Ответить | Правка | Наверх | Cообщить модератору

15. " Выпуск генератора лексических анализаторов re2c 3.0"  –1 +/
Сообщение от Анониим (?), 28-Янв-22, 10:10 
Ты забыл упомянуть что можно реализовать при помощи оверхеда в том числе оверхеда на «безопасность». Тогда да.  
Ответить | Правка | Наверх | Cообщить модератору

42. " Выпуск генератора лексических анализаторов re2c 3.0"  +1 +/
Сообщение от Аноним (-), 28-Янв-22, 19:42 
> Ты забыл упомянуть что можно реализовать при помощи оверхеда в том числе оверхеда на «безопасность». Тогда да.

Ты забыл еще раз, ни к селу ни к городу, приплести ассемблер.
Расскажи поподробнее за оверхед gccшного cleanup аттрибута (сарказм). Он все верно сказал, языковые фичи с 0 оверхедом для этого давно есть - scope guards в D, defer в Zig и т.д. Компилятор сгенерирует точно такие же прыжкы по адресам, как и в "ручном режиме" с goto, только вот читаться оно будет куда лучше, а заделать очередной "goto fail" будет сложнее.


Ответить | Правка | Наверх | Cообщить модератору

30. " Выпуск генератора лексических анализаторов re2c 3.0"  +8 +/
Сообщение от Crazy Alex (ok), 28-Янв-22, 13:51 
Это если бы в си были исключения с блоками finally или деструкторы. А так - последовательный клинап в конце функции с несколькими метками и выходы через goto в нужные точки - самый чистый вариант, который я с си видел.
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

33. " Выпуск генератора лексических анализаторов re2c 3.0"  –3 +/
Сообщение от Аноним (-), 28-Янв-22, 14:00 
>то если бы в си были исключения с блоками finally или деструкторы.

Не дай бог. Убъёте дух сишки. Высокоуровневые сахара сишке не нужны.

Ответить | Правка | Наверх | Cообщить модератору

35. " Выпуск генератора лексических анализаторов re2c 3.0"  +6 +/
Сообщение от Ordu (ok), 28-Янв-22, 14:24 
> Если вы применяете goto, значит скорее всего вы говнокодер. Оператор goto применяется 1 раз в тысячу лет.

Ядро linux с тобой не согласно. Там goto используется в хвост и в гриву, например, как замена RAII: чтобы подчищать ресурсы при аварийном выходе из функции. Необходимость завершиться с ошибкой может быть детектирована в любой момент, и структурно следить за тем, чтобы освободить те ресурсы, которые были уже выделены и не освобождать те ресурсы, которые ещё не были -- это жуть. Груды дублирования кода, рантайм проверок типа if(ptr) free(ptr); и в целом код превращается в болото, в котором любой неосторожный шаг приведёт либо к use-after-free, либо к memleak, либо к double-free, либо ещё к чему-нибудь поэкзотичнее.

Когда же у тебя в конце функции что-то типа:

...
return SUCCESS;

cleanup1:
   free(ptr);
cleanup2:
   close(fd);
cleanup3:
   do_something_else();
   return FAILURE;

А внутри:

fd = open(...);
if(fd < 0) {
    goto cleanup3;
}
ptr = malloc(...);
if(ptr == NULL) {
    goto cleanup2;
}
if(something_else_went_bad()) {
    goto cleanup1;
}
то всё видно, _структурированно_, няшно и управляемо. Ещё и коды ошибок можно прокидывать туда через переменную int ret, объявленную в начале функции.

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

47. " Выпуск генератора лексических анализаторов re2c 3.0"  –2 +/
Сообщение от Аноним (-), 29-Янв-22, 09:47 
Тонко потроллить решил? Хорошо, отвественным ядрописателям goto разрешаю. Остальным говнокодерам не советую.
Ответить | Правка | Наверх | Cообщить модератору

49. " Выпуск генератора лексических анализаторов re2c 3.0"  +/
Сообщение от Ordu (ok), 29-Янв-22, 11:15 
> Тонко потроллить решил? Хорошо, отвественным ядрописателям goto разрешаю. Остальным говнокодерам
> не советую.

А я советую любому открыть сорцы ядра и почитать. Учиться писать код надо ориентируясь на самые крутые образцы, а не на тот отстой, который пишут в учебниках.

Ответить | Правка | Наверх | Cообщить модератору

52. " Выпуск генератора лексических анализаторов re2c 3.0"  +/
Сообщение от nvidiaamd (?), 29-Янв-22, 12:32 
Видали хозяин пришел  и нпм разрешил. Хуух.
Ответить | Правка | К родителю #47 | Наверх | Cообщить модератору

45. " Выпуск генератора лексических анализаторов re2c 3.0"  +1 +/
Сообщение от Анончик (?), 28-Янв-22, 23:51 
Я правильно понимаю что goto: 6,069 code results in freebsd/freebsd-src
Указывает на то что разработчики фряхи те еще гавнокодеры?
Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

13. " Выпуск генератора лексических анализаторов re2c 3.0"  +2 +/
Сообщение от Аноним (-), 28-Янв-22, 09:56 
Код должен быть прежде всего читабельным, и желательно суперөчитабельным. Это одно из основных правил программирования.
Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

16. " Выпуск генератора лексических анализаторов re2c 3.0"  +2 +/
Сообщение от Анониим (?), 28-Янв-22, 10:12 
Goto отлично ложится на концепцию блок схем.  Итого для кодогенерации отличное решение.  
Ответить | Правка | Наверх | Cообщить модератору

20. " Выпуск генератора лексических анализаторов re2c 3.0"  +/
Сообщение от Аноним (-), 28-Янв-22, 11:00 
В теории всё хорошо. В эпоху расцвета процедурных языков 1960-80 гг., на практике, подавляющая часть программистов использовала опреатор goto как попало, и в те времена читать исходники было больно. Поэтому программисты тех времён - Вирт, Дейкстра, Хоар имеют стойкую неприязнь к goto.

>Итого для кодогенерации отличное решение.

Нет, на практике goto плохое решение.

Ответить | Правка | Наверх | Cообщить модератору

61. " Выпуск генератора лексических анализаторов re2c 3.0"  –1 +/
Сообщение от wyry (?), 31-Янв-22, 03:30 
> Код должен быть прежде всего читабельным, и желательно суперөчитабельным. Это одно
> из основных правил программирования.

Ага, и поэтому все придумали кучу инструментов, чтобы этот код усложнить). Любой современный мейнстримный проект - тонны классов во множестве файлов, при этом все хитрым образом между собой связаны сообщениями, коллбеками, объекты в одной структуре данных будет "безопасно" создаваться в другом классе, ч-читабельность))). Мне всерьёз в 2022 проще читать проекты на C, чем проекты на Java, хотя ВОЗМОЖНО (только возможно), проекты на Java проще в итоге использовать при разработке нового ПО. В современном мире, честное слово, проще распутать goto, чем весь клубок из вызовов.

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

63. " Выпуск генератора лексических анализаторов re2c 3.0"  +/
Сообщение от Урри (ok), 02-Фев-22, 12:53 
Просто работающие проекты на С могут писать только осиляторы-профессионалы, а на джаве все кому не лень. Тут вот раст еще подъехал, так теперь (судя по комментариях на опеннете) кодить могут даже те, кто с одной извилиной. С соответствующей читабельностью, само собой.
Ответить | Правка | Наверх | Cообщить модератору

64. " Выпуск генератора лексических анализаторов re2c 3.0"  +1 +/
Сообщение от wyry (?), 02-Фев-22, 13:01 
> Просто работающие проекты на С могут писать только осиляторы-профессионалы, а на джаве
> все кому не лень. Тут вот раст еще подъехал, так теперь
> (судя по комментариях на опеннете) кодить могут даже те, кто с
> одной извилиной. С соответствующей читабельностью, само собой.

Так в том и дело, что не все. На Java по крайней мере простые вещи делаются просто, чего нельзя сказать про Rust. +Java никто не отличалась "новомодностью", даже наоборот - это слишком консервативный инструмент, который развивается медленно и с сохранением обратной совместимости.
Rust - это язык, в котором простые вещи делаются сложно, а иногда и неочевидно (всё ради реализации "безопасной работы памяти без GC", результаты такие, что лучше бы они сделали GC...

Ответить | Правка | Наверх | Cообщить модератору

65. " Выпуск генератора лексических анализаторов re2c 3.0"  +/
Сообщение от Урри (ok), 02-Фев-22, 13:12 
Пожалуй, я просто соглашусь.
Ответить | Правка | Наверх | Cообщить модератору

26. " Выпуск генератора лексических анализаторов re2c 3.0"  +/
Сообщение от Умпа (?), 28-Янв-22, 12:27 
Прежде всего, должен быть суперчитаемым.

Когда тебя вытурят взашей, твоя замена должна моментально твой код освоить.

Ответить | Правка | К родителю #2 | Наверх | Cообщить модератору

43. " Выпуск генератора лексических анализаторов re2c 3.0"  +2 +/
Сообщение от Аноним (43), 28-Янв-22, 22:44 
А зачем облегчать жизнь работодателю?
Ответить | Правка | Наверх | Cообщить модератору

56. " Выпуск генератора лексических анализаторов re2c 3.0"  +/
Сообщение от Аноним (-), 30-Янв-22, 11:25 
Люто бешено плюсую! Да! Пусть работодатель стардает!
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру