Учебный язык программирования: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Robiteria (обсуждение | вклад) м поддержка переименования |
Спасено источников — 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> |
'''Уче́бный язы́к программи́рования''' — [[язык программирования]], предназначенный для обучения. В качестве таковых разрабатывались такие языки как '''[[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>{{статья|автор=Александр Казанцев. |заглавие=Школа. Исполнители и алгоритмы|ссылка=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>{{статья|автор=Кобилов С. С. |заглавие=Образовательная информатика: подход к обучению, выбор учебных языков и создание программных систем|место=[[Самаркандский государственный университет]]|ссылка=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>''Столяров А. В.'' [http://www.stolyarov.info/pvt/anti_c?page=1 Эссе «Язык Си и начальное обучение программированию»]</ref>. |
Учебный язык должен обеспечивать простоту, ясность и удобочитаемость конструкций. Излишняя гибкость, «вседозволенность» синтаксиса может затруднить понимание программ. Не слишком хорошо подходят для обучения языки, поощряющие к использованию различных «программистских трюков»{{sfn|Psychology|1990|loc=1. Introduction|p=176}}. С этим связаны преимущества использования в образовательном процессе языков семейства '''[[Паскаль (язык программирования)|Pascal]]''' перед [[Си (язык программирования)|Си]]-подобными языками<ref name=kobilov>{{статья|автор=Кобилов С. С. |заглавие=Образовательная информатика: подход к обучению, выбор учебных языков и создание программных систем|место=[[Самаркандский государственный университет]]|ссылка=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>''Столяров А. В.'' [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>{{книга|автор=Джеймс М. Рено. |заглавие=Хотите научиться программировать?|оригинал=[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. |заглавие=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>{{книга|автор=Джеймс М. Рено. |заглавие=Хотите научиться программировать?|оригинал=[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. |заглавие=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> |
* [[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> |
В школьное образование также внедряется «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>{{книга|автор=Шрайнер П. А. |часть=Лекция 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>{{книга|автор=Шрайнер П. А. |часть=Лекция 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. |заглавие=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. |заглавие=How to Design Programs|ссылка=http://htdp.org/|издательство=MIT Press|год=2001|allpages=723|isbn=9780262062183}}</ref>, «{{нп3|Programming Languages: Application and Interpretation}}»<ref>{{книга|автор=Shriram Krishnamurthi. |заглавие=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. |заглавие=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. |заглавие=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. |заглавие=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. |заглавие=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. |заглавие=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. |заглавие=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. |заглавие=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. |заглавие=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. |заглавие=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. |заглавие=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. |заглавие=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. |title=Preface|work=The Haskell 98 report|publisher=Haskell 98 working group|date=2002|url= |
Серьёзным конкурентом различным вариантам Лиспа в университетских курсах функционального программирования стал язык '''[[Haskell]]'''. Авторы этого языка предназначили его в равной мере для обучения, научных исследоваий и практических приложений<ref>{{cite web|last=Jones|first=Simon Peyton. |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. |заглавие=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. |заглавие=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. |заглавие=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. |заглавие=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> |
[[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>{{статья|автор=Ткачёв Ф. В. |заглавие=Обучение программированию: российская перспектива|ссылка=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]. Специально для целей обучения созданы следующие диалекты Бейсика.
- BASIC-256[14] довольно близкий к «классическому» бейсик[15], созданный в ответ на статью Дэвида Брина «Почему Джонни не умеет программировать»[16].
- Microsoft Small Basic[17] — своего рода Visual Basic .NET «для самых маленьких».
В школьное образование также внедряется «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]. Основными российскими образовательными языками являются:
- Робик (включает ряд графических исполнителей: «Муравей», «Маляр» и др.)
- РАПИРА (предназначен для изучения после Робика)
- Школьный алгоритмический язык и его реализация Е-практикум[38]
- КуМир (современный диалект школьного алгоритмического языка, включает графические исполнители «Чертёжник» и «Робот»)
Для начального обучения программированию могут также использоваться простые языки управления графическими исполнителями, такими как Кукарача в системе Роботландия или Кенгурёнок Ру[13].
В Беларуси получил распространение диалект школьного алгоритмического языка под названием ИнтАл.[39]
См. также
Примечания
- ↑ Андрей Колесов. Basic — этапы большого пути Архивная копия от 5 марта 2010 на Wayback Machine (авторский вариант статьи). Опубликована с незначительной литературной правкой в журнале «Наука и жизнь», 2000, № 10. С. 18—20.
- ↑ 1 2 Wirth N. Recollections about the development of Pascal (HOPL II), 3.3 Архивная копия от 22 декабря 2012 на Wayback Machine
- ↑ Bill Venners. The Making of Python Архивная копия от 1 сентября 2016 на Wayback Machine. A Conversation with Guido van Rossum. Part I. 2003, January 13.
- ↑ Язык Лого Архивная копия от 24 апреля 2012 на Wayback Machine на сайте «История компьютера»
- ↑ Система программирования КуМир → Учебники . Дата обращения: 16 апреля 2012. Архивировано 3 апреля 2012 года.
- ↑ Александр Казанцев. Школа. Исполнители и алгоритмы // Linux Format. — январь 2010 г.. — № 126—127 (1). Архивировано 11 сентября 2016 года.
- ↑ Psychology, 1990, 1. Introduction, p. 176.
- ↑ 1 2 Кобилов С. С. Образовательная информатика: подход к обучению, выбор учебных языков и создание программных систем. — Самаркандский государственный университет. Архивировано 26 марта 2014 года.
- ↑ Столяров А. В. Эссе «Язык Си и начальное обучение программированию» Архивная копия от 10 мая 2012 на Wayback Machine
- ↑ Лобачёв А. А., Куликова О. В. Выбор языка для обучения программированию Архивная копия от 13 декабря 2014 на Wayback Machine, ИТО-2008.
- ↑ Mini-languages: a way to learn programming principles . Дата обращения: 16 апреля 2012. Архивировано из оригинала 26 марта 2014 года.
- ↑ Дейкстра Эдсгер Архивная копия от 31 июля 2012 на Wayback Machine на сайте «История компьютера»
- ↑ 1 2 3 Леонов А. Г., Первин Ю. А. Роль и место темы «Элементы программирования» в общем школьном информатическом образовании // Компьютерные инструменты в образовании. Информатизация образования. — СПб.: ЦПО, 1999. — № 5. — С. 14—23. Архивировано 9 февраля 2019 года.
- ↑ Джеймс М. Рено. Хотите научиться программировать? = So You Want To Learn to Programm? / Пер. с англ. С. Ирюпина, В. Чёрного. — М.: Альт Линукс, 2011. — 320 с. — ISBN 978-5-905167-06-5. Архивная копия от 10 апреля 2012 на Wayback Machine
- ↑ В нём, к примеру, отсутствуют процедуры и функции. Другой, подобный современный диалект — Basic4GL[англ.]
- ↑ David Brin. Why Johnny can't code // Salon Magazine. — 2006. — № от 14 сентября. Архивировано 30 июля 2019 года.
- ↑ Small Basic для начинающих . Дата обращения: 17 апреля 2012. Архивировано 15 августа 2011 года.
- ↑ Самарина А. Е. Использование свободного программного обеспечения в образовании Архивная копия от 26 марта 2014 на Wayback Machine (Смоленский государственный университет)
- ↑ Visual Basic Express Edition . Дата обращения: 17 апреля 2012. Архивировано 12 октября 2010 года.
- ↑ Сеймур Пейперт . История компьютера. Дата обращения: 25 марта 2014. Архивировано 12 ноября 2013 года.
- ↑ Шрайнер П. А. Лекция 1: Введение в язык логического программирования Пролог // Основы программирования на языке Пролог. — ИНТУИТ. — ISBN 978-5-9556-0034-5. Архивная копия от 26 марта 2014 на Wayback Machine
- ↑ Psychology, 1990, 3. The Misconception Problem: Prolog, pp. 186-190.
- ↑ 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[англ.]
- ↑ 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.
- ↑ Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi. How to Design Programs. — MIT Press, 2001. — 723 p. — ISBN 9780262062183. Архивная копия от 26 июня 2018 на Wayback Machine
- ↑ Shriram Krishnamurthi. Programming Languages: Application and Interpretation. Архивная копия от 3 декабря 2013 на Wayback Machine
- ↑ Daniel P. Friedman, Mitchell Wand. Essentials of Programming Languages. 3rd edition. — MIT Press, 2008. — 432 p. — ISBN 9780262062794.
- ↑ Daniel P. Friedman, Matthias Felleisen. The Little Schemer. — MIT Press, 1996. — ISBN 978-0-262-56099-3.
- ↑ 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 года.
- ↑ 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
- ↑ Jones, Simon Peyton. Preface . The Haskell 98 report. Haskell 98 working group (2002). Дата обращения: 4 апреля 2009. Архивировано 16 марта 2009 года.
- ↑ Philip Wadler. Why calculating is better than scheming // ACM SIGPLAN Notices. — 1987. — P. 83—94. Архивировано 31 мая 2014 года.
- ↑ Richard Bird. Introduction to Functional Programming using Haskell. 2nd edition. — Prentice Hall, 1998. — P. 66.
- ↑ Peter Van Roy, Seif Haridi. Concepts, Techniques, and Models of Computer Programming. — MIT Press, March 2004. — ISBN 0-262-22069-5.
- ↑ Международный научно-образовательный проект Информатика-21 . Дата обращения: 26 марта 2014. Архивировано 29 марта 2014 года.
- ↑ Ткачёв Ф. В. Обучение программированию: российская перспектива // Modular Programming Languages. Lecture Notes in Computer Science 2789. — Springer-Verlag, 2003. — С. 69—77. Архивировано 24 сентября 2015 года.
- ↑ Городняя Л. В. Школьная информатика // Марчук А. Г. Андрей Петрович Ершов — учёный и человек. — Новосибирск: Изд-во СО РАН, 2006. — 503 с. — (Наука Сибири в лицах). — ISBN 978-5-7692-0819-5.
- ↑ Варсанофьев Д. В., Кушниренко А. Г., Лебедев Г. В. E-практикум — программное обеспечение школьного курса информатики и вычислительной техники // Микропроцессорные средства и системы. — 1985. — № 3. — С. 27—32.
- ↑ ПМК ”Базовый курс по информатике” . Дата обращения: 31 августа 2020. Архивировано 4 февраля 2020 года.
Литература
- Александр Казанцев. Школа. Исполнители и алгоритмы // Linux Format. — январь 2010 г.. — № 126—127 (1).
- 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.
Ссылки
- Educational programming languages в каталоге ссылок Curlie (dmoz)