Какие виды языков программирования бывают в информатике

Количество результатов поиска Google по фразе на момент написания статьи составляет 15 800. Это иллюстрирует, насколько спорным является вопрос выбора первого языка программирования. В этом посте в блоге я на самом деле не буду пытаться ответить на вопрос. Поставленный в названии поста. Я не буду обсуждать, какой язык мы должны преподавать в качестве первого. Вместо этого я рассмотрю более интересный вопрос. Я изучу аргументы. Которые используются в пользу или против конкретных языков программирования в учебной программе по информатике. Меня больше интересует тот тип аргументации. Который используется для поддержки конкретного выбора. Чем конкретные языки. Такой подход ценен по двум причинам. Во-первых, изучая используемые аргументы, мы можем узнать, что педагоги считают важным в информатике. Во-вторых, понимание мотивов, лежащих в основе различных аргументов. Позволяет нам сделать наши собственные дебаты о выборе языка программирования более информированными.

Объем этого сообщения в блоге ограничен выбором первого языка программирования. Преподаваемого в бакалавриате компьютерных наук в университетах. Это означает. Что я не буду обсуждать другие важные контексты. Такие как выбор на уровне начального или среднего образования. Выбор для независимых учащихся и выбор в других университетских степенях. Которые могут включать программирование.

Обратите внимание, что этот пост в блоге адаптирован из эссе. Которое я написал в рамках программы Postgrduate Certificate for Higher Education в Университете Кента. Поэтому он предполагает меньше знаний о программировании. Чем у обычного читателя моего блога. Это делает его доступным для более широкой аудитории, думающей об образовании!

1. Почему язык программирования имеет значение

Профессиональные программисты используют в своей работе несколько языков программирования, и языки. Которые они используют. Меняются при смене работы или запуске нового проекта.

Изучение новых языков является нормальной частью их работы, но это может быть проще. Если человек уже знаком с родственным языком. Выбор первого языка программирования. Преподаваемого в университете. Не определяет будущую карьеру студента. Но может повлиять на направление его карьеры и облегчить самостоятельное обучение в будущем. Выбор первого языка программирования имеет значение по ряду причин.

1.1 Сразу полезные навыки

Очевидным фактором является то. Что определенный выбор дает студентам практические навыки программирования. Которые они могут немедленно использовать в промышленности. Часто упоминаемая цель [1] состоит в том. Чтобы к концу первого года обучения студенты имели достаточный практический опыт для прохождения летней практики. Это требует введения широко используемого языка программирования на первом курсе. Хотя это можно сделать и во втором семестре.

1.2 Объектив для дальнейшего обучения

Программирование часто преподносится как инструмент поддержки мышления [2], и утверждается, что 3], проводя параллель с гипотезой Сапира–Уорфа о разговорных языках. Выбор первого языка программирования важен. Потому что он помогает студентам думать и понимать дальнейшие предметы. Преподаваемые в рамках учебной программы. Например, обучение математически ориентированному языку программирования может способствовать пониманию дальнейших математических дисциплин.

1.3 Вторичные средства программирования

Язык программирования поставляется с экосистемой вторичных инструментов. Они часто важны в практической работе по программированию. Но некоторые преподаватели рассматривают их как отвлекающие факторы. Которых следует избегать при обучении программированию. Выбор первого языка программирования влияет на то. Какие вторичные инструменты будут доступны студентам. Некоторые языки требуют от студентов овладения сложными инструментами. Используемыми более опытными разработчиками. В то время как другие языки могут использоваться изолированно, например. С помощью среды. Разработанной специально для обучения [4].

Рис. 1. Наиболее часто встречающиеся первые языки программирования в Великобритании, адаптированные из [5], и Австралии/Новой Зеландии. Адаптированные из [18].

2. Примеры первых языков программирования

Наиболее распространенные вводные языки программирования в Великобритании и Австралии/Новой Зеландии были количественно изучены в других странах [5, 18], и результаты представлены на рис.1. Я подробно обсуждаю четыре варианта примера. Два из моих примеров являются репрезентативными для двух наиболее широко выбранных языков в Великобритании. А один обсуждает необычный выбор. В моем последнем примере рассматривается учебная программа. Использовавшаяся в Массачусетском технологическом институте до 2009 года. На которую часто критически ссылаются в литературе. Обсуждающей выбор языка программирования. И поэтому ее стоит обсудить. Несмотря на то. Что она больше не используется.

2.1 Выбор популярных языков программирования

