Недавно попалась интереснейшая английская статья, написанная Трейси Гарднер из TechAgeKids. В ней она делится интересными мыслями по поводу программирования детьми в текстовых и визуальных языках. Она приводит интересные наблюдения, которые совпадают с моим опытом развития детей в программировании. Представляю вам перевод данной статьи.



Выбор между визуальным и текстовым программированием для детей


Говорят, что дети должны начинать с визуальных языков программирования, таких как Скретч (Scratch), а затем переходить к текстовым, например Python или JavaScript. Я считаю, что это просто смешно, особенно если учитывать, что большую часть карьеры я работал над созданием визуальных языков, позволяющих сделать разработку программного обеспечения более доступной для тех взрослых, которые обладают предметными знаниями, но не опытом программирования. Я также потратил много времени на разработку программного обеспечения с использованием визуальных языков (зачастую включающих текстовые фрагменты).


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


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

Почему мы учим детей программировать?


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


Чему мы учим детей?


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


  1. Дать навык создания проектов, которые полезны/интересны/развлекают детей сейчас.
  2. Передать знания о вычислительном мышлении, которое позволит им делать вещи, которые полезны/интересны/будут развлекають/принесут прибыль в будущем.

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


Что такое визуальные и текстовые языки?


Легче дать определение текстовым языкам программирования. Эти языки, введенные с клавиатуры и хранящиеся в виде текстовых файлов.


Графический или визуальный язык, как правило, использует функцию перетаскивания, а не ввода. Он может содержать значки или текстовые метки на блоках и элементах. Часто используются такие GUI элементы, как диалоги и выпадающие меню выбора.


Популярные детские языки – это Блокли (Blockly) и блокли-подобные.


Как правило, когда люди говорят о текстовых языках, они ссылаются на такие языки программирования, как Python, Lua и JavaScript, которые являются «реальными» языками программирования и используются профессиональными разработчиками программного обеспечения.


Интересно, что есть и детские текстовые языки программирования, например, Лого (Logo) и Снифф (Sniff) (не блокли-подобные, а именно текстовые), которые можно рассматривать в качестве ступеньки между визуальными и текстовыми языками.


Удобство обучения и запоминания


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


Множество профессиональных разработчиков программного обеспечения тратят десятки часов еженедельно, программируя на одном языке. Это означает, что взрослые могут запомнить многое о синтаксисе и API и, когда знания понадобятся, они мгновенно доступны.


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


Мой младший сын любит использовать электронные компоненты SAM Labs и изобретать оригинальные штуковины.



?Между рабочими сессиями в SAM Labs может пройти несколько недель, но он по-прежнему сможет мгновенно вспомнить, как соединить блоки в визуальном редакторе. Я уверен: если бы для достижения того же результата он использовал текстовый язык, было бы значительно сложнее найти, на чем он остановился. На самом деле, для решения более сложных задач SAM Labs действительно использует текстовое программирование, и, когда я помогаю сыну, за период между сессиями сам успеваю забыть нюансы языка. (Чем быстрее SAM Labs смогут реализовать большинство возможностей в визуальном слое, тем лучше).


Конечно, удобная среда программирования может облегчить обучение и запоминание синтаксиса текстовых языков. Хорошая IDE (интегрированная среда разработки) с этим сильно помогает. Но универсальность типичного языка программирования затрудняет предоставление языка в той же доступной форме, которая есть в Scratch или блокли-подобных языках.


Ошибки синтаксиса


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


Да, хорошие редакторы могут помочь вам обнаружить эти ошибки, но даже лучшие редакторы не позволяют сделать синтаксическую ошибку и не исправить ее. В Scratch вы работаете непосредственно с концепцией программирования вместо того, чтобы разбивать ее на отдельные фрагменты задач. (Это иногда разочаровывает, если, например, вы хотите поменять местами повторения в бесконечном цикле. Но это просто работа, сделать ее не сложно. – Вся сложность в том, чтобы упростить полученное решение.)


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


Существуют проекты, нацеленные на перенос преимущества визуального редактирования в текстовую среду программирования для детей (например, редактирование на основе фреймов).


Иконки против текста


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


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


Такие языки, как Scratch и Блокли, используют на перемещаемых визуальных элементах текстовые метки. Мой опыт показывает, что для умеющих читать детей это –лучший рабочий вариант.


Визуальный – не значит «упрощенный до нуля»


Профессиональные разработчики программного обеспечения часто предполагают, что такие языки, как Scratch являются «упрощенной дальше некуда» версией программирования.


Но все не совсем так. Что реально делает Scratch, так это удаляет лишние детали, которые на самом деле лишь мешают детям быстро пройти путь от зарождения идеи до запуска кода.


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




Scratch может быть сложным настолько, насколько это необходимо. Вы можете рисовать в нем фрактальные деревья и решать сложные проблемы синхронизации.


Я подробнее осветил эту тему в статье «Scratch – неправильный подход к компьютерному программированию, не так ли?» (Статья автора на английском).


Линейность против альтернативности


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


Визуальные языки обычно поддерживают нелинейную структуру. Современное программирование, особенно разработка игр, аппаратное обеспечение и Интернет вещей, зачастую работают на основе событий и выполняются одновременно. Код – это не книга, он не выполняется последовательно от начала до конца.


В Scratch я могу организовать код, чтобы переместить спрайт следующим образом:



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


