Как стать автором
Обновить

С какого языка школьнику стоит начать изучать программирование?

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров18K
Всего голосов 15: ↑8 и ↓7+4
Комментарии129

Комментарии 129

BASIC, без вариантов. Не VB, а обычный BASIC образца 1982 года!

Именно так думают во многих школах

К счастью, мы так не думаем :) поэтому предлагаем современные и интересные детям языки и средства разработки и рассказываем о них родителям.

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

Можно, конечно, и Python учить в усеченном (для начала) варианте. Но с Python и Javascript есть проблема: это платформы, у которых своя специфика, иногда довольно сильно отличающаяся от того, как работает реальный компьютер. Например, print("1"+2) - как вы потом объясните ребёнку, что это химера, если у него это реально работало? Нет, уж лучше Basic.

A Scratch это вообще не программирование, при всем моём уважении к нему.

A Scratch это вообще не программирование

Это, конечно, не язык для разработки софта, но как средство дать шестилетнему ребёнку базу для понимания алгоритмов - почему нет?

Потому что это пазл. А в паззле что главное - чтобы элементы совпали и картинка получилась. Ребенок запомнит не алгоритмы, а то что квадратики определенным образом подходят друг к другу. Это всё равно что учиться рисовать с помощью пазлов.

Так в реальной работе мы тоже в основном пазлы собираем, просто кусочков больше, и грани описаны в документации и/или в подсказках IDE. На мой взгляд, быстрый результат очень хорошо помогает завлечь, а это первое что нужно от первого "языка". Другое дело, что тут не нужно долго задерживаться.

Пусть я окажусь в меньшинстве, но по-моему правильный путь должен быть похож на Scratch, Pascal, C. Очень обзорно, буквально пощупать, понять как работают массивы, структуры, функции и указатели. А дальше уже смотреть, что нравится человеку, главное донести акцент, что в итоге большую часть времени человек будет код читать и пытаться в нем разобраться, а не писать.

Так в реальной работе мы тоже в основном пазлы собираем, просто кусочков больше, и грани описаны в документации и/или в подсказках IDE.

Но сперва ведь надо понять какую картинку нам нужно получить (формализовать задачу, описать алгоритм). А из каких кусочков её собирать - дело десятое.

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

комбинировать блоки для получения результата.

Садик, башня из кубиков. Пройденный этап. Башню из кубиков строить методом тыка - нормально. С алгоритмами это не работает. Очень быстро надоест, когда и кубики вроде подходит, а башня не работает.

это поможет выработать навык самому ставить себе задачи

Ну, не вижу никакой связи.

Всё таки там не сборка заданного паззла, а возможность собрать из квадратиков свой.

Собрать из кубиков слово вечность, был такой квест ;) Этот квест в принципе проходим, кроме АПОЖ есть и другие буквы. Но ничему, что можно на самом деле использовать, оно не учит. Больше 10 лет игрушке так то. Не особо выстрелила.

А вот Майнкрафт выстрелил. Хотя там тоже кубики.

Майнкрафт (если делать что-то нетривиальное) как то сложновато. А вот собрать из кубиков Scratch калькулятор или какую-нибудь казуальную игрушку - вполне себе задачка для младшего школьника.

калькулятор

Хе-хе. Калькулятор, на котором можно что-то считать, и для старших школьников не очень тривиально. Даже без скобок.

казуальную игрушку

На 1 экран пазлов никакая игрушка не поместится. Из тех, в которые можно играть больше 1 раза.

Ну извратиться можно. Люди в 1024 байта демосцены впихывают . Но это уровень упоротого олимпиадника

Скажем https://scratch.mit.edu/projects/10128515/editor/ у меня на экране помещается и вроде выглядит не ужасно.

Лучше с простого Microsoft Access , VB так дети даже простейшие в голове запросы не могут представить не группировку соединения один ко многим . Это по сути комбайн sql, vb. Без базы данных программа никому не нужна.

Дедушка, 1982 год был 40 лет назад Мы всё понимаем, тогда и трава была зеленее и крепче, и бабка моложе. Но за 40 лет придумали много нового. Почему ты вспомнил basic а про логарифмическую линейку забыл?

А чем basic плох-то?

Язык, как язык.

Так и линейка как линейка.

В 2024+ году можно использовать умение считать на линейке. Но будет нелегко.

У логарифмической линейки есть одно несомненное преимущество перед калькулятором: она учит думать, понимать, что ты делаешь. Единственный её фундаментальный недостаток - в том, что её не выпускают. Basic же и сейчас есть на чём запустить.

