Аннотация: блокопитон -это игровой движок который должен заменить такие программы как scratch и tynker ,и их аналоги. Основное отличие это три визуальных языка программирования и поддержка ява скрипт. Это черновая тетрать. Тут нет исходников, тут только идея .
Блокопитон - это игровой движок который позволяет писать программы с помощью визуального языка программирования.
Основная цель максимально упростить общения человека и машины. Цель перевести не удобный формат для восприятия человеком- в простой понятный ,который усвоит даже ребенок. Задача ускорить время разработки программ и приложений. Старые языки требуют очень длительного время на изучения, от трех месяцев и более что не рентабельно и не кому не нужно. Большинству разработчиков не удобно работать в старых программах разработанных более 20 лет назад. Для того что бы делать игры и приложения - не нужно знания языка программирования, а нужна простая программа которая позволяет делать такие программы без знаний программирования, но при этом обладая всем необходимым функционалом. Десятки тысяч часов тратятся в пустую ,тысячи программистов набирают один и тот же код который выполняет один и тот же функционал, который можно разбить на блоки ,а из блоков собрать модули и вместо программирования одной и той же задачи можно использовать ШАБЛОНЫ. Блок-сборка модуля - перевод модуля в шаблон. Общение разработчика и машины должно сводиться к работе с шаблонами с возможностью модернизации шаблона или отельного модуля под себя.
Рассматриваются следующие задачи:
1. Перевести язык программирования в доступный для понимания визуальный язык.
Где бы вы не жили на каком бы языке не говорили , но вы можете общаться без знания чужого языка визуально. Допустим есть объект дерево , на скольких бы языках бы не было названия ,даже не зная язык вы просто указав на объект вы поймете что это дерево. Допустим 10 человек попадают на необитаемый остров, каждый говорит на разных языках. Как максимально быстро всем выучить язык друг друга? что будет общим? На мой взгляд это объекты. Язык- это лишь значение и описание объекта, потому объекту может быть присвоено бесконечное множество описаний -где описание всего лишь строковая переменная присвоенная объекту. Если создать объекту гипер ссылку то кликнув на объект мы можем получить значение на любом количестве языков ,а кликнув на строку мы вызовем объект.
Давайте посмотрим как это работает
объект дерево
дерево -гипер ссылка на объект дерево
tree -гипер ссылка на объект дерево
daraxt -гипер ссылка на объект дерево
-гипер ссылка которая содержит
слово строку название дерево
tree, daraxt.
вы можете сделать это даже в обычном Ворде или браузере или даже текстовом документе . Вы просто создаете
два объекта один содержит строку описания на любом языке, а второй содержит объект который вы описали.
связав их ссылками вы легко можете вызвать название объекта на любом языке мира если создадите словарь или базу данных которая хранит описание объекта. Вы сможете получить название простым кликом на объект или на строку, а так же перевести на другой язык мира, так можно создать простой словарь который будет выполнять перевод одного слова на другое. Это общий принцип работает и в программирование. Мы можем переводить один язык в другой и при этом пользоваться этим языком не зная его если создадим базу перевода.
Пример текстовая строка ява скрипт "Мир приветствует тебя"; выполнение будет таким
"Мир приветствует тебя" мы можем сделать визуализацию. Создать блок где дадим объекту значение действие Сказать после чего можно присвоить ему любую текстовую переменную.
и вместо изучения языка пользователь может сразу выполнить действие без знания языка. Более того мы можем теперь через объект вызвать описание последовательности действий в программе любого языка. Другими словами мы всегда можем блокам присвоить любой язык программирования, блок остается не низменным ,а программировать можно в любом языке программирования создав базу под любой язык.
Еще пример , допустим у вас есть принципиальная схема пусть магнитофона радиоприемника или таймера. Вы умете читать схемы и можете собрать устройство. Более того вы зная построения контуров и модулей можете улучшить или упростить схему. Важно ли для Вас устройство каждой детали? лично мне не важно , так как даже зная устройство деталей самостоятельно без дорогого и сложного оборудования их не воспроизвести ,точно так же как сложно самостоятельно создать плату из восьми и более слоев печатного монтажа. Как правило обычный пользователь не пользуется более чем два слоя. Достаточно иметь просто общее понятие. Так и программирования более чем 80% разработчиков не важно знание языка программирования, им нужна лишь готовая программа которая позволяет быстро делать игры или приложения не тратя много время на изучение .
Что хочет разработчик? простой понятный интерфейс, область для работы с объектами и полем для управления объектами.
Блокопитон и будет такой программой. Которая будет позволять работать и создавать игры и приложения без навыков программирования. Она позволить программировать на любом языке без знания этих языков.
Организация решения поставленных задач
Мы не планируем изобретать велосипед заново и будем использовать наработки всех существующих достижений которые уже доступны лишь улучшая их и развивая. За базу мы возьмем такие программы как Scratch , Коди лаб и Unity. потому задачи для разработчиков следующие.
Исследования функционала программ Scratch , Коди лаб и Unity и разработанных с помощью Scratch , Коди лаб и Unity
Получить уверенные знания Ява скрипт которые будут использовании для разработки Блокопитона
3. Знакомство с компиляторами как работают компиляторы . Практические навыки по компелированью любой программы написанной в Ява скрипт в форматы (*. jad, ехе, apk , HTML5);
4. Системная сборка Блокопитон в программу .
5. Знакомство с векторной графикой ,разработка простой программы которая работает с простыми формами векторной графики
6.Разработка простых программ которые работают с текстами, разработка собственных шрифтов.
Не большое отступление . Я хочу что бы вы понимали одну важную вещь что такие языки как scratch и tynker не являются языком программирования. Это синтекс,а не язык.
еще в 2016 году я поняла принцип как можно программировать не владея языком программирования. Для этого даже программа не нужна . Нужны просто набор карточек которые описывают действия и которые можно подписать или связать с другой картой.
этот язык вы все знали с детства ,просто не догадывались что это язык программирования.
И первым таким языком можно считать набор детских кубиков.
у каждого из вас в детстве ,у большинства из вас были кубики с картинками и буквами. Собственно такие языки как scratch и tynker и будущий игровой движок блокопитон и есть такими кубиками. На нем нанесено изображение понятное каждому и буква. как правило на кубике изображены предметы и заглавная буква названия предмета. Так вот хоть и поздно ,но я это осознала еще в 2016 году не зная о существовании визуальных языков программирования ,а лишь ища способ максимально быстро применять Любой язык программирования не сильно вникая в его суть и лишь таким образом ,что бы легко его применять. И первое о чем я подумала гиперссылки. А если упростить , то это набор карт с описанием действия куда можно вписать код ,и когда вам нужно сделать действие просто списать код из карты. Это позволило бы работать на любом языке программирования не уча его и даже не понимая его . И только в 2018 году я нашла скретч. Если честно я даже не учила его,а смогла сразу применить и пользоваться. Не явно понятными являются только клоны и базы данных, хотя и это я поняла.
Но scratch ,tynker - не являются языком программирования. Это просто описания действия как я сказала условно кубик или карта ,где записан код исполнения того что мы описали. Потому даже лицензию на это не дадут. Так как это лишь описание действия ,а не язык программирования к этому я пришла самостоятельно. И только после ряда своих статей с описанием идеи мне случайно попалась статья про блоки позже я нашла скретч.
Если есть велосипед нужно ли его изобретать снова? вовсе нет, мы можем его просто улучшить, добавить например колесо или два , добавив ему парус или двигатель.
Что бы было проще понять в чем же преимущество визуального языка я покажу наглядный пример .
Я возьму язык Ява скрипт, я его выбрала потому что он самый понятный и простой из всех .Ему тоже не нужна программа она есть у большинства из вас. Это консоль вашего браузера .
Если вы зайдете в раздел в браузере веб разработка, выберете веб консоль , то можете сразу с ней работать.
и давайте посмотрим простую программу , которая будет имитировать бросок кубика на 20 граней.
я сделаю небольшое отступление ,решим задачу без программирования ,сделаем так как поступил бы Герон .
давайте сделаем готовую игру без программирования. Суть игры будет такая ;
Мы задумываем число от 1 до 20 ,после чего кидаем кубик и смотрим угадали ли мы это число.
как это реализовать? если у нас есть просто кубик на 20 граней, все просто мы его просто бросаем и получаем готовый вариант. Мы можем использовать не кубик ,а просто 20 карт ,мы переворачиваем карты цифрами от нас ,тасуем карты вытягиваем случайную получаем случайное число. Мы можем просто кинуть карты воздух и посмотреть как они упадут. Мы можем пронумеровать карты от 1 до 20 разложить перед собой номерами вниз ,а пронумерованными в верх, затем бросить кубик и выбрать номер карты на которую указал кубик и посмотреть какое число на ней. Как видите есть уже три способа сделать игру . В основе которой лежит генератор чисел. Вместо цифр мы можем использовать любое текстовое значение .
Каждую карту мы можем подписать вот так где номер будет равен текстовой строке :
1. Мало шансов
2. Да
3. Нет
4. Абсолютно точно
5. Не надейтесь
6. Очень вероятно
7. Спросите позже
8. Звезды говорят, нет
9. Мне кажется да
10. Не похоже
11. Ответ нет
12. Вряд ли
13. Духи говорят да
14. Без сомнений
15. Безусловно
16. Должно быть так
17. Не могу сказать
18. Ответ не ясен
19. Похоже, что да
20. Спросите снова
Вот и все у вас готовая настольная игра ,Предсказание Судьбы ,но есть и другой способ ,не только кубик или карты .Мы можем сделать круг , разбить его на 20 секторов , в центре прикрепить стрелку и вращать ее , наблюдая где она остановиться, это будет простая рулетка, колесо фортуны и т.д .Или напротив оставить стрелку не подвижной, а вращать барабан . Вариантов много от простой монеты до просто палочек.
таким образом всего на одном шаблоном действии мы можем получить огромное разнообразие игр которые будут отличаться лишь сценарием, исполнением и визуализацией.
в основе действия лежит всего лишь генератор числа. Но на его действие можно сделать драконий покер на игральных кубиках ,предсказатель судьбы и много других игр.
Теперь вернемся к программированию.
Я не понимаю действия Корпораций которые хотят заставить разработчика игр учить программированию. Зачем это разработчику игр или приложений? если они хотят просто делать игры ? В этом и есть суть проблем .Мне не нужно программирование .И вместо делать игры ,и выпустить уже четырехсотую по счету игру я должна разрабатывать инструмент по созданию игр . Только потому что компания Microsoft хочет продать мне свои продукты для разработчика игр . Если точнее они хотят мне продать
Microsoft Visual Studio ,а я не хочу учить ни С++ ,ни С# . Моя задача делать игры ,а не платить деньги за обучению этих языков ,тратить пять лет, потом переучиваться потому что устарело и покупать продукт Microsoft, зачем мне это ?
Разработчице (ку) нужен просто простой понятный удобный инструмент не требующих особых навыков и знаний. При чем таких инструментов нужно всего семь что бы делать игры ААА класса в одиночку которые будут превосходить игры разрабатываемые студиями. при чем затраты на разработку таких игр будут в 100 раз меньше. Т.е простую игру на телефон можно выпускать в день более десяти или одну игру в квартал Класса ААА .
Для программирования не нужно знание языков программирования , давайте посмотрим как это работает . Вернемся к нашей простой программе
var рандом = Math.floor(Math.random()*20); // здесь задаем генератор от 1 до 20 грань=[рандом]; // вывести результат подставить значение но суть та же
это генератор случайных чисел где мы можем использовать любые строчные или числовые значения и заменять их.
но это очень не удобно . вместо этого достаточно было бы создать объект ,назвать его
как угодно например генератор чисел и записать это так генерировать число от 1(любое числовое значение) до 10 (любое числовое значение)
и теперь сделав клик по объекту вызвать всю строку . Для простоты и наглядности можно сделать карту действия.
Мы теперь можем простой гипер ссылкой вызывать готовый код .
Мы можем связать нашу карту с документом в котором будет готовый код и нажав на карту можем его вызвать. Что это дает? не зная программирования нам нужно выполнить какое то действие у нас есть карта" бросить кубик на 20 граней". нажав на нее мы получим код который выполняет это действие.
Для простого человека понятно и что такое бросить кубик и что такое сгенировать случайное число или выдать случайное число и диапазон, а остальное темный лес на который время тратить не хочется. Задача Блокопитон как раз в том и состоит что бы дать людям далеким от программирования писать программы и приложения. И знакомить с основами простых языков таких как JavaScript .
Вы скажите а зачем? есть ведь scratch и tynker зачем игровой движок? отвечаю scratch и tynker это программа обучения которая не позволяет вам сохранить игру в форматах *. jad, ехе, apk , HTML5 ,имеет крайне низкое разрешения экрана ниже 1080P не работает с картами как в любом игровом движке из за чего нужно писать сложный код который ограничивает в разработке игры. И эти программы делались исключительно для заработать на детях, на их якобы обучении и это нечего не имеет общего с обучением . тогда как Блокопитон даст возможность всем этим 160 000 000 пользователям которые ранее работали с этими программами создавать игры и приложения и без проблем их продавать или использовать в своих смартфонах. Вот в этом и отличие.