Учебный язык программирования

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая Be nt all (обсуждение | вклад) в 10:54, 8 апреля 2014 (Языки декларативного программирования: викификация, оформление). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

Уче́бный язык программи́рования — язык программирования, предназначенный для обучения. В качестве таковых разрабатывались такие языки как BASIC[1] и Паскаль[2]. Из разработанного для обучения языка ABC вырос Python[3]. Популярным языком, разработанным специально для образования является LOGO[4]. Специально для российских школ разработана языковая среда КуМир[5]. Набирает популярность созданный в Массачусетском технологическом институте язык визуального программирования Scratch и тому подобные среды программирования[6].

Требования к учебному языку программирования

Учебный язык должен обеспечивать простоту, ясность и удобочитаемость конструкций. Излишняя гибкость, «вседозволенность» синтаксиса может затруднить понимание программ. Не слишком хорошо подходят для обучения языки, поощряющие к использованию различных «программистских трюков»[7]. С этим связаны преимущества использования в образовательном процессе языков семейства Pascal перед Си-подобными языками.Шаблон:-1

При выборе языка программирования не играют роль такие факторы, как его новизна, эффективность реализации (в виде компилятора или интерпретатора). Фактор распространённости имеет как психологическое значение (влияя на мотивацию учащихся), так и практическое (востребованность получаемых знаний без необходимости переучивания)[8].

Учебный язык программирования должен обеспечивать плавный переход от псевдокода к собственно программированию. Полезным в обучении может быть возможность использования национальной лексики для ключевых слов и идентификаторов[9].

Альтернативой относительно трудоёмким для изучения комплексным языкам программирования общего назначения могут составить простые миниязыки, в которых, для наглядности, имеется графический исполнитель, вроде черепашки в Лого — первом и одном из самых известных таких языков.[10]

Бейсик

BASIC, англ. Beginner’s All-purpose Symbolic Instruction Code — стал в начале 60-х первым, получившем распространение языком программирования для обучения начинающих. Однако он получил резкую критику за несоответствие принципам структурного программирования и лёгкость создания спагетти-кода. Известно высказывание Эдсгера Дейкстры — «Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации». Под влиянием этой критики создатели Бейсика Джон Кемени и Томас Курц в 1975 расширили язык структурными средствами и отказались от практики использования GOTO. В 80-х годах они создали обновлённый вариант языка, названный True BASIC?![11]. Современные распространённые диалекты Бейсика (QBasic, Visual Basic) имеют microsoftовское происхождение, однако и они имеют мало общего с прародителем, являясь вполне современными структурными языками программирования[12]. Специально для целей обучения созданы следующие диалекты Бейсика.

В школьное образование также внедряется «Visual Basic для Linux» Gambas[17], Доступна бесплатная образовательная экспресс-версия Visual Basic .NET[18].

Языки декларативного программирования

Язык Logo, появившийся на свет между Бейсиком и Паскалем, стал первым языком программирования, изначально предназначенным для обучения детей можно рассматривать как диалект лиспа — языка, с которого началось функциональное программирование[19]. Хотя этот язык более известен своей черепашьей графикой, первым из графических исполнителей, но такие черты лиспа управление последовательностью действий через рекурсию и работа со списками, как основной структурой данных так же остаются свойствами этого (мультипарадигмального по своей сути) языка.

Хотя Пролог — язык, с которого началось логическое программирование, редко рассматривают как язык начального обучения, он легко осваивается теми, кто только начинает изучать программирование. Этому способствует его ориентированность на человеческое мышление, простой, единообразный синтаксис и отсутствие таких конструкций, как ветвления или циклы[20]. Простота изучения была одной из целей дизайна языка, хотя этот язык остаётся недопонятым. Одна из причин малой распространённости Пролога в начальном обучении — отсутствие в нём удобных средств работы с интерактивной графикой, которая не слишком гладко вписывается в чистое декларативное программирование[21].

Современный «академический» диалект лиспа — язык Scheme был изначально ориентирован на образование[22]. Он используется в таком знаменитом курсе компьютерного программирования, как «Структура и интерпретация компьютерных программ». Публикация этой книги не только сделала Scheme популярным языком в университетской среде, но и изменила сам подход к изучению программированию[23]. Этот язык используется также в целом ряде учебников, таких как «How to Design Programs[англ.]»[24], «Programming Languages: Application and Interpretation[англ.]»[25], «Essentials of Programming Languages[англ.]»[26] и др. Обучению программированию с нуля, с использованием Scheme посвящена и книга Даниэля Фридмана[англ.] «The Little Schemer»[27] впервые изданная под названием «The Little Lisper» в 1974 году и ставшая началом своего рода трилогии. Первая книга посвящённая языку Racket, прямому потомку Scheme, «Realm of Racket»[28], также представляет собой учебник для детей.

В 1991 году профессор Лувенского католического университета в Бельгии Герт Смолка начал разработку мультипарадигмального языка Oz. Язык позволяет писать программы в стиле любой из основных распространённых парадигм программирования: как декларативных, таких как логическое и функциональное программирование, так и императивных. Этот язык используется как основа для обучающего курса «Concepts, Techniques, and Models of Computer Programming[англ.]»[29].

Паскаль

Разработанный в качестве развития линии Algol-60 Никлаусом Виртом язык программирования Паскаль автор с самого начала использовал для вводного курса программирования для студентов[2]. Этот язык быстро начал набирать популярность в таком качестве.

