Программирование калечит мозг

Одной из целей появившегося в конце 80-х школьного курса информатики, как декларировали его создатели, является развитие у учащихся некоего «алгоритмического мышления». К сожалению, они не дали четкого определения, что это такое — можно разве что посоветовать прочитать часть А1 в книге А. Г. Кушниренко для учителей информатики. Среди потоков красноречия можно найти разве что попытку объяснить, что такое пресловутое алгоритмическое мышление — это «тот стиль мышления, методы и способы, которые необходимы для перехода … от умения сделать к умению записать алгоритм».

Я бы добавил — и прочитать. Например, все видели у кассиров в супермаркете или операционистов в банке листочки с последовательностью действий по обслуживанию клиента? Так вот, говорят (пруфлинк потерялся, его не будет), что огромную сложность вызывает введение в эти инструкции простейших ветвлений. «Почему-то» обычному человеку они даются гораздо труднее, чем машине Тьюринга. Можно сказать, что «нормальным» для потомков обезьян является «объектное» и «логическое» мышление.

Насчет последнего, я правда, сомневаюсь. Кант, например, утверждал об априорности логики, то есть о том, что она не есть результат опыта, а дана нам «от рождения». Возможно, для «европейца» это так, а попытки задать неграм в Африке простые задачки типа «Паук и черный олень всегда вместе едят. Паук ест. Ест ли олень?» наталкивались на их, негров, полное непонимание. Белый человек, неспособный к таким рассуждениям, автоматически записывается в идиоты — и, с течением истории, все больше и больше «идиотов» исключаются из естественного отбора. В общем, можно считать, что история европейской цивилизации — это история положительного естественного отбора людей, способных к логическим рассуждениям.

Конечно, оба вида мышления необходимо развивать — в чем и состоит одна из задач педагогики. Но не становится ли развитие третьего вида, алгоритмического мышления, помехой для первых двух? Мне кажется — да, и особенно — для логического. В комментах к этой записи, например, можно найти целых двух программистов, отрицающих такой памятник логического мышления, как юриспруденция, и считающих правильным заменить законодательство в виде базы знаний на совокупность алгоритмов.

Почему-то очень часто оказывается, что развитое «алгоритмическое мышление» подменяет другие его виды — которые, несомненно, могли бы быть развиты в той же степени. В обосновании необходимости «всеобщего» обучения программированию Кушниренко пишет, что необходимо «развивать все стороны мышления, которые можем выделить» — но при этом не говорит ничего о том, что развитие одного может привести к «недоразвитию» другого. Вряд ли «алгоритмическое» мышление можно признать столь же универсально необходимым, как другие его виды — фактически, оно нужно только в профессиональной деятельности программиста, в то время, как, скажем, «логическое» мышление необходимо в гораздо большем числе ситуаций — от математики до юриспруденции.

Обучение программированию представляется мне чем-то схожим с, например, методами компрачикосов. Почему-то нанесение физических увечий для будущей «профессиональной деятельности» — то бишь попрошайничества — считается ненормальным и в «цивилизованном» обществе однозначно осуждается. А вот попытки так же покалечить мозг и, скажем, его способность к логическому стилю мышления, предпринимаемые с похожей целью — разве что попрошайничество заменяется программированием — почему-то не только не осуждаются, но и одобряются (в первую очередь самими программистами, но не только ими).

Программирование калечит мозг: 7 комментариев

  1. Может, у меня, к сожалению, не совсем всё хорошо с математическим пониманием этого дела — но ведь на уровне того же программирования и функциональное, и логическое вполне через алгоритмическое выражаются, и наоборот. Так если одно транслируется в другое и обратно, в чём принципиальная разница? Только в том, что так понять могут, а эдак — нет?

    1. В общем, да. «Математику» с хорошо развитой логикой проще понять всякую теорию конечных автоматов и работу машины Тьюринга, чем писать программы — соответственно, для программиста имеем обратное.

    2. Если заумно, то

      логическое (я подразумеваю функциональное) программирование — строго детерминированное и строго теоретически проверяемое. «Логическая программа» — эту есть композиция функций, которая может быть исследована старым добрым матанализом.

      алгоритмическое программирование — совершенно, напротив, хаотическая система, в которой (см. Г. Буч) камень брошеный вверх может в любой момент времени поменять вектор скорости в любом направлении и на любую величину. Предсказать такое поведение анализированием кода математическими методами невозможно.

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

  2. Если честно, то я не понял, почему «алгоритмическое мышление» в статье идёт в противовес «логическому». Вся работа компьютера — это чистейшая математика.

    Человека делает «программистом» лишь осознание такой простой аксиомы, как «компьютер сделает ровно то, что ему скажешь на его языке». Дальше идёт по сути описание языка. Это то, что относится именно к «программированию», что касается остального, то алгоритмы — это математика, взаимодействие всяческих устройств — это математика и физика.

    Так что же здесь должно калечить мозг?

    1. «Вся работа компьютера – это чистейшая математика.»

      С этого места поподробнее.

      » алгоритмы – это математика»

      Да ладна?

      1. Нет, на самом деле «в этом что-то есть» — например, на мехмате МГУ курс по этой книжке:

        http://www.mccme.ru/free-books/shen/shen-logic-part1.pdf
        http://www.mccme.ru/free-books/shen/shen-logic-part2.pdf
        http://www.mccme.ru/free-books/shen/shen-logic-part3.pdf

        назывался «Математическая логика и алгоритмы» — но в любом случае все это страшно далеко от «практического» программирования.

        Хотя кому-то и коды Хэмминга — математика :) Срался тут в ЖЖ с одним таким «математиком со специализацией в системном программировании», круче может быть только слесарь-гинеколог.

  3. Это «разные уровни понимания». Математика дает только теоретическое обоснование, всякую Тьюринг-полноту и прочие интересные вещи — и здесь действительно используется язык матлогики. Но при этом математика не объясняет, как надо писать программы.

    «Логическое» мышление — это переход от посылок к выводам, «алгоритмическое» — от умения сделать к записи алгоритма. Это совершенно разные вещи, но при этом хорошо развитое второе вместе с некоторыми специальными знаниями мешает развитию первого.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *