[Freeschool] Pascal vs. C (was Re: чему стоит учить в школе)

Andrey V Stolyarov =?iso-8859-1?q?crocodil_=CE=C1_croco=2Enet?=
Пн Окт 27 00:03:22 MSK 2008


On Sun, 26 Oct 2008, Denis Kirienko wrote:

> Все это имеет место быть в C++. А строки в С++ можно складывать и в
> стандарте :)

Всего этого _нет_ в C++, всё это есть в стандартной библиотеке к
C++.  А библиотека C++ такова, что обучать ей нельзя даже
студентов, не говоря уже о школьниках.

> То есть я не вижу причин, чем Pascal лучше для обучения,
> чем C++ (скажем так, лучше, чем правильно выбранное подмножество C++).

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

Да.

> На любом языке можно учить культурному программированию,

Нет. И уж точно невозможно это делать, применяя усечённое
подмножество STLя.

> а можно учить - бескультурному программированию.

> Вот Си отличается от Паскаля тем, что на Си если целенаправленно
> не воспитывать культуру программирования, то скорее всего
> результат будет плохим.

Причём, если даже целенаправленно воспитывать -- результат всё
равно получится никакой.  Проверено многократно.

Да, и всё-таки, давайте не путать Си и Си++, тем более с
использованием STL.

> И на Паскале можно писать бескультурно,

Можно, но язык таков, что он это, я бы сказал, дестимулирует.  То
есть написать хреново на Паскале можно, но труднее, чем написать
хорошо.

> но язык там более строгий и более высокоуровневый, на нем тяжелее
> написать плохую программу при прочих равных.

Паскаль изначально придуман именно как учебный язык, он _требует_
определённой дисциплины.

Си придуман как заменитель ассемблера, чтобы переписать на нём
операционную систему.  О культуре его создатели вообще не думали.

Си крив сам по себе, имеет чёрт-те какую семантику, того нет,
этого нет, зато препроцессор есть.  Это жуть с ружьём, а не язык.
Мы его _терпим_ как единственную альтернативу асму.  При этом не
надо всё-таки забывать, насколько этот язык мерзок.

> Не столь важен сам язык, сколько преподаватель. Но и на Си
> требования к культуре преподавателя выше.

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

> Пример: пока школьник не напишет быструю сортировку массива про
> стандартный sort я ему не расскажу. А если он сам про него
> узнает - запрещу им пользоваться.

По той же самой причине вообще-то нельзя позволять использовать
vector или list до того, как человек освоит шаблоны -- а также и
списки, и динамические массивы.  И нельзя позволять использовать
строки до того, как человек освоит массивы.  Да что там, нельзя
позволять использовать realloc до того, как человек не сподобится
сделать изменение размера массива вручную.  Странно, что это не
очевидно.  Впрочем, дело даже не в этом.

Что подумает ученик, когда его заставят написать некую хрень, а
потом расскажут, что эта хрень на самом деле уже есть? Правильно,
он подумает, что учитель вредина и хмырь болотный.  И это всё,
что он подумает.  И сравнения строк это тоже касается.  Потому
что в ученика сначала вбивается некое умение, а потом ему
демонстрируют, что умение-то, оказывается, не нужно -- тут уже
всё есть.

Так вот, отвечая на ваш вопрос про школу номер какую-то.  Не
знаю, я не спрашивал студентов, кто из какой школы.  Я только
знаю, на собственном опыте, что _все_, даже самые способные
студенты, начинавшие обучение программированию с Си, выносят из
такого обучения великолепную коллекцию внутричерепных тараканов.
Контрпримеров пока (за девять лет) не было.  И не из всякого
черепа всю эту веселую тараканью компанию удаётся изгнать.

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




--
avst


Подробная информация о списке рассылки Freeschool