она учит думать, понимать, что ты делаешь

Думать нужно до того, как начал чего то умножать. А во время умножения думать уже не о чем. линейка затем и придумана, чтобы не думать, а риски считать ;)

Тем, что нумерация строк и переходы по goto сегодня уже практически не встречаются? Тем, что сейчас код нужно практически всегда разбивать на процедуры/функции, а в бейсике 82 года такого нет, а все переменные там глобальные?

Возможно удивлю, но в BASIC 82 года такие операторы есть. Помимо (под)процедур вызываемых через GO SUB, возможно использовать функции определяемые через DEF FN. Вместо областей видимости для процедур/функций использовали массивы. Это хорошая практика, позволяющая задуматься об отделении данных от логики и Вы с ней могли встретиться, например, в Си. Альтернатива принятию областей видимости как данности, что имеет как преимущества, так и недостатки.

BASIC 82 года

Надо специфицировать конкретную реализацию. Не помню такого на Радио РК 86.

Да, мы еще на нем 25 лет назад в школе и учились программировать. Отличный первый язык. Школьные задачки решать отлично, плюс можно графику порисовать.

Да!

Безобразно прост в освоении.

Тут даже думать нечего - конечно, Python. Здесь в первую очередь надо учесть его область применения: веб-разработка, анализ данных и визуализация, машинное обучение и искусственный интеллект, автоматизация. Не надо изучать всякие липовые языки, которые нигде не применяются

Сколько нужно в ИТ разработчиков, занимающихся анализом данных, обучением моделей ИИ или описывающих модели ИИ? Или может все вокруг только веб разработчики пишущие бэкенд?

Помимо вышеперечисленных областей есть: десктоп разработка, мобильная разработка, разработка для IoT, высоко нагруженные системы, разработка игр, сложных CRM, middleware систем, низкоуровневых систем и много, много другого, где питон принимает минимальное участие или вообще не может использоваться.

в любом случае рынок всё расставит на свои места

Забыли упомянуть 1С, а там вакансий просто куча)

думать нечего - конечно, Python

Шестилеткам?

Учить надо с основ и не сравнивать HTML и С#. Здесь что-то на можном написано. в 8 лет ребёнок не сможет определиться что ему интереснее С, графику рисовать или он захочет контроллеры програмировать.

Можно же попробовать всё! Чем не профориентация: сегодня запрограммировать контроллер, а завтра нарисовать логотип сайта. Это примерно так же, как было в нашем детстве: утром – английский, вечером – дзюдо. Разностороннее развитие ребенка даже в сфере IT – это всегда плюс.

Лично я бы подарил электронный конструктор для начала 🤔

С английского

А, если серьёзно, то с того, где чётко видно, какой тип у тех или иных переменных и тот, где наименьшее количество подводных камней, и простой синтаксис. То есть js, ts, php, python и т.п. сразу мимо. Python в этом смысле хорош только тем, что можно очень быстро получить результат и гордиться собой. Возможно, для кого-то это даже станет мотивацией.

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

Не плюс. Подводные камни - это дополнительные условия и нюансы конкретного языка. Для обучения программирования в общем смысле - это минус

Не плюс, совсем. 3 месяца обучаю выпускника школы - так, попросили. Оказалось, всяким дерьмом несистемно закидали - js, python (даже бота он писал на одном из уроков в школе) :) но в итоге - ни черта не знает. В голове каша. Нет стройной картины, как, что и почему.

Вот и приходится - от "как работает примитивный компьютер - память, процессор, шина, до как работает сеть - от прохождения пакетов информации до браузера и отправка по адресу браузера html-документа от сервера на рендеринг.

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

Один хрен, кругозора не хватает. В школе его не дают.

Сейчас меня закидают камнями, но Паскаль (например, Freepascal) вполне удовлетворяет всем перечисленным критериям.

Да, он не то, чтобы возглавляет рейтинги языков по вакансиям, но мы же говорим про самое начало обучения.

Почему ж закидают? Для старта он отлично подходит, на мой взгляд

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

Учить программированию нужно не с выбора языка и пихания текстов в черный ящик, чтобы он магическим способом выдал желаемый результат. А с вопросов ЗАЧЕМ тебе это? Что ты хочешь от компьютера? Что он должен для тебя выполнить? И только потом вы сможете помочь подобрать для ученика инструмент (язык программирования), который поможет реализовать его хотелки.