Java-самый популярный первый язык программирования в британских университетах (преподается на 61% курсов). Согласно индексу TIOBE , Java также является самым популярным языком программирования в целом. Так что это ожидаемый выбор. Преподавание Java дает студентам сразу полезные навыки программирования. Курс в Кентском университете преподает парадигму объектно-ориентированного программирования основного потока с использованием Java. Он использует образовательную среду программирования BlueJ [6], который скрывает многие сложности профессиональных инструментов для Java. Будучи широко используемым языком программирования. Java также позволяет преподавать ряд последующих курсов на языке. Который студенты уже знают.

Вторым по распространенности первым языком в британских университетах является Python (17% курсов). Которым пользуется, например. Лондонский университет Королевы Марии. Интересно, что он так же популярен, как Java в Австралии и Новой Зеландии [5], и наиболее часто встречается в ведущих университетах США [7]. Мотивы выбора Python схожи с мотивами использования Java. Хотя Python чаще используется в недавно популярных областях. Таких как искусственный интеллект.

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

Примером учебной программы, которая делает необычный выбор первого языка программирования. Является курс в Кембриджском университете. На первом курсе Кембридж преподает ML (который поддерживает функциональную парадигму), а затем Java. МЛ не используется промышленностью и не поддерживается широко используемыми вторичными инструментами. Публичная информация о выборе языка ослабляет акцент на выборе и акцентирует внимание на том. Что он используется для обучения компьютерному мышлению. Цитирую Часто задаваемые вопросы по поступлению на Факультет компьютерных наук и технологий [16]

Другим необычным выбором был язык Scheme. Преподававшийся в Массачусетском технологическом институте до 2009 года с использованием учебника Structure and Interpretation of Computer Programs (SICP) [8]. SICP рассматривается как сложное, но глубокое чтение ( [12]). Он опирается на идею трактовки кода как данных, которая является фундаментальным понятием в схеме. Но которая не присутствует – в той же форме – во многих других языках. По этой причине SICP является столь же сложным и глубоким чтением для опытных профессиональных программистов. Этим аспектом SICP часто восхищаются, но, как я расскажу позже, также критикуют педагоги.

3 Аргумента в пользу выбора первого языка

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

3.1 Языковые аспекты обсуждаются (и не обсуждаются)

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

  • Используется в промышленности и вторичной оснастке. Два аспекта, которые обсуждались ранее и на которые часто ссылаются в литературе, — это то. Используется ли язык в промышленности и какие вторичные инструменты он предоставляет. Авторы в пользу языков, не получивших широкого распространения в промышленности. Часто предполагают [1, 9], что второй язык может быть введен во второй половине первого года. Это дает им необходимые практические знания. Как только они знакомы с основными концепциями программирования.

  • Парадигма языка программирования. Многие авторы выступают в пользу определенного языка, основанного на его парадигме программирования. Это может быть как объектно-ориентированный [4] , так и функциональный [10]. Авторы часто пишут для своих субсообществ. Которые уже рассматривают одну парадигму как превосходящую. Такие аргументы также могут быть косвенными аргументами для аргументации определенной линзы для дальнейшего обучения. Что является еще одним важным аспектом выбора языка программирования.

  • Синтаксическая простота или фамильярность. Синтаксис-это аспект языка программирования. Который не имеет общепринятого наилучшего решения. Он используется в аргументах в пользу языков программирования. Которые занимают в некотором смысле более крайнюю позицию – либо минималистичный синтаксис схемы (как используется SICP). Математическая нотация [11], либо отсутствие синтаксического шума в таких языках. Как Python. Такие аргументы часто излагаются без попытки убедить читателя в том. Что такая крайняя позиция более желательна.

В дополнение к важным аспектам, которые часто упоминаются в академической литературе. Есть также ряд аспектов. Которые, вероятно. Столь же важны. Но не обсуждаются явно.

  • Элегантность идей информатики. Одним из ключевых аргументов в пользу учебника SICP является то. Что он преподает элегантные идеи информатики. В отличие от дискуссий о синтаксисе, в сообществе компьютерных наук, по-видимому. Существует широкое согласие относительно элегантности некоторых идей (например. Представленных в SICP). Одно из возможных объяснений того, почему

  • Университетская культура и политика. Выбор первого языка программирования в учебной программе по информатике неизбежно является предметом университетской политики. Выбор зависит от личных предпочтений академиков, а также от исследований. Проводимых в университете (кафедра с активными исследованиями по функциональному программированию с большей вероятностью выберет функциональный язык программирования). Есть также более общие культурные моменты. Которые следует учитывать. Университеты, которые представляются более практичными, скорее всего, выберут язык. Используемый в промышленности. В то время как более академически склонные университеты могут сделать более сложный и менее непосредственно практический выбор. Это, действительно, относится к четырем конкретным учебным планам (Кент, Queen Marry, Кембридж и MIT). Обсуждавшимся ранее в этом блоге.

