?

Log in

No account? Create an account
 

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

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

Previous Entry Почему Python должен быть первым языком программирования в школе? 23 ноя, 2014 @ 13:41
Оставить комментарий
(Удалённый комментарий)
[User Picture Icon]
From:dkirienko
Date:Ноябрь, 23, 2014 18:54 (UTC)
(Link)
Я не хочу обсуждать другие языки программирования и сравнивать какие-то конкретные языки программирования, их логичности и нелогичности. Python мне кажется логичным языком и особых проблем с нелогичностью я в нем не вижу, по крайней мере на школьном уровне. И, разумеется, нужно использовать Python версии 3, по крайней мере не будет проблем с тем, что print - это не функция, и пишется без скобочек, ну и вообще многие другие нелогичности исправлены (как, например, огромная нелогичность языка C - смысл операции "/" зависит от типа операндов).

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

Я учил детей на C++ и учил детей на Python. Учил ну в общем одинаково - одинаковые задачи, одинаковые подходы. По моим ощущениям уровень вхождения в Python гораздо ниже, чем в C++, и подводных камней гораздо меньше. В C++ можно забыть проинциализировать переменную, выйти за границу списка, написать if (a = b), поставить точку с запятой после for (i = 0; i < N; ++i); и после этого часами искать ошибку. В Python подобных граблей гораздо меньше, ибо язык разрабатывался на 20 лет позднее, чем C.

И квалификация преподавателя в языке C/C++ на самом деле нужна гораздо выше - как объяснить, почему if (a = b) - работает, но не так, а почему if (0 <= x <= 10) тоже работает, но тоже совсем не так? Можно привести массу примеров. Вот последний пример, нашел две недели назад:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    if (sqrt(2) == sqrt(2))
        cout << "Equal" << endl;
    else
        cout << "Unequal" << endl;
}


Почему этот код может выводить Unequal в некоторых случаях? (попробуйте скомпилировать при помощи gcc на 32-битной системе, может быть получится воспроизвести). Какое количество преподавателей да не то, чтобы школы, а даже вузов России сможет это объяснить? А что будет делать учитель в школе, если столкнется с такой проблемой? Я вот, например, на stackoverflow писал вопрос...

В Pascal таких проблем меньше, но с Pascal я связываться не хочу по многим другим причинам, ну хотя бы в силу того, что программировать что-то более-менее сложное на Pascal - сущее мучение. Программирование должно быть приятным, Python делает программирование именно приятным.



Edited at 2014-11-23 19:03 (UTC)
From:(Anonymous)
Date:Ноябрь, 24, 2014 08:08 (UTC)

Вл. Ильин

(Link)
По первым двум - очень просто.
И там и там в скобках _число_. И все.
А из этого получается очень простое обоснование
x = y = z;

Путать == и = отучаются очень быстро. Возможно, лучше, чтобы это отлавливал компилятор. Но в этих делах интерпретируемый язык Питон явно проигрывает.
(Удалённый комментарий)
[User Picture Icon]
From:dkirienko
Date:Ноябрь, 25, 2014 13:56 (UTC)

Re: Что-то я логику перестал понимать

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

JavaScript не является универсальным языком программирования. И вообще обсуждать JavaScript у меня нет никакого желания.
From:(Anonymous)
Date:Ноябрь, 25, 2014 00:25 (UTC)
(Link)
Не вспомню уж паскаля, но в С эта "проблема" как в самом начале начинается так дальше никогда и не заканчивается. Каждый раз когда кажется что вот теперь уже точно все о нем знаешь обязательно найдется какой-нибудь еще способ выстрелить себе в ногу. К тому же, что значит "просто запомнить", все имеет объяснения и, как раз, в питоне они обычно довольно просты. (1) исключение потому что синтакс пересекается с арифметическими скобками (в том же С проблемы с {} куда веселее). print в python2 это не функция а языковая конструкция (statement), как return, например. Можно написать что-нибудь в духе print >>sys.stderr, 'bb world',
(Оставить комментарий)
Top of Page Разработано LiveJournal.com