Мы, кстати, с этого и начали: никто не расскажет об интересах ребенка лучше, чем ребенок. И в ветке комментариев выше обсудили, что выбор языка в начальных классах вообще не означает того, что школьник будет программировать на нем всю свою жизнь. Можно воспринимать программирование как отличную возможность для профориентации: если ребенок мечтает выпустить хитовую игру, можно предложить Скретч дошкольнику или Юнити подростку. Или научить писать на html+css+js ребенка, который, например, хочет помочь директрисе обновить сайт школы. Почему нет:))

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

Ну и зачем тогда заставлять их учить переусложнённые [для их задач] языки вроде Python, TypeScript (JS), C#? Им бы для начала научиться формализовать решение задачи (составлять алгоритмы), а не справляться со сложностями/особенностями языков.

НЛО прилетело и опубликовало эту надпись здесь

Мы живем в прекрасное время доступного образования. И если мы говорим о детях, то многим для программирования в качестве хобби достаточно видеоуроков — они, кстати, полностью бесплатные. Уже на этом этапе ребенок вполне может самостоятельно решить, а нужно ли ему это вообще. На курсы обычно идут дети, которые хотят углубить свои знания и заниматься дополнительно.

С родного языка. Не сможет адекватно выражать свои мысли - не сможет ничего.

Я программист со стажем этого занятия почти сорок лет. И со стажем преподавания программирования лет двадцать пять. Очень-очень хочу побить (и ногами тоже) того, кто придумал первым языком программирования давать детям Питон. Питон - язык без явных операторных скобок! Они в нём отступами организованы, неявно!!! Этот язык неплох для профессионалов (ну им любой неплох) и почти профессионалов. Первым языком программирования должен быть Паскаль. Он формирует правильный подход к программированию. Даже последователи Паскаля (Модула2 и Оберон) подходят в качестве первого языка сильно хуже. Вторым по пригодности в качестве первого языка программирования назову Бэйсик, который с номерами строк.

А что не так с Бейсиком без номеров строк?

По-моему, это не в Бэйсике, а в Фортране были номера строк - по ним работал оператор Go To <номер строки>.

Так в Basic тоже есть goto.

На номер строки? Возможно, давно это было.

Ну да. Хотя, по-моему (что-то всплыло в памяти), ещё был вариант с метками (label). Возможно, в другой версии языка.

В basica и в Sinclair basic есть номера строк. Забавный оператор goto к этому и привязан. Хотя можно и к метке было привязаться вроде. Забыл ) запускал во времена древних 90-ых

Но номера строк точно есть.

Бейсики разные бывают ) В классическом на 8битных компьютерах без номеров строк никак, там и редактировать код можно было только вводя строки с теми же номерами. А вот в Turbo Basic на PC уже был нормальный редактор текста и структурные операторы условий/циклов, у меня он был переходным этапом от обычного Бейсика к C (классе в девятом).

Лично я не понимаю, зачем в «обычной» школе учить язык, на котором школьник не сможет решить ни одной своей «настоящей» задачи. Для тех двоих, кто станет айтишниками, начало с паскаля может и принесёт пользу, для остальных — вряд ли.
ИМХО примерно как начинать обучение вождению с управлению ВАЗ2106 («шестёрка») с обязательным залезанием под капот и самостоятельным ремонтом каждый раз, когда что-то перестаёт работать. Зато близко к железу...

Современное «под капотом» авто настолько сложно, что большинство водителей не то, что не понимает, как оно устроено, даже просто не сможет назвать функции хоть каких-нибудь 10 агрегатов.

PS. Я пока только 11 лет учу школьников. Сам начинал с бейсика и паскаля, но сейчас я уверен, что языки, в которых простые вещи делаются сложно, скорее убивают мотивацию, чем воспитывают таланты.

Итак, с какого языка надо изучать программирование в 7—8 лет? Если паскаль со строгой типизацией не годится, что же годится?

Неужели язык функций MS Excel, в котором можно сразу решить настоящую задачу, сиречь обсчитать смету?

Паскаль (как и честный python, c#, js и т.п.) — это не про 7-8 лет, и даже не про 10-11-12, если говорить о массах: рано, сложно.
Началка — это что-то полу-игровое: цель не научить языку, а научить думать «как программист»: какие нужны шаги, как исправить ошибку и т.п.

Итак, с какого языка надо изучать программирование в 7—8 лет?

С английского. А программирование, возможно, не стоит и начинать. Разве что факультативно и в старшей школе.

С английского

А если с русского, то на выходе получится 1сник )

С перевозки козы, волка и капусты через реку. В 7-8 лет этого достаточно. Логика, простые алгоритмы.

Ну и графы можно погонять - неплохая книга Дети и графы.