3.2 Аргументация в пользу популярных языков

Теперь я рассматриваю ряд аргументов в пользу следования определенной учебной программе в вводном курсе программирования. Они взяты из опубликованных академических работ, либо в образовательных исследовательских центрах. Либо в центрах компьютерных наук. За одним исключением – комментарий. Объясняющий решение MIT перейти от SICP и языка схем к Python. Доступен только в виде стенограммы комментария. Я начинаю с рассмотрения аргументов, поддерживающих популярные языки программирования. А именно Python и Java.

Программирование путем тыкания

Учитывая культовый статус учебника SICP. Решение перейти от схемы к основному потоку Python в MIT привлекло большое внимание. По словам Джерри Сассмана, соавтора SICP [13]:

[SICP] больше не готовит инженеров к тому. Что такое инженерия сегодня. (…) В 80-х и 90-х годах инженеры строили сложные системы. Комбинируя простые и хорошо понятные части. (…) Сегодня это уже не так. (…) Инженеры теперь регулярно пишут код. Который они не до конца понимают. (…) Программирование сегодня больше похоже на науку. Ты хватаешь эту часть библиотеки и тыкаешь в нее пальцем. Вы пишете программы, которые тыкают в него и смотрят, что он делает. И вы говорите:

Этот аргумент основан на глубоком наблюдении о том, как в наши дни осуществляется программирование. Хотя он не говорит о конкретных языках программирования, обучение

Образовательные среды программирования

Другой подход к вводной программе программирования заключается в использовании образовательной среды. Такой как BlueJ [6], которая [14Такие среды существуют для различных языков. Но особенно популярны при обучении Java. Которая в остальном опирается на очень сложные вторичные инструменты. Образовательные среды также могут принимать форму микромиров –простых в использовании проблемных областей (таких как робот. Перемещающийся по двумерной сетке). Которые позволяют преподавателям В противном случае [4]

Отстаивать образовательную среду программирования-это, в какой-то степени. Доказывать противоположность программированию путем тыкания. Поскольку полное понимание многих реальных библиотек и инструментов стало невозможным (или. По крайней мере. Непрактичным). Образовательная среда защищает студентов от этой сложности. Они обеспечивают среду. Которая может быть полностью понята. И позволяют преподавателям сосредоточиться на таких понятиях. Как композиция простых и хорошо понятных частей.

3.3 Аргументация в пользу необычных языков

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

Фундаментальные концепции информатики

Многие аргументы. Которые используются для поддержки выбора менее распространенного языка программирования в качестве первого языка. Указывают на то. Что этот язык позволяет лучше преподавать определенные аспекты информатики. Которые преподаватели считают фундаментальными. Научные публикации, обсуждающие такие подходы. Также часто противопоставляют их метод широко известной учебной программе SCIP. Которая рассматривается как фокусирующаяся на несущественных (хотя и элегантных) концепциях информатики.

Одним из конкретных примеров является учебник How to Design Programs (HTDP) [17], который подчеркивает 9]. Он использует ряд языков обучения. Основанных на схеме (также используемой SICP) с возрастающей сложностью. Таким образом, подход сродни использованию образовательных сред. Еще одна критика СЦИПИОНА [11] выступает за язык с синтаксисом. Более близким к математической нотации. Который позволяет студентам легко доказывать уравнения о программах. В статье, однако, не обсуждается, почему это то. Что студенты должны уметь делать – она была написана для субсообщества. Где важность программных доказательств принимается.

Уравнитель между студентами

Интересным аргументом в пользу необычного языка является то. Что он 10]. Авторы подкрепляют свое наблюдение эмпирическим исследованием – студенты без предварительного опыта программирования (которые непропорционально чаще являются студентками женского пола) преуспевают в этом курсе так же хорошо. Как и студенты с предыдущим опытом программирования на других языках. Часто задаваемые вопросы по поступлению в Кембридж [16] также рекомендует будущим студентам. Которые хотят начать программировать самостоятельно, что