Я изучил Sonic Pi, текстовый язык для создания музыки, и меня обескуражила сложность создания линейного кода, который должен работать одновременно.


В Scratch есть функция для создания макета кода в 2D-пространстве, так что, если вы пишете музыку для нескольких, звучащих одновременно, инструментов, вы можете просто выложить участки кода по горизонтали или разместить их в различных спрайтах, которые будут выполняются одновременно автоматически. Для Scratch параллелизм – это естественная концепция.



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


Воркшоп Wonder использовал другой подход к языку Wonder для роботов Dash&Dot. В нем используется многопоточность. Потоки обычно применяют для описания бизнес-процессов точным (и иногда исполняемым) способом. Блоки состояния часто используются в системах управления. Это полезное средство для описания поведения систем, которые ведут себя по-разному в зависимости от текущего состояния.


Очень интересен подход к программирование в Minecraft, там используют смесь текстовых команд и визуальных блоков в 3D-пространстве. Код фактически является частью мира, а ведь для многих детей Minecraft столь же реален, как и настоящий мир вокруг. (Подумайте об Интернете вещей и даже большем!)


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


Визуальный – не значит «медленный»


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


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


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


Как насчет сенсорных экранов?


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


Существует множество приложений типа Scratch Junior или Pocket Code, которые эффективно используют сенсорный интерфейс, чтобы позволить «поколению смартфонов и планшетов» писать код.


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


Apple запускают приложение Swift Playground, которое будет учить детей писать на языке Swift, используя все возможности мультитача на IPad.


Дети часто создают визуальные программы


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


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


В Minecraft код действительно встроен в окружающую среду. Управление потоком достигается с помощью игровой пыли Redstone.


Дети и визуальная среда


Большинство детей предпочитают визуальную среду, ведь она приносит им больше удовольствия. Работа в ней ощущается как менее тяжелая. Среда на основе текста может показаться детям довольно сухой. Такие компании, как Tech Rocket, пытаются сделать текстовое программирование интереснее – достаточно посмотреть на их бесплатный учебник Python.


Тяжелее – не значит лучше


Ребенка, который хорош в создании игр на Scratch, может очень разочаровать переход к среде, где создавать подобные игры намного сложнее. Не «по-взрослому» делать больше работы, чем это необходимо.


Иногда приходится затруднять процесс, идя на компромисс ради большей гибкости. Но я считаю, что в других случаях профессиональным языкам разработки ПО и IDE есть чему поучиться у Scratch и подобных языков.


Что насчет смешения визуальной и текстовой основы?


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


Например, это предлагается в Code.org и CodeKingdoms and the Microsoft micro:bit (редакторе битовых блоков).


Мой 9-летний сын в настоящее время учится программировать моды Minecraft при помощи Java и блочного редактора из Code Kingdoms.


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


Как насчет детских версий языков?


Язык программирования Ready позволяет детям и подросткам писать игры в среде, которая работает поверх игрового движка Unity.


Это интересный подход, который позволит устранить одну из основных претензий к таким языкам, как Scratch – в конечном счете вы можете создать приложение, которое можно запустить вне Scratch или представить на App Store.


Взрослые тоже используют визуальные языки


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


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


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


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


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


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


Некоторые дети любят текстовое программирование


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


Многие маленькие дети способны писать HTML&CSS и изучать Python, JavaScript или Lua. И для некоторых соблазн написать моды Minecraft приведет к изучению Java. Сегодня вышеперечисленные языки – лучшие инструменты для решения различных задач. А некоторые дети просто хотят научиться программировать, чтобы поднять академическую успеваемость.


Все это – важные аспекты. Я сам был одним из таких детей! (Только в мои дни были языки Spectrum Basic и C на Amiga.)


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


Резюме


Текстовое программирование – не приоритет в обучении дошкольников и детей младшего школьного возраста.


Программирование в Scratch и других визуальных языках может не только послужить ступенькой для дальнейшего изучения Python и Java. Изучение Scratch полезно само по себе, и некоторые дети продолжат использовать визуальную среду, но уже «взрослую».


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


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


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


Дополнительная информация для родителей. Мне известно про зимний городской лагерь в котором дети будут программировать на Scratch и создавать свои проекты для решения реального кейса. Он проходит в центре Москвы 4-6 января 2017. Если это будет вам интересно и полезно, пожалуйста, смотрите подробности здесь.

Поделиться с друзьями
-->

Комментарии (80)


  1. ru_vlad
    31.12.2016 11:48

    Согласен с автором, Скетч хорош на самого начального детского класс.
    Но почему-то он не упомянул старый добрый Паскаль, который для англоязычных можно назвать как естественный язык. Для начального текстового он тоже очень не плох.
    По поводу синтаксиса не согласен, надо с самого начала научить прежде чем запустить программу её проверить, тем более в том же Паскале он минимум.
    Так же текстовый язык помогает делать структуру программы более понятной.
    Все же визуальный язык это комиксы, а текстовый это нормальное книжное чтение.
    Так же желательно все же ознакомить еще с графическим обозначением алгоритмов (блок-схемы). Тогда можно быстрее запомнить основные алгоритмические конструкции.
    Ну а потом можно если не Java то Processing, очень хороший для графических вещей.


    1. Neyury
      31.12.2016 16:22
      +4

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

      К примеру python, простой синтаксис и хорошая стандартная библиотека (и множество других хороших библиотек), с помощью которых можно достаточно быстро сделать что-то интересное.


      1. ru_vlad
        31.12.2016 16:44

        Язык программирования это прежде всего ОДИН из инструментов демонстрации АЛГОРИТМОВ! Для детей тем проще тем лучше. ;) Хорошо отношусь к Питону, но некоторые его принципы для начального обучения ДЕТЕЙ мне кажется тяжеловаты.

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

        понятие актуальность очень и очень зыбкое, сейчас да, а через несколько лет уже нет ;)
        Детям которым сейчас 12-14 лет самое главное это понять что и как, и по возможности быстро увидеть результат, вот кстати чем хорош Processing даже мобильные приложения под Андроид можно быстро сделать. Профессионально они столкнутся с актуальными средами, лет через 6-8, а какая на тот момент времени будет актуальность мало кто знает :)


        1. Neyury
          31.12.2016 17:20
          +1

          Я про актуальность на момент изучения. Разве ребенок захочет учить алгоритмы? Он хочет делать что-то интересное, создавать


          1. ru_vlad
            31.12.2016 17:32

            Соглашусь! он хочет не просто что то создавать, а видеть плод своих трудов :)
            НО при обучении любому искусству (а программирование это искусство) начинают всегда с азов, художники с карандашных рисунков, музыканты с гамм, танцоры со «станка». Вот и у нас тоже, с блок-схем, Паскаль (некоторые кому программирование не нужно (только на экзамены) на этом останавливаются ), Processing, Java :)


            1. Dum_spiro_spero
              01.01.2017 04:26

              Позволю встрять в обсуждение.
              «он хочет не просто что то создавать, а видеть плод своих трудов :)»
              Не факт. «Просто создавать» — это процесс — и результат (на котором сосредоточено) внимание появляется каждую секунду. Видеть плод своих трудов — это уже несколько опосредованно. Возникают проблемы тактика/стратегия, сильная/слабая воля.
              «НО при обучении любому искусству (а программирование это искусство) начинают всегда с азов, художники с карандашных рисунков, музыканты с гамм, танцоры со «станка».»
              Нет. Музыканты начинают с простых, но вполне музыкальных произведений. Гаммы идут когда учитель и ученик понимают, что ученику не хватает техники пассажей и тот с радостью бросается играть гаммы.
              Впрочем есть хорошие учителя/преподаватели, а есть не очень. И методики у всех разные, и нюансы — важны.


              1. 5oclock
                01.01.2017 13:21

                Тоже встряну :)

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

                Гаммы начинаются с самого начала и они не от того, что ученику чего-то не хватает.
                Гаммы для наработки навыков:
                1. Равной громкости звукоизвлечения всеми пальцами (это я про фортепиано говорю). Т.е. громкость звука каждым пальцем должна быть одинакова. Пальцы ведь изначально имеют разную силу.
                2. Ритмичности звукоизвлечения. Т.е. звуки должны извлекаться равномерно: пам-пам-пам-пам..., а не пам-пам… пампам-пам…
                3. Синхронности работы рук. Звук извлекаемый обеими руками должен сливаться в один. А не «блям-блям».
                4. Аппликатуры. Этим нарабатывается постановка пальцев при игре в стандартных ситуациях.
                5. Ключевых знаков. Мозг привыкает к тому в какой тональности какие клавиши — чёрные (грубо говоря).

                И «с радостью» гаммы вряд ли кто-то бросается играть :)


                1. 5oclock
                  02.01.2017 03:38

                  Забыл нулевой пункт:
                  0.Беглость пальцев.


      1. DistortNeo
        01.01.2017 05:01
        +1

        Вы мыслите не как школьник, а как профессиональный программист.

        В школьном образовании первая задача — научить детей составлять алгоритмы, и лишь вторая — ввести эти алгоритмы в компьютер с помощью какого-либо языка программирования. А начинать сразу с питона и библиотек — это все равно, что в 5 классе давать интегралы.

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


    1. andyudol
      31.12.2016 18:44

      «Все же визуальный язык это комиксы, а текстовый это нормальное книжное чтение.».
      Картины, например, Репина — тоже комиксы? Там тоже визуальный язык — язык визуальных образов.
      Сценарий «Дом 2» — тоже нормальное книжное чтение? Тоже на текстовом языке.

      Какой «он» в Паскале минимум? Несколько кривоватая фраза. А, видимо, синтаксис. Тогда уж Оберон.


      1. ru_vlad
        31.12.2016 20:05

        Картины, например, Репина — тоже комиксы? Там тоже визуальный язык — язык визуальных образов.

        Это вы батенька загнули ;) изобразительное искусство конечно язык образов, но мы то с вами обсуждаем языки программирования ;)
        Могу даже больше сказать, есть комиксы уровень не ниже известных классических художников :)
        На счет сценария ;) думаю польза будет, хоть читать научатся :)
        Про Оберон сказать не могу, мало с ним знаком ;) но в Паскале действительно синтаксис более логичен и минимален. :)


        1. andyudol
          01.01.2017 23:47

          Не я заговорил о комиксах и нормальном книжном чтении. Это моё высказывание — всего лишь последствие неосторожно ляпнутого слова. Так что не ко мне притензии.

          Ну Оберон же потомок Паскаля, так что про логичность синтаксиса — это и к нему относится. К тому же синтаксис Оберона ещё и проще.


          1. ru_vlad
            02.01.2017 01:09

            Так я без претензий :)

            На счет Оберона ;)
            будет данный в ЕГЭ или ОГЭ тогда подумаем :)
            а так приходится то что будет спрашивать на экзамене


            1. andyudol
              02.01.2017 14:51

              Так ведь в статье вроде об обучении, а не об этих порождениях дьявола.


    1. worldmind
      01.01.2017 12:14

      Надо забыть про паскаль, питон на порядок проще и яснее синтаксис имеет и при этом это реальный язык с полным набором актуальных библиотек.


      1. ru_vlad
        01.01.2017 14:31
        +1

        Ну во первых, всех с Новым годом! :)
        Пусть этот год будет для вас лучше предыдущего!
        Счастья, здоровья и всего всего чедо душа пожелает :)

        Во вторых

        Надо забыть про паскаль,

        Мне такие призывы напоминают революционные лозунги ;)

        питон на порядок проще и яснее синтаксис


        возьмем несколько примеров:
        Python
        def f(x):
        return (x — 16)*(x + 25)

        a = -100
        b = 100
        n = 0

        for t in range(a, b + 1):
        if f(t) <= 0:
        n = n + 1
        print(n)

        Си
        #include<stdio.h>
        int F(int x) {
        return (x — 16)*(x + 25);
        }

        void main() {
        int a, b, N, t;
        a = -100; b = 100;
        N = 0;
        for (t = a; t <= b; t++) {
        if (F(t) <= 0) {
        N++;
        }
        }
        printf("%d", N);
        }

        и всеми не «любимый» Паскаль :)
        var a, b, N, t: integer;
        Function F(x: integer):integer;
        begin
        F := (x — 16)*(x + 25)
        end;
        begin
        a := -100; b := 100;
        N := 0;
        for t := a to b
        do
        begin
        if (F(t) <= 0) then N := N + 1;
        end;
        write(N);
        end.

        Вы меня конечно простите НО я не вижу что бы в Python был проще и яснее синтаксис.
        Любой человек который знает английский в рамках 4-5 класса школы сможет понять что делает программа на Паскале без объяснений, с Си сложнее НО логика тоже хорошо видна, а Python простите увы НЕТ или у меня интеллект ниже шимпанзе :)
        Даже наличии «программных скобок» begin… end и {...} уже дают ясность.
        Могу как учитель сказать что дети даже при их наличии с трудом осознают структуру программы особенно если не делают отступы, в Python где они не видимы и все зависит от отступов вообще кошмар.
        Ваш покорный слуга пробовал сразу после блок-схем давать Python НО это плохо кончилось.
        Да есть дети которые алгоритмические структуры схватывают моментом, но увы, таких один из сотни.
        С ними работают отдельно.


        1. worldmind
          01.01.2017 15:22

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

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

          if variable is None:
          

          или
          if variable in list:
          

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

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


          1. ru_vlad
            01.01.2017 15:50
            +1

            worldmind
            Приятно иметь дело с умным человеком :)
            Вы все правильно говорите
            НО

            Вы лучше возьмите немного другой пример, питон ведь более высокоуровневый язык, сделайте аналоги конструкций
            if variable is None:
            или
            if variable in list:
            всего и не упомнишь, но я многократно сталкивался с тем, что в питоне можно коротко и ясно выразить суть, максимально близко к английскому языку.

            Дело в том что и английский язык тоже многоуровневый, я специально обозначил возрастную категорию (4-5 класс) и уровень школьников в иностранном языке обычной школы не велик.
            К 6-7 классу (в этом возрасте попадают ко мне ;) ) они знают лишь небольшой запас слов и конструкций, поэтому слова «begin», «end», «for», «if», «then»,«and», «or» и др. для них не представляют трудностей в понимании.
            Все что вы приводите это удел старших возрастов (старшие классы, студенты) которые уже нормально осознают логические цепочки (хотя и там бывают проколы :) ).

            И обязательность отступов это отлично — учиться нужно сразу правильным подходам.

            именно так и делаем, через слезы, ругань, конфеты :)
            Ну и стандартная библиотека питон сразу предлагает хорошие практики — logging, configparser и т.п.,

            Я с вами полностью согласен! :) НО все ЭТО нужно потом, когда они осознают что такое программирование.
            Вы же не предлагаете вместо Азбуки сразу читать Диккенса что бы учится читать? ;)


            1. worldmind
              01.01.2017 18:55

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


            1. worldmind
              01.01.2017 18:58

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

              нет, я такого не предлагал


              1. ru_vlad
                01.01.2017 23:28

                Еще раз прошу прощения, но именно вы данное и предлагаете ;)
                говоря что сразу надо начинать с тех вещей которые сейчас в «ходу» :)
                Паскаль — это одна из Азбук (Букварь) :)


                1. worldmind
                  02.01.2017 10:29

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


                  1. Prog23
                    03.01.2017 16:34
                    +1

                    А у Питона перед Си\С++ нет преимуществ.
                    Обучать Си\С++ можно с 7 класса (а по моим «оценкам» — с 5 класса.
                    Методика была описана тут
                    https://habrahabr.ru/post/179307/


                    1. worldmind
                      03.01.2017 19:18

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


                      1. Prog23
                        03.01.2017 20:22

                        Как можно так позорить себя?
                        ВОПРОС:
                        — Какому языку можно обучать грудничков?
                        Предлагаю Вам извиниться перед сообществом и больше не писать в подобных темах то того, как хоть не много изучите тему…


                        1. TheShock
                          03.01.2017 21:01

                          Мы уже поняли, что вам нравится Паскаль, это не повод переходить на личности.


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


                          Мне вот, как человеку, который не знает ни питон ни паскаль как раз питон более читабельный.


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


                          1. Prog23
                            03.01.2017 22:33

                            Вы верно ошиблись ответом — я конечно, знаю Паскаль, но знаю и еще пол-сотни, да-да пятьдесять + других языков программирования: ассемблер (на который я перешел после Паскаля...))), Си, С++, Весёк, Фортран, Пролог… — нужно ли перечислять все??
                            Если говорить о ЯП для обучения — посмотрите мой пост в самом конце:
                            — визуальное программирование (Скрэтч — урбанизирован под девочеч, которые увлекаются куклами — девочки бывают разными, например, Алиса Шевченко
                            — она же Esage — http://www.forbes.ru/tekhnologii/internet-i-svyaz/275355-kontrakt-na-ugrozu-kak-khaker-stroit-biznes-na-zashchite-bankov
                            Так вот Скрэтч — жалкое подобие GameMaker 8.1
                            Паскаль создан для изучения программирования, но после создания методики обучения Си\С++ (см. мой пост в конце...) — нахожусь в твердом убеждении, что с визуального GameMaker 8.1 следует переходить на Си\С++ — особенно, если переписать GameMaker 8.1 под GNU\open source…
                            А Питон — пусть развивается...)))


                          1. DistortNeo
                            04.01.2017 01:11

                            Как это Паскаль мёртв? А как же Delphi, который по рейтингу TIOBE находится на 12 месте по популярности? Я скорее поверю в то, что через 5-10 лет умрёт Питон, чем Паскаль.


                1. black_semargl
                  02.01.2017 18:59

                  Паскаль он конечно азбука — но азбука латинского. Который мёртвый язык.


            1. worldmind
              01.01.2017 18:59

              И неважно как они знают английский, главное что код более близок к естественному языку


              1. ru_vlad
                01.01.2017 23:22

                И неважно как они знают английский, главное что код более близок к естественному языку

                а это и есть естественный язык
                If (если) условие then (тогда)
                for ( для) имя переменной :=(присвоить) начальное значение to (до) конечное значение
                do ( выполнить)
                не говоря уже о
                begin и end ;)


                1. worldmind
                  02.01.2017 10:30
                  -1

                  Да, только это урезанный язык, в питоне он ближе к естественному, примеры я привёл в самом первом посте


            1. black_semargl
              01.01.2017 21:30

              Я с вами полностью согласен! :) НО все ЭТО нужно потом, когда они осознают что такое программирование.

              К сожалению это нужно сразу — потому как отсутствие какого-нибудь findall(r'(\d+)',txt) ведёт к невозможности написать выдающую результат программу.
              Без сопутствующего фреймворка любой язык способен разве что вывести «привет, мир» — а это интересно детям только один раз


          1. DistortNeo
            01.01.2017 16:50
            +2

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

            Какой логгинг, какой конфиг? Дети ещё не особо понимают, что такое файл, про слово «процесс» вообще не слышали, а вы их грузите какой-то технической ерундой. Это профдеформация.

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


            1. worldmind
              01.01.2017 18:57

              Вы с кем-то другим спорите, я о том же


              1. ru_vlad
                01.01.2017 23:25

                worldmind

                Вы с кем-то другим спорите, я о том же

                простите но это ваши слова
                хорошие практики — logging, configparser и 


                1. worldmind
                  02.01.2017 10:29

                  Да, если вырвать их из контекста


            1. ru_vlad
              01.01.2017 23:36
              +1

              DistortNeo

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

              Приятно сознавать что есть разумные люди :)
              Как там у классиков «мы с тобой одной крови...» :)


  1. IRI
    31.12.2016 13:46
    +2

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


    1. Dum_spiro_spero
      01.01.2017 04:57

      А вот я наоборот. Учился на курсах по LV не посредственно в NI, показалось все это… надуманным каким-то.
      Вот LabWindows CVI — там все понятно ))).


  1. vbifkol
    31.12.2016 15:02

    Скетч — набросок, эскиз. Скретч — каракуль. Язык в обсуждаемой статье называется скретч.


  1. 5oclock
    31.12.2016 19:10

    Автор, по-моему, сравнивает одно и то же.
    Скретч — это просто «руками не набирать», а по сути — тот же «текстовый» язык.


  1. Doverchiviy_kot
    31.12.2016 23:01

    Интересно а детей реально научить в том же майнкрафте создать компьютер и «поставить — активировать» свою программу? Например на готовой карте с компьютером, активировать факелами нужные репиторы и запустить хотя бы змейку/калькулятор?


    1. Wano987
      05.01.2017 09:00

      Да, но скорость работы — аховая и создавать надо очень долго.
      Поищите «redstone calculator» на ю-тюбе.

      С меньшим успехом можно делать водяной компьютер даже в Dwarf Fortress.


  1. Delics
    01.01.2017 09:46
    -1

    Выбор между визуальным и текстовым программированием для детей

    Ну как сказать, «выбор». Теперь, когда везде суют визуальные языки, как-то и выбора иного не оставляют.

    Придется с них начать. Хотя как по мне, простые текстовые команды наоборот проще для понимания сути того, что делаешь (а не для просто некоего «веселого занятия»).

    В Scratch я могу организовать код, чтобы переместить спрайт следующим образом:

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

    Но взять, допустим, средней руки полезную программу. 300-500 тыс. символов на текстовом языке программирования. Автор вообще знает, что это ещё не самые большие программы? Он представляет, что будет всё это ввести визуально?

    Ладно, компьютерные программы — понятно.

    Но я, например, и программы для станков и устройств делаю. Обычный размер — 50-100 тыс. символов навороченной логики. Пусть он это введет своими квадратиками в стиле «если пользователь нажал А, то делать Б», может и поймет тогда чего.

    А может и нет.


    1. neomedved
      01.01.2017 10:30

      А что считается полезной программой? Существует, например, куча игровых движков, позволяющих создавать игры без программирования: Construct, GameMaker, RPG Maker и т.д. И с их помощью разрабатываются коммерческие проекты. Не говоря уже о том, что обучение детей несколько отличается от программирования станков.


      1. Delics
        01.01.2017 11:20

        Вот к этому будущих «программистов» и готовят. Когда дядя уже всё сделает, а им останется выбрать комбинацию из красивых пиктограмм.

        И потом дядя поделится прибылью.


        1. idiv
          01.01.2017 15:09

          Когда дядя уже всё сделает, а им останется выбрать комбинацию из красивых пиктограмм.

          Ну в принципе Matlab Simulink по сути набор пиктограмм. А еще есть специализированные Real-Time Digital Simulatior, там тоже набор пиктограмм, аналогично Simulink.
          Тут стает вопрос, что важнее — за три-четыре года работы над докторской использовать готовые решения и все же заняться основной задачей или заново написать программу. Программирование, оно ведь не вещь в себе, а всего лишь один из компонентов существующей экономики.


          1. Delics
            02.01.2017 09:25

            Ну в принципе Matlab Simulink по сути набор пиктограмм

            Любое утверждение можно довести до абсурда неуместными сравнениями.

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

            Я не протестую против пиктограмм и тем более против удобных и уместных средств разработки.


        1. DistortNeo
          01.01.2017 16:51

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


  1. perfect_genius
    01.01.2017 16:59

    Интересно, существуют люди, которых учили программированию в школе и они стали программистами?
    Тут есть такие?


    1. DistortNeo
      01.01.2017 17:13

      Конечно, есть. Школа вполне успешно показала, что есть такая штука — программирование, и она вполне интересна, что подтоклнуло к самостоятельному изучению программирования.


      1. perfect_genius
        01.01.2017 17:28

        Как учили? На чём учили? Назовите вашу цепочку изучения языков =)


        1. DistortNeo
          01.01.2017 19:23

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

          Затем паскаль с 8 класса — стало ещё интереснее, потому что с помощью паскаля можно было написать абсолютно что угодно. А преимуществом Паскаля перед C было значительное меньшее количество способов выстрела в ногу. Напомню, что тогда были времена DOS, и основными языками программирования были C, Pascal и ASM, никаких хаскель-питонов и в помине не было.

          После 8 класса изучение программирования стало полностью самостоятельным: школа и университет уже ничего нового не могли предложить. Ну были C, C++, но мне они не очень нравились.

          Слез с паскаля я в итоге только на 3 курсе: перешёл с Delphi на MSVS C#, когда вышел .NET 2.0.
          Интерес к C++ проснулся уже позже, с выходом С++11 и необходимостью в написании высокоэффективных по скорости приложений (обработка изображений: параллелизм, векторные инструкции).


          1. perfect_genius
            02.01.2017 15:15

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


        1. geher
          02.01.2017 17:46

          Встряну со своим опытом.


          1. Искусственный язык с русскоязычными операторами без компьютера.
            Дало общее понимание процесса программирования от построения модели до реализации в коде.
          2. Fortran. Повезло. Практика на "живой" ЕС-1025 с перфораторами, перфокартами и печатной машинкой в качестве терминала. Это было применение полученных знаний на практике.
          3. ЯМБ. Это был УПК. По итогам имею диплом оператора ЭБМ.
            Это было скучное "обучение языку", когда давали только операторы и стандартные приемы решения стандартных задач.

          Основное школа таки дала — общее понимание того, что такое программирование, и что это в общем-то интересно.
          Остальное — исключительно самообразование (даже простой программируемый калькулятор МК-61 дал немало) и внешкольная система образования (что-то вроде кружка по программированию при институте).
          После уже стало однозначно понятно, куда я буду поступать и чем буду заниматься после.


    1. tetramino
      01.01.2017 20:31

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


      1. DistortNeo
        01.01.2017 20:54

        жаже работу с дебаггером изучали

        А почему «даже»? Если рассматривать Turbo Pascal, то там IDE — неотъемливая часть процесса программирования. И в голову бы не пришло писать отладочный вывод и ломать голову вместо использования отладчика.


        1. tetramino
          01.01.2017 21:25

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


      1. perfect_genius
        02.01.2017 15:27

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


  1. fruit_cake
    01.01.2017 17:03

    Мне всегда не нравилась плохая наглядность кода, приходится в своей «нейронной сети», в мозге, выстроить алгоритм и анализировать его, почему не создать визуальный язык с нодовой системой который избавлял бы от этого? Одновременно можно было бы и в код заглянуть, если кому-то нравится работать так.

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


    1. perfect_genius
      01.01.2017 18:19

      Однажды, лет 5 назад, понадобилось мне, маглу непрограммисту сделать простую игру. Каково же было моё удивление, что с супертехнологиями второго десятилетия 21 века простой человек не может просто нарисовать кружок на экране и двигать им с устройства ввода (джойстик, клавиатура, мышь...).
      С тех пор я разрабатываю среду, в которой на первом месте скорейшая обратная связь в виде воплощения замысла человека, а технические детали/подробности скрыты или отложены на потом или вообще для специалистов.
      Надеюсь, это сильно повлияет на мир, когда любой человек любого возраста и пола станет полноправным хозяином своих компьютеров/смартфонов =)


    1. Neyury
      01.01.2017 21:43

      В Unreal Engine реализован собственный скриптовый язык, который выглядит как блок-схемы.


      1. perfect_genius
        02.01.2017 15:21

        Недостаточно, нужно больше наглядности =)
        Я долго искал предел наглядности и пока дальше этого продвинуться не могу:image
        Т.е. только примитивы и анимация. Среда должна визуализировать внутренности программы, алгоритмы.
        И оказалось, что такое становится понятным уже любому человеку, не только программисту.
        Надеюсь в будущем написать статью про это на Хабре.


        1. SADKO
          02.01.2017 21:27

          Интересно, ждёмс…


  1. perfect_genius
    01.01.2017 17:35

    Ответ был fruit_cake'у, ошибся веткой -_-


  1. amarao
    02.01.2017 13:00

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

    Когда запускал, на консоли появилось:

    Executing: /usr/lib/squeak/4.10.2-2614/squeakvm -encoding UTF-8 -vm-display-x11 -plugins /usr/lib/scratch/plugins/:/usr/lib/squeak/4.10.2-2614/ -vm-sound-pulse /usr/share/scratch/Scratch.image

    squeak — виртуальная машина SmallTalk.

    На самом деле, когда я глянул что оно умеет — у меня была одна фраза «ВЕРНИТЕ МНЕ МОЁ ДЕТСТВО». Потому что деревянный синклер, прибитый ассемблером к магнитофону — это вся романтика, которая у нас была.


  1. SADKO
    02.01.2017 21:26

    Вставлю свои три копейки, ибо много занимаюсь с детьми…
    Не всё «графическое» одинаково вредно\полезно, ИМХО скрэтч хорош именно тем, что концептуально близок к написанию кода, в отличии от лабвью вообще и леговского в частности, где решение задач отличающихся от тупой коммутации датчиков-исполнителей, превращается в адский адъ!

    За написание кода я ратую лишь потому, что Монтессорщик и дети у меня маленькие, так-что клавиатура им проще, чем таскание даже скрэтчивых блоков.


  1. HappyLynx
    03.01.2017 09:43

    Замолвлю и я словечко за визуальные ЯП. Одним из ярких примеров, который крепко и давно используется в совсем не детском и высоконагруженном продакшене телекома, является TIBCO BusinessWorks, достаточно долго и плотно с ним работал. По сути, это визуальная надстройка над Java с парадигмой «всё есьм xml», позволяющая в пару телодвижений писать middleware для взаимной интеграции зоопарка всевозможных разрозненных систем.

    Если интересно посмотреть, как это всё выглядит — просто вбейте в гугл-картнках «TIBCO BusinessWorks». Очень мощная штука.


  1. vlad20012
    03.01.2017 16:34

    Сам научился программировать на Minecraft-модах. Правда не в 9 лет, а в 15, но и то неплохо. Сейчас уже 20, таки работаю программистом, хотя некоторые minecraft-related проекты до сих пор поддерживаю.
    Племянника (7 лет) все думаю посадить на Scratch. До сегодняшнего дня был уверен, что там все по-английски, так что ему будет сложновато. Ан нет, русский имеется.


  1. amarao
    03.01.2017 19:28

    … Поигрался с scratch. Оно очень старое. Я (вроде бы не сильно тупой пользователь PC) не смог найти метода сделать рабочую область побольше. Всё очень пиксельное и никакого антиалиасинга — на больших экранах больно смотреть, а что будет на highdpi — страшно себе представить.

    Система команд не сильно интуитивна (например, поворот не поворачивает фигурку), как удалить действие из середины стека не удалив все под ним — я тоже не нашёл.

    По нажатию F11 просто показывает белый экран и назад не восстанавливается (по повторному нажатию).


    1. scratch_book
      06.01.2017 11:41

      Вы наверное в Scratch 1.4 поигрались.
      В Scratch 2/0 https://scratch.mit.edu/projects/editor/
      можно импортировать векторные изображения, и это выглядит гораздо лучше чем 1.4
      — Поворот поворачивает фигурку, если включить соответствующий стиль вращения
      — чтобы удалить блок из середины, надо отцепить все что ниже, затем удалить блок, затем вернуть все что ниже.
      — F11 не понял вопроса. Зачем его вообще нажимать?

      И вопрос к любителям паскаля, сколько строк на паскале чтоб написать вот такую игру типа пинпонга?
      https://scratch.mit.edu/projects/10128515/
      На Скретч всего 25 блоков


  1. Prog23
    03.01.2017 20:58

    Внесу свои «три копейки»…
    1. Перевод статьи — как будто создан для споров, А НЕ ДЛЯ ПОИСКА ИСТИНЫ…
    В переводе не указаны возраста детей — результат: можно спорить до посинения…
    — один — про 5-6-7 летних
    — другой — про 4-5 класс (10-11 лет)
    — третий — про 9-10 классников…
    и каждый будет прав — по своему — так как все три указанных возраста — абсолютно разные…

    Про визуальное программирование?
    — Начинать программировать можно с 5-6-7 лет — и это должно быть визуальное программирование…
    Желающие поспорить для начала должны аргументированно опровергнуть пословицу:
    «Лучше один раз увидеть, чем сто раз услышать»
    Начинать оптимально с программирования роботов типа MindStorm 2.0 (3.0 не видел — возможно так же подойдет)
    Мой личный опыт (в том, числе — по работе с детьми с нарушениями в аффективной сфере...) — с 6-ти MindStorm 2.0 (правда, крайне желательно обучение родителями — например умножению — крайне легко для 5-ти летних, но нужны ежедневные занятия — это «под силу» только родителям — крайне легко: идем в садик, в магазин и т.д. — Давай посчитаем до 10 (1,2,..,9,10) — а теперь в обратную сторону (10,9,8,...,2,1,0 — дальше для усиления положительного подкрепления — кстати, это еще один минус перевода\статьи — ни слова не сказано о положительном подкреплении… — А теперь давай посчитаем до 20 (1,2,3,...,19,20) — а теперь в обратную сторону — А давай посчитаем побыстрее — через два (2,4,6,...,16,18,20) — а теперь в обратную сторону (20,18,16,..,4,2,0 — ПУСК (пляшем, поем и т.д. — делаем, то, что нравиться ребенку — и он будет сам просить «посчитать»...))) — Давай посчитаем до 30...- полагаю большенству уже понятно…
    Но я отвлекся — с 8 GameMaker 8.1 — в 11 лет дети (с подтвержденной задержкой в развитии) сами просили научить их программированию на языке (в GameMaker 8.1 — внутренний язык очень похож на Си)
    Методика обучения на Си\С++ описана тут
    https://habrahabr.ru/post/179307/
    На сайте методиста
    http://ded32.net.ru/ (в правой колонке)
    К визуальному программированию
    «Как известно, все развивается по спирали...»
    Обратите внимание на методики типа
    — Rational Unified Process https://ru.wikipedia.org/wiki/Rational_Software
    — Power Designer
    и Вы увидите «развитие» визуального программирования «на новом витке»…
    Следующие «пол оборота» — Александр Сергеевич Подколзин http://intsys.msu.ru/staff/podkolzin/

    и так далее… вечная борьба «щита» и «меча»…


  1. echo_mont
    05.01.2017 09:00

    Мой сын с 5 лет (сейчас 7) играет и учится на code.org. Не круглый год, только летом. Зимой ходит в кружок робототехники.


  1. Aleksandr_Zh
    06.01.2017 12:07
    +1

    собираю разные интересные фразы в файлик. Вот что он мне сообщает про тему «выбор языка»:

    Выбор «правильного» языка уже давно — вопрос веры.
    Какой язык программирования выбрать?
    В первую очередь, нам нужно определить цель. Научить школьников логически и алгоритмически мыслить? Познакомить с компьютерами на бытовом уровне, чтобы школьники умели пользоваться интернетом, почтой и текстовыми редакторами? Заложить базовые знания, необходимые для будущих инженеров, математиков, физиков и специалистов по информационным технологиям?
    А может, нам нужно каждого школьника познакомить с программированием как явлением, чтобы он представлял потенциал компьютерных систем? Много ли школьников станет программистами? Немного. Но синусами и уравнениями Кирхгофа в жизни тоже пользуется не каждый. Безусловно, в науке о программировании есть фундаментальная составляющая, но определить её не просто.

    Некоторые считают, что не так важно, какой язык программирования взять: на уроках информатики нужно учить не языку программирования, а методам программирования и системному подходу решения задач. Нужно развивать алгоритмическое мышление и на примерах знакомиться с принципами построения современных компьютерных систем.
    Неужели действительно не так важно, какая среда, и какой конкретный язык программирования будет использован для практических занятий?
    Оказывается, что у каждого преподавателя есть свой список требований к учебному языку программирования. Например: простой, интуитивный синтаксис, наличие высокоуровневых инструментов для обнаружения и недопущения ошибок и для отладки программ, наличие качественной документации с примерами, наличие дружелюбной среды разработки, наличие версий под различные платформы,… У некоторых преподавателей этот список очень короткий, например: «Только Паскаль» или «Любой, кроме Бейсика!».

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

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

    Powerland: все придет к тому, что через двадцать лет программеры забудут что такое языки/компиляторы, которые дают нативный машинный код, будут программить для ОС, которая работает под silverlight, который работает в браузере, который написан на .NET, и запущено все это будет в какой-нибудь windows 7, а она в свою очередь будет работать в VmWare под линуксом. Среди программеров будут ходить слухи, что кто-то знает как программить не только под .NET, но и под windows и linux.


    1. AVGEdu-craft
      06.01.2017 21:13

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


      1. Aleksandr_Zh
        06.01.2017 21:53

        я и сам-то ломаю голову как детям помочь «управлять МК или ПК», да и вообще чем-то электронным, способным «понимать» команды.


  1. potan
    06.01.2017 16:12

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


    1. black_semargl
      07.01.2017 18:48

      Ну собственно любой веб-дизайн и прочее рисование формочек — это декларативное программирование.
      А вот управление механизмом без императивного никак. И там даже не просто императивное, а реакция на события.


      1. potan
        07.01.2017 21:03

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