Тот же Scratch вполне подойдёт, от него можно плавно перейти к Smalltalk.

Почему же ни одной настоящей задачи? Паскаль - это Делфи. А на дельфях можно вполне настоящие задачи решать. Да и формочки пошлёпать весело.

Почему же ни одной настоящей задачи?

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

Да хотя бы квадратные уравнения на математике порешать, игру сделать - перед друзьями попонтоваться.

квадратные уравнения на математике порешать

они и так решаются. их не нужно решать тысячами

игру сделать

это всё равно что 'войну и мир' написать. огромный кусок работы. для начала.

перед друзьями попонтоваться

разве что друзья тоже программисты.

Не понятно, почему минусуют.

По сути, каждый тезис точный.

Выжившие проецируют свой удачный опыт на всех.

Hidden text

Kuketski: Курсовик(!) одногрупника: форма, на ней четыре вечно убывающих
прогрессбара, рядом с ними четыре кнопки, которые их восстанавливают
над всем этим гордая наднись "Тамогоча".

На титульном листе записки крупными буквами тема "Моделирование биологических процессов жизнедеятельности домашних животных".

"Шлёпнуть кнопочку на форму" - это не программирование, сами же понимаете )

Не программирование, но это то, что может привлечь ребенка. Создание чего-то "осязаемого", а не просто какого-то текста.

У ребенка было несколько уроков с формошлепанием на Дельфи. Непривлекло.

Из чего угодно можно сделать ужасный урок)

Меня привлекло именно то, что я мог делать полноценную программу. С окном и элементами управления. У нас сами уроки были скучные, но я делал задачи сам с окнами. С вводом вместо консоли

Любая программа полноценная, если делает что то полезное. Наличие окошек - ну, забавно. Они двигаются!! Ну, двигаются. Ребенок уже видел программы с окнами. И все они делают что то полезное. А то что они делали на уроке - НЕХ. Даже примитивный калькулятор, который хоть немного чего-то считает - упсь, нужно упарываться в парсинг строк, где-то рядом графы, ООП.. Кучу труда нужно приложить, чтобы получить калькулятор, который и так есть в любом телефоне. Не каждый сможет старательно выпиливать табуретку, зная, что результат пойдёт в печку.

Нет. Консоль, ввод руками текста и вывод того же текста в ту же консоль - это не то, что дети назовут программой.

Все мы знаем, что все, что вызывается в консоли - отдельная полноценная программа, однако самого начала, если где-то упоминается консоль, никто не говорит "введите имя программы и передайте параметры", все говорят "введите команду".

Многие даже сейчас не понимают, что в консоли они вызывают программы, а не выполняют просто какие-то готовые команды. Иначе не было бы тредов "баш лучше виндовой консоли". В то время как разницы никакой почти нет. Это просто терминалы, а весь функционал - это сторонние программы.

Для ребенка консоль - это консоль. А программа для них - это приложение в андроид или окно на десктопе.

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

Не говоря уже о том, что именно в приложении с окном - игры (в современном понимании).

Спасибо, кэп ;) Я представляю, что такое формошлепство. И само по себе оно не интересно. Да, можно сделать игру. Можно даже под андройд. Но это настолько огромный кусок нудной работы, что ни один школьник по своей воле этим не займётся. Да и зачем, у них этих игр уже целый телефон.

очень быстро и легко

Даже с₽@*ый калькулятор - не быстро и не легко.

Не знаю что вы там пробовали, но да, быстро и легко. И конечно, ни один ребенок не хочет создать свою игру и играть и делиться с другими.

быстро и легко

Пруфы калькулятора, который быстро и легко сделал школьник, спасибо.

ни один ребенок не хочет создать свою игру и играть и делиться с другими.

Хочет. Только создать игру, в которую интересно играть, очень сложно. Это как интересную книгу написать. Не каждая студия профессионалов вытягивает. А игры класса Г детям не интересны.

Отцепитесь от калькулятора)) Он и правда никому не нужен.

Смотрите, навскидку: крестики-нолики, где вместо крестиков и ноликов, например, фотографии любимых/нелюбимых учителей. Легко сделать? Да элементарно. Прикольно? Ага. Модифицировать? Хоть до усрачки, простите: менять фотки, подписывать имена, добавлять эффекты, вести турнирную таблицу, засекать время, увеличивать игровое поле... Для самых упоротых - трёх- и четырёхмерные крестики-нолики (мы с однокассником играли на бумажке; трёхмерные нормально, а вот четырёхмерные уже туговато, да)

крестики-нолики

