С чего начать обучение ребенка 10 лет спортивному программированию?
Посоветуйте пожалуйста, с чего начать обучение сына программированию вообще и с прицелом на спортивное программирование (задачки с leetcode, codeforces, ...) в частности?
Хочу начинать с C/C++, как наиболее низкоуровневый (с ассемблера, боюсь, сразу заскучает).
Идею начинать с простого (Logo, Basic, Python) считаю не подходящей (если не вредной). Да и я уже попробовал год назад начать ему объяснять питон, но быстро понял, что это не просто (как объяснить сходу `range(10)` ребенку?), с низкоуровневым Си тут должно быть проще.
Minecraft education edition и задачки к нему пробовали, затруднений не вызвало, но и восторга тоже.
"Программируем в Майнкрафт" (который через плагин RaspberryJuice) вообще не заинтересовало, хотя возможно я не смог показать в нужном свете.
Мобильная игрушка Lego Mindstorms Fix the factory - аналогично.
Codecombat - дошел до 7 уровня и заскучал.
Тут еще такой момент: нужно что-то красивое для начала. Ведь "нарисуй елочку из снежинок `*` в черном окне терминала" было бы скучно даже мне. В моей юности был graphics.h и `getImage`/`putImage` для отрисовки графичаских спрайтов, из которых мы делали 2d игрушки и очень радовались тому. Что сейчас на этом месте? OpenGL? Unreal engine как-то приспособить?
Занимайся с ним тем, чем ему нравится заниматься с тобой.
А сам с собой - спортивным программированием, если хочешь.
Может быть, когда и если он захочет - ты прийдёшь сюда и расскажешь о своих наработках.
Мне было интересно программирование даже когда оно было в qBasic, это если что белые буквы на синем фоне и даже курсора нет. Если ничего из перечисленного не заинтересовало значит просто программирование не интересно
Юлия Бедросова, разница в том, что у котёнка инстинкт ловить мышей, он этого хочет, а человеческий детёныш может хотеть чего попало и гарантированно выработает отвращение к тому, к чему его будут принуждать.
1. Пожалуйста, не надо ЗАСТАВЛЯТЬ ребёнка программировать. Он должен сам этого хотеть, равно как и заниматься боксом или игрой на скрипке.
2. "спортивное программирование" и олимпиады ничего не дадут ему в плане опыта реального программирования. Ему будет крайне сложно работать в комманде над реальными программами, потому что олимпиадники думают не тем местом и не о том, о чём нужно и их код могут понять только такие же олимпиадники, либо вообще никто не может ег понять...
Третье. Если ребёнок считает, что ему интересно программирование, есть игровые языки программирования. игровые в том смысле, что всё программирование происходитв виде игры. Модули накидываются мышкой, как паззл и кое-что кодируется на языке типа бейсика. И результат трудов будет виден буквально за часы, т.е. он быстро сможет заставить двигаться вадратик по экрану, а не будет пол года сидеть в слезах, пытаясь понять, почему его алгоритм бинарной сорировки в некоторы хслучаях сбоит, а в других работает правильно...
А уже потом он сам попросит вас оплатить курсы по настоящим языкам программирования. Или курсы по рисованию. Или ещё какие-т окурсы или кружки, которые ему будут интересны. Не лишайте ребёнка детства! Лучше сами снежинку нарисуйте в терминале :)
"спортивное программирование" и олимпиады ничего не дадут ему в плане опыта реального программирования.
Тем не менее, какие-то успехи в спортивном программировании откроют дорогу в условный FAANG. Интервью, по сравнению с олимпиадами - легкая прогулка. Рекрутеры гугла/яндекса спамят олимпиадникам в первую очередь.
Ему будет крайне сложно работать в комманде над реальными программами,
Самая престижная олимпиада ACM ICPC - коммандная. Да, у олимпиадников обычно слабо читаемый стиль кода, если вы сами не олимпиадник, но это лечится буквально за 2 недели код-ревью.
потому что олимпиадники думают не тем местом и не о том
Очень не согласен. Алгоритмическое мышление, умение формализовывать задачи и объяснять решения - очень полезны в программировании.
Wataru, Да, я немного обобщил. Работал всего с несколькими "олимпиадниками", если точнее, то с тремя. Алгоритмическое мышление у них хорошее, с этим не поспорить. Но они думают в терминологии олимпиадных задач и этого не выбить ни за 2 недели, ни за 2 месяца, ведь они годами такой образ мышления оттачивали. Если конкретизировать, то они больше думают о количестве строк, чем о решени проблемы. Если нет ограничения по времени, то олимпиадники могут сделать эффективное решение. Но вот если времени мало (а это всегда), если задача решается не парой функций, а требует создания десятков dll... то проще сжечь весь код, вместе с их компом и с нуля всё написать, чем пытаться разобраться в том, что они наделали.
Возможно, это исключительно мой неудачный опыт. Но, лично у меня, очень предвзятое отношение к олимпиадникам.
Я знаю что сейчас здесь куча народу напишет что ребенку это не интересно, и я с этим согласен. Но все же я упомяну что программирование - такой-же базовый навык как и математика.
Вместо 2д игрушек, сейчас можно делать простые браузерные игры, типа бойцовский клуб, или стратегии типа Black Nova Trader.
Сразу и результат есть и написать такое можно на чем угодно (php, python, nodejs), немного html подучить.
Пусть освоит базовые понятия циклов и условий, а если ему будет интересно, то можно будет уже и взять что-то посложнее. Тот же юнити и C#