Я не совсем понял. А чем таким популярен Эдсхар Дэйкстра?Что он такого сделал, что о нём говорят до сих пор?Ну, не нравилась ему его Гейландия. Ну, свалил он в свою бездуховную Пиндосию. Ну, и что?Мне-то что с того? Какое до него мне дело?Кто он такой вообще?
BUMP.
>>718666 (OP)1. Оказал большое влияние на развитие методологии программирования и теории алгоритмов;2. Опустил BASIC и оператор goto.
>>718750> оператор goto.Двачую. Отличный детектор дегенератов сделал.
>>718666 (OP)Зафорсил структурное программирование.Пилил с Хоаром Алгол и компайлер к нему.Придумал семафоры, несколько важных алгоритмов поиска.Проделал множество исследований в области распределённых вычислений (в те то бородатые годы).Учил тогдашних быдлокодеров дисциплине программирования.Обоссал Кобол.
гото охуенен, не пиздите
з.ы. а вот алгол хуйня
>>718844Делает поток непредсказуемым.
>>718814Предлагаю тебе переписать этот скромный участок кода без goto.
>>718852Тебе тоже: >>718854Эзотерика с циклом и break'ами не принимается. Неоптимальное по времени/памяти говно также не принимается, потому что это участок в каком-то драйвере, кажется (первый рандомный исходник из дерева Линукса взял).
>>718854Ошибку - в функцию и дёргать функцию каждый раз, когда нужно.
>>718854> 2016> развернутый вручную цикл
>>718862Первый сектант-школьник обосрался. Тебе всё равно нужно будет после вызова функции прыжок делать.>>718863> 2016> не писать драйвера на Java
>>718870> сосачер с черно-белым взглядом на мир думает что если код не представляет собой неподдерживаемую копипаст дрисню то он непозволительно медленный
>>718874Я пишу на сриптопетушне, а мой основной ЯП имеет сборщик мусора. Каким будет твой следующик ход?
>>718854примерно какif (!regmap_write1 && !regmap_write2 && !regmap_writeN) {} else { // err}
>>718854>драйвер>ret проверяется два разаЯсно чому у меня убунта тормозит
>>718882потому, что у тебя виндовз
>>718854Проиграл с usleep.Это чтобы железяка успела отреагировать, да?
>>718854Вместо goto использовать return.
>>718854засунуть второй и третий аргумент функции в лист как тьюпл, вызывать функцию в цикле.
>>718854Ты не дегенерат.А вот эти:>>718862>>718863>>718878>>718924>>718955>>718852>>718874- дегенераты.Я ж говорю, хороший детектор.>>718814-кун
>>718964>не дегенератСкорее дегенерат тот, кто вручную разворачивает циклы "для праизвадительнасти" и делает usleep в одной и той же функции.
>>718966О, еще одно быдло.
>>718854и нахуя ты после метки err перепроверяешь значение ret?
>>718973Догадайся, придурок.
>>718854А чем if (!ret) не устроил? Получается вложенный if, который сам в асме развернется в нужные джампы, зато goto не нужен, не?
>>718973Паскаль не учил штоле? У нас на районе за такие вопросы сразу убивают нахер.Код после метки выполняется всегда, а ret может быть нормальным, а не ошибочным.
>>718854Вот я не пони автора этого говнокода. Накопипастить вызовов regmap_wrirte c разными параметрами ему ума хватило, а докопипастить везде одну строчку dev_dbg - нет. И завернуть еще каждый новый вызов в if( !ret ) { }.НУ ТУПЫЕЕЕЕЕЕЕ
>>718854for (size_t i = 0; i < ATTR_LIST_LEN; ++i) { if (!ret = regmap_write(...)) { dev_dbg(...); return ret; }}
>>718994наркоман?
>>718814>Двачую. Отличный детектор дегенератов сделал.>>718854>Предлагаю тебе переписать этот скромный участок кода без goto.Охуеть. И дегенерат попался в первом же ответе.
>>718854Пишем функцию которая в зависимости от передаваемых ей значений взвывает ту функцию с разными параметрами. Потом бежим фором по всем возможным параметрам с условием выходы нашли ошибку или закончились параметры.
>>719046Потеря скорости. goto невозможно заменить без потерь.
>>719056Но ту лапшу можно и в цикл свернуть, пусть там и будет goto.
>>719056doSmthng()if(!res) {doSmthng()if(!res) {doSmthng()if(!res) {}}}
>>719056Компилятор развернёт. Ну или вместо функции сделать массив pair в котором хранить параметры для вызова этой функции. Тогда потерь ещё меньше т.к. дополнительная функция не вызывается.
>>719060Это спагетти-код. goto, ironically, allows to avod it.
>>719067>goto невозможно заменить без потерь.Всё же возможно, согласись?>Это спагетти-код.Нет, не спагетти, просто громоздкий. Спагетти это когда поток управления скачет в произвольных направлениях, рисуя морские узлы своей траекторией. А здесь всё структурненько.
Алсо без лишней проверки (я предполагаю, что ret не меняется другими потоками пока мы спим) можно сделать так: ... sleep(...) return ret;err: dev_dbg(...); return ret;}Но такие мелочные оптимизации - для глупых дрочеров.Выигранные на разворачивании циклов и т.п. такты сгорают когда процессору приходится читать из оперативки больше кода. И меньше места в кеше остаётся под полезные вещи.
>>719088>Алсо без лишней проверкиОна таки не лишняя.
>>719090И для чего же она нужна в вышеприведенном коде?
>>719124Для того, чтобы dev_dbg вызывался только если ret != EOK
мой любимый пример с goto:// int x;// Someobject[] a;// int Func(Someobject obj);for (int ii = 0; ii < a.length; ii++){ if (Func(a[ii]) == 0) { SomeOtherFunctionOrCode(); goto endc; }}// some code here, which executes in a case of absense zeroes in the Func(a[ii]) array.endc:// other code
>>719129>мой любимый пример с goto:http://eli.thegreenplace.net/2012/07/12/computed-goto-for-efficient-dispatch-tables
>>719129Алсо, ньюфаги не могут в индентацию.
>>719130Вообще заебись. Я такие вещи только на асме делал и думал что высокоуровневом говне такое невозможно.
>>719134Ну это нестандартное расширение GNU. Которое, впрочем, весьма полезно и поддерживается шлангом и интелом.А MSVC и Борланду хуй в жопу и перо под ребро.
>>719127А то, что на `err: dev_dbg(...)` в данном варианте переходят только после проверки ret ты, разумеется, не заметил.
>>719129>мой любимый пример с gotoКакая странная любовь.[code lang="d"]if (a.map!(func).canFind(0)) { someOtherFunctionCode;} else { // some code here, which executes in a case of absense zeroes in the Func(a[ii]) array.}// other code[/code]
>>719152А то, что до `err: ...` нету return, ты, разумеется, не заметил.
>>719158Ты сейчас про >>719088?
>>719160Про >>718854
>>719156
>>719166Я только что пришел, вообще-то.
>>719170От этого твой код не работает быстрее.
>>719171Откуда ты знаешь? Научился оптимизировать лучше компилятора?
>>719178Да.
>>719187
>>719187Молодец, только никто не говорил, что тот код был критичным по скорости выполения. Да и вообще, за premature optimization Дейкстра на макушку велел на ссать.
>>719199> только никто не говорил, что тот код был критичным по скорости выполения.То что его можно сделать без goto (как и без for) и так понятно.> Да и вообще, за premature optimization Дейкстра на макушку велел на ссать.Нахуй Дейкстру и прочую шваль. Важен только эксперимент, а не фамилии или авторитеты. Я видел заваленные проекты из-за того что разработчик следовал заповедям избегать преждевременной оптимизации. Довел свой проект до такого состояния, что он был по существу нерабочим (скорость была неприемлемо низкой), а когда попробовал оптимизировать, то оказалось что надо переписывать проект заново на новой технологии, после чего чел слился, т.к. силенок на это уже не хватило. Причем даже если бы хватило, то он бы сделал еще какую-нибудь глупость, исправление которой тоже стоило бы неимоверных усилий.
>>719212В принципе согласен, за двумя уточнениями.>Важен только эксперимент, а не фамилии или авторитеты.Если авторитет дал миру что-то хорошее, то я не вижу смысла принципиально этого избегать. Любой эксперимент имеет под собой некую теоретическую базу, чаще всего уже наработанную теми самыми авторитетами. Но это, конечно же, не значит что нужно во всем с ними соглашаться. Не зря же говорят, что величие ученого определяется тем, насколько он смог затормозить в развитии ту область знаний, в которй работал.>заваленные проекты из-за того что разработчик следовал заповедям избегать преждевременной оптимизацииИзбегать преждевременной оптимизации != писать неэффективный код.Я думаю, надо во всем знать меру.
>>719224>авторитет"Arrogance is measured in nano-Dijkstras".
>>718666 (OP)1. Изобрел структурное программирование, которое используется до сих пор (циклы и прочие конструкции)2. Придумал алгоритм для поиска элемента в графе (сети)3. Сказал, что использовать GOTO зашквар4. Предсказал развал СССР, когда узнал, что мы начали копировать архитектуру IBM PC вместо развития своей5. Первым начал разжигать языкосрачи
>>718826Точно, про семафоры совсем забыл. Он еще и отец многопоточного программирования.
>>719199>за premature optimization Дейкстра на макушку велел на ссатьНе, это уже Кнут.
Полон тред дегенератов? не осиливших разобрать элементарный код на С, зато про goto кукарекают.Я все же надеюсь, что это веб-макаки, иначе пиздос.
>>720532съеби уже, толстяк
>>720532>, что это веб-макаки, иначе пиздос.В основном да. И не удивляйся так. Я еще в 2009 понял что 90% программистов это быдло.
>>720448И он кстати сказал, что GOTO рулит, а Дейкстра хуй.
>>720599«Goto нужен!» — раздался пронзительный голос со стороны параши.Но программисты, как всегда, не обратили внимания на это визгливое кукареканье. Пусть кукарекает, что с него взять?Кнут — не человек, и сегодня ему предстоит очень трудная ночь. У него уже в течение полутора лет каждая ночь была очень трудной, и теперь его байтоебский анус был разработан настолько, что он без труда мог спрятать в нём четырёхтомник "исскуства программирования".
>>720594>И не удивляйся так>веб-макаки в треде о программировании>не удивляйсяНу ок.
>>720643>байтодаун, не осиливший даже структурное программирование, думает что он лучше веб-макакиох воу
>>720653>структурное программированиеВеб-макака рассуждающая о программировании выглядит еще более нелепо, чем бабульки у подъезда рассуждающие о политике.