Информационные списки

Учебный язык программирования: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м поддержка переименования
Спасено источников — 24, отмечено мёртвыми — 0. Сообщить об ошибке. См. FAQ.) #IABot (v2.0.9
Строка 1: Строка 1:
{{Информационный список}}
{{Информационный список}}
'''Уче́бный язы́к программи́рования''' — [[язык программирования]], предназначенный для обучения. В качестве таковых разрабатывались такие языки как '''[[BASIC]]'''<ref>''Андрей Колесов.'' [http://www.visual.2000.ru/kolesov/nauka/basichis.htm Basic — этапы большого пути] {{Wayback|url=http://www.visual.2000.ru/kolesov/nauka/basichis.htm |date=20100305122659 }} (авторский вариант статьи). Опубликована с незначительной литературной правкой в журнале «[[Наука и жизнь]]», 2000, № 10. С. 18—20.</ref> и '''[[Паскаль (язык программирования)|Паскаль]]'''<ref name=autogenerated1>''Wirth N.'' [http://oberoncore.ru/_media/library/n._wirth_-_recollections_about_the_development_of_pascal_hopl_ii_.pdf Recollections about the development of Pascal (HOPL II), 3.3]</ref>. Из разработанного для обучения языка '''[[ABC (язык программирования)|ABC]]''' вырос '''[[Python]]'''<ref>''Bill Venners.'' [http://www.artima.com/intv/pythonP.html The Making of Python]. A Conversation with Guido van Rossum. Part I. 2003, January 13.</ref>. Популярным языком, разработанным специально для образования является '''[[Лого (язык программирования)|LOGO]]'''<ref>[http://chernykh.net/content/view/227/240/ Язык Лого] на сайте «История компьютера»</ref>. Специально для российских школ разработана языковая среда '''[[КуМир]]'''<ref>[http://www.niisi.ru/kumir/books.htm Система программирования КуМир → Учебники]</ref>. Набирает популярность созданный в [[Массачусетский технологический институт|Массачусетском технологическом институте]] язык [[Визуальное программирование|визуального программирования]] '''[[Scratch (язык программирования)|Scratch]]''' и тому подобные среды программирования<ref name=LXF>{{статья|автор=Александр Казанцев.&nbsp;|заглавие=Школа. Исполнители и алгоритмы|ссылка=http://wiki.linuxformat.ru/wiki/LXF126:School1|издание=[[Linux Format]]|год=январь 2010 г.|номер=126—127 (1)}}</ref>.
'''Уче́бный язы́к программи́рования''' — [[язык программирования]], предназначенный для обучения. В качестве таковых разрабатывались такие языки как '''[[BASIC]]'''<ref>''Андрей Колесов.'' [http://www.visual.2000.ru/kolesov/nauka/basichis.htm Basic — этапы большого пути] {{Wayback|url=http://www.visual.2000.ru/kolesov/nauka/basichis.htm |date=20100305122659 }} (авторский вариант статьи). Опубликована с незначительной литературной правкой в журнале «[[Наука и жизнь]]», 2000, № 10. С. 18—20.</ref> и '''[[Паскаль (язык программирования)|Паскаль]]'''<ref name=autogenerated1>''Wirth N.'' [http://oberoncore.ru/_media/library/n._wirth_-_recollections_about_the_development_of_pascal_hopl_ii_.pdf Recollections about the development of Pascal (HOPL II), 3.3] {{Wayback|url=http://oberoncore.ru/_media/library/n._wirth_-_recollections_about_the_development_of_pascal_hopl_ii_.pdf |date=20121222075737 }}</ref>. Из разработанного для обучения языка '''[[ABC (язык программирования)|ABC]]''' вырос '''[[Python]]'''<ref>''Bill Venners.'' [http://www.artima.com/intv/pythonP.html The Making of Python] {{Wayback|url=http://www.artima.com/intv/pythonP.html |date=20160901183332 }}. A Conversation with Guido van Rossum. Part I. 2003, January 13.</ref>. Популярным языком, разработанным специально для образования является '''[[Лого (язык программирования)|LOGO]]'''<ref>[http://chernykh.net/content/view/227/240/ Язык Лого] {{Wayback|url=http://chernykh.net/content/view/227/240/ |date=20120424052944 }} на сайте «История компьютера»</ref>. Специально для российских школ разработана языковая среда '''[[КуМир]]'''<ref>{{Cite web |url=http://www.niisi.ru/kumir/books.htm |title=Система программирования КуМир → Учебники |access-date=2012-04-16 |archive-date=2012-04-03 |archive-url=https://web.archive.org/web/20120403183340/http://www.niisi.ru/kumir/books.htm |deadlink=no }}</ref>. Набирает популярность созданный в [[Массачусетский технологический институт|Массачусетском технологическом институте]] язык [[Визуальное программирование|визуального программирования]] '''[[Scratch (язык программирования)|Scratch]]''' и тому подобные среды программирования<ref name=LXF>{{статья|автор=Александр Казанцев.&nbsp;|заглавие=Школа. Исполнители и алгоритмы|ссылка=http://wiki.linuxformat.ru/wiki/LXF126:School1|издание=[[Linux Format]]|год=январь 2010 г.|номер=126—127 (1)|archivedate=2016-09-11|archiveurl=https://web.archive.org/web/20160911015923/http://wiki.linuxformat.ru/wiki/LXF126:School1}}</ref>.


== Требования к учебному языку программирования ==
== Требования к учебному языку программирования ==
Учебный язык должен обеспечивать простоту, ясность и удобочитаемость конструкций. Излишняя гибкость, «вседозволенность» синтаксиса может затруднить понимание программ. Не слишком хорошо подходят для обучения языки, поощряющие к использованию различных «программистских трюков»{{sfn|Psychology|1990|loc=1. Introduction|p=176}}. С этим связаны преимущества использования в образовательном процессе языков семейства '''[[Паскаль (язык программирования)|Pascal]]''' перед [[Си (язык программирования)|Си]]-подобными языками<ref name=kobilov>{{статья|автор=Кобилов С. С.&nbsp;|заглавие=Образовательная информатика: подход к обучению, выбор учебных языков и создание программных систем|место=[[Самаркандский государственный университет]]|ссылка=http://www.ict.edu.ru/vconf/files/3197.rtf|издание=|archiveurl=https://web.archive.org/web/20140326025259/http://www.ict.edu.ru/vconf/files/3197.rtf|archivedate=2014-03-26}}</ref><ref>''Столяров А. В.''&nbsp; [http://www.stolyarov.info/pvt/anti_c?page=1 Эссе «Язык Си и начальное обучение программированию»]</ref>.
Учебный язык должен обеспечивать простоту, ясность и удобочитаемость конструкций. Излишняя гибкость, «вседозволенность» синтаксиса может затруднить понимание программ. Не слишком хорошо подходят для обучения языки, поощряющие к использованию различных «программистских трюков»{{sfn|Psychology|1990|loc=1. Introduction|p=176}}. С этим связаны преимущества использования в образовательном процессе языков семейства '''[[Паскаль (язык программирования)|Pascal]]''' перед [[Си (язык программирования)|Си]]-подобными языками<ref name=kobilov>{{статья|автор=Кобилов С. С.&nbsp;|заглавие=Образовательная информатика: подход к обучению, выбор учебных языков и создание программных систем|место=[[Самаркандский государственный университет]]|ссылка=http://www.ict.edu.ru/vconf/files/3197.rtf|издание=|archiveurl=https://web.archive.org/web/20140326025259/http://www.ict.edu.ru/vconf/files/3197.rtf|archivedate=2014-03-26}}</ref><ref>''Столяров А. В.''&nbsp; [http://www.stolyarov.info/pvt/anti_c?page=1 Эссе «Язык Си и начальное обучение программированию»] {{Wayback|url=http://www.stolyarov.info/pvt/anti_c?page=1 |date=20120510061258 }}</ref>.


При выборе языка программирования не играют роль такие факторы, как его новизна, эффективность реализации (в виде [[компилятор]]а или [[интерпретатор]]а). Фактор распространённости имеет как психологическое значение (влияя на мотивацию учащихся), так и практическое (востребованность получаемых знаний без необходимости переучивания)<ref>''Лобачёв А. А., Куликова О. В.'' [http://ito.edu.ru/2008/Moscow/VIII/1/VIII-1-7732.html Выбор языка для обучения программированию], ИТО-2008.</ref>.
При выборе языка программирования не играют роль такие факторы, как его новизна, эффективность реализации (в виде [[компилятор]]а или [[интерпретатор]]а). Фактор распространённости имеет как психологическое значение (влияя на мотивацию учащихся), так и практическое (востребованность получаемых знаний без необходимости переучивания)<ref>''Лобачёв А. А., Куликова О. В.'' [http://ito.edu.ru/2008/Moscow/VIII/1/VIII-1-7732.html Выбор языка для обучения программированию] {{Wayback|url=http://ito.edu.ru/2008/Moscow/VIII/1/VIII-1-7732.html |date=20141213014816 }}, ИТО-2008.</ref>.


Учебный язык программирования должен обеспечивать плавный переход от [[Псевдокод (язык описания алгоритмов)|псевдокода]] к собственно программированию. Полезным в обучении может быть возможность использования национальной лексики для [[Ключевое слово|ключевых слов]] и [[идентификатор]]ов<ref name=kobilov />.
Учебный язык программирования должен обеспечивать плавный переход от [[Псевдокод (язык описания алгоритмов)|псевдокода]] к собственно программированию. Полезным в обучении может быть возможность использования национальной лексики для [[Ключевое слово|ключевых слов]] и [[идентификатор]]ов<ref name=kobilov />.
Строка 12: Строка 12:


== Бейсик ==
== Бейсик ==
'''[[BASIC]]''', {{lang-en|Beginner’s All-purpose Symbolic Instruction Code}} — стал в начале 60-х первым, получившем распространение языком программирования для обучения начинающих. Однако он получил резкую критику за несоответствие принципам [[Структурное программирование|структурного программирования]] и лёгкость создания [[спагетти-код]]а. Известно высказывание [[Дейкстра, Эдсгер Вибе|Эдсгера Дейкстры]]: [[q:Дейкстра, Эдсгер Вибе|«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации»]]. Под влиянием этой критики создатели Бейсика [[Кемени, Джон Джордж|Джон Кемени]] и [[Курц, Томас|Томас Курц]] в 1975 году расширили язык структурными средствами и отказались от практики использования [[GOTO]]. В 1980-х годах они создали обновлённый вариант языка, названный [[True BASIC]]<ref>[http://chernykh.net/content/view/176/186/ Дейкстра Эдсгер] на сайте «История компьютера»</ref>. Современные распространённые диалекты Бейсика ([[QBasic]], [[Visual Basic]]) отличаются от этого варианта и имеют [[microsoft]]овское происхождение, однако и они имеют мало общего с прародителем, являясь вполне современными структурными языками программирования<ref name="Элементы" />. Специально для целей обучения созданы следующие диалекты Бейсика.
'''[[BASIC]]''', {{lang-en|Beginner’s All-purpose Symbolic Instruction Code}} — стал в начале 60-х первым, получившем распространение языком программирования для обучения начинающих. Однако он получил резкую критику за несоответствие принципам [[Структурное программирование|структурного программирования]] и лёгкость создания [[спагетти-код]]а. Известно высказывание [[Дейкстра, Эдсгер Вибе|Эдсгера Дейкстры]]: [[q:Дейкстра, Эдсгер Вибе|«Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации»]]. Под влиянием этой критики создатели Бейсика [[Кемени, Джон Джордж|Джон Кемени]] и [[Курц, Томас|Томас Курц]] в 1975 году расширили язык структурными средствами и отказались от практики использования [[GOTO]]. В 1980-х годах они создали обновлённый вариант языка, названный [[True BASIC]]<ref>[http://chernykh.net/content/view/176/186/ Дейкстра Эдсгер] {{Wayback|url=http://chernykh.net/content/view/176/186/ |date=20120731051033 }} на сайте «История компьютера»</ref>. Современные распространённые диалекты Бейсика ([[QBasic]], [[Visual Basic]]) отличаются от этого варианта и имеют [[microsoft]]овское происхождение, однако и они имеют мало общего с прародителем, являясь вполне современными структурными языками программирования<ref name="Элементы" />. Специально для целей обучения созданы следующие диалекты Бейсика.
* [[BASIC-256]]<ref>{{книга|автор=Джеймс М. Рено.&nbsp;|заглавие=Хотите научиться программировать?|оригинал=[http://basicbook.org/ So You Want To Learn to Programm?]|ответственный=Пер. с англ. С. Ирюпина, В. Чёрного|место=М.|издательство=[[ALT Linux (компания)|Альт Линукс]]|год=2011|страниц=320|isbn=978-5-905167-06-5|ссылка=http://www.altlinux.org/Books:Basic-256|nodot=1}}</ref> довольно близкий к «классическому» бейсик<ref>В нём, к примеру, отсутствуют [[процедура (программирование)|процедуры]] и [[функция (программирование)|функции]]. Другой, подобный современный диалект — {{нп3|Basic4GL}}</ref>, созданный в ответ на статью [[Брин, Дэвид|Дэвида Брина]] «Почему Джонни не умеет программировать»<ref>{{статья|автор=David Brin.&nbsp;|заглавие=Why Johnny can't code|ссылка=https://www.salon.com/test/2006/09/14/basic_2/|издание=[[Salon.com|Salon Magazine]]|год=2006|номер=от 14 сентября|язык=|тип=|месяц=|число=|том=|страницы=|issn=}}</ref>.
* [[BASIC-256]]<ref>{{книга|автор=Джеймс М. Рено.&nbsp;|заглавие=Хотите научиться программировать?|оригинал=[http://basicbook.org/ So You Want To Learn to Programm?]|ответственный=Пер. с англ. С. Ирюпина, В. Чёрного|место=М.|издательство=[[ALT Linux (компания)|Альт Линукс]]|год=2011|страниц=320|isbn=978-5-905167-06-5|ссылка=http://www.altlinux.org/Books:Basic-256|nodot=1}} {{Wayback|url=http://www.altlinux.org/Books:Basic-256 |date=20120410063924 }}</ref> довольно близкий к «классическому» бейсик<ref>В нём, к примеру, отсутствуют [[процедура (программирование)|процедуры]] и [[функция (программирование)|функции]]. Другой, подобный современный диалект — {{нп3|Basic4GL}}</ref>, созданный в ответ на статью [[Брин, Дэвид|Дэвида Брина]] «Почему Джонни не умеет программировать»<ref>{{статья|автор=David Brin.&nbsp;|заглавие=Why Johnny can't code|ссылка=https://www.salon.com/test/2006/09/14/basic_2/|издание=[[Salon.com|Salon Magazine]]|год=2006|номер=от 14 сентября|язык=|тип=|месяц=|число=|том=|страницы=|issn=|archivedate=2019-07-30|archiveurl=https://web.archive.org/web/20190730065838/https://www.salon.com/test/2006/09/14/basic_2/}}</ref>.
* [[Microsoft Small Basic]]<ref>[http://download.microsoft.com/documents/rus/visualstudio/SmallBasic.pdf Small Basic для начинающих]</ref> — своего рода [[Visual Basic .NET]] «для самых маленьких».
* [[Microsoft Small Basic]]<ref>{{Cite web |url=http://download.microsoft.com/documents/rus/visualstudio/SmallBasic.pdf |title=Small Basic для начинающих |access-date=2012-04-17 |archive-date=2011-08-15 |archive-url=https://web.archive.org/web/20110815202403/http://download.microsoft.com/documents/rus/visualstudio/SmallBasic.pdf |deadlink=no }}</ref> — своего рода [[Visual Basic .NET]] «для самых маленьких».


В школьное образование также внедряется «Visual Basic для [[Linux]]» [[Gambas]]<ref>''Самарина А. Е.'' [http://79.133.86.67/virtual/expo/InfoKom10/dokald_10/Samarina.doc Использование свободного программного обеспечения в образовании] {{Wayback|url=http://79.133.86.67/virtual/expo/InfoKom10/dokald_10/Samarina.doc |date=20140326030717 }} ([[Смоленский государственный университет]])</ref>. Доступна бесплатная образовательная экспресс-версия [[Visual Basic .NET]]<ref>[http://www.microsoft.com/Express/VB/ Visual Basic Express Edition]</ref>.
В школьное образование также внедряется «Visual Basic для [[Linux]]» [[Gambas]]<ref>''Самарина А. Е.'' [http://79.133.86.67/virtual/expo/InfoKom10/dokald_10/Samarina.doc Использование свободного программного обеспечения в образовании] {{Wayback|url=http://79.133.86.67/virtual/expo/InfoKom10/dokald_10/Samarina.doc |date=20140326030717 }} ([[Смоленский государственный университет]])</ref>. Доступна бесплатная образовательная экспресс-версия [[Visual Basic .NET]]<ref>{{Cite web |url=http://www.microsoft.com/Express/VB/ |title=Visual Basic Express Edition |access-date=2012-04-17 |archive-date=2010-10-12 |archive-url=https://web.archive.org/web/20101012013358/http://www.microsoft.com/Express/VB |deadlink=no }}</ref>.


== Языки декларативного программирования ==
== Языки декларативного программирования ==
Язык '''[[Лого (язык программирования)|Logo]]''', появившийся на свет между [[Бейсик]]ом и [[Pascal|Паскалем]], стал первым языком программирования, изначально предназначенным для обучения ''детей''. Этот язык можно рассматривать как диалект [[Лисп]]а — языка, с которого началось [[функциональное программирование]]<ref>{{cite web|url=http://chernykh.net/content/view/481/693/|title=Сеймур Пейперт|publisher=История компьютера|accessdate=2014-03-25}}</ref>. Хотя этот язык более известен своей [[Черепашья графика|черепашьей графикой]] и рассматривается как первый из графических [[исполнитель (программирование)|исполнителей]], но такие черты Лиспа, как управление последовательностью действий через [[Рекурсия|рекурсию]] и [[Список (информатика)|списки]] в качестве основной [[Структура данных|структуры данных]], также остаются свойствами этого ([[Мультипарадигмальное программирование|мультипарадигмального]] по своей сути) языка.
Язык '''[[Лого (язык программирования)|Logo]]''', появившийся на свет между [[Бейсик]]ом и [[Pascal|Паскалем]], стал первым языком программирования, изначально предназначенным для обучения ''детей''. Этот язык можно рассматривать как диалект [[Лисп]]а — языка, с которого началось [[функциональное программирование]]<ref>{{cite web|url=http://chernykh.net/content/view/481/693/|title=Сеймур Пейперт|publisher=История компьютера|accessdate=2014-03-25|archive-date=2013-11-12|archive-url=https://web.archive.org/web/20131112005106/http://chernykh.net/content/view/481/693/|deadlink=no}}</ref>. Хотя этот язык более известен своей [[Черепашья графика|черепашьей графикой]] и рассматривается как первый из графических [[исполнитель (программирование)|исполнителей]], но такие черты Лиспа, как управление последовательностью действий через [[Рекурсия|рекурсию]] и [[Список (информатика)|списки]] в качестве основной [[Структура данных|структуры данных]], также остаются свойствами этого ([[Мультипарадигмальное программирование|мультипарадигмального]] по своей сути) языка.


Хотя '''[[Пролог (язык программирования)|Пролог]]''' — язык, с которого началось [[логическое программирование]], — редко рассматривают как язык начального обучения, он легко осваивается теми, кто только начинает изучать программирование. Этому способствует его ориентированность на человеческое [[мышление]], простой, единообразный синтаксис и отсутствие таких конструкций, как [[Оператор ветвления|ветвления]] или [[Цикл (программирование)|циклы]]<ref>{{книга|автор=Шрайнер П. А.&nbsp;|часть=Лекция 1: Введение в язык логического программирования Пролог|заглавие=Основы программирования на языке Пролог|ссылка=http://www.intuit.ru/studies/courses/44/44/lecture/1309?page=2|издательство=[[ИНТУИТ]]|isbn=978-5-9556-0034-5}}</ref>. Простота изучения была одной из целей дизайна языка, хотя этот язык остаётся недопонятым. Одна из причин малой распространённости Пролога в начальном обучении — отсутствие в нём удобных средств работы с интерактивной графикой, которая не слишком гладко вписывается в чистое [[декларативное программирование]]{{sfn|Psychology|1990|loc=3. The Misconception Problem: Prolog|pp=186-190}}.
Хотя '''[[Пролог (язык программирования)|Пролог]]''' — язык, с которого началось [[логическое программирование]], — редко рассматривают как язык начального обучения, он легко осваивается теми, кто только начинает изучать программирование. Этому способствует его ориентированность на человеческое [[мышление]], простой, единообразный синтаксис и отсутствие таких конструкций, как [[Оператор ветвления|ветвления]] или [[Цикл (программирование)|циклы]]<ref>{{книга|автор=Шрайнер П. А.&nbsp;|часть=Лекция 1: Введение в язык логического программирования Пролог|заглавие=Основы программирования на языке Пролог|ссылка=http://www.intuit.ru/studies/courses/44/44/lecture/1309?page=2|издательство=[[ИНТУИТ]]|isbn=978-5-9556-0034-5}} {{Wayback|url=http://www.intuit.ru/studies/courses/44/44/lecture/1309?page=2 |date=20140326033023 }}</ref>. Простота изучения была одной из целей дизайна языка, хотя этот язык остаётся недопонятым. Одна из причин малой распространённости Пролога в начальном обучении — отсутствие в нём удобных средств работы с интерактивной графикой, которая не слишком гладко вписывается в чистое [[декларативное программирование]]{{sfn|Psychology|1990|loc=3. The Misconception Problem: Prolog|pp=186-190}}.


Современный «академический» диалект Лиспа — язык '''[[Scheme]]''' — был изначально ориентирован на образование<ref>''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. [http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-349.pdf] {{Wayback|url=http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-349.pdf |date=20130903173444 }} from {{нп3|Lambda Papers}}</ref>. Он используется в таком знаменитом курсе компьютерного программирования, как «[[Структура и интерпретация компьютерных программ]]». Публикация этой книги не только сделала Scheme популярным языком в университетской среде, но и изменила сам подход к изучению программированию<ref>{{статья|автор=Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi.&nbsp;|заглавие=The Structure and Interpretation of the Computer Science Curriculum|ссылка=http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf|издание=Journal of Functional Programming|год=2004|volume=14|pages=365}} — {{DOI|10.1017/S0956796804005076}}.</ref>. Этот язык используется также в целом ряде учебников, таких как «{{нп3|How to Design Programs}}»<ref>{{книга|автор=Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi.&nbsp;|заглавие=How to Design Programs|ссылка=http://htdp.org/|издательство=MIT Press|год=2001|allpages=723|isbn=9780262062183}}</ref>, «{{нп3|Programming Languages: Application and Interpretation}}»<ref>{{книга|автор=Shriram Krishnamurthi.&nbsp;|заглавие=Programming Languages: Application and Interpretation|ссылка=http://cs.brown.edu/~sk/Publications/Books/ProgLangs/}}</ref>, «{{нп3|Essentials of Programming Languages}}»<ref>{{книга|автор=Daniel P. Friedman, Mitchell Wand.&nbsp;|заглавие=Essentials of Programming Languages. 3rd edition|издательство=MIT Press|год=2008|allpages=432|isbn=9780262062794}}</ref> и др. Обучению программированию с нуля, с использованием Scheme, посвящена и книга {{нп3|Фридман, Дэниэль|Даниэля Фридмана|en|Daniel P. Friedman}} «The Little Schemer»<ref>{{книга|автор=Daniel P. Friedman, Matthias Felleisen.&nbsp;|заглавие=The Little Schemer|издательство=MIT Press|год=1996|isbn=978-0-262-56099-3}}</ref>, впервые изданная под названием «The Little Lisper» в 1974 году и ставшая началом своего рода трилогии. Первая книга, посвящённая языку '''[[Racket (язык программирования)|Racket]]''' (прямому потомку Scheme), «Realm of Racket»<ref>{{книга|автор=Matthias Felleisen, David Van Horn, Conrad Barski et al.&nbsp;|заглавие=Realm of Racket: Learn to Program, One Game at a Time!|ссылка=http://realmofracket.com/|издательство=No Starch Press|год=2013|isbn=978-1-59327-491-7|nodot=1}} {{Cite web |url=http://realmofracket.com/ |title=Архивированная копия |accessdate=2014-03-26 |archive-date=2018-10-07 |archive-url=https://web.archive.org/web/20181007224915/http://realmofracket.com/ |deadlink=unfit }}</ref>, также представляет собой учебник для детей (впрочем, эта книга одновременно является переработанным вариантом учебника «Land of Lisp»<ref>{{книга|автор=Conrad Barski.&nbsp;|заглавие=Land of Lisp: Learn to Program in Lisp, One Game at a Time!|ссылка=http://landoflisp.com/|издательство=No Starch Press|год=October 2010|allpages=504|isbn=978-1-59327-281-4|nodot=1}}</ref>, основанного на [[Common Lisp]]).
Современный «академический» диалект Лиспа — язык '''[[Scheme]]''' — был изначально ориентирован на образование<ref>''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. [http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-349.pdf] {{Wayback|url=http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-349.pdf |date=20130903173444 }} from {{нп3|Lambda Papers}}</ref>. Он используется в таком знаменитом курсе компьютерного программирования, как «[[Структура и интерпретация компьютерных программ]]». Публикация этой книги не только сделала Scheme популярным языком в университетской среде, но и изменила сам подход к изучению программированию<ref>{{статья|автор=Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi.&nbsp;|заглавие=The Structure and Interpretation of the Computer Science Curriculum|ссылка=http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf|издание=Journal of Functional Programming|год=2004|volume=14|pages=365|archivedate=2008-05-11|archiveurl=https://web.archive.org/web/20080511171056/http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf}} — {{DOI|10.1017/S0956796804005076}}.</ref>. Этот язык используется также в целом ряде учебников, таких как «{{нп3|How to Design Programs}}»<ref>{{книга|автор=Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi.&nbsp;|заглавие=How to Design Programs|ссылка=http://htdp.org/|издательство=MIT Press|год=2001|allpages=723|isbn=9780262062183}} {{Wayback|url=http://htdp.org/ |date=20180626072916 }}</ref>, «{{нп3|Programming Languages: Application and Interpretation}}»<ref>{{книга|автор=Shriram Krishnamurthi.&nbsp;|заглавие=Programming Languages: Application and Interpretation|ссылка=http://cs.brown.edu/~sk/Publications/Books/ProgLangs/}} {{Wayback|url=http://cs.brown.edu/~sk/Publications/Books/ProgLangs/ |date=20131203020311 }}</ref>, «{{нп3|Essentials of Programming Languages}}»<ref>{{книга|автор=Daniel P. Friedman, Mitchell Wand.&nbsp;|заглавие=Essentials of Programming Languages. 3rd edition|издательство=MIT Press|год=2008|allpages=432|isbn=9780262062794}}</ref> и др. Обучению программированию с нуля, с использованием Scheme, посвящена и книга {{нп3|Фридман, Дэниэль|Даниэля Фридмана|en|Daniel P. Friedman}} «The Little Schemer»<ref>{{книга|автор=Daniel P. Friedman, Matthias Felleisen.&nbsp;|заглавие=The Little Schemer|издательство=MIT Press|год=1996|isbn=978-0-262-56099-3}}</ref>, впервые изданная под названием «The Little Lisper» в 1974 году и ставшая началом своего рода трилогии. Первая книга, посвящённая языку '''[[Racket (язык программирования)|Racket]]''' (прямому потомку Scheme), «Realm of Racket»<ref>{{книга|автор=Matthias Felleisen, David Van Horn, Conrad Barski et al.&nbsp;|заглавие=Realm of Racket: Learn to Program, One Game at a Time!|ссылка=http://realmofracket.com/|издательство=No Starch Press|год=2013|isbn=978-1-59327-491-7|nodot=1}} {{Wayback|url=http://realmofracket.com/ |date=20181007224915 }} {{Cite web |url=http://realmofracket.com/ |title=Архивированная копия |accessdate=2014-03-26 |archive-date=2018-10-07 |archive-url=https://web.archive.org/web/20181007224915/http://realmofracket.com/ |deadlink=unfit }}</ref>, также представляет собой учебник для детей (впрочем, эта книга одновременно является переработанным вариантом учебника «Land of Lisp»<ref>{{книга|автор=Conrad Barski.&nbsp;|заглавие=Land of Lisp: Learn to Program in Lisp, One Game at a Time!|ссылка=http://landoflisp.com/|издательство=No Starch Press|год=October 2010|allpages=504|isbn=978-1-59327-281-4|nodot=1}} {{Wayback|url=http://landoflisp.com/ |date=20171213002134 }}</ref>, основанного на [[Common Lisp]]).


Серьёзным конкурентом различным вариантам Лиспа в университетских курсах функционального программирования стал язык '''[[Haskell]]'''. Авторы этого языка предназначили его в равной мере для обучения, научных исследоваий и практических приложений<ref>{{cite web|last=Jones|first=Simon Peyton.&nbsp;|title=Preface|work=The Haskell 98 report|publisher=Haskell 98 working group|date=2002|url= http://www.haskell.org/onlinereport/preface-jfp.html|accessdate=2009-04-04}}</ref>. Его отличает то, что он представляет собой чисто функциональный язык программирования, реализующий [[типизированное лямбда-исчисление]], его синтаксис приближён к традиционной математической нотации<ref>{{статья|автор=Philip Wadler.&nbsp;|заглавие=Why calculating is better than scheming|ссылка=http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf|издание=ACM SIGPLAN Notices|год=1987|pages=83—94}}</ref><ref>{{книга|автор=Richard Bird.&nbsp;|заглавие=Introduction to Functional Programming using Haskell. 2nd edition|издательство=Prentice Hall|год=1998|0-13-484346-0}} — P. 66.</ref>.
Серьёзным конкурентом различным вариантам Лиспа в университетских курсах функционального программирования стал язык '''[[Haskell]]'''. Авторы этого языка предназначили его в равной мере для обучения, научных исследоваий и практических приложений<ref>{{cite web|last=Jones|first=Simon Peyton.&nbsp;|title=Preface|work=The Haskell 98 report|publisher=Haskell 98 working group|date=2002|url=http://www.haskell.org/onlinereport/preface-jfp.html|accessdate=2009-04-04|archive-date=2009-03-16|archive-url=https://web.archive.org/web/20090316082654/http://haskell.org/onlinereport/preface-jfp.html|deadlink=no}}</ref>. Его отличает то, что он представляет собой чисто функциональный язык программирования, реализующий [[типизированное лямбда-исчисление]], его синтаксис приближён к традиционной математической нотации<ref>{{статья|автор=Philip Wadler.&nbsp;|заглавие=Why calculating is better than scheming|ссылка=http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf|издание=ACM SIGPLAN Notices|год=1987|pages=83—94|archivedate=2014-05-31|archiveurl=https://web.archive.org/web/20140531063404/http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf}}</ref><ref>{{книга|автор=Richard Bird.&nbsp;|заглавие=Introduction to Functional Programming using Haskell. 2nd edition|издательство=Prentice Hall|год=1998|0-13-484346-0}} — P. 66.</ref>.


В 1991 году профессор [[Лувенский католический университет|Лувенского католического университета]] в Бельгии Герт Смолка начал разработку мультипарадигмального языка '''[[Oz (язык программирования)|Oz]]'''. Язык позволяет писать программы в стиле любой из основных распространённых [[Парадигма программирования|парадигм программирования]]: как декларативных, таких как [[логическое программирование|логическое]] и [[функциональное программирование]], так и императивных. Этот язык используется как основа для обучающего курса «{{нп3|Concepts, Techniques, and Models of Computer Programming}}»<ref>{{книга|автор= Peter Van Roy, Seif Haridi.&nbsp;|заглавие=Concepts, Techniques, and Models of Computer Programming|издательство=MIT Press|год=March 2004|isbn=0-262-22069-5}}</ref>.
В 1991 году профессор [[Лувенский католический университет|Лувенского католического университета]] в Бельгии Герт Смолка начал разработку мультипарадигмального языка '''[[Oz (язык программирования)|Oz]]'''. Язык позволяет писать программы в стиле любой из основных распространённых [[Парадигма программирования|парадигм программирования]]: как декларативных, таких как [[логическое программирование|логическое]] и [[функциональное программирование]], так и императивных. Этот язык используется как основа для обучающего курса «{{нп3|Concepts, Techniques, and Models of Computer Programming}}»<ref>{{книга|автор= Peter Van Roy, Seif Haridi.&nbsp;|заглавие=Concepts, Techniques, and Models of Computer Programming|издательство=MIT Press|год=March 2004|isbn=0-262-22069-5}}</ref>.
Строка 32: Строка 32:
Разработанный в качестве развития линии [[Алгол|Algol-60]] [[Вирт, Никлаус|Никлаусом Виртом]] язык программирования '''[[Паскаль (язык программирования)|Паскаль]]''' автор с самого начала использовал для вводного курса программирования для студентов<ref name=autogenerated1 />. Этот язык быстро начал набирать популярность в таком качестве.
Разработанный в качестве развития линии [[Алгол|Algol-60]] [[Вирт, Никлаус|Никлаусом Виртом]] язык программирования '''[[Паскаль (язык программирования)|Паскаль]]''' автор с самого начала использовал для вводного курса программирования для студентов<ref name=autogenerated1 />. Этот язык быстро начал набирать популярность в таком качестве.


[[Turbo Pascal]], [[Delphi (язык программирования)|Delphi]] и [[Free Pascal]] широко использовались и продолжают использоваться для обучения студентов и школьников. Зародившийся в 2002 году на [[Физический факультет МГУ|физфаке МГУ]] международный научно-образовательный проект «Информатика-21»<ref>[http://www.inr.ac.ru/~info21/ Международный научно-образовательный проект Информатика-21]</ref> поставил своей целью внедрение в российское образование системы программирования [[BlackBox Component Builder]]<ref>{{статья|автор=Ткачёв Ф. В.&nbsp;|заглавие=Обучение программированию: российская перспектива|ссылка=http://www.inr.ac.ru/~info21/texts/2003-08-JMLC/ru.htm|издание=Modular Programming Languages. Lecture Notes in Computer Science 2789|издательство=Springer-Verlag|год=2003|страницы=69—77}}</ref>, реализации [[Компонентный Паскаль|Компонентного Паскаля]], диалекта '''[[Оберон-2|Oberon-2]]''' — объектно-ориентированного языка паскаль-семейства, разработанного Виртом. Как и другие языки Никлауса Вирта, он отличается (в том числе от Объектного Паскаля в стиле Borland) минимализмом.
[[Turbo Pascal]], [[Delphi (язык программирования)|Delphi]] и [[Free Pascal]] широко использовались и продолжают использоваться для обучения студентов и школьников. Зародившийся в 2002 году на [[Физический факультет МГУ|физфаке МГУ]] международный научно-образовательный проект «Информатика-21»<ref>{{Cite web |url=http://www.inr.ac.ru/~info21/ |title=Международный научно-образовательный проект Информатика-21 |access-date=2014-03-26 |archive-date=2014-03-29 |archive-url=https://web.archive.org/web/20140329175257/http://www.inr.ac.ru/~info21/ |deadlink=no }}</ref> поставил своей целью внедрение в российское образование системы программирования [[BlackBox Component Builder]]<ref>{{статья|автор=Ткачёв Ф. В.&nbsp;|заглавие=Обучение программированию: российская перспектива|ссылка=http://www.inr.ac.ru/~info21/texts/2003-08-JMLC/ru.htm|издание=Modular Programming Languages. Lecture Notes in Computer Science 2789|издательство=Springer-Verlag|год=2003|страницы=69—77|archivedate=2015-09-24|archiveurl=https://web.archive.org/web/20150924035143/http://www.inr.ac.ru/~info21/texts/2003-08-JMLC/ru.htm}}</ref>, реализации [[Компонентный Паскаль|Компонентного Паскаля]], диалекта '''[[Оберон-2|Oberon-2]]''' — объектно-ориентированного языка паскаль-семейства, разработанного Виртом. Как и другие языки Никлауса Вирта, он отличается (в том числе от Объектного Паскаля в стиле Borland) минимализмом.


== Языки с русскими ключевыми словами ==
== Языки с русскими ключевыми словами ==
Строка 42: Строка 42:
Для начального обучения программированию могут также использоваться простые языки управления графическими исполнителями, такими как Кукарача в системе [[Роботландия]] или [[Кенгурёнок Ру (программа)|Кенгурёнок Ру]]<ref name="Элементы" />.
Для начального обучения программированию могут также использоваться простые языки управления графическими исполнителями, такими как Кукарача в системе [[Роботландия]] или [[Кенгурёнок Ру (программа)|Кенгурёнок Ру]]<ref name="Элементы" />.


В Беларуси получил распространение диалект школьного алгоритмического языка под названием '''ИнтАл'''.<ref>{{cite web|title=ПМК ”Базовый курс по информатике”|url=http://web.archive.org/web/20200204011732/http://ofps.unibel.by/uch_pr/inform/in_15.htm}}</ref>
В Беларуси получил распространение диалект школьного алгоритмического языка под названием '''ИнтАл'''.<ref>{{cite web|title=ПМК ”Базовый курс по информатике”|url=http://ofps.unibel.by/uch_pr/inform/in_15.htm|access-date=2020-08-31|archive-date=2020-02-04|archive-url=https://web.archive.org/web/20200204011732/http://ofps.unibel.by/uch_pr/inform/in_15.htm|deadlink=unfit}}</ref>


== См. также ==
== См. также ==

Версия от 08:06, 20 августа 2022

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

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

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

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

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

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

Бейсик

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

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

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

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

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

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

Серьёзным конкурентом различным вариантам Лиспа в университетских курсах функционального программирования стал язык Haskell. Авторы этого языка предназначили его в равной мере для обучения, научных исследоваий и практических приложений[31]. Его отличает то, что он представляет собой чисто функциональный язык программирования, реализующий типизированное лямбда-исчисление, его синтаксис приближён к традиционной математической нотации[32][33].

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

Паскаль

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

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

Языки с русскими ключевыми словами

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

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

В Беларуси получил распространение диалект школьного алгоритмического языка под названием ИнтАл.[39]

См. также

Примечания

  1. Андрей Колесов. Basic — этапы большого пути Архивная копия от 5 марта 2010 на Wayback Machine (авторский вариант статьи). Опубликована с незначительной литературной правкой в журнале «Наука и жизнь», 2000, № 10. С. 18—20.
  2. 1 2 Wirth N. Recollections about the development of Pascal (HOPL II), 3.3 Архивная копия от 22 декабря 2012 на Wayback Machine
  3. Bill Venners. The Making of Python Архивная копия от 1 сентября 2016 на Wayback Machine. A Conversation with Guido van Rossum. Part I. 2003, January 13.
  4. Язык Лого Архивная копия от 24 апреля 2012 на Wayback Machine на сайте «История компьютера»
  5. Система программирования КуМир → Учебники. Дата обращения: 16 апреля 2012. Архивировано 3 апреля 2012 года.
  6. Александр Казанцев.  Школа. Исполнители и алгоритмы // Linux Format. — январь 2010 г.. — № 126—127 (1). Архивировано 11 сентября 2016 года.
  7. Psychology, 1990, 1. Introduction, p. 176.
  8. 1 2 Кобилов С. С.  Образовательная информатика: подход к обучению, выбор учебных языков и создание программных систем. — Самаркандский государственный университет. Архивировано 26 марта 2014 года.
  9. Столяров А. В.  Эссе «Язык Си и начальное обучение программированию» Архивная копия от 10 мая 2012 на Wayback Machine
  10. Лобачёв А. А., Куликова О. В. Выбор языка для обучения программированию Архивная копия от 13 декабря 2014 на Wayback Machine, ИТО-2008.
  11. Mini-languages: a way to learn programming principles. Дата обращения: 16 апреля 2012. Архивировано из оригинала 26 марта 2014 года.
  12. Дейкстра Эдсгер Архивная копия от 31 июля 2012 на Wayback Machine на сайте «История компьютера»
  13. 1 2 3 Леонов А. Г., Первин Ю. А.  Роль и место темы «Элементы программирования» в общем школьном информатическом образовании // Компьютерные инструменты в образовании. Информатизация образования. — СПб.: ЦПО, 1999. — № 5. — С. 14—23. Архивировано 9 февраля 2019 года.
  14. Джеймс М. Рено.  Хотите научиться программировать? = So You Want To Learn to Programm? / Пер. с англ. С. Ирюпина, В. Чёрного. — М.: Альт Линукс, 2011. — 320 с. — ISBN 978-5-905167-06-5. Архивная копия от 10 апреля 2012 на Wayback Machine
  15. В нём, к примеру, отсутствуют процедуры и функции. Другой, подобный современный диалект — Basic4GL[англ.]
  16. David Brin.  Why Johnny can't code // Salon Magazine. — 2006. — № от 14 сентября. Архивировано 30 июля 2019 года.
  17. Small Basic для начинающих. Дата обращения: 17 апреля 2012. Архивировано 15 августа 2011 года.
  18. Самарина А. Е. Использование свободного программного обеспечения в образовании Архивная копия от 26 марта 2014 на Wayback Machine (Смоленский государственный университет)
  19. Visual Basic Express Edition. Дата обращения: 17 апреля 2012. Архивировано 12 октября 2010 года.
  20. Сеймур Пейперт. История компьютера. Дата обращения: 25 марта 2014. Архивировано 12 ноября 2013 года.
  21. Шрайнер П. А.  Лекция 1: Введение в язык логического программирования Пролог // Основы программирования на языке Пролог. — ИНТУИТ. — ISBN 978-5-9556-0034-5. Архивная копия от 26 марта 2014 на Wayback Machine
  22. Psychology, 1990, 3. The Misconception Problem: Prolog, pp. 186-190.
  23. 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] Архивная копия от 3 сентября 2013 на Wayback Machine from Lambda Papers[англ.]
  24. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi.  The Structure and Interpretation of the Computer Science Curriculum // Journal of Functional Programming. — 2004. — Vol. 14. — P. 365. Архивировано 11 мая 2008 года. — doi:10.1017/S0956796804005076.
  25. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi.  How to Design Programs. — MIT Press, 2001. — 723 p. — ISBN 9780262062183. Архивная копия от 26 июня 2018 на Wayback Machine
  26. Shriram Krishnamurthi.  Programming Languages: Application and Interpretation. Архивная копия от 3 декабря 2013 на Wayback Machine
  27. Daniel P. Friedman, Mitchell Wand.  Essentials of Programming Languages. 3rd edition. — MIT Press, 2008. — 432 p. — ISBN 9780262062794.
  28. Daniel P. Friedman, Matthias Felleisen.  The Little Schemer. — MIT Press, 1996. — ISBN 978-0-262-56099-3.
  29. Matthias Felleisen, David Van Horn, Conrad Barski et al.  Realm of Racket: Learn to Program, One Game at a Time! — No Starch Press, 2013. — ISBN 978-1-59327-491-7. Архивная копия от 7 октября 2018 на Wayback Machine Архивированная копия. Дата обращения: 26 марта 2014. Архивировано 7 октября 2018 года.
  30. Conrad Barski.  Land of Lisp: Learn to Program in Lisp, One Game at a Time! — No Starch Press, October 2010. — 504 p. — ISBN 978-1-59327-281-4. Архивная копия от 13 декабря 2017 на Wayback Machine
  31. Jones, Simon Peyton.  Preface. The Haskell 98 report. Haskell 98 working group (2002). Дата обращения: 4 апреля 2009. Архивировано 16 марта 2009 года.
  32. Philip Wadler.  Why calculating is better than scheming // ACM SIGPLAN Notices. — 1987. — P. 83—94. Архивировано 31 мая 2014 года.
  33. Richard Bird.  Introduction to Functional Programming using Haskell. 2nd edition. — Prentice Hall, 1998. — P. 66.
  34. Peter Van Roy, Seif Haridi.  Concepts, Techniques, and Models of Computer Programming. — MIT Press, March 2004. — ISBN 0-262-22069-5.
  35. Международный научно-образовательный проект Информатика-21. Дата обращения: 26 марта 2014. Архивировано 29 марта 2014 года.
  36. Ткачёв Ф. В.  Обучение программированию: российская перспектива // Modular Programming Languages. Lecture Notes in Computer Science 2789. — Springer-Verlag, 2003. — С. 69—77. Архивировано 24 сентября 2015 года.
  37. Городняя Л. В.  Школьная информатика // Марчук А. Г.  Андрей Петрович Ершов — учёный и человек. — Новосибирск: Изд-во СО РАН, 2006. — 503 с. — (Наука Сибири в лицах). — ISBN 978-5-7692-0819-5.
  38. Варсанофьев Д. В., Кушниренко А. Г., Лебедев Г. В.  E-практикум — программное обеспечение школьного курса информатики и вычислительной техники // Микропроцессорные средства и системы. — 1985. — № 3. — С. 27—32.
  39. ПМК ”Базовый курс по информатике”. Дата обращения: 31 августа 2020. Архивировано 4 февраля 2020 года.

Литература

Ссылки