[an error occurred while processing this directive]
No, все не так. У нас все дела принято делать "подумавши". Все определяется даже не сложностью, а уровнем решения задач.
(«Телесистемы»: Конференция «Программируемые логические схемы и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено SSE 19 июля 2002 г. 08:30
В ответ на: странный пример: один сделал подумавши, а другой нет. причем здесь метод описания? отправлено yes 16 июля 2002 г. 11:29

Разговор этот долгий, но попробую обьяснить свою позицию.

Я имею ввиду не формализованные задачи (в виде ТЗ, пусть даже сложного и "ветвистого", но каждый пункт которого предельно ясен, это-то как раз просто), а нечто другое. Задачи типа "хотелось бы, чтобы система вела себя таким-то образом".
И вот тут, между такой постановкой и конечным результатом в виде конкретной программной реализацией, возникает необходимость эту задачу алгоритмизировать. При этом возможны разные варианты.

Вариант 1. Фатальный. Можно сдуру "захотеть" решить такую задачу, которая заведомо не имеет решения, хоть это изначально и не очевидно.

Вариант 2. Тривиальный. Алгоритмические решения сразу видны и быстро без напряга формулируются, а потом программируются.

Вариант 3. Промежуточный и самый интересный. При внешне простотой формулировке на макро уровне ("что хотим"), алгоритмизировать задачу может оказаться очень сложно. Но, при всем при этом (парадокс!), решающий алгоритм может оказаться почти тривиальным.
Вот только при его "выводе" можно все зубы переломать.

Приведу пример. Когда я молодым спецом попал в одну "смешную" контору, там было признаком хорошего тона в обеденный перерыв играть в шахматы.
Но на несколько месяцев эти незыблемые устои были подорваны еще одним "студентом", который пришел в эту контору вместе со мной.
Он всем желающим предложил поиграть с ним в другую игру.
Добыл где-то бухгалтерские счеты. Выбрасывается произвольное количество костяшек на каждой спице. Играют двое. Каждый по очереди делает "ход", сбрасывая на любой спице (но только на одной!) произвольное количество костяшек. Проигрывает тот, кто сбросил последнюю.

И вот в этой внешне примитивной игре НИКТО, даже шахматные мастера и КМСы, у него НИ РАЗУ не смогли выиграть. А он делал ответные ходы мгновенно, почти не задумываясь.
ОН ЗНАЛ АЛГОРИТМ ВЫИГРЫШНОЙ СТРАТЕГИИ! Но, мерзавец, никому его так и не выдал, а предопределенностью результата довел публику до белого каления.
Главное, всем было очевидно, что алгоритм этот - очень простой.
На пару месяцев народ забыл про шахматы, пытаясь вычислить этот алгоритм. НО! Никому это так и не удалось!
Хотя самолюбие всех шахматных корифеев было настолько уязвлено, что пытались они сделать это всерьез и исключительно "подумавши".
Я, кстати, до сих пор его не знаю.

И ведь вот что замечательно. Если бы, допустим, об этой игре мы узнали каким-то другим образом. И, допустим даже, поиграли бы в нее между собой. Но ведь, не обнаружив в ней ничего интересного, просто бросили бы скоро, ДАЖЕ НЕ ЗАПОДОЗРИВ, ЧТО ТАКОЙ АЛГОРИТМ СУЩЕСТВУЕТ!

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

Вот тут-то и нужна интуиция! Ведь я, как руководитель проекта, даже требовать не могу от своих программистов найти такое решение, поскольку, ПОКА ОНО НЕ НАЙДЕНО, - НЕТ НИКАКИХ ДОКАЗАТЕЛЬСТВ, ЧТО ОНО ВООБЩЕ СУЩЕСТВУЕТ.
И дело это на поверку оказывается весьма интимным, никакого коллективизма тут быть не может в принципе, и, по большому счету, очень ответственное.

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

На самом деле, все обстоит еще сложнее, поскольку "поведенческий" способ постановки общей задачи подразумевает отсутствие полной определенности уже в самой постановке (можно так, а можно и так: и то, и другое задачу решает). А вариации в рамках этой неопределенности могут очень сильно влиять на сложность соответствующихи им алгоритмов.
Сейчас для решения подобных задач создаются новые математические инструменты: теория нечеткой логики (Fussy Logic). WAVELET - суть подбор "хорошей" системы базисных функций под конкретную задачу - та же песня.


Результаты различных в этом смысле философий и вероисповедания проще всего проиллюстрировать на известных всем примерах.

Почему FreeBSD на протяжении многих десятилетий остается одной из самых компактных и при этом очень эффективной операционной системой? Да потому, что в Беркли постоянно занимаются такого рода "селекцией" и на базе самых изящных решений разного уровня непрерывно ее оптимизирует.

А Гейтс со товарищи тупо пишут коды, совершенно не заботясь об эффективности своих "решений".
И этот финт у них проходит лишь по одной простой причине: именно в таких "решениях" заинтересованы производители железа (непрерывно растущие Hardware-ресурсы должны быть чем-то заполнены, иначе у пользователей исчезнет мотивация покупать новые компьютеры).
Но именно поэтому ни один грамотный сервис-провайдер никогда не будет рассматривать всерьез даже возможность использовать Винды для построения сетевого маршрутизатора (к примеру), хотя возможность такая гипотетически существует.
Именно поэтому на компьютерах, от которых требуется высокая производительность в сочетании с высочайшей надежностью (WorkStations) мировые брэнды тоже брезгуют ставить Винды.
Вот это и есть на поверку индикатор качества продукта.
А то, что это самый распространенный в мире софт, ровным счетом ничего не значит. Ширпотреб, главная задача которого - всемерное увеличение продаж новейшего железа.
Чем хуже, - тем лучше. Плюс изощренная балансировка на грани приличий по отношению к потребителям и конкурентам.
Плюс масса ненужных и неэффективных, но разукрашенных цацек.
Плюс истошные вопли о пиратстве одновременно с вбрасыванием на черный рынок фирменных "левых" дистрибутивов.



Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru