LINUX.ORG.RU

А нужны ли вообще продолжения и сопрограммы?

 , ,


0

1

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

★★★★★

Последнее исправление: ados (всего исправлений: 1)

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

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

Мне кажется в контексте сопрограмм надо говорить наоборот что любую программу можно написать с помощью функций и циклов, и что goto вообще вреден и можно прекрасно обойтись без него.

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

на if и goto

Без продолжений ты не сможешь реализовать выход из рекурсии с последующим входом в нее.

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

с помощью функций и циклов, и что goto вообще вреден и можно прекрасно обойтись без него.

Как ты с помощью функций и циклов обеспечишь нелокальный выход?

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

Боюсь, что без функций я не смогу реализовать даже вход в рекурсию. Говорят, это вредно и можно вообще обойтесь без рекурсии.

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

Это было к тому сказано, что goto не может заменить продолжения. Ты утверждал, что любую программу можно переписать на goto. Программу с продолжениями ты не сможешь переписать на goto

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

Продолжение — лишь деталь, способ реализации. Любую программу (в смысле бизнис логики) можно реализовать на if и goto.

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

без функций

С функциями, как раз строго наоборот. Функция — это частный случай goto, т.е. goto может заменить функции.

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

Еще раз повторяю, если тебе нужен выход из рекурсии с последующим входом в нее, с goto ты это реализовать не сможешь.

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

А я еще раз повторяю, что реализую любую программу вообще без рекурсии. Да и про реализацию функций на goto и стеке тут тоже уже сказали, к сожалению.

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

Да. Но речь не об этом шла. Есть абстракция goto есть абстракция продолжения, и есть абстракция рекурсии. А так, да, можно все написать с помощью единиц и нулей, какой тогда нахер goto? Думаешь там, на уровне электросигналов кто-то куда-то ходит?

anonymous
()

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

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

goto хоть и абстракция, но очень низкоуровневая, по сути означающая «начни выполнять инструкции вот с этого адреса». И речь шла о том, что с помощью неё + инструкции if можно закодить любой алгоритм.

Без них - не получится. Всё что кроме них - уже сахар.

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

А почему я должен, рассуждая о программировании как таковом, думать о том, что есть какие то «инструкции» и какие-то физические «адреса»? Разве так не должно делать быдло, которое вечно ищет какую-то «точку опоры», вечно ищет, с чего бы начать, что первично, что вторично? У меня, допустим, нет никакой реальной реализации ЭВМ. У меня релейная ЭВМ, где я программирую тумблерами. Я обязан знать про какое-то сраное готу? Ага, вздрочну на него, оно ведь основа-основ, без нее хомячек никак... Он теряет почву под ногами, происходит разрыв шаблона...

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

Ты и есть быдло, которое не хочет учить матчасть

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

Ещё раз. goto + if - это базис, с помощью него можно закодить что угодно.

Можно ли закодить всё с помощью другого базиса? Возможно.

Обязательны ли какие-то другие операторы/абстракции в этом базисе? Нет.

Я не могу понять, с чем ты споришь.

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

с помощью неё + инструкции if можно закодить любой алгоритм.

Закодь вот такой алгоритм: маше предлагают на выбор конфетку или печенье. Она делает недетерминированный выбор, и жрет либо конфетку, либо печенье. Но не оба варианта одновременно! Только один.

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

Маша спрашивает у генератора случайных чисел: конфетка или печенье. После чего жрёт конфетку или печенье, но не оба варианта одновременно! Только один.

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

Реализуй на goto и if (как ты утверждал) данный алгоритм. Числа мне твои нахер не сдались. У нас нет никаких чисел, они нам не нужны для решения данной задачи.

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

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

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

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

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

Да ты вообще дубина, оказывается. Последняя попытка. У тебя классическая МТ. Абстрагируйся от кода, сосредоточься на алгоритме, опиши его словами. Вперед.

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

Тут только такие и тусуются, привет. Ты с нытьём о бабле и опенсорсе разумеется тоже не исключение.

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

Как ты с помощью функций и циклов обеспечишь нелокальный выход?

Это временный выход из всего стека вызовов со всем окружением? Ну вроде бы это есть суть сопрограмм вроде бы. Вопрос нужно ли это?

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

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

Маша спрашивает у генератора случайных чисел: конфетка или печенье. После чего жрёт конфетку или печенье, но не оба варианта одновременно! Только один.
Как сказал Джон фон Нейман, «всякий, кто питает слабость к арифметическим методам получения случайных чисел, грешен вне всяких сомнений».

Иными словами, у вас тут нет недетерминированного выбора, у Вас детерменированный выбор через посредника. Либо, если вы имели в виду «настоящий» random, его невозможно реализовать при помощи goto.

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

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

Вы с найтмарезом в эту категорию не попадаете, увы.

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

Но речь шла как раз о реализации произвольного алгоритма при помощи 2-х операторов — if и goto. В Вашей модели нет реализации, у Вас имеет место использование готового. Так называемым внешним параметром может быть и результат вычисения. То есть, следуя Вашей логике, для реализации любого алгоритма, достаточно оператора print.

print(result_of_calculation_from_another_machine)
Ясно, что это заурядная демагогия, не более того.

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

Ваши наркоманские заскоки с if'ом и goto, но без их семантики (где метки, где аргументы, в каком виде ввод и вывод) и арифметики меня волнуют минимально.

Так называемым внешним параметром может быть и результат вычисения.

А может и не быть.

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

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

Закодь вот такой алгоритм: маше предлагают на выбор конфетку или печенье. Она делает недетерминированный выбор, и жрет либо конфетку, либо печенье. Но не оба варианта одновременно! Только один.

Насколько я знаю, алгоритмически недетерминированный выбор реализовать невозможно. Если я не прав, тыкни носом в ман пожалуйста. Если я прав, что ты хотел своей задачей показать? Что не на любую задачу можно написать алгоритм? С таким же успехом можно было попросить написать алгоритм (физического) изменения гравитационного поля Земли.

staseg ★★★★★
()

Продолжения позволяют писать более короткий и понятный код в многопоточной программе. Например, async/await в C#. Сопрограммы... Ну, к примеру, генераторы, опять же, сокращают объем код при работе с коллекциями.

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

Наверняка ТС - оригинал, а автор - его тролинный виртуал, решил разнообразить методологию набросов.

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

Никто не спорит, что сахар делает код более сладким. Чего спорить.

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