Компьютер должен упрощать жизнь а не усложнять. Человек против человека в эту игру сразится на бумаге - это проще и быстрее чем чего то кодить

например, фотографии любимых/нелюбимых учителей.

Кринж, подумали дети. Как их отличать, кто крестик кто нолик, подумали взрослые. Ага, ООП - то что нужно школьнику

вести турнирную таблицу,

Концепция массивов и баз данных.

Модифицировать? Хоть до усрачки,

Модифицировать г-код сложно, но можно. IDE помогает. Модифицировать пазл, поменять логику работы, добавить пару условий чтобы все не развалилось? ну-ну.

кмк лучший способ привить отвращение к программированию - массово кодить что то бессмыссленное. и неудобное.

Ведь так сложно при нажатии цифры на калькуляторе добавить её к полу ввода, а при нажатии на +, сохранить это значение в переменной, кнопки снова наполняют поле, а после равно взять строку из переменной, привести к числу и сложить с числом из поля ввода, заменив значение в поле ввода. 1 переменная для первого числа и 1 переменная, чтобы запомнить операцию. Всё. Калькулятор готов. Там ещё масса проблем остается, но он работает, если следовать точному алгоритму вычисления. Исправление этих проблем - дополнение. Дробные числа - ещё сложнее. Одна эта задача может быть крайне интересной. Но скучной.

И нет смысла прицепляться именно к калькулятору, действительно, более скучной задачи не придумать. И кстати, почти все задачи чисто кодом - такие же скучные.

Мини приложений можно придумать сотни. В том числе, совместно с ардуино. Да, это тоже можно делать в Делфи почти без кода. Кинул компонент компорта, задал номер порта и всё. Отправляй команды (одна строка), читай что приходит (одно событие). И вот ты уже с компьютера управляешь шаговым двигателем.

Хочет. Только создать игру, в которую интересно играть, очень сложно. Это как интересную книгу написать. Не каждая студия профессионалов вытягивает. А игры класса Г детям не интересны.

Вы совсем не нормальный что ли? Игра может быть любой. Даже свой сапер - это интересно, камень-ножницы-бумага - тоже. Всё что угодно своими руками интересно. И не важно, что это простая игра.

Или простые игры не должны существовать, а только ААА игры? Дати - это свои идеи и не важно, что сейчас они это реализуют плохо. Важен интерес. А у вас конечно подход интересный.

"Что? Ты, сынок, хочешь свою игру сделать? Ты дурак, ты не потянешь. Игра должна быть интересной, а это очень сложно. А ты никто, сосунок из Г класса"

И не важно, что это простая игра.

Важно. Реальные дети между крестиками - ноликами и Майнкрафт выбирают то что интереснее. В крестики-нолики все уже наигрались на бумаге - там не надо ничего кодить, бери и играй.

Но я не настаиваю. Некоторые задачи решать просто интересно, несмотря на непрактичность. Хороший учитель наверное сможет заинтересовать. Но чтобы ребенок сам для себя решил закодить крестики-нолики.. ну, бывают дети, которые задачи из учебника вперёд решают. всё бывает. но редко;)

C#

string readText = File.ReadAllText(path);

Delphi

var readText: string := TFile.ReadAlltext(path);

И да, так почти со всем кодом, за исключением того, что если объект создавался (и он не интерфейсный), его нужно вручную освободить.

Помимо того, что код на Delphi (Pascal) мало отличается (особенно на начальном уровне) от C#, из коробки ты соберешь его под Android или свой iOS. При этом визуально помогая себе программировать.

Дети могут экспериментировать, менять свойства, потому что их видно. Создавать инструменты для себя и не бояться передавать их другим, потому что нет зависимостей. И т.д. А если снабдить среду разработки компонентами для обучения, то можно целые курсы реализовать без строк кода, как в Scratch.

Попробуйте объяснить ребенку типы. Не просто, чтобы он не зазубрил их, а чтобы действительно осознал - для чего и как :)

Вопрос из серии "нафига знать физику работы автомобильного тормоза и процесса торможения автомобиля, если надо просто научить нажимать эту педальку слева".

:)

Научить "нажимать" можно, но это "не программирование".

Что есть число, а есть строка?? Серьёзно? Никто ведь не будет требовать в начале обучения использовать "подходящие" по точности типы. Не говоря уже о том, что в Делфи тоже есть выведение типов и тип писать не обязательно

