README.md

Последнюю версию можно скачать здесь: https://czaerlag.ru/klauslang/klaus-v1.7.1.zip.
(или в разделе “Релизы”, но это требует регистрации).

Инсталляция не требуется. Достаточно распаковать архив и запустить исполняемый файл:

  • klaus — для выполнения программы в командной строке
  • klaus-ide — для редактирования и отладки исходного кода

Для самостоятельной сборки проекта используйте Lazarus 3.2.

Клаус: язык программирования по-русски

Памяти Никлауса Вирта.
С благодарностью Дмитрию Тарасевичу и Анне Михеевой.

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

Синтаксис языка в основном следует традициям Паскаля и Ады с некоторыми модернизациями. При разработке авторы уделили много внимания тому, чтобы исходный код читался на русском языке как можно более естественно.

Несмотря на следование традициям, Клаус не является «прямым переводом» на русский Паскаля, Ады или какого-либо другого языка. Это современная, самостоятельная разработка, специально предназначенная для русскоязычной аудитории.

Программное обеспечение распространяется бесплатно по Стандартной общественной лицензии GNU GPLv3 или более поздней версии.

Внешний вид

Документация и примеры

Мы следим за тем, чтобы Справочное руководство по языку всегда соответствовало действительности.

Возможности

  • Строгая типизация;
  • Полная поддержка UTF-8 на уровне языка;
  • 7 простых типов данных: символ, строка, целое и дробное число, момент (дата/время), логическое, объект (handle);
  • Составные типы: многомерные динамические массивы, словари и структуры с возможностью комбинирования произвольным образом;
  • Условное ветвление и многовариантный выбор;
  • Циклы по счётчику, «для каждого», по предусловию и постусловию, инструкции управления циклами;
  • Процедуры и функции с входными, выходными и проходными параметрами;
  • Локальные процедуры и функции неограниченного уровня вложенности;
  • Рекурсия, предварительное определение процедур и функций;
  • Всплывающие исключения с параметрами, средства обработки исключений;
  • Возможность выполнения программ в терминале с аргументами командной строки, перенаправлением потоков и конвейризацией;
  • Функции управления терминалом: цветной вывод, канонический и сквозной режим ввода, обработка нажатий клавиш;
  • Библиотека графических примитивов с возможностью открыть несколько окон для графического вывода;
  • Обработка событий клавиатуры и мыши в окнах графического вывода;
  • Редактор кода с подсветкой синтаксиса, пошаговый отладчик с точками останова, просмотром стека вызовов и значений переменных в каждом фрейме стека;
  • Версии для Linux и Windows x64.

Перечислимых типов, множеств и модульности пока нет. Но мы над этим работаем! :)

Ключевые достоинства

Понятный

Первые уроки программирования оказываются для неподготовленных детей 9-11 лет очень сложны. В этом возрасте большинство школьников знают лишь основы арифметики и не знакомы ни с алгеброй, ни с геометрией. Они не знают, что такое уравнение, функция, переменное, система координат. Может быть, они умеют складывать простые дроби, а может быть, у них трудности с таблицей умножения. Наверняка они либо совсем не знают английского, либо имеют словарный запас в 20-200 слов.

При этом, на первых уроках детям приходится одновременно:

  • Учиться пользоваться клавиатурой, мышью и текстовым редактором;
  • Осваивать непривычный алгоритмический стиль мышления;
  • Учиться строго следовать синтаксическим правилам;
  • Учиться читать, писать и понимать исходный код на чужом языке, в котором много неочевидных сокращений.

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

Каждая из перечисленных задач сама по себе довольно сложна. И всё перечисленное дети должны понять и освоить прежде, чем они смогут самостоятельно написать первую работающую программу. Это ставит перед учениками очень высокий порог входа. Преодолеть его и заинтересоваться предметом могут лишь самые талантливые и целеустремлённые.

Чем мы занимаемся на первом уроке? Мы ищем буквы на клавиатуре. Листинг “Hello, World!” мы набираем 20 минут… На втором уроке? Правильно, мы продолжаем искать буквы. На третьем? А кто дожил до третьего урока, сохранив интерес, тот молодец и умница! Программировать – это очень просто и увлекательно, верно? :)

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

Чтобы было понятно, о чём идёт речь, вообразите себе: на классной доске написан мелом следующий листинг. Вообразите, что перед Вами лежит клавиатура с грузинскими буквами, и учитель предлагает Вам этот текст набрать, запустить и посмотреть, что из этого выйдет.

პროგრამა გამარჯობა;
დაწყება
    ბეჭდვა("გამარჯობა სამყარო!");
დამთავრებული.

Пожалуй, при достаточной мотивации этому можно научиться. Но теперь сравните.

программа Привет;
начало
    вывести("Привет, Мироздание!");
окончание.

Стало понятнее, не правда ли?

Учебный

Клаус специально спроектирован для обучения структурному программированию и развития алгоритмического мышления. Язык максимально строг, логичен и прост; в нём нет «синтаксического сахара», сомнительных сокращений и неочевидных хитростей, столь ценимых профессиональными программистами.

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

