Компания Google выпустила новый визуальный язык программирования Google Blockly (http://code.google.com/p/google-blockly/), который позволяет создавать программы без ввода каких-либо символов или текста, манипулируя только набором типовых логических блоков, соединение которых, напоминающее составление пазла, позволяет реализовывать заданную алгоритмическую функциональность. Технически этот визуальный язык реализован на JavaScript и позволяет составлять программы прямо в браузере, просто перетаскивая и компонуя в логические цепочки блоки, после чего такая программа может быть скомпилирована в более традиционный целевой язык, такой как JavaScript, Dart или Python. Код проекта распространяется под лицензией Apache.
<img src="https://www.opennet.ru/opennews/pics_base/0_1339578841.png" style="border-style: solid; border-color: #e9ead6; border-width: 15px;" title="" border=0 align=right>Источником вдохновения для Blockly послужил похожий проект AppInventor (http://appinventor.mit.edu/), изначально развиваемый для платформы Android. При этом сам AppInventor в свою очередь был вдохновлен языком Scratch (http://scratch.mit.edu/). Существует альтернативная разработка Scratch, которую принципиально сделал открытым Калифорнийский университет в Беркли (University of California at Berkeley) – это Snap (http://byob.berkeley.edu/#snap4.0) (также известный как Build Your Own Blocks).
От других языков визуального программирования, которых насчитывается около сотни, Blockly отличается думя принципиальными моментами. Во-первых, это сильный акцент на визуальной составляющей разработки; по аналогии с высокоуровневыми языками предложено называть подобный тип языков "сильно-визуальными". Такой подход востребован для новых сенсорных устройств, где ввод традиционного текста затруднён, кроме того такая форма программирования, как показывает опыт, имеет гораздо более легкий порог вхождения, в частности программы на Google Blockly составляют даже дети.
Второй принципиальный момент – это возможность кросс-компиляции в традиционные языки программирования, что создает условия для реализации самых разных подходов по дальнейшему развитию проекта. Например, отдельные части программы могут очень быстро создаваться на Google Blockly, затем после компиляции, например в Python, исходный код такой программы может быть доработан уже на Python, или даже вставлен в уже готовый проект в целях его расширения. В последнем случае приводится пример создания на Google Blockly расширения к Gmail для обеспечения фильтрации писем. Google считает, что это типовой случай в современном программировании, например при написании некоего расширения к офисному пакеты около 90% кода реализует "полезную логику", а 10% - просто код сопряжения этого расширения с API хост-программы. Google считает, что в таком случае очень удобно быстро “собрать” собственно логику приложения на Google Blockly, тогда как весь более низкоуровневый код работы с API – дописать уже на Python или Dart.
Текущее временное ограничение языка – он не предназначен для создания больших приложений. Пока область его применения – небольшие сервисные скрипты, содержащие сложную логику и многократно вложенные логические и циклические конструкции, которые, по мнению специалистов Google, проще составлять именно на Google Blockly. Отдельно подчеркивается, что в следующих версиях этого визуального языка планируется существенно расширить его семантику, что по заверениям Google сделает его возможности сопоставимыми с традиционными языками программирования. Поэтому не следует рассматривать этот язык лишь как обучающий – в будущем планируется создание полноценного мультиплатформенного языка программирования на его базе. Именно по причине будущего расширения этого языка принято решение не использовать подход упаковки логики в уже распространенные условно-символические программные схемы (data-flow metaphor languages), так как эксперименты показали, что такой способ представления тяжело поддается расширению и применим исключительно к узкоспециализированным областям программирования.
Разработка осуществляется непосредственно в браузере, в процессе разработки программы её промежуточные результаты сохраняются и вновь загружаются в формате XML. Google Blockly поддерживает не только обычные циклы и ветвления, но и рекурсию. В ближайшее время планируется реализовать: элементы отладки, поддержку мобильных устройств, работу с курсором для лучшего удобства работы, генерацию кода для устройств на базе Arduino. Будут добавлены простейшие элементы событийно-ориентированного программирования – вызов обработчиков при возникновении определенных ситуаций или изменений. В самое ближайшее время планируется существенно улучшить документацию, одновременно добавив множество новых блоков, а также реализовать возможность передачи параметров в процедуры и функции. Над логическими блоками (или сразу массивом из блоков) будет обеспечен набор визуальных операций drag & drop, cut, copy и paste.
Один из разработчиков языка Нил Фрейзер (Neil Fraser) так описывает цели создания языка: ”Эта концепция прошла очень длинный путь, от Ассемблера к Фортрану, затем к C++ и к Python, и наконец, это Blockly. Это попытка подняться на ещё более высокий уровень абстракции, чтобы лишить программирование кастовости и закрытости, сделать его более естественным и доступным для как можно более широкого круга лиц”. В заключении создатели Blockly иронично замечают, что каждому разработчику важно изначально правильно очертить сферу применения этого визуального языка, и не ”пытаться переписывать ядро Linux на этот новый и перспективный язык”.
URL: http://www.i-programmer.info/news/98-languages/4357-google-b...
Новость: https://www.opennet.ru/opennews/art.shtml?num=34087