Turbo Pascal, Delphi и Free Pascal широко использовался и продолжает использоваться для обучения студентов и школьников. Зародившийся в 2002 году на физфаке МГУ международный научно-образовательный проект «Информатика-21»[30] поставил своей целью внедрение в российское образование системы программирования BlackBox Component Builder[31], реализации компонентного паскаля, диалекта Oberon-2 — объектно-ориентированного языка паскаль-семейства разработанного Виртом. Как и другие языки Никлауса Вирта тот отличается (в том числе от Объктного Паскаля в стиле Borland) минимализмом.

Языки разработанные для российской школы

Для преподавания элементов программирования в рамках курсов информатики было разработан ряд учебных языков программирования с русскими ключевыми словами[32]. В группе академика А. П. Ершова был выработан подход с изучением двух языков программирования — более простого, предназначенного в основном для управления графическим исполнителем, и более продвинутого универсального. В качестве такой пары были разработаны языки Робик и Рапира.Шаблон:-1 Основными российскими образовательными языками являются:

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

Другие

Примечания

  1. Андрей Колесов. Basic — этапы большого пути Авторский вариант. Статья была опубликована c незначительной литературной правкой в журнале «Наука и жизнь» № 10/2000, с. 18—20.
  2. 1 2 Wirth N. Recollections about the development of Pascal (HOPL II), 3.3
  3. The Making of Python, A Conversation with Guido van Rossum, Part I. by Bill Venners, January 13, 2003
  4. Язык Лого на сайте «История компьютера»
  5. Система программирования КуМир → Учебники
  6. Александр Казанцев. Школа. Исполнители и алгоритмы // Linux Format. — январь 2010 г.. — № 126-127 (1).
  7. Psychology, 1990, 1. Introduction, pp. 176.
  8. Выбор языка для обучения программированию, Лобачев Александр Александрович, Куликова Ольга Валентиновна, ИТО-2008
  9. Ошибка в сносках?: Неверный тег <ref>; для сносок kobilov не указан текст
  10. Mini-languages: a way to learn programming principles
  11. Дейкстра Эдсгер на сайте «История комьютера»
  12. 1 2 Ошибка в сносках?: Неверный тег <ref>; для сносок Элементы не указан текст
  13. Джеймс М. Рено. Хотите научиться программировать? = So You Want To Learn to Programm? / пер. с англ. С. Ирюпин, В. Чёрный. — М.: Альт Линукс, 2011. — 320 с. — ISBN 978-5-905167-06-5.
  14. В нём, к примеру, отсутствуют процедуры и функции. Другой, подобный современный диалект — Basic4GL[англ.]
  15. Brin, David (Sept 14, 2006). "Why Johnny can't code". Salon Magazine. Дата обращения: (Строка «4/12/09» не является верной датой, пожалуйста, укажите дату в формате ГГГГ-ММ-ДД). {{cite journal}}: Проверьте значение даты: |accessdate= and |date= (справка)
  16. Small Basic для начинающих
  17. Использование свободного программного обеспечения в образовании, Самарина А. Е., Смоленский государственный университет
  18. Visual Basic Express Edition
  19. Сеймур Пейперт. История компьютера. Дата обращения: 25 марта 2014.
  20. Шрайнер П.А. Лекция 1: Введение в язык логического программирования Пролог // Основы программирования на языке Пролог. — ИНТУИТ. — ISBN 978-5-9556-0034-5.
  21. Psychology, 1990, 3. The Misconception Problem: Prolog, pp. 186-190.
  22. Gerald Jay Sussman and Guy Lewis Steele, Jr.. «Scheme: An Interpreter for Extended Lambda Calculus». MIT AI Lab. AI Lab Memo AIM-349. December 1975. [1], from Lambda Papers[англ.]
  23. Matthias Felleisen[англ.], Robert Bruce Findler[англ.], Matthew Flatt[англ.], Shriram Krishnamurthi (2004). "The Structure and Interpretation of the Computer Science Curriculum" (PDF). Journal of Functional Programming. 14: 365. doi:10.1017/S0956796804005076. {{cite journal}}: Проверьте значение |author= (справка)Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)
  24. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi. How to Design Programs. — MIT Press, 2001. — 723 p. — ISBN 9780262062183.
  25. Shriram Krishnamurthi. Programming Languages: Application and Interpretation.
  26. Daniel P. Friedman and Mitchell Wand. Essentials of Programming Languages. — Third Edition. — MIT Press, 2008. — 432 p. — ISBN 9780262062794.
  27. Daniel P. Friedman, Matthias Felleisen. The Little Schemer. — MIT Press, 1996. — ISBN 978-0-262-56099-3.
  28. Matthias Felleisen, David Van Horn, Conrad Barski, M.D., and Eight Students of Northeastern University. Realm of Racket: Learn to Program, One Game at a Time!. — No Starch Press, 2013. — ISBN 978-1-59327-491-7.
  29. Peter Van Roy, Seif Haridi. Concepts, Techniques, and Models of Computer Programming. — MIT Press, March 2004. — ISBN 0-262-22069-5.
  30. Международный научно-образовательный проект Информатика-21
  31. Ф. В. Ткачев. Обучение программированию: российская перспектива // Modular Programming Languages. Lecture Notes in Computer Science 2789. — Springer-Verlag, 2003. — С. 69-77.
  32. Л. В. Городняя. Школьная информатика // Александр Гурьевич Марчук Андрей Петрович Ершов — ученый и человек. — Новосибирск: Издательство СО РАН, 2006. — ISBN 978-5-7692-0819-5.

Литература

  • Patrick Mendelson, T. R. G. Green and Paul Brna. Ch. 2.5. Programming Languages in Education: The Search for an Easy Start // Psychology of Programming / M. Hoc, T.R.G. Green, R. Samurçay and D.J. Gilmore (eds.). — Academic Press, 1990. — P. 175-200. — ISBN 0-12-350772-3.

Ссылки