Комментарии 14
Оказывается сегодня и пишут и учат на Tkinter. Здорово.
Очень интересно, даже не школьнику. Спасибо за статью.
Супер.
Статья писалась полтора года назад.
Вторник 14 марта было в 2023 году.
Да и видео на Рутьюб выложено в прошлом году.
Что так долго?
Не хватает самой малости. Вот есть школьник, вот есть домашний виндовый компьютер, вот есть надвигающийся по учебной программе Питон. Помимо написания кода нужно сделать первое действие - познакомить ребенка с инструментом разработки, IDE. Getting started для чайников, что скачать, что установить.
Потыкаться в онлайн-редакторе не дает осознания "я написал программу". Это воспринимается как "я прошел онлайн-тест, отвяжитесь от меня". Это не отдать другу, это не установить на телефон, это не задействовать на своем компьютере для ежедневного использования. В карман не положишь, на хлеб не намажешь...
В моем детстве: принес из школы дискетку с паскалем, установил. Что-то напрограммировал, получил исполняемый файл. Принес в школу, поиграл сам, дал друзьям поиграть на соседних компьютерах, они растащили по домам. Просят обновлений. Эмоций шквал!
Знакомить ребенка с большими IDE со старта - имхо странновато. В виндовой поставке с Python идёт IDLE. В ней есть подсветка синтаксиса и возможность сохранить файл. На первых парах этого, как мне кажется, вполне достаточно.
Python в целом довольно не удобно пакуется в исполняемые файлы. Но для простеньких штук -
pip install nuitka
nuitka main.py
Должно быть достаточно
Полностью поддерживаю.
Или, может, все-таки лучше учить детей самым новым языкам программирования?
Самые новые языки программирования созданы для того, чтобы можно было поручить работу менее квалифицированным программистам. Типа квалификация нужна для многопоточности - Goroutines, для работы с памятью - Rust… Нужно ли учить такому вообще, ведь когда ребёнок дорастёт до трудоустройства, другие самые новые языки будут доить надежды менеджмента?
На Питоне это тоже отразилось, но он всё-таки староват. Я бы лучше понял вопрос о том, не стоит ли учить самым внеиндустриальным языкам? Такие есть. Среди выживших - С, С++, производные Lisp типа специально предназначенной для обучения, в смысле учебно-боевого самолёта, Racket. Среди новых, Julia.
Я бы таки выбрал Питон ибо он обвешан прибамбасами как новогодняя ёлка. Представим себе, например, что вдруг спохватились - Rust надо было учить. Пожалуйста - пишем модуль для Питона.
Python («Питон», «Пайтон»)
Оно конечно, но писать в разном стиле - как мешать британский и американский английский, систему Хэпбёрна и кунрэй-сики… не вполне хорошо, короче.
создание часов при помощи модуля Tkinter.
Неплохо было-бы пояснить с какого перепугу, а то приходится догадываться. Например - так можно не упоминать модули, pip, venv… Типа самый первый урок.
в самом конце обязательно нужно написать window.mainloop().
Не обязательно. Если самый первый урок, имеет смысл и про текстовый редактор не упоминать, а начать с REPL. И тогда много интересного можно без этого цикла, например, сделать размер окна мышкой и спросить его winfo функциями.
И тут у меня лёгкое недоумение - похоже, что предполагается у ребёнка наличие компьютера. Не рано ли? Конкретно такой урок можно и на смартфоне провести, но тогда REPL может отказаться запускать tkinter, как в Pydroid. Получается, что нужно готовиться к тому, что у детей разное оборудование, особенно если занятие дистанционное…
для этого в аргумент text наших лейблов запишем вызов соответствующих функций: get_date() и get_time();
Нехорошо. Лучше одна функция которая возвращает tuple. А так можно налететь на момент когда время будет началом вторника, а дата ещё понедельником. Говнокодские приключения не суть учебный материал.
Программирование легко может перерасти из простого увлечения к профессии разработчика, компетенции которой важны для успеха в современном мире.
Или наоборот, мир может оздоровиться и навык программирования станет на тот же уровень, на котором был навык владения логарифмической линейкой. Что сделает его ещё более важным для успеха…
в нем каждую секунду будем обновлять данные наших часов
Откуда следует что каждую секунду, а не крутимся попусту грея проц?
Делитесь своим мнением в комментариях.
А нефиг было такое писать.
Я не учитель, но всегда подозревал что начинать надо со статически типизированного языка. Динамическая типизация это для тех у кого голова тренирована самому за типами следить.
Потом я немного учил жену прогать и мои подозрения полностью подтвердились. Да, на с не так все быстро и просто. Зато поймешь как комп работает.
Ох не стыкуется это с моим опытом. Есть контекст, например функция. Что в ней что - понятно и так. Пишется вызов другой функции. Она что, случайно выбрана? Нет, известно что она делает и, следовательно, что можно туда передавать. Не нужно ни за какими типами следить, оно само.
А вот если не очень понятно что функция делает, но я вижу что она вроде принимает тот тип что у меня, то это дополнительная надежда что она подойдёт. А это приглашение к стилю «мама, смотри - заработало».
От статической типизации можно получить пользу, особенно вместе с ООП, но и то абсолютность этого под сомнением, см. Julia. И есть проблема курицы и яйца - чтобы писать код, нужно определить типы, а чтобы определить типы, нужно представлять себе код. Для абсолютного большинства случаев эта проблема снимается тем, что пишется примерно то же самое что в прошлый раз. Но у ребёнка всё первый раз, а чтобы строгая типизация не была ограничением нужно к ней и темплеты, и интерфейсы, и кодогенерацию… разбухает однако учебный план.
Как мне кажется, статическая типизация и близкое к ней ООП возникла от неумения писать линтеры с компиляторами и наличия сверхзадачи сделать GUI. Потом писать подучились и появилась следующая сверхзадача - выдавать HTML. Сейчас писать линтеры и компиляторы научились ещё лучше (ценой неэффективности) и сверхзадача - AI, если пузырь не лопнет достаточно долго, то точно увидим ещё языковых идей.
Хочется, например, научить писать код и при этом думать как его будешь читать через десять лет. И у меня такое чувство что с этим статическая типизация оказывает медвежью услугу.
Как С помогает понять как работает компьютер - не соображу. Ассемблер - да, от части, потому что начинать понимать надо где-то с системы прерываний. А вот как изучая почему один пишет на С хороший код, а другой - не такой хороший, приходили к выводу что первый представляет себе как это будет на ассемблере - помню.
Поэтому ни в какие решающие признаки языка для начала обучения я не верю, а по совокупности свойств получается что Python либо JavaScript для большинства, Julia либо Racket для придурков.
Полагаю, что для развития алгоритмического мышления лучше детей учить делать табуретку, вязать на спицах, но печь пироги. И эти резервные знания пригодятся всегда. Нужно готовить здоровых детей
А почему не pytz и не datetime?
Как создать часы на Python: уроки программирования для школьников