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

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

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

9


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

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

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

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

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

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

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

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

По идее в нижнем условии никогда не получится слить «1 bottle» и «of beer». Надо вынести нижнее «слить» за пределы elseif
Горбунов Олег № 3
Визуально похоже на среду программирования для Лего Майдшторм. Разве что у Лего на порядки наглядней циклы и условия ветвления.
Евгений Степанищев (bolknote.ru) автор № 4

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

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

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

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

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

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

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

Евгений Степанищев (bolknote.ru) автор № 5
Вот чёрт, забыл среду переключить на русский и программа стала на английском. Ну да ладно, пусть так и будет.
Алексей № 7
как можно дать возможность программировать что-то в нашей системе людям, которые в программировании ничего не понимают

Женя, BPMN! :)

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

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

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

У Bizagi, например, интерфейс редактора мне очень нравится.
Евгений Степанищев (bolknote.ru) автор № 10

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

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

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

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

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

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

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

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

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

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

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

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

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