Почему Python должен быть первым языком программирования в школе?

Nov 23, 2014 13:41

Сегодня писал ответ Нине Шумилиной из Твери, на вопрос о Python, как первом языке программирования в школе.

Она цитировала Константина Полякова, заключение его статьи в сентябрьском номере "Информатики":
По этим причинам автор склонен поддержать мнение И.А. Сукина: Python хорош для профессиональных программистов, но его использование в качестве ( Read more... )

Leave a comment

dkirienko November 23 2014, 13:06:04 UTC
Петя, это у меня в планах, этот кусок я не дописал. По этому поводу у меня есть замечательные цитаты - предисловие Кнута к "Искусству программирования", где он 50 лет назад рассуждает, на каком языке ему приводить примеры - на машинном или на "алгебраическом", под "алгебраическими" он подразумевает Fortran или Cobol. И останавливается на машинном языке, который сам же и придумывает. Его аргументы:

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

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

И в результате через 50 лет примеры кода у Кнута читать невозможно. Это самый большой недостаток "Искусства программирования" - примеры на машинном коде. С другой стороны, если бы он писал примеры на Fortran или Cobol, то результат был бы не лучше.

Поэтому в томе 4A, например, он уже примеры программ пишет просто на "естественном" языке.

Я про это планирую написать, когда займусь доработкой статьи.

Reply

от Вл. Ильина dkirienko November 23 2014, 13:25:12 UTC
Первым языком программирования должен быть Кумир, видимо, я согласен с Кнутом.

Кстати, не раскрыта тема "вторых", "третьих" языков. Первый язык в школе - Питон. А второй, или одного для школы достаточно?

А в вузе? С учетом того, что студенты разные - и "забудьте все, чему вас учили в школе" - опять Питон?

И еще важный вопрос.
Что значит "должен быть"? Это должно быть закреплено в стандарте?

Reply

Re: от Вл. Ильина dkirienko November 23 2014, 13:36:43 UTC
Не понял ремарку про Кумир и Кнута. Кнут вообще-то на вымышленном машинном языке писал примеры.

Про "вторые" и "третьи" языки я писать вообще-то не собирался, но вот написал ниже, посмотри комментарий. На мой вкус Python одного - достаточно, но тут возможны и варианты. Хочешь объяснять, как устроены массивы и динамическая память - ну рассказывай про С, пожалуйста.

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

Что касается вузов - это сложный вопрос. Мы несколько лет назад в поезде в ЛКШ.Зима обсуждали этот вопрос и я спрашивал, каким языкам программирования должны учить в вузе. Высказывались разные мнения и только один язык называли все - это C.

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

1. Python
2. C
3. C++
4. Java или C#
5. Assembler
6. Что-то функциональное.

Причем роль Python здесь - это скорее унификация, выравнивание студентов, разминка некоторая. Студенты приходят разные, нужно с чего-то начинать. Если начинать сразу с C, то это может быть тяжело для некоторых.

Reply

Re: от Вл. Ильина ext_544214 November 23 2014, 19:31:12 UTC
Почему не начинать с Java/C#?

Reply

Re: от Вл. Ильина dkirienko November 23 2014, 19:40:19 UTC
Почему в MIT не начинают с Java/C#? С простых вещей надо начинать.

Reply

Re: от Вл. Ильина ext_544214 November 23 2014, 19:51:04 UTC
Что из Java/C# непростое в том смысле, что имеет высокий порог входа? Концепция "Всё есть класс"?

Reply

Re: от Вл. Ильина dkirienko November 23 2014, 19:54:02 UTC
Размер кода, который нужно написать, чтобы программа заработала.

Reply

Re: от Вл. Ильина ext_544214 November 23 2014, 20:07:50 UTC
С трудом себе представляю студента, который, умея программировать (хоть как-то) на Python/C++/Pascal/BASIC испугался бы этой стандартной обёртки, которую ещё и среда разработки генерит по дефолту. А в остальном размер кода не сильно отличается

Reply

Re: от Вл. Ильина dkirienko November 23 2014, 20:20:54 UTC
Это какая-то бессмысленная дискуссия. Я вот с трудом представляю себе лектора, который желая обсудить такие вопросы, как двоичный поиск - обход в глубину - сортировка захочет начинать курс с того, что это де мол язык Java и я буду на нём писать примеры кода.

Вот я обсуждал эту статью с Андреем Станкевичем, он говорит, что он алгоритмы на лекциях пишет на питоноподобном псевдокоде. Хотя основной язык программирования для студентов в ИТМО - это Java.

Reply

Re: от Вл. Ильина ext_544214 November 23 2014, 20:39:47 UTC
Для алгоритмического курса - я соглашусь, что это более правильно. Я просто, видимо, не вполне понял цель "унификационного" курса

Reply

perepertoz November 27 2014, 01:42:19 UTC
1) нормально всё читается. язык же компактный
2) он мог бы писать примеры на scheme, но это была бы другая книга :)

Reply


Leave a comment

Up