LINUX.ORG.RU

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


2

9

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

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

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

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

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

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

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

ну да, у меня сейчас дежавю. для enterprise емеддед сейчас ситуация как в 70-89-е: или Бейсик с GOTO/GOSUB, которые все хаяли, но который был RAD, и поэтому его все выбирали.

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

только китайцы и могут на нем кодить.

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

Вот если бы кто на сишке начал лепить

...

это да, было бы жестко

Где-то я это уже видел… А! RE2C, знакомтесь. 8)) Классическая картина для сгенерённого кода, в общем-то. Но руками такое писать действительно не надо.

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

А мне второй нраицца :) Все лучше плюсовых деструкторов.

Деструкторы компилятор сам вызовет. А здесь промахнулся мимо метки - и привет. Если писать так, то метка хотя бы одна:

{
  /* ... */
  r1=alloc_resource1();
  if (!r1)
    goto fail;
  r2=alloc_resource2();
  if (!r2)
    goto fail;
  return f(r1, r2);
fail:
  if (r2)
    free_resource2(r2);
  if (r1)
    free_resource1(r1);
  return ERROR;
}
tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

нет, не под веществами.

я в общем то с проектом справился, т.к. в децтве с бэкашками и спектрумами баловался.

вещества употребляют разрабы компиляторов, ага.

Зы. Они бы еще туды ЯП ПМК БЗ-34 засунули, это было бы получше экстази и барбитуратов.

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

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

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

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

Обычно он есть.

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

Деструкторы компилятор сам вызовет.

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

Если писать так, то метка хотя бы одна:

Тю, забыл rN инициализировать в NULL в начале функции, и привет. Для студента может и простительно писать такое убожество, но нормальный кодер лишних портянок if'ов пихать не будет.

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

Они бы еще туды ЯП ПМК БЗ-34 засунули

Вещества употребляешь ты, называя запрграммированную тобой страннуюхрень «энтерпрайз эмбеддед».

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

забыл rN инициализировать в NULL в начале функции, и привет

Компилятор напомнит.

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

ты предлагаешь мне хакнуть Enterprise Embedded железяку? И сразу под суд?

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

Сишечка никогда не запрещала прострелить себе ногу, в общем-то. Сотней всевозможных элегантных способов. 8)) В случае простых «конструкторов» способ tailgunner'а предпочтительней, там этих способов немного меньше.

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

обычно != всегда

«Обычно» == «делай это вариантом по умолчанию».

Кстати, придумай случай, где у ресурса нет «пустого» значения.

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

Сишечка никогда не запрещала прострелить себе ногу, в общем-то

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

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

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

Качественные поделия выпускают, ИМХО, одиночки или небольшие группы just for fun, ещё они выходят из университетов и всяких исследовательских организаций

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

Кстати, придумай случай, где у ресурса нет «пустого» значения.

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

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

*задумчиво* Мужик, ты это точно мне хотел написать? 8))

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

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

Django
Enterprise

делишь на ноль, парниша. В энтерпрайзе котируется джава и дотнет, остальные - маргинальные поделки для хоумпейджей.

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

ну я кагбэ щаз пейшу на дотнете с Visual Studio

тока Django и Python мне бльше нравицо

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

«Computer science» так называемая - это бесполезное барахло. Все реально новое и полезное в IT вообще и программировании в частности рождается именно в энтерпрайзе, и потом уже с большим запозданием перенимается яйцеголовыми тормозами. Казалось бы, должно быть наоборот, но практика-то говорит об обратном.

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

А, так оно еще и x86? Ублюдство. Надо очень сильно себя не уважать, чтобы такими вещами вообще заниматься. Это еще большее западло, чем быть учеником ассенизатора.

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

«Computer science» так называемая - это бесполезное барахло. Все реально новое и полезное в IT вообще и программировании в частности рождается именно в энтерпрайзе, и потом уже с большим запозданием перенимается яйцеголовыми тормозами. Казалось бы, должно быть наоборот, но практика-то говорит об обратном

Деточка, ты не лопнешь?

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

более того, этот вариант ещё завязан на порядок инициализации

А то, что порядок вызова деструкторов в плюсах завязан на порядок инициализации тебя не смущает? Я реально не понимаю, зачем городить лишние проверки и лишние if'ы. При таком подходе опечататься и вместо «if (res1) free(res1)» написать «if (res1) free(res2)» ничуть не сложнее, чем goto free_res2 вместо goto free_res1.

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

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

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

Ну расскажи нам, когда яйцеголовые начали наконец понемногу ООП осваивать? А в энтерпрайзе он давно и прочно уже применяется.

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

Судя по слогу, к нам на огонёк Луговский заглянул. Он же Antichrist, он же Mauhuur. Правда он ещё ни разу не помянул что мы все говно и надо использовать форт с лиспом, но это ещё будет.

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

ООП это плохо.

весь ынтырпрайс должен сидетьна лиспе и прологе

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

реально новое и полезное

ООП

Да вы омич, батенька.

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

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

Так поприветствуем же Маэстро!

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

Ну расскажи нам, когда яйцеголовые начали наконец понемногу ООП осваивать?

В 1967, а что?

А в энтерпрайзе он давно и прочно уже применяется.

Для протокола: «раньше твоего рождения» - это не «давно».

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

Не надо тут сказки рассказывать. Эти убогие недоумки до сих пор со своей никчемной функциональщиной носятся. С каким-то примитивным недо-ООП они поигрались, ни черта не поняли и бросили. Что такое шаблоны проектирования и сейчас ни один CS-придурок не расскажет.

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

Ну расскажи нам, когда яйцеголовые начали наконец понемногу ООП осваивать?

В 1967, а что?

Не надо тут сказки рассказывать

Ты кретин.

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

Не важно. Все равно ублюдство с закрытым тулчейном. Надо быть не уважающим себя и своих пользователей чмом, чтобы с таким ублюдством иметь дело.

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

Обоснуй, ничтожество. Только не надо мне тут втирать, что когда Симулу да Смолток придумывали, уже про шаблоны проектирования догадывались. Тогдашний говноООП ничего общего с современным промышленным OOP/OOD не имеет.

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

Обоснуй, ничтожество.

ПНХ, слабоумный.

Только не надо мне тут втирать, что когда Симулу да Смолток придумывали

Симулу придумали именно яйцеголовые профессора, и именно с нее началось освоение ООП. Теперь ПНХ, и не оглядывайся.

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

Код программы имеет одно или два измерения, а goto плодит кротовые норы.

reducible vs. irreducible CFG

Да и Аллах с этими CFG. Твой оппонент говорил про читабельность и понимабельность кода среднестатистическим человечешкой^W работником IT. «took a glance — understood at once», тема неплохо раскрыта вот тут, вместе с «измерениями»: http://drakon-editor.sourceforge.net/DRAKON.pdf

PS Впрочем, это не отменяет того факта, что Фрактала частенько колошматили головой о твердые предметы.

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

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

жив еще курилка ;)

надо использовать форт с лиспом

его дело живет и процветает

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

Симулу придумали именно яйцеголовые профессора, и именно с нее началось освоение ООП. Теперь ПНХ, и не оглядывайся.

Как придумали, так и передумали. А освоение ООП началось с C++ и достигло апогея с Java. Ни то, ни другое, никакого отношения к говносимуле не имеет.

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