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

Nov 23, 2014 13:41

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

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

Leave a comment

Comments 88

(The comment has been removed)

dkirienko November 23 2014, 18:54:37 UTC
Я не хочу обсуждать другие языки программирования и сравнивать какие-то конкретные языки программирования, их логичности и нелогичности. Python мне кажется логичным языком и особых проблем с нелогичностью я в нем не вижу, по крайней мере на школьном уровне. И, разумеется, нужно использовать Python версии 3, по крайней мере не будет проблем с тем, что print - это не функция, и пишется без скобочек, ну и вообще многие другие нелогичности исправлены (как, например, огромная нелогичность языка C - смысл операции "/" зависит от типа операндов ( ... )

Reply

Вл. Ильин anonymous November 24 2014, 08:08:29 UTC
По первым двум - очень просто.
И там и там в скобках _число_. И все.
А из этого получается очень простое обоснование
x = y = z;

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

Reply

(The comment has been removed)


ext_544214 November 23 2014, 18:31:36 UTC
Честно скажу, не знаю питона, хотя руки давно чешутся уже, напишу по опыту других высокоуровневых языков.
Конечно, писать программы лучше с использованием наиболее высокоуровневых возможностей из предоставляемых языком и платформой. Но всегда важно знать их ограничения. Ибо рано или поздно придётся продукт масштабировать, и вот тут непонимание того, что стоит за тем или иным синтаксическим сахаром может выйти боком. Не стоит уповать на то, что большая часть этих школьников будут писать нечувствительные к производительности компоненты для бизнес-задач. Нет, они будут писать всю эту "бизнес-лапшу", но только не в первом, дак в пятом проекте придётся её оптимизировать. И оптимизировать в том числе выбрасыванием сахара.
В целом, это конечно, тоже методологическая проблема - как объяснить школьникам, что подход "понимаю то, что применяю" нужно применять не только к циклам и сортировке, но и к любой другой новой фиче языка. Думаю, что она решаема, но эта проблема новая - её не было при переходе к высокоуровневым языкам после низкоуровневых

Reply

bljakhin_mukher November 23 2014, 22:04:34 UTC
Думаю, что она решаема, но эта проблема новая - её не было при переходе к высокоуровневым языкам после низкоуровневых.

Именно! Меня наверное закидают тапками, но мне кажется для обучения профессиональному программированию хорошим вариантом было бы предварять работу на высокоуровневом языке работой на низкоуровневом. Если же речь идет только об ознакомлении, то в зависимости от самых разных факторов где-то паскаль предпочтительней где-то питон, где-то Си. Только не объектно ориентированные языки.

Reply


cema November 23 2014, 21:12:03 UTC
на факультете ВМК МГУ попытка заменить Pascal на C, как первый язык программирования, оказалась безуспешной ввиду нежелания изменять сложившиеся программы и контингент преподавателей.

Боже мой, неужели это правда? Я давно слышал, что ВМК гадюшник тот еще, но всегда считал, что хотя бы специалисты там приличные.

Reply


cross_join November 23 2014, 21:58:47 UTC
Если цель программирования "копай больше - кидай дальше", то можно делать упор на минимизации количества вбиваемых с клавиатуры символов.
Можно показать студентам, что на Паскале легко определить функцию заполнения любого массива. Следующий вопрос - заполнение любыми объектами, по идее должен вызвать дискуссию о строгой и нестрогой типизации.

В принципе, вы не оригинальны, 40 лет назад так же аргументировали выбор бейсика. Язык программирования, прежде всего - это средство создания словаря для решения задачи в её же терминах.

Основные претензии к питону: нелепые для современного языка требования к табуляциям (как в фортране 50-60-х годов) и отсутствие полной проверки синтаксиса. То есть у школьника поощряется с одной стороны механистичное следование отступам, с другой - возможность написать некорректный код, которы стрельнет в самый неподходящий момент выполнения.

Reply


saylars November 23 2014, 23:30:32 UTC
А имеются уже школьники, которые начинали с Питона, а успешно изучали С+асм и вообще лезли в эту низкоуровневость дабы понять, как это все на самом деле работает. Просто вот за эту связку я очень благодарен ВМК, это было и интересно, и полезно.

И существует ли проблема с вопросом "А как вообще это работает?" Т.е. вы рассказываете про двоичный код и тут же Питон. Все же в С можно понимать, как это все работает (после ВМКшного курса вплоть до ассемблера). Да, не стоит мне приводить ужасные допустимые конструкции в С, а так же все знание о преобразовании в асм умирает с волшебством оптимизатора, но все же.
Просто программируя на Питоне, я забываю про такие слова как мантисса, выделение памяти да и вообще память, двоичное представление числа и так далее. А насколько я помню, это так же входит в школьную программу. И С и Паскаль были приземленнее что ли.

Reply

dkirienko November 24 2014, 03:16:44 UTC
Не надо бросаться словами "это также входит в школьную программу". В школьную программу ничего не входит. Даже программирование особо и не входит. Если тебя этому учили в школе, то это не означает, что и всех должны учить этому в школе.

И когда я учу детей на Питоне, то почему-то могу говорить и про двоичное представление чисел, и про битовые операции, и про дополнительный код, и про мантиссы и IEEE-754 - это всё даже в Python никто не отменял... Ну да, выделения памяти как такового там нет, этого уж не отнимешь.

Reply

chivorotkiv November 24 2014, 15:53:13 UTC
плюс-плюс. Конечно, по программе мы их ничему учить не должны.

Главная цель - увлечь. Увлечённый школьник уже без нас разберётся и в алгоритмах и в кучах-стэках и во всём остальном, независимо от первого языка. Т.е. с нами, конечно, но он будет всё, что ему надо, из нас вытягивать и не только из нас.

А методом запихивания всё равно ничего ни в кого не запихаешь, на каком бы языке это ни делали.

Reply


Leave a comment

Up