Настоящий

Несмотря на минимализм, Клаус — это полноценный структурный язык программирования, имеющий все возможности, присущие таким языкам: простые и составные типы данных, все общепринятые алгоритмические структуры, подпрограммы, рекурсия, всплывающие исключения и средства их обработки.

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

Иными словами, «песочница» маленькая, но вполне настоящая.

Русский

Синтаксис Клауса разработан с учётом особенностей русского языка.

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

программа Пример;
типы
    Точка/Точки/Точек = структура
        х, у: целые;
    окончание;
    МассивТочек = массив массивов Точек;
переменные
    тчк1, тчк2: Точки;
    мт: МассивТочек;
начало
    длина(мт, 1);
    тчк1.х := 10;
    тчк1.у := 20;
    добавить(мт[0], тчк1);
    тчк2 := тчк1;
    добавить(мт[0], тчк2);
окончание.

Таким образом, появляется возможность создавать исходный код, который читается по-русски почти естественно, и у учеников с первых занятий формируется привычка заботиться о читаемости кода.

Совместимый

Разработка проекта ведётся с помощью многоплатформенной среды Lazarus. На сегодняшний день выпущены и регулярно обновляются версии для Linux и Windows. Сборка для MacOS возможна, но не поддерживается разработчиками, т. к. требует дополнительных объёмов тестирования.

Частые вопросы

Кто вы такие?

Авторы — профессионалы со стажем свыше 20 лет в сфере промышленной разработки программного обеспечения и более 10 лет в сфере педагогики. Язык Клаус специально разработан нами как учебное пособие для школьников — это полноценный структурный язык программирования, написанный полностью по-русски и с большим вниманием к тому, чтобы исходные тексты программ выглядели «по-человечески».

Почему по-русски?

Потому, что так понятнее. Работая на родном языке, мы можем с первых занятий сфокусироваться на изучении базовых принципов и формировании хороших привычек, не отвлекаясь на плохо знакомые слова. Даже те из учеников, кто хорошо знает английский, свой родной язык всё равно понимают намного лучше — и это крайне важно в начале обучения. В конце концов, зубрёжки детям и без нас хватает!

А если по-русски

тогда почему “Клаус”? Разве это по-русски?

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

Доброго пути, Никлаус. Спасибо тебе!

Зачем вообще

учить программировать тех, кто плохо знает английский?

Способности к языкам и способности к программированию — это разные таланты. Поставив учеников перед необходимостью осваивать одновременно два языка — и человеческий, и компьютерный, — мы рискуем потерять тех, кто мог бы стать хорошим инженером. Лучше дать возможность сначала заинтересоваться предметом и понять суть, а лишь затем осваивать все те дополнительные навыки, что понадобятся в реальной работе.

Зачем изучать язык,

который в дальнейшем не будет использоваться?

В профессиональной работе используются многие десятки языков и тысячи библиотек функций. Умение быстро освоить новую среду разработки — обязательное требование к любому профессионалу. Именно поэтому мы сделали Клаус — он хорошо спроектирован, лёгок в освоении, и это создаёт первое, самое важное впечатление: программировать — это просто! А дальше — все современные императивные языки похожи, как близнецы: зная один, легко можно выучить ещё десяток других.
Кроме того, общеизвестно, что технологии разработки, платформы, стандарты, методики — всё это меняется до неузнаваемости каждые 5-10 лет. А стало быть, надеяться научить современных школьников языку, который они будут использовать во взрослой работе — ложная идея. Научить их мыслить и постоянно учиться — вот правильный подход.

Но английский

всё равно необходим любому профессиональному программисту!

Разумеется. Врачи до сих пор учат латынь, хотя со времён падения Рима прошло полторы тысячи лет.
Однако, средняя школа — это слишком рано для профориентации. Наверное, не все наши выпускники станут профессионалами в ИТ — и тем не менее, им придётся жить и работать в мире, где понимание принципов программирования необходимо для любого специалиста, чем бы он ни занимался. К тому же, чем раньше дети поймут, что программировать — это просто, тем вероятнее они выберут ИТ в качестве профессии.

Но язык программирования

— это не синтаксис, а в первую очередь инфраструктура!

Верно. Профессиональный язык программирования — это огромная экосистема: большая среда разработки с массой возможностей, богатая стандартная библиотека, сто тысяч дополнительных библиотек от разных авторов, и прочая, и прочая.
Мы считаем, что на начальном этапе обучения такое обилие возможностей не полезно, но очень вредно. Среда для маленького программиста должна быть настоящей, но маленькой. Возможностей должно быть ровно столько, сколько ученики смогут освоить в ближайшие год-два, не больше. Обилие возможностей порождает растерянность, а нам нужно понимание.
И очень важно: эти немногие из многих возможностей должны быть отобраны не с точки зрения продуктивности для профессионального программиста, а с точки зрения удобства для учителя.

Описание

Клаус -- учебный язык программирования для школьников

Конвейеры
0 успешных
0 с ошибкой