Без заголовка
> Полностью отстроиться от... соображений организации образования
Ваши содержательные рассуждения мне интересны, а мои замечания частные, периферийные.
Но полностью ингнорировать школьную практику странно. Примерно как, игнорируя ограниченный срок жизни современника, обдумывать оптимальную программу формирования инженера в несколько веков.
Насчет любимого мной Паскаля. Не просто принимают задачи на С++. А Паскаль у призеров редкая редкость. Я уж не вспомню когда я его в топе видел. Только олимпиадники, остающиеся в рамках необременительной чуть прокачанной школьной программы, на Паскале пишут, но дальше муниципального уровня не идут.
> на одном языке можно описывать другой язык, и делать это формально -- это знание фундаментально
И открывается оно прежде, чем навык программирования успевает сформироваться. Дети -- транслятор только строгая машина, действует формально, не вникая в ваш замысел. Как же он тогда ошибки указывает? А вот синтаксические диаграммы Вирта. Можете представить себе синтаксический анализатор в виде тележки, катающийся по линиям этих диаграмм. Не пишите синтаксической отсебятины -- вспоминайте синтаксические диаграммы. Это такой метаязык, описание синтаксиса языков программирования.
А вот более удобные для анализа формы Бэкуса-Науэра...
А вот от них веточка к регулярным выражениям...
А вот дурацкая тайловая LEGO Education, которая тормозит на наших ноутбуках и редактирование этих схем отжирает уйму времени, а на многих турнирах писать на чем-то более удобном нельзя. Какой выход? Написать в этой тайловой среде базовые блоки и интерпретатор простеньких линейных программ в виде текстовых строчек -- одна две буквы в имени команды плюс необязательный числовой параметр -- объем кода уменьшиться в несколько раз, а самая громоздкая его часть в удобном текстовом виде...
> знание графового алгоритма в жизни нужно довольно редко,
> а когда оно нужно, то часто можно найти библиотечку
Это если вам нужен кратчайший путь, остов, обход, или проверка связности... А графы очень удобно использовать как промежуточные представления при оценке сложности решения. Вот фиг его знает с какого конца подходить к какой-нибудь комбинаторной задачке. А давайте выделим пару сущностей, введем связь между ними, покрасим вершины в красное и черное -- ясности сразу прибавится. И вот эти промежуточные представления в библиотечках не найти. Их под задачу изобретают.