Вот насчёт Паскаля соглашусь - Паскаль позволяет, с одной стороны, не забывать про типизацию (а вместе с ней про память и, так сказать, внутреннее устройство данных), а с другой стороны - позволяет довольно наглядно реализовывать алгоритмы без лишней мороки с "железными" особенностями инфраструктуры. То есть, грубо говоря, затыкает пробел между ассемблерами и всякими "вольными" языками по типу скриптов и/или интерпретаторов, дисциплинируя мозги. К тому же это структурный (в отличие от Бейсика с номерами), универсальный (то есть позволяет решать широкий круг задач), компилируемый (знакомит с соответствующей технологией построения исполняемого кода) язык, позволяющий впоследствии достаточно легко перейти к использованию более современных инструментов. Модель юнитов позволяет в будущем свободно принять концепцию объектно-ориентированного подхода.

А вот Бейсик все-таки портит стиль, хотя и позволяет натаскать на базовые алгоритмы - соглашусь с Дийкстрой...

Все - ИМХО, конечно...

Удивлен, как много людей солидарны со мной в вопросе Паскаля. Категорически поддерживаю, лучше языка для старта не найти.

Для старта куда? Если во взрослое программирование - лучше С. У практически любого ширпотребного языка больше сходства с С чем с Паскалем. А если нужно просто занять детей - можно и ассемблер.

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

доходим до указателей

Плох тот учитель, что не способен объяснить концепцию указателей на спичечных коробках.

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

можно идти дальше

Переучиваться на плюсы? ;) Так там указатели стараться закопать поглубже.

можно идти дальше

Переучиваться на плюсы? ;) Так там указатели стараться закопать поглубже.

Си-подобный это тот, у которого операторные скобки - фигурные скобки? Или что ещё роднит ширпотребные языки с Си?

что ещё роднит ширпотребные языки с Си?

Отсутствие процедур, только функции Присваивание

Вы пишите как типичный "программист с 40летним стажем" на уровне интерна. Отпинать бы вас самих, да жизнь вас уже отпинала

явных операторных скобок

Что за "явные операторы скобок"?

Операторные скобки - это "{" и "}" или "begin" и "end".

А почему не счёты первобытного человека? Те, которые из камушков

Мда... Холивар по паскалю и бейсику...

Замечу, что идет 2024 год, а не 198х. Дети в 2024 не смотрят программы на телеке не потому, что там мультиков нет как в 1985, а потому, что есть более интересные вещи на ютубе. И если 40 лет назад программирование для меня было максимально привлекательнее других альтернатив, сейчас же внимание ребенка здорово отвлечено. Плюс там все равно начинать раньше, чем в 14 лет смысла не было. Сейчас же есть скретч, начинать с которым можно и для детей лет с 6-8 и они реально что-то могут и могут видеть свой результат. Как им объяснять бейсик, не говоря уж о паскале, когда они еще в правилах русского языка плавают - это большой вопрос.

И вот тут пару шпилек школе программирования Пиксель по их ютуб роликам по скретчу... Ребята! Ролики должны быть такие, чтобы 1) давать законченную игру, в которую можно поиграть и 2) чтобы сам процесс создания игры ребенком занимал не более 20 минут. Т.е. сам ролик должен быть в пределах 5-8 минут - не более.

Как вы себе представляете для малого ребенка работу с роликом на 20-40 минут? Время занятия минимум удваивается. Нормальный ребенок столько не просидит. При этом вы заморачиваетесь на мелочах, которые не дают ничего полезного, кроме бездарной потери времени. Да, оно может быть в конце и более красиво, только вот до этого конца ребенок дойти не может. Это при моей помощи и прилагаемых усилиях по концентрации внимания... Через 8 минут ролика я понял, что создать игрушку до конца дети не смогут, даже если я их (детей) менять буду за клавиатурой.

В общем, дальше мне ютуб мне предложил конкурента, который в 7 минут укладывался. К сожалению, там мало роликов, но мне пока хватает... Хотя конечно вот по тем роликам мне бы очень хотелось иметь дополнительные ролики УСОВЕРШЕНСТВОВАНИЯ написанной игры. По мне, так ребенок для начала должен научиться править готовые программы, а не писать с нуля новые. У него в голове чистый лист. Он не проводил литературный обзор по теме. Естественно я немного напрягусь и своим детям покажу, как это все можно дополнить, но... Это потребует от меня определенной работы и для большинства такие действия просто недоступны.

Какой язык лучше подойдет для входа детей в IT?

Никакой. Если говорить про "войти в IT" в контексте трудоустройства разработчиком. По ТК РФ можно, конечно, подростков на работу устраивать, но в >90% такой сценарий не рассматривается. Детство, слава большевикам, оно про что угодно, но не про наемный труд, как в царские времена. Выбирать ЯП для трудоустройства, которое произойдет лет через 10 это, мягко говоря, глупо (ЯП и профессия станут невостребованными, например).

