LINUX.ORG.RU

Обработка исключительных ситуаций в няшной Сишке


2

9

вы мне тут говорили, что Си это хорошо.

Но я не обнаружил в моем компиляторе try.

а бейсик таки поддерживает: ON ERROR GOSUB ....

керниган и ричи, таки не осилили то, что сделали студенты из дармутского колледжа...

а это ведь важнее локальных переменных, да.

Перемещено mono из talks

Ответ на: комментарий от Manhunt

Твой оппонент говорил про читабельность и понимабельность кода среднестатистическим человечешкой^W работником IT. «took a glance — understood at once»

Ну так FSM с goto понять и прочитать с одного взгляда намного проще, чем FSM с, ужас-ужас, switch-ем.

А дракон этот твой - это оно и есть, визуализация CFG. Причем совершенно не обязательно редуцируемого. Тогда как структурное программирование это только редуцируеме CFG.

anonymous
()
Ответ на: комментарий от Dark_SavanT

Судя по слогу, к нам на огонёк Луговский заглянул.

Судя по слогу, никакого лугоффского в треде не было.

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

Ну так FSM с goto понять и прочитать с одного взгляда намного проще, чем FSM с, ужас-ужас, switch-ем.

Зависит от того, что у тебя за FSM. Типичные FSM легче понимать, когда они записаны без goto: в том же ООП большинство объектов представляют собой FSM. И хорошим стилем для крестов и жабки таки считается обходиться без goto, за редким исключением.

А дракон этот твой - это оно и есть, визуализация CFG.

Дракон - это способ рисовать блок-схемы «по фэн-шую». Я упомянул его, чтобы придать конкретный смысл лепету про двумерность кода.

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

Да тысячи их, тысячи! Тебе откуда данные собирать? С canbus небось? Ну так полно вариантов.

anonymous
()
Ответ на: комментарий от Manhunt

Ну так блоксхемы не обязательно структурные. Даже совсем не структурные. И при этом их читать и понимать намного легче, чем структурный код. Так что лепет goto-ненавистников вообще не имеет смысла.

И хорошим стилем для крестов и жабки таки считается обходиться без goto, за редким исключением.

Мало ли, что там кем «считается»? Идиотов-то полно кругом.

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

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

Если ты возьмешь типичную функцию строк на 100-200 из какой-нибудь ынтырпрайз-софтины и механически построишь по ней блок-схему, то обнаружишь, что в коде разобраться проще. Простота понимания блоксхем (в тех случаях, когда эта простота действительно наличествует!) достигается за счет того, что автор блок-схемы был вынужден найти лаконичный на взгляд изображаемый процесс, поскольку громоздкая (в сравнении с кодом) нотация блок-схем не позволяла ему отобразить слишком большого количества блоков и слишком сложных соединений между ними.

Даже совсем не структурные.

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

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

Чёрт, а ведь похож. но

Эти убогие недоумки до сих пор со своей никчемной функциональщиной носятся.

Вот этим он спалился.

Всё, расходимся, VSL не настоящий.

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

я серьезно.

был на каком то Linux Tag - был там только один стенд. ни и? у них нихера не открытое, а полуоткрытое. и нихера не кастомизируемое.

djenterprise
() автор топика
Ответ на: комментарий от djenterprise

Хочешь совсем открытого? Иди на opencores.org, и делай что хочешь на ПЛИСках. Даже младшие модели Spartan6 потянут все, что от таких железок надо.

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

http://www.scancode.ru

хочу такое же, но открытое в плане софта.

Ответ - нельзя. Потомучто анальное рабство производителей железа

djenterprise
() автор топика
Ответ на: комментарий от Dark_SavanT

Эти убогие недоумки до сих пор со своей никчемной функциональщиной носятся.

Вот этим он спалился.

Ты не настоящий фан VSL. Настоящий бы сказал, что в этой теме больше одного анонимуса (и кстати, на это очень похоже).

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

А то, что порядок вызова деструкторов в плюсах завязан на порядок инициализации тебя не смущает?

Чо, правда, шоле?™ Мне вот надо в плюсах руками вызывать деструкторы в нужном порядке, а не то бо-бо будет? Ты уверен, что ничего нигде не перепутал, и в плюсах это головная боль не программиста?

При таком подходе опечататься и вместо «if (res1) free(res1)» написать «if (res1) free(res2)» ничуть не сложнее, чем goto free_res2 вместо goto free_res1.

А ты не называй переменные resN. Ошибиться 'if (buf != NULL) free(somedata);' — это очень сильно постараться надо. В отличие от необходимости держать в голове порядок инициализации переменных и куда какая метка относится.

Разве что для страдающих от СДВ.

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

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

А ты не называй переменные resN. Ошибиться 'if (buf != NULL) free(somedata);' — это очень сильно постараться надо.

Это не говоря о том, что типы resN будут разные.

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

Ошибиться 'if (buf != NULL) free(somedata);' — это очень сильно постараться надо.

Зависит лишь от степени поддержки функции copy & paste в используемом текстовом редакторе. И не такие ляпы доводилось совершать.

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

Это как с push/pop в асме — сразу после инициализации пишешь финализацию — все равно что окурок брость в урну, а не на газон.

Ну давай у компиляторов все варнинги оторвём нафиг, что уж там.

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

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

Зависит лишь от степени поддержки функции copy & paste в используемом текстовом редакторе. И не такие ляпы доводилось совершать.

Это как с push/pop в асме — сразу после инициализации пишешь финализацию — все равно что окурок брость в урну, а не на газон.

концентрация при написании отличает быдлокод от нормального кода.

3 взаимоисключающих параграфа detected.

Ты либо: а) занимаешься копипастингом, тогда проблем у тебя будет гора везде и всегда, но в твоём варианте опять же больше по очевидным причинам б) аккуратно пишешь нормальный код, тогда в твоём варинте проблем тоже будет больше, придётся заново выстраивать в голове отсортированную по времени таблицу соответствия «переменная — метка, куда прыгать в случае фейла» вместо простого линейного кода после метки 'FAIL'.

kemm
()
Ответ на: комментарий от bk_

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

I-Love-Microsoft ★★★★★
()

Попробуй другой няшный язык. Например C++ :D

vasily_pupkin ★★★★★
()

Какой высокоинтелектуальный разговор. Что ни ответ - то ПНХ(а еще говорят что goto не применяют)))

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

а еще говорят что goto не применяют

Применяют. Но только при возникновении исключительной ситуации. Что поделаешь, ограниченные сишники-с, у них нет другого выхода из исключительной ситуации.

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

А, ясненько, в васике это было бы так: ON BUGURT GOTO Х.Й

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

А давай ты, ничтожная свинья, ...

Луговский, перелогиньтесь.

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