> -- ScrollLock писал(а):
> И еще по поводу концепций - что значит отделять концепции от языка? Всё равно их будет нужно разбирать на конкретном языке, и лучше это делать на популярном языке.
Лучше это делать на том языке, который это позволяет лучше показать
При этом даже осмелюсь утверждать, что при переходе от базовых курсов программирования к специализированным ценность Оберона (но тут уже конкретнее - Компонентного Паскаля, как промышленной его версии) по сравнению с мейнстрим-языками не падает, а увеличивается.
Показать все ключевые концепции построения программных систем можно гораздо быстрее.
Например, я убеждён в таком парадоксальном на первый взгляд тезисе:
самый короткий путь научить студента хорошо программировать на Яве/Шарпе - это показать все принципы компонентного программирования в курсе изучения КП, а потом рассказать, как эти принципы отображаются в мейнстриме.

Процитирую себя с того же форумаhttp://pedsovet.org/forum/index.php?sho ... 763&st=90#
> -- Цитата:
> Просто-то просто - да переход не взаимно однозначный... Я уже приводил Вам пример.Возьмем Компонентный Паскаль и Яву. Технологически языки совершенно одного ранга, технически - совместимы до того уровня, что существуют реализации, где на базе ОС (или рантайма), написанной на КП, крутятся классы Явы - в том же адресном пространстве, с одним сборщиком мусора, непосредственно взаимодействуя с модулями КП, и наоборот. (На самом деле между Явой и КП сложные отношения - Ява создана по прямым влиянием идей Оберона, а КП как развитие Оберона создавался уже сознательно для создания альтернативы Яве и возможности совместного использования).Так вот, а теперь посмотрим на применение в обучении (буду иметь в виду студентов). Есть базовые понятия программной инженерии - модуль (элемент архитектуры), тип данных (в том числе АТД, в т.ч. объектный, элемент модели проблемной области), процедура (в том числе метод объектного типа, элемент программной логики)... Я могу легко показать всё это на базе КП. Показать процедурную архитектуры, показать модульную, объектно-ориентированную, и наконец - компонентную. И как прекрасный пример компонентной системы и использования ОО-паттернов (например, описанных в известной книге Гаммы и др.) - сам Блэкбокс (который в открытых исходниках). Таким образом, у меня есть прекрасная платформа для насыщенного курса по конструированию программных систем.А что мне даёт Ява, которая технологически как бы аналог КП? После курса на КП мне достаточно объяснить, каким образом все эти прекрасно усвоенные понятия (тип данных, модуль, компонент и т.п.) отображаются в конструкции Явы. И отображаются-то они весьма легко - да только в одну единственную конструкцию класса! Опаньки - и приехали. Более объёмный, более навороченный язык является в архитектурном смысле "ассемблером" для КП, на который можно легко оттранслировать, но с потерей всех оттенков высокоуровневой семантики...И теперь вопрос - как я мог бы построить тот же самый курс с самого начала, применяя не КП, а Яву? Каким образом можно научить новичка понимать и чувствовать все эти архитектурные тонкости, если они в языке не отражены напрямую, а только эмулируются через единственное семантически перегруженное понятие? Если у опытного разрабтчика в голове и то не всегда всё ясно - где класс выступает в роли модуля, где - в роли ТД, где - в роли контейнера для процедур... А если учесть ещё возможности бессмысленных смешений семантики... Т.е. учить разработке ПО на базе Явы по сравнению с КП - всё равно, что учить алгоритмизации вместо ЯВУ на ассемблере...Вот вам конкретный пример.