Тут споры идут за Скретч, Питон, Паскаль, разные Бейсики и т.д. Тогда как наверное надо задаться вопросом, а для чего вообще это ребенку надо?

В рамках общего образования на уроках информатики и подготовки в ВУЗу - тут надо смотреть куда поступать, и что для этого надо (подготовка к ЕГЭ, факультативы). Тем более программу должны составлять специально обученные люди, а не блогеры-коновалы с ютуба, прости господи. У меня на первом высшем (педагогическом) 2/3 предметов были разнообразные коррекционные/возрастные/специальные психологии/педагогики и прочие методики образования, где разъяснялось кому, что и как преподавать, как обосновывать и выбирать материал в зависимости от возраста и иных особенностей обучающихся.

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

Если для развлечения или чтобы дитё чем-нибудь занять, то вообще любой ЯП, хоть В†† , на котором древние русы писали. Главное, чтобы ребенку нравилось. Другое дело, что я не стал бы платить 15 баксов в час за кружок, на котором ребенок будет в роблокс играть :)

Опуская бред про большевиков и царей, в целом согласен.

Я думаю для новичка, а тем более для школьников первым языком сойдёт Assembler. Как раз поймет как работает программа на низком уровне, как работают циклы и тд.

Если что это шутка :)

В каждой шутке есть доля шутки. Я начинал с машинных кодов на Д3-28... В 1983 году...

Лучше с квантовой физики, чтобы поняли как элементы на внутри CPU работают (туннельный переход и все такое)

Там то эти квантовые эффекты (туннельный переход и все такое) как раз таки вредны, и с ними борются.

Да ладно? А я думал, на них все и построено.

Ну да. Плохо выразился. Имел в виду неконтролируемые переходы через затвор. А базу про p-n-переходы и так дают вроде (или это в универе было).

Сойдёт всё, что хоть чуть-чуть лучше бейсика с номерами строк и фортрана-77. Всё равно потом ещё пачку языков учить.

Так что основные критерии – чтобы интересно было (ну, тут выбор языка не очень сильно влияет) и наличие гуру под рукой.

C# для Unity есть, а Blueprints для Unreal Engine нету, хотя он будет проще и интереснее для ребенка. На мой взгляд, для ребенка могут подходить для начала, только визуальные языки, которые дают результат "здесь и сейчас". Как не звучало парадоксально, только через игру в игровом движке можно вызвать интерес компьютерным наукам.

Учить нужно на том языке для которого есть лучшие учебные пособия, чтобы заниматься именно обучением а не танцами с бубном.

BLISS! Не благодарите!

Детишкам же точно будут полезнее НВП и уроки труда. В стране слесарить некому.

я, в свое время, вел курсы программирования для детишек постарше, и заменял пару уроков у мелких(как раз 7-8+ лет) и убежден, что в таком возрасте им программирование изучать рано, максимум какие от небольшие прикольные алгоритмы в какой то игре, потому что в таком возрасте многие не знают, что такое файл, окно, клик, ярлык и прочие вещи. Начинать нужно с "курса молодого бойца" и как пользоваться компуктером. Про Unity, в котором надо хоть немного знать, что такое графики, координаты, градусы, векторы, с 10 лет (!4й класс!) я вообще молчу. В принципе, любое ПО с англоязычным интерфейсом в который нужно активно нажимать - это сразу мимо, так как у подавляющего большинства школьников все плохо с английским. И получается, что они "осваивают" программирование не строя логические цепочки, а тупо зазубривая "нажать на строчку с непонятными буковками, потом на другую строчку" и т.д.

многие не знают, что такое файл, окно, клик, ярлык и прочие вещи.

Вроде как Scratch от этого абстрагирует

ну, скретч это норм, да. Только если ребенок ходит раз в неделю потыкаться в скретче, а дома к компу не пускают/или его нет, то базовых знаний о компьютере он не наберется, а через год-другой в любом случае надо переходить на что-то серьезнее, т.к. скретча хватит на год ну максимум. Потом ребятам просто скучно станет. И подобные курсы стараются "грейдить" уровень сложности. У меня было такое, что первый год юнити осваивали ребята 15-16 лет (тот возраст, на который курс и был рассчитан +\-), а к третьему году на него приходили детишки 11-12 лет. Надо ли говорить, что качество подобного образования будет сомнительным.

Тут хочется сказать: "оставьте детям детство"... 7-8 лет, ну какое программирование... Куда все торопятся.

