On Thu, 19.03.2009 11:56:37 , Aleksey Cheusov wrote: > > > Нет. Такие аргументы пошли в ответ на твои не менее сомнительные > > заявления об императивности 99% алгоритмов "изначально от > > рождения". Никакого подтверждения этим словам так и не было > > предоставлено (т.к. такое подтверждение и не может быть предоставлено по > > определению: это ведь в лучшем случае художественное преувеличесние). > Достаточно открыть какого-нибудь Сэджвика и убедиться в этом наглядно. > "На пальцах" посчитать так сказать. > > functional algorithms - это активно исследуемая тема. Ссылки я уже > приводил. В 95-м году построить систему почти всегда (но есть не для > всех исследуемых в диссертации задач) эффективно реализует > примитивнейшие алгоритмы, записанные в функциональном виде, придуманные > в 60-х! При всем уважении -- это очень странный подход. > > > Более того, некоторые задачи можно алгоритмизировать гораздо красивее, > > если не считать их "императивными от рождения". > Некоторые - да. Например, когда речь идет о _примитивной_ обработке > рекурсивной структуры данных, скажем, дерева или списка. Это и есть > примерно 1%, хотя, если честно, гораздо меньше. ФП в лисповском > понимании не представляет НИКАКИХ инструментов для обработки графов, > например. А графы - это я даже не знаю, сколько процентов задач. Давай всё-таки не будем игнорировать разницу между утверждениями "99% алгоритмов -- императивные" и "1% алгоритмов -- функциональные". Даже если второе верно, то не станешь же ты утверждать, что других парадигм вообще не существует или что они входят в этот же 1% алгоритмов?
Опять же: я не спорю, что 99% задач (и даже больше) можно решить императивным подходом. Я лишь говорю, что далеко не для 99% именно этот подход окажется оптимальным. Пример, который я лучше всего знаю: тот самый внутренний язык ABBYY, о котором я говорил выше. Его задача -- поиск плавающих полей на документе, с целью их последующего распознавания. Изначально эта задача решалась на C/C++ (это было ещё до меня). Со временем стало понятно, что нужен свой язык, который реализовали, насколько я знаю, на тех же C/C++. Язык менялся на протяжении времени, постепенно всё лучше затачиваясь под свои задачи; я застал одно фундаментальное изменение и множество косметических. Но ни в одной из реализаций я не назвал бы этот язык императивным даже приблизительно. > > А самая трудная категория обучаемых -- это как раз были люди, > > испорченные императивным подходом (в данном случае я отвечаю за свои > > слова). > Ну вот опять, "испорченные императивным подходом"... Может, они были > просто испорченные, Безотносительно имеративного подхода? Если бы ты при цитировании не проигнорировал мою классификацию, то было бы видно, что корреляция достаточно убедительная. Повторюсь: возможно проблема в том, _как_ их учили. Но вот в учебниках по императивным языкам я эту проблему видел массово. Когда я преподавал основы Си, я каждую свою лекцию писал с нуля, потому что то, что мне дали, не удовлетворило меня ни в какой своей части. А вот лекции и учебники по функциональному или логическому программированию, которые я видел позже, не обладали этим недостатком за единственным исключением. > > Они настолько привыкли мыслить линейно, что подняться над задачей и > > оценить картину в целом, а не только прокладывать отдельные маршруты, > > были не в состоянии; а там без этого никак. > Способность человека "подняться" над задачей - не зависит от того, что > он предпочитает, функциональный или императивный подход. Я, например, > предпочитаю декларативный, если это возможно. И это НИКАК не связано с > функциональщиной в общем случае. Умею я подняться над задачей в этом > случае? Мы ведь говорим не о предпочтениях, а об обучении, верно? ФП же, снова повторюсь, это только пример, и его многие советуют, на мой взгляд, ещё и потому, что хороших книг по нему больше, чем по тому же логическому. Но вот плохих по обоим этим подходам явно меньше, чем по императивному, даже в процентном отношении. Да и по декларативному тоже меньше, как бы этот термин ни понимать (а его в любом понимании императивному противопоставляют в той или иной степени). Это, на мой взгляд, тоже о чём-то говорит. > > Могу согласиться, что дело > > не столько в самом императивном подходе, сколько в том, _как_ их ему > > обучали. Но эти люди действительно были испорчены таким обучением. > Вопрос КАК преподавать программирование - это отдельный, гораздо более > общий вопрос. Конечно, у меня есть по этому поводу мнение... Более общий -- да, но не столь уж отдельный. -- С уважением, Тихон Тарнавский. http://linuxforum.ru http://posix.ru -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

