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

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


On Mon, 27 Oct 2008, Dmitriy M. Maslennikov wrote:

> 27 октября 2008 г. 0:03 пользователь Andrey V Stolyarov <crocodil на croco.net> написал:

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

> А можно узнать подробнее, почему нельзя ей учить студентов?

Потому что студент, начавший изучение C++ с STLя, уже никогда не
поймёт, что такое C++ в действительности.  С++, к которому в
нагрузку прилагается это идиотское поделье нашего бывшего
соотечественника, объевшегося сырой рыбы и от нехрен делать в
больнице придумавшего STL, при этом -- по его собственному
признанию -- не умеющего пользоваться наследованием -- так вот,
C++ в таком "комплекте" представляет собой просто ещё один язык
высокого уровня, ничем принципиально не отличающийся от Java или
там C#.  То, что на самом деле C++ -- это единственный в своём
роде язык программирования произвольного уровня абстрагирования,
допускающий как программирование низкого уровня ("почти как на
асме"), так и программирование уровня произвольно высокого, то
есть действительно сколь угодно высокого, ибо при наличии
абстрактных типов данных и средст переопределения арифметических
операций мы можем навертеть абстракций сколь угодно сложных --
вот это как раз остаётся за кадром, ибо какие могут быть
разговоры о низкоуровневом программировании, когда весь код
состоит из инстанциаций темплейтов.

Кстати, и шаблонами как таковыми обычно студенты после такого
обучения не владеют, потому что создаётся у них впечатление, что
все эти шаблоны давно уже написаны и уметь ими пользоваться не
нужно.

А феерические приключения на этапах отладки и сопровождения,
которыми приходится расплачиваться за сомнительную экономию
времени кодирования, воспринимаются уже как должное по принципу
"а как же иначе".


> И кого в таком случае ей учить?

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

Этих людей учить ничему не надо, они при необходимости освоят STL
самостоятельно.

Следовательно, ответ на ваш вопрос будет очень простой: никого не
надо учить STLю.  Никого и никогда.




--
avst



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