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

99 бутылок: Scratch и HQ9+

54. HQ9+ — язык, у которого только четыре оператора. «H» выводит «Hello world», «Q» печатает исходный код программы, 9 выводит «песню о пиве», а «плюс» «увеличивает аккумулятор». Язык, понятное дело, придуман в шутку и у неё есть продолжения — «объектный» «HQ9++», Тюринг-полный «HQ9+B» и так далее.

Данная программа на этом языке выглядит вот так:

9


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

Я, для интереса, написал на «Скретче» свои «99 бутылок». Программа на скриншоте. В среде редактирования мы управляем лисёнком и всё программирование крутится вокруг него, куча блоков позволяют что-то с ним делать — двигать, вращать, заставляют его что-то говорить и так далее. «Думать» выводит свой аргумент в  «облачке» его мыслей.

Скретч (84.30КиБ)

Программа строится из цветных блоков, цвета кодируют тип блока — «движение», «внешность», «звук», «данные», «управление», «операторы» и так далее. Основные конструкции обычных языков в наличии. Процедур, как таковых, нет, но можно отсылать события другим ээ… подпрограммам и через глобальные переменные получать результат. Есть даже что-то похожее на потоки — передавая события, можно запускать подпрограммы асинхронно.

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

Есть ещё какие-то «Другие блоки», но с ними я не разбирался. Кажется, через них можно как-то расширять язык.

15 комментариев
hshhhhh.name 2014

«слить» -​-​ это победа. Не сразу догнал что это такое :).

По идее в нижнем условии никогда не получится слить «1 bottle» и «of beer». Надо вынести нижнее «слить» за пределы elseif

hshhhhh.name 2014

алсо, почему вебдев то? :)

Горбунов Олег 2014

Визуально похоже на среду программирования для Лего Майдшторм. Разве что у Лего на порядки наглядней циклы и условия ветвления.

Евгений Степанищев (bolknote.ru) 2014

Комментарий для hshhhhh.name:

По идее в нижнем условии никогда не получится слить «1 bottle» и «of beer». Надо вынести нижнее «слить» за пределы elseif

Это да :) С этим радужным программированием у меня глаз пока не выделяет блоки, надо «переписать» будет :)

алсо, почему вебдев то? :)

А это у меня тег для программирования.

Визуально похоже на среду программирования для Лего Майдшторм.

Спасибо, взляну!

Евгений Степанищев (bolknote.ru) 2014

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

Евгений Степанищев (bolknote.ru) 2014

Комментарий для Горбунов Олег:

у Лего на порядки наглядней циклы и условия ветвления.

Но они и более громоздкие:
http://img-fotki.yandex.ru/get/15505/35419492.100/0_82ae7_89180e55_L#%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%2B%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%2B2014-12-03%2B%D0%B2%2B8.05.34.png%7Chttp%3A%2F%2Ffotki.yandex.ru%2Fusers%2Fbolknote%2Fview%2F535271%2F#500x315

Алексей 2014

как можно дать возможность программировать что-то в нашей системе людям, которые в программировании ничего не понимают

Женя, BPMN! :)

Евгений Степанищев (bolknote.ru) 2014

Комментарий для Алексей:

Разве BPMN лучше того же Скратча? Кроме того, есть ли реализации с хорошим интерфейсом пользователя?

Алексей 2014

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

Чем BPMN лучше Скратча:

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

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

У Bizagi, например, интерфейс редактора мне очень нравится.

Евгений Степанищев (bolknote.ru) 2014

Комментарий для Алексей:

Значительно проще для восприятия людьми, которые «ничего не понимают в программировании»

Очень сомневаюсь. Не видел, чтобы детей учили по этой нотации.

Отраслевой стандарт в области управления процессами

У меня нет задачи описывать управление процессами.

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

Задача вообще к построению процессов отношения не имеет :)

Алексей 2014

Очень сомневаюсь. Не видел, чтобы детей учили по этой нотации.

У меня ощущение последнее время, что детей научить программированию проще, чем взрослых :D

Евгений Степанищев (bolknote.ru) 2014

Комментарий для Алексей:

Возможно, тут уж не буду спорить, дети в чём-то имеют более подвижный ум.

Рустам 2014

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

Горбунов Олег 2014

Комментарий для Евгения Степанищева:

Евгений, это третий такой майдшторм, да? У меня просто второй, и там как-то выглядело почище, типа такого: http://www.teamhassenplug.org/NXT/BriansRemote.jpg

Евгений Степанищев (bolknote.ru) 2014

Комментарий для Горбунов Олег:

Евгений, это третий такой майдшторм, да?

Я не разбираюсь :) Просто с сайта скачал и попробовал.