[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl or Python?



On 2009.03.19 at 16:36:52 +0200, Aleksey Cheusov wrote:

> > Давай всё-таки не будем игнорировать разницу между утверждениями "99%
> > алгоритмов -- императивные" и "1% алгоритмов -- функциональные".
> Пардон, между этими утверждениями я разницы не вижу :-)
[skip]
> Абсолютное большинство проблемно-ориентированных языков, с которыми по
> работе (Invention Machine corp.) приходится сталкиваться мне --
> декларативные.  Но при этом к функциональщине ни один их них не имеет
> никакого отношения. А вот реализация практически всегда проще делается с

И ты по прежнему не видишь разницы?


> Учить нужно преимущественно не конкретным ЯП, и не только парадигмам, в
> них заложенным. Но еще и правильному дизайну и общей культуре
> программирования. И нет, правильный дизайн - это никакой не UML.  И

Вот-вот. Правильный дизайн - это всегда top down. Чему использование
функциональной парадигмы для декомпозиции задачи крайне способствует.

> делать это можно с помощью open source. Open Source - это Большая
> Школа. И этим можно и нужно было бы воспользоваться, вовлекая студентов
> во всякие программы типа SoC (туда и некоторых преподавателей засунуть
> не мешало бы :-/). На мой взгляд, Школа - это одна из главных функций
> open source, как социального явления.

Есть такое дело. К сожалению, на программный код, как и на тексты на
естественных языках, распространяется закон Старджона "90% написанного -
дерьмо". И если в текстах, как правило, текст либо дерьмо целиком, либо
целиком может использоваться в качестве примера если не "как надо", то
"как можно", то в софтверных проектах, где, как правило, перемешан вклад
многих людей, отделить мед от дегтя куда сложнее.

Поэтому я бы не стал рекомендовать учиться путем чтения существующего
кода НОВИЧКУ. Это необходимый этап для intermediate и advanced.

> Основа основ программирования -- это алгоритм. Функциональная же

Вот с этим утверждением - не соглашусь. Алгоритмы - это крайне узкий
частный случай программирования. Для большинства real world задач
сформулировать алгоритм непросто, да и не нужно. 

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

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


Reply to: