Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||||||
1 | ||||||
Что делает данный код и зачем такое кому-нибудь может понадобиться?08.06.2009, 23:57. Показов 9870. Ответов 38
Метки нет (Все метки)
Я ответил на вопрос,но точной формулировки не нашёл,хотел бы свериться(приложения с ответами нет).Задание:
Чёрный ящик.Что делается в данном примере?Зачем кому нибудь может понадобиться подобный код?
8
|
08.06.2009, 23:57 | |
Ответы с готовыми решениями:
38
Кто-нибудь может подробно объяснить, что такое allocators, зачем это и что с ними делать? Нигде не нашёл инфы Может кому понадобиться Выключение/перезагрузки компа и завершение сеанса Зачем вообще может понадобиться передавать структуру? зачем может понадобиться делать операторы виртуальными? |
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
|
|
30.06.2011, 15:38 | 21 |
Evg, Евгений подскажите пожалуйста почему при (count%8)==4 я попадаю на метку 6:? при первом проходе.
0
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
30.06.2011, 15:44 | 22 |
0
|
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
|
|
30.06.2011, 16:17 | 23 |
ValeryLaptev, Валерий, может вы подскажете?
Добавлено через 8 минут все разобралсясорри Добавлено через 7 минут а где это можно применить? в книге вопрос по применению конструкции
0
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
30.06.2011, 16:35 | 24 |
Не применяй. НИГДЕ. НИКОГДА. И пошли Страуструпа нафиг с подобными конструкциями.
Ибо главное качество программы - читабельность. А потом уже эффективность. Что толку в эффективности, если читающий программист не может внести изменения, поскольку не понимает, как такое может работать. И при внесении изменений НЕИЗБЕЖНО возникают ошибки. Поэтому - НАФИГ Страуструпа с подобными конструкциями!
0
|
30.06.2011, 16:50 | 25 |
Не всегда. Есть критичные к производительности куски программы. А потому писать их надо с приоритетом высокой производительности. А вместо читабельности писать развёрнутые комментарии. По современным меркам оптимизирующие компиляторы во многих случаях сделают качественный код независимо от того, какой из способов написания выбрал программист, но бывают случаи, когда компилятор не справляется с этой задачей. Или человек знает некоторые особенности, знания о которых нельзя дотащить до компилятора (пример с ходу привести не смогу).
Конкретно в случае с данным switch'ом код можно было бы разбить на два куска: preloop со switch'ом но без цикла и сам цикл. Код получился длиннее, но понятнее для людей. Да и наличие метки с переходом извне внутри цикла, постфактум на многих компиляторах приводит к тому, что компилятор отключает некоторые оптимизации (дабы не усложнять компилятор ради нескольких дебильных случаев). Добавлено через 1 минуту Это задание для учащихся. Причём задача "обратная": т.е. есть код, а надо разобраться, что он делает. Очень правильная постановка задачи. Преподавателям среднего и плохого уровня составлять подобные задания, как правило, не под силу
0
|
voral
|
30.06.2011, 17:44
#28
|
Не по теме:
0
|
30.06.2011, 17:50 | 29 |
1
|
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
|
|
30.06.2011, 18:08 | 30 |
а в чем смысл того что начало расположено в 0:? если вынести do над 0: тоже работает. в чем особый смысл располагать так?
0
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
30.06.2011, 18:26 | 31 |
Поработав 6 лет преподом, Страуструп НИ ОДНОЙ подобной задачи для студентов не написал в своей новой книжке... Поэтому данное упражнение - это не для студентов, а для экспертов.
0
|
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
|
|
30.06.2011, 18:37 | 33 |
Не... Уровень знаний не падает. Просто у Страуструпа пришло, наконец, понимание, что разработка ПО - это не есть трюки с программным кодом...
0
|
30.06.2011, 20:09 | 34 |
А в чём смысл писать цикл "for", если можно писать цикл "while"? Ну вот захотелось, и написали так
Для экспертов - это когда есть постановка задачи, требуется написать код. А вот когда есть код, и человек с ходу не втыкает шозанах и ему приходится где-то искать объяснение, то это по крайней мере сподвигает человека к самостоятельному поиску. А не так, чтобы тупая задача после прочтённого материала, где нужно слегка изменить пример, который читали на лекции
1
|
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
|
|
30.06.2011, 20:17 | 36 |
я это потому спросил, что это немного путает. тут еще народ спрашивал "как так".Выходит просто так от балды, для пущей путаницы
0
|
08.04.2018, 11:47 | 39 |
http://shura.luberetsky.ru/201... a-i-palok/
Первые несколько абзацев можно пропустить и начать со слов "А теперь сделаем еще один шаг вперед" Я как-то не особенно понял великий смысл конечного использования данного механизма. Ибо довольно смутно понимаю, что такое "кооперативная многозадачность" и прочие фичи, которые более понятны операционщикам. Хотя по внешнему виду кода в общих чертах понимаю, про что там идёт речь В любом случае я нифига не понимаю, ради чего нужно было так извращаться. Всё это самое можно было переписать без идиотского switch'а и получить в итоге код, который намного проще читать, отлаживать и сопровождать, а следовательно, он будет более надёжным В duff's device использование switch'а реально приводило к профиту, по крайней мере на старых процессорах, где не было out-of-order execution. А здесь как-то сомнительно, что от этого что-то начнёт работать быстрее Исключение составляет случай, когда PT_WAIT_UNTIL'ов может быть несколько штук внутри функции example. В этом случае действительно получается, что без извращённого switch'а уже просто так не переписать. Но если оно так и есть, то автору следовало бы так и написать в примерах. Возможно, что для него это было слишком очевидно и он не стал этого делать. Я тут ничего не могу сказать, ибо не знаю, как подобные коды устроены на практике. Но если PT_WAIT_UNTIL'ов может быть только одна штука, то геморрой со switch'ами того не стОит Добавлено через 15 минут Кажется, понял, о чём тут речь. Не знаю, как это называется умными словами, но похоже на то, что описывается реализация потоков без использования операционной системы. Т.е. внутри одного процесса создаётся имитация нескольких программных потоков, и силами самогО же процесса осуществляется поочерёдное исполнение этих потоков. Если это так, что в общем случае PT_WAIT_UNTIL'ов действительно может быть несколько штук внутри функции. Они имитируют уход на прерывание операционной системы в "нормальном" варианте. Но в нашем случае тут в роли операционной системы выступает сам процесс, который имитирует потоки, а потому PT_WAIT_UNTIL приводит к тому, что мы выходим из середины функции и при повторном вызове сразу же попадаем в ту точку, откуда в прошлый раз завершили исполнение. Проблемы подобного подхода автор статьи описал в двух последних абзацах, но это в общем-то стандартные проблемы для любого варианта программной имитации потоков без использования операционной системы
0
|
08.04.2018, 11:47 | |
08.04.2018, 11:47 | |
Помогаю со студенческими работами здесь
39
кто нибудь может объяснить, что делает эта функция? Что делает данный код? Что делает данный код Что делает данный код? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |