Google Blockly – кандидат №1 на роль основного языка программирования для Четвертой Промышленной Революции
Новый визуальный язык программирования Google Blockly позволяет создавать программы вообще без ввода каких-либо символов или текста.
Разработка здесь осуществляется из широкого набора типовых лего-блоков, логическая композиция и соединение которых позволяет реализовывать заданную алгоритмическую функциональность программы. Технически сам этот визуальный язык реализован на JavaScript и позволяет составлять такие визуальные программы прямо в своем браузере, просто перетаскивая и компонуя в логические цепочки функциональные блоки, после чего такая программа может быть скомпилирована в более традиционный целевой язык, такой как JavaScript, Dart или Python.
Google Blockly – это открытый OpenSource-проект, который выпущен под лицензией Apache License 2.0. Чтобы подчеркнуть то, что пока это только «демонстрация концепции и не более того», данный релиз не распространяется в традиционном виде отдельного файла (тарболла) с исходниками.
Главные особенности Blockly
Создатели Blockly выделяют в нём два принципиальных момента подсвечивающих его на фоне множества других VPL-языков. Во-первых, это сильный акцент на визуальной составляющей разработки; по аналогии с высокоуровневыми языками предложено называть подобный тип языков «сильно-визуальными» (все лего-подобные языки).
Такой подход исключительно востребован для новых сенсорных устройств, где ввод традиционного текста затруднён, кроме того такая форма программирования, как показывает опыт, имеет гораздо более легкий порог вхождения, в частности программы на Google Blockly составляют даже дети. С учетом самых серьёзных намерений по его развитию со стороны Google, этот язык имеет очень интересные перспективы на будущее.
Второй принципиальный момент в нем – это возможность компиляции на более традиционный язык программирования на выбор, что создает условия для реализации самых разных подходов по дальнейшему программированию. Например, отдельные части программы могут очень быстро создаваться на Google Blockly, затем после компиляции, например в Python, исходный код такой программы может быть доработан уже на Python, или даже вставлен в уже готовый проект в целях его расширения.
В последнем случае приводится пример возможностей расширения Gmail для создания фильтрации своих писем на Google Blockly.
Листинг типичной программы на Blockly
При этом текущее временное ограничение языка – он не предназначен для создания больших приложений. Пока область его применения – небольшие сервисные скрипты, содержащие сложную логику и многократно вложенные логические и циклические конструкции, которые, по мнению специалистов Google, реально проще составлять именно на сверхнаглядном Blockly.
Отдельно подчеркивается, что в следующих версиях этого визуального языка планируется существенно расширить его семантику, что по заверениям Google сделает его возможности сопоставимыми с традиционными языками программирования. Отсюда важный вывод и отличие от других VPL’ов – не следует рассматривать этот язык лишь как обучающий – в будущем планируется создание полноценного мультиплатформенного языка программирования на его базе.
Именно по причине будущего расширения этого языка принято решение не использовать подход упаковки логики в уже распространенные условно-символические программные схемы (data-flow metaphor languages), так как эксперименты показали, что такой устаревший способ представления тяжело поддается его расширению и поэтому, к сожалению, применим исключительно к узкоспециализированным областям программирования.
Пробуем Blockly на вкус
Сама Google предлагает всем поразмяться в языке Blockly на примере типичной задаче для событийно-ориентированного семейства языков – прохождении лабиринта, для решения которой уже развернута соответствующая рабочая web-среда. Но прежде чем браться за лабиринт, мы в качестве исходной точки представим традиционное приложение «Hello World».
Вход в рабочую среду редактора среды разработки Blockly можно найти вот здесь.
Будем считать, что, увидев привычное «Hello World», наша психика адаптировалась к новому языку (как минимум мы дали ей шанс), поэтому поднимаем планку выше – пишем небольшой скрипт, который распечатывает содержимое им же сгенерированного списка.
Теперь приведем автогенерацию этого же кода на JavaScript:
var message;
var Alist;
var x;
message = ‘This is Blockly in Action’;
Alist = [‘Start of Alist’, 66, [message.length, Math.sin(90 / 180 * Math.PI), ‘End of sublist’]];
window.alert(message);
for (var x_index in Alist) {
x = Alist[x_index];
window.alert(x);
}
window.alert(‘Thats All Folks’);
А теперь, собственно – обещанный лабиринт, вход в который можно найти здесь. Ниже приведен листинг варианта решения прохождения лабиринта.