4. Оценка аргументов для первого языка программирования

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

  • Предвзятость в эмпирических исследованиях. Прежде всего. Некоторые преподаватели поддерживают свой выбор первого языка программирования эмпирическим исследованием, например. Изучая опросы удовлетворенности студентов между двумя группами или двумя годами. Однако такое исследование очень трудно провести контролируемым образом. Преподаватель. Который получает возможность разработать новый материал с использованием выбранного им языка программирования. Скорее всего. Проведет более увлекательный курс. Независимо от языка программирования.

  • Веские причины могут поддержать любой выбор. Есть случаи, когда существуют убедительные аргументы в пользу противоположных точек зрения. Например, должны ли мы преподавать язык программирования. Который поддерживает программирование путем тыкания. Или мы должны использовать образовательную среду. Которая защищает студентов от таких сложностей? Поскольку нет широкого согласия относительно того. Что такое

  • Как мы выбираем аргументы для использования. Тот факт, что существуют убедительные аргументы в поддержку практически любого выбора первого языка программирования. Не означает. Что такие аргументы делаются небрежно и без тщательного рассмотрения. Это показывает, что, возможно, существует другой уровень проблемы. Неустановленные убеждения о том, как должно выглядеть компьютерное программирование. Определяют как язык выбора. Так и аргументы. Которые обеспечивают сильную поддержку использования такого языка в качестве первого языка в учебной программе.

5. Выводы

Аргументация, рассмотренная в этом эссе. Хорошо продумана и часто подтверждается эмпирическими данными. Однако нет никакого вывода о том. Какой язык программирования должен быть введен в качестве первого в вводной программе программирования. Более того, дивергентный характер аргументации предполагает. Что мы не должны ожидать когда-либо получить один ясный ответ на этот вопрос.

Выбор первого языка-это то. Что социологи называют злой проблемой. Это понятие появилось в контексте социальной политики и определяет проблемы. Которые не могут быть однозначно описаны. Решения нечестивых проблем 15].

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

В заключение я не утверждаю. Что представление убедительных аргументов в пользу первого языка программирования бессмысленно, а скорее. Что мы должны осознавать свои мотивы для их выбора. Такие аргументы всегда будут убедительными и позволят вести содержательную дискуссию только в том случае. Если мы согласимся с

  1. Тобин-Хохштадт. Сэм и Дэвид Ван Хорн. — От принципов к практике в классе на первом курсе.In Proceedings of Trends in Functional Programming In Education. TFPIE 2013.
  2. Аллен Дауни. Scientific American, 2017. Доступно онлайн по адресу https://blogs.scientificamerican.com/guest-blog/programming-as-a-way-of-thinking/ (извлечено 12 мая 2019 года)
  3. Роб Митчем. Доступно онлайн по адресу https://news.uchicago.edu/story/computer-programming-languages-can-impact-science-and-thought (извлечено 12 мая 2019 года)
  4. Листер, Рэймонд. Труды ШЕСТОЙ Австралийской конференции по компьютерному образованию-Том 30. Australian Computer Society. Inc., 2004.
  5. Мерфи, Эллен, Том Крик и Джеймс Х. Искусство, наука и техника программирования, 2017, Том 1, Выпуск 2, статья 18
  6. Kölling, Michael. Размышления о преподавании программирования. Springer, Berlin, Heidelberg, 2008. 98-115.
  7. Филипп Го. Доступно в Интернете по адресу: https://cacm.acm.org/blogs/blog-cacm/176450/fulltext (извлечено 12 мая 2019 года)
  8. Абельсон, Гарольд. Джеральд Джей Сассман и Джули Сассман. — Структура и интерпретация компьютерных программ.MIT Press, 1985.
  9. Felleisen, Matthias, et al.
  10. Чакраварти, Мануэль Маунт и Габриэль Келлер.
  11. Уодлер, Филипп. — Критика Абельсона и Сассмана. Или почему расчет лучше интриг.ACM SIGPLAN Notices 22.3 (1987): 83-94.
  12. Брайан Харви. Boston Globe (2011). Доступно в Интернете по адресу: https://people.eecs.berkeley.edu/~bh/sicp.html (проверено 12 мая 2019 года)
  13. Yarden Katz. Архивируется онлайн по адресу: http://web.archive.org/web/20180609142559/http://www.posteriorscience.net/?p=206 (12 мая 2019 года)
  14. Хаган, Диана и Селби Маркхэм. Труды конференции Australasian Society for Computers in Learning in Third Education Conference ASCILITE. 2000.
  15. Риттель, Хорст У. Дж. и Мелвин М. Уэббер. Политические науки 4.2 (1973): 155-169.
  16. Факультет компьютерных наук и технологий Кембриджского университета. Доступно онлайн по адресу https://www.cst.cam.ac.uk/admissions/undergraduate/faqs (Извлечено 12 мая 2019 года)
  17. Felleisen, Matthias, et al. Как проектировать программы: введение в программирование и вычислительную технику. MIT Press, 2018.
  18. Мейсон, Райна и Грэм Купер. Труды Шестнадцатой Австралийской конференции по компьютерному образованию-Том 148. Australian Computer Society. Inc., 2014.