Обсуждение

В архиве: 15 комментариев.

Читать и комментировать в ЖЖ ↗

Имя не сохранено · 13 ноября 2009

вспрмнил классика

Давайте попробуем сравнить понятие "алгоритм" с рецептом из кулинарной книги. Предполагается, что рецепт обладает свойством конечности (хотя и говорят, что "кто над чайником стоит, у того он не кипит"), имеет входные данные (такие, например, как яйца, мука и т. д.) и выходные данные (обед "на скорую руку" и т. п.), но хорошо известно, что ему не хватает определенности. Инструкции из кулинарных рецептов очень часто бывают неопределенными, например: "Добавьте щепотку соли". "Щепотка" определяется как количество, "меньшее 1 чайной ложки", и что такое соль, вероятно, тоже известно всем. Но куда именно нужно добавить соль — сверху? сбоку? Инструкции "Слегка потрясите, пока смесь не станет рассыпчатой" и "Подогрейте коньяк в маленькой кастрюльке" будут вполне понятны опытному повару, но они не годятся для алгоритма. Алгоритм должен быть определен настолько четко, чтобы его указаниям мог следовать даже компьютер. Тем не менее программист может многому научиться, прочитав хорошую поваренную книгу. (Честно говоря, автор едва устоял перед искушением назвать настоящий том "Поваренная книга программиста". Но, может, когда-нибудь он попытается написать книгу под названием "Алгоритмы для кухни".)

Имя не сохранено · 13 ноября 2009

Комментарий

Кухонные рецепты пишутся не на процедурном языке.

Имя не сохранено · 13 ноября 2009

про кулинарию

А я такую картинку себе давно ярко представляю. (Надо будет потом в блоге написать). Например. Заходим на сайт, выбираем "харчо", можно зайти в "рецепт", а там параллельные блоксхемы в начале которых куча продуктов, в конце один продукт "харчо". (У! Я внезапно вспомнил, что когда-то работал по многим ресторанам (вплоть до того, что один из них американскому правительству принадлежал), и как-раз одной из задач было настраивать в программе "рецепты". Там этим называлось - пробит заказ, и со складов списались все продукты). Вернусь к сюжету. Например нажимаем на блок "бульон" - и можно его заменить на любой другой "свинной", "верблюжий"... Или вплоть до любых деталей все ингридиенты, кулинарные обработки настраиваем. Нажимаем "сварить!". Где-то неподалёку на "кулинарном комбинате" зашевелилась куча машин, всё это изготовила, упаковала. И за пару минут прислала по "почтопроводу" до квартиры. (Почему-то почтопроводы не получили развития и распространения. А как здорово было бы. Хотя он тут вобщем-то непричём. Но курьер с кастрюлей супа как-то нетак воспринимается). Ну и вообще. Или книжку сверстал и так же получил с качественной печатью. Или любое электронное устройство спроектировал. Что угодно. Концепция "гибкого производства". Разные полностью автоматические конвейеры (кулинарные, типографические, электронно-технические) настолько гибкой организации, что им разные продукты выпускать не сложнее чем один типовой.

Анонимный автор · 13 ноября 2009

Re: про кулинарию

Да. Или это просто на сайте ресторана/столовой происходит. Делаем заказ, через время туда подходим - там всё сварено как надо (людьми или автоматами).

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

beskov · 13 ноября 2009

Комментарий

Имя не сохранено · 13 ноября 2009

Re: вспомнил классика

На самом деле, часть книг в 90е так и писалась, как будто для исполнения компьютером - "делай раз, делай два".Результаты часто были плачевны - набор шаблонных кусков кода в голове без понимания сути. Ибо обучение (ИМХО) - это всё-таки образование смысловых (ассоциативных) цепочек, а не заучивание магических пассов. А кулинария, скорее, fuzzy logic. Которую сейчас весьма используют во встроенных системах типа камер.

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

Имя не сохранено · 13 ноября 2009

Комментарий

То есть, книжки писали не для программистов, а сразy для компьютеров? Мне, видимо, повезло, попадались только книжки Вирта, Дейкстры и Хоара. Но я и не программист. А кулинария, скорее, не fuzzy logic, а логика, основанная на обратной связи. То есть, проверка резyльтата и многократное повторение с yчетом ошибок заложены в самyю основy, а не прилагаются, как полезное добавление.

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

Имя не сохранено · 13 ноября 2009

и мало их...

Да, я тоже начинал с "Языки программирования: разработка и реализация" Т.Пратта (2е издание), потом Хоар, Дийкстра, Кнут. И я тоже уже много лет не считаю себя програмистом, хоть и кодирую иногда. Но опыт общения показывает, что подавляющее (в обоих смыслах подавляющее) большинство практических программистов из списка Кнут, Пратт, Дийкстра, Хоар, Кей (который Алан) знают только первого. И то - понаслышке, трехтомник его даже не смотрели. Книга Кернигана и Пайка содержала задачки, требовавшие вдумчивого разбора. Книжки из серии "нейрохирургия за 20 уроков" (ой, простите - С++) в большинстве своём писаны именно так - для пошагового исполнения. И примерно как кулинарные, тоже упускают часть знания - там тоже ведь никто не описывает, как отличить - достаточно ли взбит крем, достаточно медленно стекает капля и т.д. В общем, человеческое знание, перенесеное на носитель, во многом "Упанишады" - переводится как "сядь рядом".

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

Анатолий Левенчук · 13 ноября 2009

Комментарий

Спасибо, не знал. Хотя я вчера про собственно требования вынул из недр сети еще несколько книжек: мы все плотнее и плотнее темой требований занимаемся -- но идем к ней "сверху", из общего контекста системной инженерии.

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

Имя не сохранено · 13 ноября 2009

Комментарий

В дорогом моему сердце "Кафе-баре-сауне" (aka АРЭШ) меню и цены не поменялись. А редизайн мне не нравится.