Писать код ≠ программировать

Mar 05, 2024 14:34


Как некоторые знают, Никлас Вирт придумал язык программирования Паскаль не для того, чтобы отвлекать российских школьников от говнокодинга на «самых лучших» языках C# и Python, а для обучения программированию как науке. Судя по тому коду, что я видел у наших программистов, кодить они научились, а программировать - нет.

И для того, чтобы сложный синтаксис и множество операторов не отвлекали учащихся от постижения предмета, Вирт намеренно минимизировал структуру языка - включил туда только совершенно необходимые конструкции. Так же поступил и с набором стандартных функций. Зато добавил возможность конструировать пользовательские типы данных.

Однако, некоторые недостатки всё же остались. Например, в операторах if и for, while вложенной конструкцией был только один оператор, из-за чего при необходимости написать несколько приходилось заключать их в операторные скобки begin...end. А цикл until изначально допускал любую последовательность вложенных операторов. Так же в языке отсутствовал оператор досрочного выхода из цикла или процедуры - выход допускался только по достижению конца тела процедуры. А ведь есть много случаев, когда где-то глубоко внутри вложенного цикла выясняется, что решение невозможно, и надо завершить процедуру с соответствующим результатом.



С другой стороны, Вирт сохранил в языке оператор goto, который позволил обойти только что описанную проблему выхода из цикла. Но этот же оператор позволил студентам по старинке строгать спагетти-код, так хорошо знакомый фортран-кодерам, чего Вирт старался избежать.

Эти и некоторые другие недостатки были исправлены в другом изобретении Вирта - языке Модула-2. Новый язык содержал средства не только для обучения, но и для промышленного программирования. Но в то время уже широко пошел язык C (а кто помнит A и B?), и Модула-2 конкуренцию не выдержала. А язык Паскаль прочно занял нишу учебного языка. К сожалению, многие преподаватели не понимают разницу между изучением программирования и изучением языка программирования, отчего без раздумий грузят шестиклассников инкапсуляцией, наследованием и полиморфизмом на С++, когда те еще не вкурили даже линейный поиск.

программирование, наука, computer science

Previous post Next post
Up