Все думают только про детей. Я а заинтересовать пенсионеров писать программы для удовольствия. А все зависит от задачи. О них нужно думать в меру. Очередь

Пусть я буду грубым, но зачем язык без алгоритмов? Был Бейсик и паскаль в школе. Но это ничего и никак не решает. Без логики и алгоритмов ничего не будет. Язык они сами выбирут. Дайте знания и понимание для старта. Сами двоечники и двоечников плодите.

Rust точно не стоит:

  1. Слишком сложный и нетривиальный. Примерно как C++, только без кучи ненужного барахла и с избивающим тебя до полусмерти borrow checker за любую провинность - новичкам будет очень тяжко, особенно если у них нет опыта, и не стоит забывать, что они дети

  2. Если они приучаться к нему без опыта в других языках, то в дальнейшем изучение других языков будет ещё большей пыткой: в других языках всё сделано тяп-ляп, будут пропагандироваться практики, приводящие к выстреливанию себе в ногу и т.д. Перфекционизм, выработанный при освоении раста, будет сильно мешать. ~80% разрабов итак неохотно учат что-то кроме того, что они выучили когда в школе/универе, а вы предлагаете им переход с +/- идеального языка на что-то... далёкое от того, чтобы считать идеальным

Выше в комментариях обсуждали, как и зачем обучать школьников. Посмею вбросить сюда результат моих разговоров с учителями ОИВТ.

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

Нет, отвечают учителя. Это вы путаетесь в школьной работе. Наша задача в школьной работе — не обрабатывать реальную задачу, не выпускать товарный результат. Наша задача другая: создавать разум, выпускать школьников.

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

Я задавал уточняющий вопрос. Давайте посмотрим на один пример, когда учитель Таковский вместе со школьниками за учебный год сделал веб-сайт.

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

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

Систематическая полезная работа слишком скучна для школьных учеников

Взрослым тоже скучно систематически закрывать таски. Но им хоть деньги взамен дают.

Ну и нарезать масштабную задачу на таски для 30 джунов-разгильдяев, и контролировать все этапы, чтобы ничто ничего не блокировало.. Не нужно. Это всё же школа, не галера.

сохраняется пул самых востребованных языков, спрос на которые не падает. Например, Python, JavaScript, TypeScript, C#, PHP.

Php устарел и популярен за счет того, что компаниям лень уходить с него

Php устарел

Новые версии раз в полгода. А так да, PHP 5 устарел ;)

Php устарел

Новые версии раз в полгода. А так да, PHP 5 устарел ;)

Для детской мотивации, язык должен позволять легко писать игры и без ООП.

Лучший вариант для ребенка, - DarkBasic .

Его написал Lee Bamber, специально для своего сына.

Я больше 30 лет в IT и могу сказать, что лучшего ЯП с точки зрения простоты и дружественности я не встречал...

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

И это только для пробуждения интереса и выявления способностей. А дальше идти в вуз и получать фундаментальные знания.

Пытаться получить программистов сразу после школы - плохая идея.

Смотря "какой" Паскаль брать. Вы можете удивиться, но это тоже "Паскаль"

Ни единой строчки кода, а имеем подключение к БД, возможность создавать, редактировать и удалять записи, собирать под любые устройства и т.д. Пример с БД, конечно, не для детей, но показывает насколько далеко можно зайти с "биндингами"

С какого языка школьнику стоит начать изучать программирование?

Думаю, тут все зависит от возраста: первоклассник и выпускник школы могут осилить совершенно разные программы. Чем младше ребенок, тем более игровая среда нужна, тот же Скретч отличный старт, самый большой его плюс в гибкости, он хоть и кажется простым, но функционал для ребенка довольно широкий. А главное что сам процесс от создания скрипта до появления игры короткий, в начальных классах это бы очень мотивировало продолжать.

Старшие школьники, выпускники уже могут браться за текстовые языки. Здесь тоже важно, чтобы язык был популярным и легко применимым, сколько есть различных туториалов и объяснений всего и вся по тому же Питону, легко создать игру или бота в телеге, и тоже будет наглядный результат. Даже если дети не собираются "войти в айти" или идти учиться на программиста дальше, это же все равно может быть интересно и полезно для развития.

На мой взгляд, для начала лучше всего Паскаль. Самый простой его подвид. Именно он больше всего подходит изучить основные понятия - переменные, массивы, циклы, if-else, функции и процедуры. Я и сам так начинал. Потом уже что-то более продвинутое, вроде C# или Python. Сначала основные концепции в Паскале. Не Делфи, а простой его форме.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий