На дворе осень и сын все чаще остается дома, уткнувшись в телефон или планшет, слабо реагируя на внешние раздражители. Меня это огорчает. Сам я начал программировать, как мне кажется, с того, что к моему первому компьютеру БК 0010-01 игры то на кассетах в комплекте шли, а вот магнитофон не шел. Пока добывали магнитофон с подходящим линейным выходом, я успел попробовать Бейсик, спасибо отцу за первые уроки. Так что, когда смог со скрипом загрузить первую графическую игру, то смотрел на нее уже не как на то, во что наконец буду играть, а очарованно думал, как бы сделать свою не хуже. Сына же, в его 8 лет, давно поглотил мир видеоигр и ютуба, так что начинать программирование с трели на встроенном динамике, похоже, впечатления не произведет.


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


Однако, пробежав по имеющейся в свободном доступе информации, я понял, что все очень не просто. Найденные книги "Программируем с Minecraft. Создай свой мир с помощью Python" 2017 года и "Minecraft. Программируй свой мир на Python" 2018 года начинают с установки серверов Spigot и Bukkit соответственно. Оказалось, что мобильные клиенты, которые на android/iphone, они же pocket edition, они же bedrock edition, с этими серверами не работают. Надо покупать клиент под Windows/Mac, что портит всю затею. Во-первых это будет уже не "родная" среда, привычная сыну. Во-вторых, пересаживаться ради программирования в другую среду продемонстрирует слабость, что ли, подхода, мол игры отдельно, программы отдельно. В-третьих, сыну наверное захочется показать свои эксперименты друзьям, а у друзей популярны именно мобильные версии. Так нельзя, решил я, раз эти мобильные игрушки умеют подключаться к серверам, не все потеряно. И я начал искать.


В первый день мой хром был до отказа забит вкладками, а в голове воцарился хаос.
Первым нашелся сервер Nukkit с открытым исходным кодом, к которому игра на моем андроиде подключилась вполне успешно. Единственный момент тут, что нужна актуальная версия игры (1.12 на сегодня), так что понадобилось обновить ее сначала. У сервера много плагинов, но плагина, пригодного для программирования, вроде, описанных в книгах, не нашлось.


Нашелся, правда, PyPlugins, который вроде запускает Jython — версию питона на java. Но, как я понял, jython остановился на версии языка python 2.7. Отложил этот вариант, как неспортивный.


Пойдем с другой стороны, а как авторы книг подразумевали подключение питона к серверам? Пристально изучив дополнительные материалы к книгам, благо они в свободном доступе, нашел плагин RaspberryJuice, заботливо спрятанный в директории plugins (в книге о нем ни слова), он то и открывает сетевой сокет в ожидании команд. А команды отправляет питоновская библиотека mcpi. Спасибо авторам, все с открытым кодом. Немного напрягало, что последний коммит 2-4 года назад.


Но как подключить RaspberryJuice к Nukkit? И тут отыскивается, не смейтесь, Pokkit — плагин к Nukkit для запуска плагинов под Bukkit. Уж не знаю, почему названия таковы, но мне это добавило лишних часов поиска, так как сначала я их путал. Кажется теперь уже все части пазла на месте, но запуск выявляет ошибку: java.lang.NoSuchFieldError: GOLD_SWORD. Обидно, ведь в описании Pokkit-а отмечено, что RaspberryJuice есть в списке поддерживаемых. Оформил баг. На удивление быстро пришел ответ — плагин устарел. "У вас все тут ржавое", вспомнилась фраза из любимого фильма. После уточнений, автор любезно разъяснил, где взять современное API для bukkit, ну а дальше "мы уж как-нибудь сами". Форкнул устаревший плагин, довольно шустро заменил все исчезнувшие в текущей версии API методы, найдя им замену. Получилось что-то вроде world.getBlockTypeIdAt(loc) менялось на world.getBlockAt(loc).getType().getId(). Однако один момент все же существенный: раньше можно было сделать радугу из одинаковых блоков (как в примере, block.WOOL), раскрашенных в разные цвета. Теперь же блоки перекрашивать нельзя, надо брать изначально разноцветные блоки (Material.RED_WOOL, Material.BLUE_CARPET). Оформил pull request и обнаружил, что таких pull request-ов там еще два, оба свежие. В следующий раз стоит сначала это проверить...


Итак, инструкция, как быстро запустить эту пирамиду из Nukkit-Pokkit-RaspberryJuice-mcpi:


  1. Берем подходящий сервер, до которого есть доступ с ваших мобильных Minecraft-ов. Например, домашний компьютер с открытым портом 19132 (по умолчанию). Мне проще на linux, но подойдет любая ОС, где есть java runtime environment.
  2. Сервер Nukkit. Скачиваем рекомендованный JAR по ссылке "Downloads" или собираем свой из исходников (mvn clean package). Кладем в отдельную директорию и просто запускаем java -jar nukkit-1.0-SNAPSHOT.jar.
  3. Плагин Pokkit. Скачиваем рекомендованный JAR по ссылке "Download and usage" или собираем свой из исходников (mvn clean package). Кладем в директорию plugins, которая образовалась после шага 2. Останавливаем и снова запускаем сервер, как в шаге 2.
  4. Плагин RaspberryJuice с моим патчем. Скачиваем рекомендованный JAR по ссылке или собираем свой из исходников (ветка pocket-edition, mvn clean package). Кладем в директорию plugins/Pokkit/bukkitPlugins/, которая образовалась после шага 3. Останавливаем и снова запускаем сервер.
  5. Подключаем мобильный minecraft к серверу: Играть — Серверы — Другие серверы — добавить новый или отредактировать имеющийся: "имя сервера" — на ваш вкус, "адрес сервера" — IP адрес сервера из шага 1, "порт" 19132, если не меняли в конфиге. Сохранить и подключиться.
  6. Устанавливаем python 3 и библиотеку mcpi: pip3 install --user py3minepi. После этого можно запускать примеры из книги 1 и 2, просто введя python3 Adventure3/dice.py.

UPD: в пункте 6 устанавливать библиотеку mcpi нужно так: git clone https://github.com/py3minepi/py3minepi.git && cd py3minepi && pip3 install --user . (в конце точка нужна). Это из-за того, что у автора плагина прописана последняя версия питона 3.4.


Можно попробовать и без питона (шага 6), подключившись к плагину обычным netcat-ом: nc localhost 19132 и вводить команды вручную:


  • player.getTile() — в ответ придут координаты игрока в формате x,y,z, где ось y направлена в небо, а плоскость xz параллельна земле. У меня вышло 75,-5,-5,
  • world.setBlock(75,-6,-5,3) — установить блок грязи под игроком,
  • world.spawnEntity(75,-4,-5,93) — породить курицу над игроком.

Мои эксперименты можно видеть на начальной картинке этого поста.


Если пошел дождь или настала ночь и плохо видно, введите в консоли сервера команды time set 0 и weather clear.


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


Еще нашел это замечательное видео о визуализации docker контейнеров сервера в мире Minecraft:



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

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


  1. GeMir
    22.10.2019 20:37
    +3

    Сына же, в его 8 лет, давно поглотил мир видеоигр и ютуба, так что начинать программирование
    Minecraft и Python «заходит» неплохо и детям постарше.
    что бы такого необычного еще придумать для обучения программированию.
    Полюбопытствую лишь: потенциальный путь вне программирования родителем не рассматривается? Что если попробовать «спасти» ребёнка от видеоигр, скажем, творчеством или спортом?

    Swift Playgrounds для iPad в сочетании с тем же Parrot Mambo впечатляют как детей так и родителей. Это если не пугает фруктовая экосистема.


    1. drWhy
      22.10.2019 21:59

      Что если попробовать «спасти» ребёнка от видеоигр, скажем, творчеством или спортом?
      Как вариант, предложить ребёнку заряжать гаджеты динамкой во время велопрогулки.


      1. Dechjo Автор
        22.10.2019 23:06

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


        1. drWhy
          22.10.2019 23:24

          Велодинамка даёт 6 В 3 Вт, но ампер дать тоже может. В конце концов, электронная книжка — тоже гаджет. Бывают дети неспортивные, зато начитанные:


          1. Dechjo Автор
            22.10.2019 23:36

            Со спортом все не плохо, вроде. Есть и велосипед и гироскутер и самокат и лонгборд. Лета не хватает за окном :)


            1. drWhy
              22.10.2019 23:38

              Да, не май месяц, Но дело в настрое.


    1. Dechjo Автор
      22.10.2019 23:03
      +1

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


    1. Shaehl
      23.10.2019 10:58

      Мне кажется что этот комментарий полностью поглощён стереотипами…


  1. usego
    22.10.2019 21:13
    +1

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


    1. Dechjo Автор
      22.10.2019 22:34

      Вариант. Только такой докер устареет быстро, стоит сменится версии API. Я с этим первым делом столкнулся — Minecraft 1.11 уже отказывался работать с сервером и без каких либо пояснений: «не удалось подключиться к миру» и все, совместимость тут не в почете. Тогда уже какой-то скрипт написать, который скачает все последнее и соберет образ. Но тут, понятно, чуть если изменится списоб запуска чего-то и привет. Сам сервер nukkit еще версии 1.0-snapshot — о стабильности говорить рано.


      1. MrBrikster
        23.10.2019 10:58

        Имея в разработке под Майнкрафт некоторый опыт, могу сказать, что в PC-версии 1.13 произошли глобальные изменения API, из-за которых RaspberryJuice, вероятно, и не завёлся.
        В ближайшее время такие значительные апдейты вряд ли предвидятся (кастомные ядра под ПК очень консервативные, разработчики стараются как можно реже вносить изменения, ломающие обратную совместимость, и там делается в основном реализация функционала новых версий игры).
        В связи с этим, не думаю, что RaspberryJuice в обозримом будущем придётся снова пересобирать. А у Nukkit'а способ запуска не меняется — для нужной версии Pocket (Bedrock) Edition'а можно просто подкачивать нужное ядро.

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


        1. Dechjo Автор
          23.10.2019 13:26

          Автор RaspberryJuice ответил 3 дня назад в том смысле, что не будет развивать плагин в сторону поддержки новых API, так как из-за этого поломаются старые приложения, и предложил желающим создать репу для RaspberryJuice2.


        1. Dechjo Автор
          23.10.2019 13:54

          Кстати, мне разработчик ответил, что в Nukkit нет и не будет «mob ai». То есть, наши курицы, коровы и ламы никогда не оживут, не подскажите?

          А то тут недавно пчёл анонсировали, случайно увидел, видео — просто заглядение, по-моему. twitter.com/Minecraft/status/1177978532913434626


        1. Art_NRG
          23.10.2019 20:25

          Возможно, еще будут. Mojang открывает карты обфускации с версии 1.15, под них наверняка будут подгонять Spigot API, так что ID блоков и сущностей могут измениться. Я все ждал новость об этом на хабре, но, видимо, не судьба.


  1. drWhy
    22.10.2019 21:53
    +1

    «В 1833 году были определены часы работы для несовершеннолетних шахтеров: дети младше 13 лет не могли работать больше 8 часов в день, подростки до 18 лет — только 12 часов в день. Детям запретили работать по ночам.»
    Прогресс, однако, не стоит на месте, и теперь ребёнок может полночи просидеть за компьютером/телефоном.

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


    1. GeMir
      22.10.2019 22:14
      +2

      теперь ребёнок может полночи просидеть за компьютером/телефоном
      Как 30-40 лет назад мог просидеть с фонариком и любимой книжкой под одеялом.


      1. Rusty_Shackleford
        23.10.2019 17:49

        Я так 15 лет назад сидел. Эх.


        1. Stanislavvv
          23.10.2019 20:59

          Дочь может и сейчас просидеть. Разве что книжка — в телефоне.


    1. Dechjo Автор
      22.10.2019 22:39

      Золотые слова. Вот только обидно, что ребенок этого не понимает пока.


  1. stari40k
    22.10.2019 22:35

    Идея конечно хорошая. Можно ещё параллельно азбуке Морзе обучить. И пускай рубильником отправит сообщение в телеграм или ещё куда. Ну и обратную связь прикрутить :).


    1. drWhy
      22.10.2019 22:55

      Ну рубильником (отбоем) ещё в прошлом веке телефонные номера набирал на телефоне-автомате с поломанным номеронабирателем, на зависть очереди к единственному исправному аппарату.
      Морзе простоват. (32, 26) код Хэмминга с дополнительным кодированием 8 в 11. Как метод чата в играх, например.


  1. Javian
    22.10.2019 22:56

    Есть книга для детей «Learn to Program with Minecraft Plugins: Create Flaming Cows in Java Using CanaryMod»


    1. Dechjo Автор
      23.10.2019 13:06

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


      1. Javian
        23.10.2019 20:14

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


  1. scratch_book
    23.10.2019 10:36
    +1

    Для 8 летнего лучше всего начинать знакомство с программированием со scratch.mit.edu
    Если зайдет (вероятность 80%), то можно продолжить на платформе progkids.com
    На которой наши отечественные разработчики скрестили блочное программирование и даже Python с Minecraft 1.12
    Лучшие книги по Scratch:
    www.labirint.ru/books/552457
    www.labirint.ru/books/705204
    Детский онлайн курс по Scratch и по программированию в Minecraft есть на платформе
    codim.online
    Ну а если ребенок предпочитает только планшет, то остается ScratchJR для начинающих, он гораздо проще чем Swift Playgrounds


    1. Dechjo Автор
      23.10.2019 13:16

      Интересно, да. Я такие игрушки c code.org/learn подсовывал сыну в том году. Еще есть красивая бесплатная мобильная игрушка Lego Mindstorms Fix the factory — программировать робота для прохождения лабиринта. Сын ее прошел. Но вот осталось впечатление, что только для того, что бы папа был рад.


      1. pvvv
        23.10.2019 17:23
        +1

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

        но вот это выглядит вроде даже ничего: www.youtube.com/watch?v=FpxIfCHKGpQ

        а ещё про программирование есть 'human resource machine' и '7 billion humans'


  1. Celsius
    23.10.2019 10:59

    Есть прекрасный мод OpenComputers. Там правда, только Lua, но интересней программировать не ради программирования, а для решения игровых задач. Роботами и дронами можно копать/садить картошку, разводить животных, добывать и сортировать ресурсы. Есть даже возможность управлять миром и игроками через специальное админское устройство.
    И да, можно даже подключиться к IRC и помигать лампочкой в квартире.


  1. Vagon12
    23.10.2019 10:59

    В свое время рассказывал детям программирование в началке на основе мода «черепашка»
    www.computercraft.info/wiki/Turtle
    но это было на полноценной версии minecraft.
    Сейчас Microsoft выпустила специальную образовательную версию, с поддержкой программирования education.minecraft.net/class-resources/code-with-minecraft


  1. Nikola_Piterskiy
    23.10.2019 11:13

    Все таки не совсем понятно какой итог? Сыну это интересно? У него самого какие мысли/идеи на этот счет? Если не проявится интереса, будете все равно искать подход и какие-то методы? Цель конечная какая? Научить ребенка каким-то навыкам, пусть и через не хочу? Или же создать желание у ребенка изучать это?


    1. Dechjo Автор
      23.10.2019 13:38

      Ему пока не очень интересно. В частности, я написал эту статью, ради советов в комментариях. И вижу, что не зря, все ссылки обязательно попробую. Цель — программирование (и математика, конечно). Через не хочу не получится, это я давно понял. Буду искать, другого варианта нет.


      1. art_of_press
        23.10.2019 23:42
        +1

        Мои сыновья до программирования ещё не дошли, но математику прокачали капитально. Сейчас им 11 и 10 (будет в ноябре) лет, математику они проходят на уровне 8-го класса физматшколы, с сентября начали изучать физику, со следующего лета договорились изучать программирование. Таких результатов мы добились за 2 года. Вот мой рецепт:

        1. 1-1,5 часа занятий в день, но каждый(!) день, кроме вторника и четверга в школьные дни, когда у них тренировка (тренировка есть и в субботу, но в субботу нет школы, поэтому мы и тренируемся, и занимаемся математикой или физикой). В воскресенье также занимаемся.

        2. Все занятия только вместе со мной (несмотря на то, что занятия ведёт преподаватель онлайн-школы Фоксфорда). При мне они не отвлекаются, я вижу, когда им что-то непонятно, проверяю, поняли ли они объяснение преподавателя, задавая уточняющие вопросы и т.д. Давать им заниматься самим я пробовал, но пришёл к выводу, что в таком возрасте это неэффективно (в моём конкретном случае).

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

        Во-первых, я им плачу за их труд (по 5 евро в неделю каждому; с сентября я поднял их зарплату до 10 евро в неделю — при условии, что они не пропустили ни одного дня, кроме дней, когда есть и школа, и тренировка).

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

        В-третьих, у них есть и более долгосрочные цели. В первый год занятий для старшего сына такой целью был мой старый iPhone 6+. Я пообещал ему отдать его, если он до 1 сентября успеет полностью пройти программу 6 класса по математике (углублённый курс для 6-го класса уже упоминавшегося Фоксфорда). Он напрягся и прошёл. Получил iPhone. Во второй год такой целью для обоих был игровой компьютер с мощной видеокартой (своего компа у них не было, игрались на гаджетах плюс иногда на моём Макбуке в Майнкрафт). Они копили на него деньги (откладывали свою зарплату плюс деньги, которые им дарили на дни рождения), и я пообещал им добавить свои на день рождения младшего (будет в следующем месяце), если они целый год (с 1 сентября по 31 августа) будут хорошо заниматься. Они были молодцами, и я сейчас им купил навороченный комп с GeForce RTX 2080 Ti, навороченный монитор, гейминговыю клаву и мышку и т.д. На днях всё должно прийти с Амазона, они счастливы. Но дальше нужны будут деньги на покупку игр, поэтому они уже подсчитывают, когда они смогут их купить ;)).

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

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


        1. Xambey
          24.10.2019 01:04

          звучит дико на мой взгляд, пытаться воспитывать человека методом только пряника. Так в один момент человек может сказать себе "Ну нафиг" и пойти в разгул на долгие годы, есть такие знакомые, в 17 лет уже получившие степень бакалавра и успешно прошляпившие свое возможное успешное будущее, ресурсы нервов не бесконечные. Я это на себе тоже прочуствовал, пару классов в школе перескочил, без проблем все сдавал и мне было нормально учиться с 9 до 9. Где то ближе к концу второго курса института общая атмосфера разгельдяйства вокруг и понимание бесполезности того, что мне впаривают в институте свела на нет все желание там находиться, с тех пор я изучаю только то, что интересно мне, хотя я и сильно скатился на ечебе. Надо сказать, что подобное самоообразование при искреннем моем желании на порядок эффективнее, чем если бы мне кто-то за это что-то обещал. Могу еще добавить, что мои знакомые, которые продолжались париться над отличными оценками до конца магистратуры по итогу оказались с ситуацией, когда а) у них к концу магистратуры не было никакого практического опыта б) знания, которые им дали в институте по большей части бесполезны и чаще всего не применимы в работе вовсе


          1. art_of_press
            24.10.2019 01:27

            Во-первых, у меня не только метод пряника. Как я уже писал, играть в гаджеты им можно только если они за последние 7 календарных дней не пропускали дополнительных занятий. Так что «нет занятий — нет гаджетов», а это кнут для детей сильный.

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

            Что касается оценок, то они меня не особо интересуют. И мои дети это знают. Меня интересуют знания, а не оценки, тем более в их возрасте.


        1. Dechjo Автор
          24.10.2019 01:26

          У меня тоже к приобретению геймингового компьютера идёт. Не испортит ли это все начинания?..
          Олимпиадную математику тоже даёте?


          1. art_of_press
            24.10.2019 01:36
            +1

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

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


          1. art_of_press
            24.10.2019 01:40
            +1

            Олимпиадной математикой мы летом занимаемся. В течение года на неё не хватает времени. У нас получается проходить по половине полуторачасового занятия в день — потому что мы останавливаем воспроизведение когда преподаватель даёт задачи, когда нужно проверить, усвоили ли они материал, когда нужно что-то дополнительно объяснить и т.д. В итоге за неделю мы успеваем проходить всего 3 полуторачасовых занятия вместе с домашками к ним. Сейчас это одно занятие по алгебре, одно по геометрии и одно по физике. А олимпиадный курс пройдём летом, когда будет больше свободного времени.


            1. Dechjo Автор
              24.10.2019 02:00

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


              1. art_of_press
                24.10.2019 02:07
                +1

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

                P.S.: Гаджет отбирать и не нужно. Чаще всего достаточно сменить пароль Wi-Fi, и через 15 минут ребёнок придёт договариваться ))


                1. Dechjo Автор
                  24.10.2019 02:20

                  Вот что бы перестать зависеть от WiFi, подбивает на безлимитный интернет в мобильном тарифном плане под предлогом всегда быть пеленгуемым :)
                  Да, ваше пояснение вполне разумно, упустил я момент этот в воспитании из-за занятости, буду исправляться.


  1. slayerhabr
    23.10.2019 12:01

    Поделюсь своим опытом:
    Похожая проблема, но несколько с другой стороны:
    Сыну 6 лет, телефонов-планшетов нет — несколько лет назад поняли, что ютуб затягивает в трясину СДВГ поощряя беспорядочное перескакивание с ролика на ролик сомнительного качества (распаковка игрушек и как играют в игрушки другие дети). После 2х недельной ломки телефоны-планшеты стали не интересны. Цена — пришлось удалить все развлекательное и залочить (уже к тому времени playmarket/appstore был изучен :)

    Пару месяцев назад задумался над тем, чтобы дать основы программирования: переходы, циклы, процедуры. Кстати тоже была в каша в голове, как в игровой форме научить.
    Из более-менее нашел Box Island, SriteBox, Code Karts. Проходим вместе, пока очень интересно и увлекательно. Бонусом является то, что это идет как вознаграждение за чтение/письмо )


    1. slayerhabr
      23.10.2019 12:06

      Кстати есть статейка на хабре habr.com/ru/post/440376


  1. tony2001
    23.10.2019 12:09

    codecombat.com а вот такую штуку не смотрели?


  1. valis
    23.10.2019 12:38
    +1

    1. Уход в ютуб/игры как по мне это следствие отсутствия внимания со стороны родителей.
    Мой малый обожает майнкрафт, но с такой же радостью идет кататься со мной на велосипеде.
    В нелетную погоду собираем лего.
    Видеоигры тоже есть, но играем мы вместе — берем игрушку по сложнее майнкрафта и проходим ее вместе.
    Конечно иногда ребенку хочется отдохнуть от родителей, а родителям от ребенка. Тогда он предоставлен сам себе и играет в любимые игрушки/смотрит любимых блогеров (признаюсь, чуть подглядываю и контролирую)
    2. Дети легко обучатся чему угодно. Им учится проще чем взрослым, главное мотивация.
    К примеру, нам задают ДЗ в Google Class. Мой сын в 8 лет специально изучил консоль браузера чтоб менять оценки перед показом родителям (конечно мы его быстро раскусили, но все же настырность поражает)


    1. vdonich
      23.10.2019 20:16
      +3

      > Мой сын в 8 лет специально изучил консоль браузера чтоб менять оценки перед показом родителям
      Я считаю, стоит удивиться, наказать, и поощрить.


      1. Eldhenn
        24.10.2019 10:16

        «За изобретение 5, а за экзамен 2!»


  1. nivorbud
    23.10.2019 15:09

    Я своему сыну (10 лет) покупал эти книжки по майнкрафту с питоном, однако а) оказалось для ребенка всё сложновато, б) можно управлять только блоками, что не очень интересно.

    Но мне намного больше понравилась книга: Программируй в Minecraft, автор: Свейгарт. Качество издания очень порадовало (твердый переплет, хорошая бумага, цветные иллюстрации). Но главное, там очень простым (доступным для детей) языком всё описано. Серверов никаких устанавливать не надо, достаточно установить один мод, и появится возможность создавать черепашек-роботов, которых можно программировать на языке Lua (весьма простой язык). Черепашек можно, например, запрограммировать на добычу ископаемых, на посадку и потом рубку деревьев и т.д. В общем всё просто оказалось.


    1. GeMir
      23.10.2019 15:20

      оказалось для ребенка всё сложновато
      Scratch и его аналоги не пробовали для начала?


      1. nivorbud
        23.10.2019 15:54

        Мне показалось использовать Scratch нецелесообразным. Проще было объяснять ему основные моменты прямо по Питону.


        1. GeMir
          23.10.2019 16:21

          Текстовое программирование только кажется «понятным» и удобным каждому. Особенности синтаксиса могут оказаться значительной преградой на пути к получению удовольствия от процесса.


          1. nivorbud
            23.10.2019 16:28

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


            1. GeMir
              23.10.2019 21:13
              +1

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

              Если «бирюльки» Scratch («да я в его годы ассемблер осваивал!») всё же кажутся пройденным этапом, есть не менее замечательный Greenfoot (Java).


              1. nivorbud
                23.10.2019 23:20

                Ну, может быть. Я ведь как-то ему показывал Scratch. Также у него лего mindstorm есть — там роботов как раз с помощью визуальных блоков надо программировать. Но… он сильно увлекся Майнкрафтом, поэтому пришлось ограничиться рамками этой игры. А там мне больше всего понравилась возможность программирования черепашек-роботов на языке Lua. Для него это проще и понятнее.


  1. Ogoun
    23.10.2019 15:36

    Еще можно делать плагины под игры на Unity через uMod. Путь попроще, тот же Rust, достаточно развернуть сервер игры, накатить uMod и писать плагины на C#. Графика получше, возможности те же.
    Можно выдернуть все нужные библиотеки из плагина, и полноценно писать в студии с автодополнениями и сборкой для проверки работоспособности.

    Игры под которые можно писать плагины:
    Universal
    Rust
    Hurtworld
    7 Days To Die
    Reign Of Kings
    The Forest


    1. Dechjo Автор
      23.10.2019 15:59

      А это виндовые игры? Я проосто от геймерства очень далек. На краю сознания была идея попробовать Unreal engine, там вроде С++, мне он нравится больше, если речь о компилируемых языках. Но я не копал в эту сторону еще, стоит думаете?


      1. unclejocker
        23.10.2019 17:43
        +2

        В UE4 кстати очень мощный инструментарий Blueprint, ребенку может зайти. Почти любую задачу можно решить либо на плюсах, либо соединяя боксы стрелочками (а потом перенести полученный результат на плюсы) либо совмещать два подхода.
        Но в целом это уже посложнее будет, чем minecraft.


        1. Dechjo Автор
          23.10.2019 20:40

          Дорогу осилит идущий. Спасибо за наводку.


      1. Ogoun
        23.10.2019 17:52

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


        1. Dechjo Автор
          23.10.2019 20:38

          Только дошло, что Rust — игра. Я знал его, как язык программирования относительно недавно появившйся. Ох.


  1. LexaVas
    23.10.2019 16:16

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

    P.S. слава богу мои родители не заставляли меня заниматься тем, чем занимаются они (музыка+педагогика).


    1. IvanGanev
      23.10.2019 17:42

      А если у ребенка нет склонности к чтению и счету, то можно ему и без этого обойтись. Зачем быть грамотным если к этому нет предрасположенности?


      1. LexaVas
        24.10.2019 17:15

        Чтение и счёт нужны в абсолютно всех сферах жизни. Уметь программировать — нет.


        1. IvanGanev
          24.10.2019 21:08

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

          Я уже не говорю о том что автор поста, как я понимаю, сын программиста/инженера, то есть его сын это потенциальный программист в третьем поколении.


          1. LexaVas
            25.10.2019 08:11
            +1

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

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


    1. vaslobas
      23.10.2019 20:04

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


  1. opetrenko
    23.10.2019 16:47

    моим (7 и 9 ) нравиться что-то осязаемое. hour of code поигрались, было прикольно, но потом как-то забыто. А конструкторы очень интересны. Особенно электронный SnapCircuit понравился.
    Но там как-то нет гибкости. Настолько, некоторые малыши не сразу понимают, что ток идет по проводам.
    Посмотрел в сторону Ардуино, но там тоже будут лишь инструкции повторять.
    Так как-то и не нашел чего-то гибкого по самым основам электроники и электричества.


    1. regamad
      23.10.2019 17:41
      +1

      Делаем простые схемы с Ардуино, например моргать диодами по очереди, регулировать скорость моргания потенциометром, переключать диоды кнопкой (гусары, тихо, знаю, что все это можно сделать на регистрах и 555, но цель другая).
      Сначала договариваемся с ребенком, что мы хотим получить от устройства, потом ребенок рисует алгоритм на бумаге, и получает наводящие вопросы, чтобы исправить ошибки, разрисовывает таблицу перебора и т.д. потом также начинает писать код и получать наводящие вопросы для исправлений.
      Есть проблемы:
      Я не программист, и мне приходится заранее смотреть справку по командам и примеры из интернета
      Много времени уходит на набор текста и передвижение по тексту (ребенку 8 лет).
      Много времени уходит на корректировки, т.к. цель — чтобы ребенок понял и сам догадался.


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


      1. opetrenko
        23.10.2019 19:58
        +1

        Спасибо!
        Нам, наверное, надо чуток дорасти надо. И по тепрению и послушности в т.ч. И дорастать думал, как раз соединяя именно проводками а не на breadboard-e простые лампочки, звоночки, пищалки… Поскольку как не электронщик не разу, даже не знаю какие задачи перед ними ставить, что бы и интересно и поучительно. Все на что хватает моих знаний предложить светодиодики подключить, а когда сгорят, рассказать зачем нужен резистор ))

        К хеллоуину чего-нибудь веселенькое забацайте! Моим очень важно «практическое применение» — маму попугать как вариант, сигнализацию какую сделать или что-то куда-то запустить.


  1. and7ey
    23.10.2019 17:35

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


    1. Dechjo Автор
      23.10.2019 19:29

      На андроид планшете под termux с bluetooth клавиатурой. И редактировать код там же в Emacs.


  1. embden
    23.10.2019 18:02
    +1

    Немного о своём опыте с племянником. Мать ему не хотела покупать майнкрафт, поэтому мы скачали open-source minetest. Племянник с удовольствием играет на онлайн-серверах. Я спрашивал у сообщества, есть ли что-нибудь обучающее для детей, но у них, к сожалению, даже на русском информации немного.
    Я еще пробовал обучать scratch'у по книжке, но, к сожалению, племянника больше тянуло в youtube, ну и я не смог произвести большого впечатления.


  1. IvanGanev
    23.10.2019 18:19
    +1

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

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


  1. viru0
    23.10.2019 19:09
    +2

    Покупка малинки сильно бы упростили процедуру. Для нее специальная версия Minecraft есть где все работает «из коробки»
    projects.raspberrypi.org/en/projects/getting-started-with-minecraft-pi

    А если прикупить шилдик с массивом диодов и сенсоров, то реальный мир можно «перетащить» в Minecraft и наоборот. (Удар по блоку зажигает диод, поворот платы разворачивает конструкции в мире и.т.п)
    projects.raspberrypi.org/en/projects/exploring-space-with-minecraft


    1. Dechjo Автор
      23.10.2019 20:18

      Малинка еще первой версии 1B пылится в шкафу. Меня в чате одном рассоветывали его пробовать — бедный функционал мол и я задвинул на потом. Или стоит попробовать?


  1. vdonich
    23.10.2019 20:19

    Может, предложить написать свой мод под майнкрафт?
    Еще как вариант — поднять свой сервер и вести на нем какую-то историю, какие-то квесты создавать.


    1. Dechjo Автор
      23.10.2019 20:24

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


      1. vdonich
        23.10.2019 20:40
        +1

        Мопед не мой (с)
        Если честно, я не в курсе, вот что мне выдал гугл за 5 минут:
        stackoverflow.com/questions/22739920/where-to-start-with-creating-minecraft-client-mods


  1. Donquih0te
    23.10.2019 20:59

    Если не так важно какой язык программирования изучать, то можете взглянуть в сторону pmmp
    Сервер написан на php последней версии. Комъюнити очень обширное. Ядро активно разрабатывается и к нему куча доступных на github плагинов.
    Для старта вполне неплохой вариант, на мой взгляд


    1. Dechjo Автор
      23.10.2019 21:24

      Не, ну как такое может быть все равно :)


      1. Donquih0te
        23.10.2019 21:45

        Я считаю, что php для старта вполне неплох.


  1. Art_NRG
    23.10.2019 21:51
    +1

    Есть возможность организовать подключение мобильного клиента к серверу Minecraft Java Edition (версия для компьютеров).
    Для этого потребуется сам сервер (советую этот) и плагин, позволяющий входить на сервер разными клиентами.
    Разработка плагинов для такого сервера ведется на Java, гайд и API тут.

    Из относительно простых вещей можно сделать с ребенком счетчик убийств оружием в lore,

    скриншот
    image


    1. Dechjo Автор
      23.10.2019 22:19

      Paper я пробовал, но в качестве плагина взял DragonProxy. В такой связке не получилось даже просто ходить. Думал, этот вариант пока не рабочий. Спасибо за наводку на ProtocolSupport-Bedrock-Dev!


  1. VLT
    24.10.2019 10:37

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


    1. AlexanderTyutin
      24.10.2019 11:19
      +1

      Похожее есть на портале uchi.ru Стоимость, в принципе, адекватная. Из сравнительных плюсов — дизайн как-то лучше ложится в монитор, и на русском языке плюс русскоязычная озвучка. И опять же, рядом есть другие предметы, на которые ребенок может перейти, если вдруг устал от программирования. Опять же, не лишнее.
      В целом, курс позиционируется как программирование на Python.


  1. AlexanderTyutin
    24.10.2019 11:09

    Был такой хороший советский фильм о том, как родители всеми правдами и неправдами впихивали в сына то, что интересно им. Причем, еще и спорили за право и очередь впихивания. В конечном итоге это привело к тому, что мальчик на них забил и на очередной демонстрации, когда его поставили на табуретку, он просто на все вопросы по математике/физике/истории/etc отвечал «не знаю/не помню».
    Сейчас время огромных возможностей, но в обучении важно не только передать знания, но и определить, к чему у ребенка есть предрасположенность, чтобы максимально развить имеющиеся способности.
    В этом плане, допустим, и ребенку и мне понравился подход Lego Education Afterschool, при котором после получения базы (в которую входит математика и физика) можно свернуть не только в программирование, но и в математику, физику, архитектуру и т.п.


  1. Anton-V-K
    24.10.2019 11:09

    Спасибо, что поделились информацией о Minecraft — не знал, что в нём что-то можно ещё и программировать :)
    В качестве альтернатив на ту же тему:

    1. Colobot: Gold Edition — игра с элементами программирования (C-подобный язык). Есть как упражнения, которые надо решить с помощью программы, так и миссия, которую можно проходить в ручном или полу-программном режиме, а также code battle. Open source, C++.
    2. Xemo — игра-симулятор по обучению робота движениям с помощью позиционирования его конечностей. Судя по описанию, есть даже возможность что-то кодировать на lua, но до этого я пока не добрался :) Игра есть и в Steam (в свободном доступе), но как-будто давненько не обновляется.
    3. LogicBots — симулятор создания роботов и «программирование» их на «аппаратном» уровне — проводками и микросхемами (без написания кодов/прошивок).
    4. Gladiabots — программирование боевых роботов «блок-схемами» (пробовал на Android).