Что такое Blockly?

blockly-faq

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

Затем Blockly сгенерирует соответствующий код на языках программирования JavaScript, Python, PHP, Dart и др.:

if (Count > 256) {
Count = 0;
alert("Game Over");
}

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


Как я могу использовать Blockly в обучении программированию своего ребенка?

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


Какое отношение имеет Blockly к Scratch, App Inventor и т.п.?

Blockly был создан под влиянием App Inventor, на который, в свою очередь, повлиял Scratch. А вдохновителем для Scratch был StarLogo. Таким образом, если ребенок знаком хоть с одним из перечисленных языков, ему не составит труда начать программировать и на другом родственном языке.

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


Почему графика лучше текста?

Программисты-новички должны одновременно решать две задачи: 1) как превратить свои мысли в логически верные высказывания; 2) как не допустить ошибку в синтаксисе программы. При обучении с Blockly допустить синтаксическую ошибку невозможно. Тут вы не встретите забытых скобок, неэкранированных строк, пропущенных точек с запятой. С Blockly начинающие программисты концентрируются только на логической части.

Более того, непрограммистам бывает очень сложно начинать с пустого экрана с мигающим курсором. Используя Blockly, можно сразу просмотреть набор блоков кода и начать их соединять.

Даже опытным программистам может пригодится скрипт, созданный на Blockly. Например, нужно написать скрипт с использованием незнакомого API (допустим, автоматизирующим офисные приложения). Изучение незнакомого API может занять немало времени. С Blockly можно быстро накидать черновой вариант кода, выполнить генерацию кода в нужный язык и продолжить работу.


Как c Blockly создавать большие программы?

Пока еще никак. На данный момент с Blockly можно создать относительно маленькие скрипты. У нас есть идеи по поводу семантического масштабирования и других методов, которые помогли бы Blockly масштабироваться. Но сейчас это не главная задача. Поэтому, пожалуйста, не пытайтесь собрать ядро Linux, используя Blockly.


Почему вы не используете потоковый язык программирования?

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


Не слишком ли прост Blockly?

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

В дополнение к этому, большинство функций высокого уровня будут доступны в API, специально подготовленного для конкретной сферы деятельности. Например, игровой движок с использованием Blockly будет иметь блок кода, который двигает спрайт до момента столкновения со стеной.


Можно ли импортировать код в Blockly?

Визуальный код Blockly можно выгрузить в JavaScript, Python, PHP и Dart. Но реализацию обратной операции мы не планируем. Дело в том, что современные языки программирования устрашающе сложные: там присутствуют замыкания, списковые включения, перегрузки операторов и т. д. Реализация импорта произвольного кода – несопоставимая с полезностью трудозатратная задача.


Можно работать с Blockly оффлайн?

Да, т. к. Blockly полностью работает на стороне клиента. Нужно просто загрузить HTML и JavaScript файлы.


Можно работать с Blockly без браузера?

Если вы разрабатываете мобильное или десктопное приложение и хотите использовать Blockly, самым легким способом будет применение веб-виджета в этом приложении. У Microsoft такой виджет называется WebBrowser, у Андроида – WebView, у iOS – UIWebView.

Команда разработчиков Blockly не оказывает техническую поддержку для подобных не веб-приложений, но мы слышали от других разработчиков, что встраивание Blockly – вовсе несложный процесс.


Blockly – это проект, на который разработчики Google тратили 20% своего времени, отведенного для собственных проектов?

Это очень популярный вопрос. Люди думают, что такой забавный проект не может быть официальным. Но нет, Blockly является полноценным официальным разрабатываемым продуктом Google c 2011 года. Google в поиске сотрудников!