1

Превращаем язык программирования в язык любви

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

Зачем это надо и почему такой странный заголовок? Тут всё просто, в связи с последними событиями, происходящими в Рунете, компьютерная грамотность населения начала стремительно расти. Если когда-то достаточно было уметь переустановить винду, чтобы девушка решила, что ты хакер и была в восторге, то сейчас этого, увы, недостаточно. Сейчас даже умение поднять VPN вполне обыденный навык. В связи с этим, перед нами стоит сложная, почти не выполнимая задача: сделать приятно любимому человеку, находясь в суровых реалиях действительности.

Соглашусь, что приятно, конечно, можно сделать по-разному...

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

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

Ну, всё хватит болтовни, пора создать свой язык программирования с компилятором и лексемами.

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Чтобы довести этот проект до нужного нам результата необходимо понять несколько идей. Первая - ОДдоадфыди, тебя же не смущает этот набор букв, думаю, не особо, а вот если бы я написал расширенная форма Бэкуса — Наура, то вероятность того, что будут произнесены заветные три буквы (WTF?) возрастает в разы. Это значит, что если дальше будет встречаться конструкция, которая потенциально может понизить твою самооценку

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

относится к ней нужно совершенно утилитарно - есть некая штука, которая что-то делает и у неё есть практическая реализация в виде набора строк - исходного кода. Достаточно понять связь между названием и назначением данной конструкции, а если захочется всегда можно копнуть в глубь с помощью поисковика.Вторая идея - писать сразу мега программу это безумие (безумству храбрых поём мы песню (с)), поэтому надо написать что-то простое, но рабочее, а потом уже его постепенно усовершенствовать. Так и поступим.Писать мы будем на Python. Что? Не знаешь его?! Ну, и не очень-то и нужно (см. первую идею). Код на нём по своему виду близок к естественному языку, что облегчает понимание, а я его подробно прокомментирую. Скачиваем Python отсюда https://www.python.org/downloads/ и устанавливаем, постоянно жамкая кнопку далее. Теперь нам где-то нужно писать код на нём, немного комфорта не помешает, поэтому используем вот эту среду разработки https://www.jetbrains.com/pycharm/ Бесплатной версии для наших задач хватит с запасом. Устанавливаем её по такому же принципу, что и Python.
Стартуем PyCharm, выбираем New Project - Pure Python, затем указываем папку, где будем хранить наш проект. Естественно, что желательно придумать для него красивое и романтичное название, тут уже дело вкуса, я в качестве названия выбрал имя девушки - Мира.

Проект создан, перед нами среда разработки во всей красе, но где писать код? Нажимаем на имя проекта правой кнопкой и выбираем пункт New - Python file

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Вводим имя файла, в нашем случае это lex, сейчас расскажу почему.

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

У нас будет свой язык, он состоит из конструкций вида:

print(5 + 5 - 4);

Нам надо описать логику работу языка. Чтобы это сделать, необходимо использовать расширенную Бэкус – Наурову форму (РБНФ; англ. Extended Backus–Naur Form). Это формальная система определения синтаксиса языка. Воплощается она при помощи метаязыка, определяющего всевозможные грамматические конструкции. Например, для сложения эта форма будет выглядеть так:

expression = number, "+", number, ";";number = digit+;digit = [0-9];

То есть, фактически, мы аккуратно описываем, что представляет из себя каждый элемент комбинации print(5 + 5 - 4);

Итак, что значит утверждение "мы сделали свой язык программирования", это значит что у нас есть что-то, что превращает текст, написанный на языке, правила которого мы задаём сами, в исполняемый файл: текст -> что-то -> исполняемый файл. Сейчас мы делаем "что-то", которое все крутые программисты ласково называют - компилятор. Компилятор состоит из:
1. Лексический анализатор (лексер, англ. lexer)2. Синтаксический анализатор (парсер, англ. parser)3. Генератор кодаЛексический анализатор распознаёт конструкции языка, синтаксический анализатор определяет логику работы распознанных конструкций, а генератор кода, на основе этой логики, создаёт исполняемый файл.Начнём с лексического анализатора, поэтому мы и назвали файл "lex".Для более эффективного лексического анализа возьмём себе в помощь библиотеку RPLY. Нажимаем File - Settings:

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Сейчас установим библиотеку. Выбираем Project Interpreter и нажимаем на "+" справа вверху

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Находим библиотеку, выбираем и жмём Install Package

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Библиотека установится успешно, о чём радостно нам сообщит

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Теперь мы можем писать наш код:

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Сначала мы импортируем установленную библиотеку, затем описываем класс, который содержит механизм разбора _add_tokens, способ своего вызова __init__ и метод, который задействует механизм разбора get_lexer.

Теперь надо всё протестировать, для этого создадим ещё один файл и назовём его "base". В этом файле мы будем писать код на нашем новом языке. Протестируем его на конструкции print(5 + 5 - 4);

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Теперь запустим его. Для этого нажмём правой кнопкой по файлу base и выберем пункт Run 'base'. Внизу окна высветится результат

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Это успех друзья! Мы написали уже треть компилятора!

Самое приятное, что это наш собственный язык и мы свободны выбирать названия функций как нам нравится. Например, можно заменить функцию print на I_love_you (в моём случае I_love_you_Mira) и всё будет успешно работать как и прежде.

lex.py

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

base.py

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Результат

Превращаем язык программирования в язык любви Программирование, Компилятор, Создание, Любовь, Инструкция, Длиннопост

Таким образом, у нас уже есть солидный задел на будущее и осталось всего ничего до создания своего собственного языка программирования. Если было интересно можно поддержать пост и оставить свой комментарий. Любите своих близких, дарите им подарки, посвящайте им стихи, музыку, картины, языки программирования, я знаю что ещё и будьте счастливы. До встречи в новом посте!

Найдены дубликаты

+2
Мало что поняла, но впечатлилась, итого: алгоритм по произведению впечатления работает!
раскрыть ветку 4
0

Спасибо))) Если какие-то вопросы - смело пиши их здесь, разберёмся с ними))

раскрыть ветку 3
+1
Мира-то заценила?
раскрыть ветку 2
+1
А на хабре сие чудо есть?)
раскрыть ветку 1
0

Нет, это я для своей девушки специально написал, она Пикабу читает)))

+1

@MiraLumen, я люблю тебя!

раскрыть ветку 1
+1

o .̫ o   я тебя тоже очень очень

+1

Возможно я не внимательно прочитал твой пост, но компилятор то тут при чем) Интерпретатор вижу а компилятор где?)

раскрыть ветку 2
0

Компилятор будет)) Хотелось, чтобы всё было максимально понятно, а читать при этом было комфортно, поэтому пришлось оптимизировать объём поста. В следующем посте продолжим, а ещё через пост будет про LLVM

раскрыть ветку 1
+1

Вот это уже интереснее)

Похожие посты
135

Супер мощный металлоискатель Clone Pi W на MC33079 Ч.1

В интернете уже полно информации о сборке металлоискателя Clone Pi W. В данной статье я объясню, почему решил немного изменить плату и поменять операционный усилитель TL074 на MC33079. Так же если Вас останавливали трудности с программированием микроконтроллера, для этого металлоискателя, то с моей инструкцией и новой платой эта проблема будет решена. Забегая вперед, скажу, что металлоискатель получился действительно супер мощный и крутой.


Знакомство с этим металлоискателем, начал со сборки самой проверенной и классической платы, которая гуляет по интернету. Уже заранее перед сборкой я видел очень много постов на форумах о том, как радиолюбители мучаются с тем, что не могут найти качественные TL074. И много постов о помощи заканчивались словами «Поменял TL074 и все заработало».

Дак вот собрал я свою плату и…

Супер мощный металлоискатель Clone Pi W на MC33079 Ч.1 Металлоискатель, Прошивка, Программирование, Клоны, Плата, Операционный усилитель, Оу, Микроконтроллеры, Atmega8, Программатор, Своими руками, Инструкция, Пример, Usbasp, Видео, Длиннопост

Она работала не пойми как. Ситуация была такая, настраивал плату на высокую чувствительность и все было супер, до тех пор пока я не отключал питание. Как только питание отключалось и снова включалось, реакции на металл уже не было. Чего я только не пробовал делать, все бесполезно. При установке других TL074 (из других магазинов) симптомы стали меняться, но нормальной работы так и не добился.


Сразу скажу, что плата проверена много раз и при должном качестве сборке и качестве элементов всё конечно должно работать. Но мне этих мучений не хотелось, так как в конечном счете я думал собирать эти платы для продажи и не в одном экземпляре.


Что меня не устраивало в предыдущей плате:

- Некачественный ОУ (претензия не к плате:) ).

- Куча проводов.

- Отдельная плата для кнопок.

- DIP компоненты.

- Отсутствие разъема для программирования.


Переделал плату на свой вкус. За основу была взята плата Md-kit. Вначале обратился к ним с наглой просьбой выслать электронный файл с платой)), на что они любезно отказали). Хозяин барин и дабы не заниматься плагиатом, я решил сразу доработать и улучшить размещение элементов, а так же сделать универсальные места под некоторые детали для использования их в разных корпусах. Как минус изменены размеры платы, и скорее всего она не подойдет под задуманный корпус Kradex Z5. Но идеально подходит под другой гораздо более дешевый корпус) (об этом во второй части).


Вот так выглядит новая готовая плата.

Супер мощный металлоискатель Clone Pi W на MC33079 Ч.1 Металлоискатель, Прошивка, Программирование, Клоны, Плата, Операционный усилитель, Оу, Микроконтроллеры, Atmega8, Программатор, Своими руками, Инструкция, Пример, Usbasp, Видео, Длиннопост

Осталось только запять детали на свои места и протестировать работу платы с разными ОУ. Операционный усилитель подбирал недолго, по советам с форумов иcпользовал MC33079 и он мне сразу же понравился)

На плате используется микроконтроллер atmega8 в корпусе TQFP32. А так же на плате выведен разъем для его программирования. Если у Вас нет знаний и опыта в программировании – не беда. Достаточно приобрести для сборки этой платы дополнительно программатор UsbAsp со шнуром (цена вопроса около 100 руб. на алиэкспресс).

Супер мощный металлоискатель Clone Pi W на MC33079 Ч.1 Металлоискатель, Прошивка, Программирование, Клоны, Плата, Операционный усилитель, Оу, Микроконтроллеры, Atmega8, Программатор, Своими руками, Инструкция, Пример, Usbasp, Видео, Длиннопост

Для программирования необходимо установить софт AVRDUDE (есть в архиве во второй части). Для Windows 2000, Windows XP необходимо будет вручную, дополнительно устанавливать драйвер giveio.sys, а для Windows 10 могут потребоваться танцы с бубном. Если возникнут трудности с AvrDude, можно использовать любой другой софт и сделать все аналогично описанию.


Далее действуем по инструкции на видео:

Имея программатор и разъем на плате, Вы всегда сможете обновить прошивку и попробовать что-то новое. Тем самым прибор становится еще интереснее.

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

В следующей части я готов рассказать данные по намотке катушки и настройке прибора, дать рекомендации, а так же показать видео работы данного устройства на моей плате с ОУ MC33079. Так же приложу ссылку на архив, где есть всё необходимое (и даже больше) для самостоятельного изготовления этого супер мощного металлоискателя.

Показать полностью 2 1
600

Пошаговая инструкция по созданию текстового квеста на android. Часть 1

Пару недель назад, в сотый раз перепроходя Colossal Cave Adventure, я задумался, почему сейчас выпускают так мало игр данного жанра. Ведь это целый мир, в который погружаешься с головой. С этой мыслью, я решил начать делать свои текстовые квесты. Именно этому и посвящается сегодняшняя статья, надеюсь вам понравится!


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

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

Создание игры:

Первой трудностью, с которой мне пришлось столкнуться, стало то, что я по образованию далеко не программист. Раньше я думал, что создание текстовых квестов, требует кучи навыков, помимо умения грамотно писать. Но немного походив по форумам я нашел ее, программу, для таких же «безруких» как и я, и имя ей Twine. https://twinery.org

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

Twine – это программа, для создания интерактивной литературы. Ее функционал заключается в очень простой визуальной блок-схеме, а скриптинг представляет собой создание гиперссылок между отдельными узлами(блоками). В итоге получается готовая html игра, которую можно сразу запускать в браузере. Не смотря на свою простоту, она поддается глубокой настройке – вы можете поменять фон, добавить музыку, поиграться со шрифтами и т.д. и т.п. Все скрипты, для смены дизайна можете найти на этих сайтах: http://twinery.org/wiki/script
https://github.com/scelis/twine

Встроенный функционал включает в себя базовые элементы программирования, такие как переменные и операторы «если». Сообщество Twine написало множество разных макросов на Javascript, значительно расширяющих возможности утилиты, и их можно добавлять в любой проект простым копированием. Также можно скачивать темы для смены оформления программы. Вы можете создать свою таблицу стилей для самостоятельной настройки внешнего вида. Лично я, приверженец классического черно белого стиля. Но мне не понравился стандартный шрифт, тогда я буквально за минуту нашел код, и добавил нотку индивидуальности в свой квест. Если кому интересно скрипт в ссылке на диск. https://yadi.sk/i/ZvdI07aQ3JozAc



Конечно, у Twine есть свои ограничения. Она создана только для текстовых игр, поэтому к работе над “серьезными” играми программа не пригодна. Всё, что требует обширных познаний в программировании, лучше создавать в Unity или Construct 2.0.

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

Преобразование:

После написания квеста, вы можете “опубликовать его в файл” и скинуть друзьям или на форумы, но я решил пойти дальше и занялся поиском программы для вывода игры в apk, и публикации на PlayMarket. Добрые, часов 5 искал этот долбанный инструмент, и вот в момент, когда я уже опустил руки, нашел Intel Xdk. https://software.intel.com/ru-ru/intel-xdk


Intel XDK – это интегрированный набор инструментов для кросс-платформенной разработки приложений. Вот такое сложное описание нам предлагает сам Intel, но для нас, это конвертер (с возможностью модификации) с html в apk. Он позволяет быстро конвертировать HTML5-приложения для устройств, работающих под управлением iOS, Android и Windows. Здесь можно найти подробную документацию по XDK. Так как разработчики программы не сделали этого, я сам написал нормальную инструкцию, по загрузке html файла в компилятор.

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

1.Запустите Intel XDK



2.Войдите в свою учётную запись. Если у вас ещё её нет – зарегистрируйтесь.



3.На стартовом экране можно выбрать шаблон для проекта или посмотреть примеры приложений. Но это нам особо и не нужно!



4.На панели Создать новый проект (Start A New Project) пройдите по пути Templates > Blank

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

5.Выбираем вариант HTML5 + Cordova.

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

6.Открываем в браузере свою игру и жмем Ctrl+U и в появившемся окне жмем:

Ctrl+A и Ctrl+C.



7.Далее в Xdk заходим в окошко Develop и жмем Ctrl+A и Ctrl+V. Все ваша игра загружена в компилятор.

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

8.Далее проверяем игру. В окошке Simulate выбираем устройство и жмем кнопку запуска. Если все хорошо, отлично). Если нет, повторяем предыдущие пункты.



9.Далее самая дебильная часть в Xdk, нам нужно создать сертификат. Я сам над этим промучился с полчаса, а потом нашел видео инструкцию как это сделать, кидаю ее вам: https://www.youtube.com/watch?v=HGkCn58AScI&t=121s

10.В окошке Projects жмем Build setting и настраиваем название и версию вашей игры, далее открывайте Launch icons и настраиваем иконки приложения для всех платформ, в разрешениях 96х96, 72х72, 48х48 и так далее.

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост
Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

11.И наконец, переходим во вкладку Build и выводим нашу игру на любую возможную платформу!

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

Публикация!

После генерации apk файла, вы можете загрузить его в любой магазин для Windows, IOS или Android. Но я расскажу вам только про android.


1. Зайдите в Developer Console. https://developer.android.com/distribute/console/index.html



2.Выберите Создать учетную запись продавца.



3.После этого Вам необходимо заплатить 25$, это можно сделать любым удобным для вас способом. платеж обрабатывается 12-24 часа.

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

4.Далее вам необходимо заполнить все данные. Отнеситесь внимательно к заполнению информации о компании. Общая информация будет видна всем пользователям вашего приложения. В “Название компании” можно вписать имя разработчика. Если у вас есть сайт – обязательно укажите это, потом это может стать для вас большим плюсом.



5.Просмотрите все ваши данные на предмет ошибки и нажимайте Отправить.



С этого момента, вы стали официальным разработчиком и можете размещать свои приложения в маркете, поздравляю!) Теперь расскажу, что нужно иметь для публикации!


Иконка:

Технические требования к изображению с высоким разрешением:

32-битный PNG (с альфа-каналом);

Размер: 512х512 пикселей;

Максимальный вес файла: 1024 Кб.

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

Скриншоты:

Технические требования к скринам:

JPG или 24-битный PNG (без альфа-канала);

Размер: от 320 пикселей до 3840 пикселей;

Соотношение сторон не больше, чем 2:1;

Не менее двух скриншотов.

Советую, на скринах продемонстрировать функционал и геймплей приложения.

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

Название:

Требования:

От 25 до 55 символов. Креативьте и если это выходит, добавляйте теги в название.


Описание:

Ограничения при создании описания:

Не более 80 символов для краткого описания;

До 4000 символов полного описания.

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


Рекламное видео:

Требования:

До 2 минут.

Это необязательный пункт, но очень рекомендованный, ведь с ютуба тоже могут прийти покупатели!

Создание рейтинга возрастного приложения:


Опишите все, что у вас есть в игре, насилие мат и тому подобное, ни в коем случае не врите, а то приложение попросту могут заблокировать!

Пошаговая инструкция по созданию текстового квеста на android. Часть 1 Создание игр, Gamedev, Игры на Android, Игры, Текстовый квест, Программирование, Инструкция, Квест, Видео, Длиннопост

Ну вот и все, первая часть инструкции подошла к концу, во второй части я расскажу о сюжете своей новой игры. В комментариях все критиковали повествование и я, как добросовестный фанат “Фарго” (особенно 1 сезона), нашел реальную историю, которая происходила в Украине. По количеству трупов и конспирологии, “Фарго” просто отдыхает, а то, как это дело раскрыли и объяснили, вообще на ни в какие ворота не лезет. Я учел абсолютно все отзывы, и надеюсь новая игра оставит вам приятное впечатление.

Также во второй части, я подробно расскажу о создании игры в Twine, с примерами и пошаговыми скринами.


Ну а третья часть будет посвящена рекламе, получению сертификатов и способам монетизации приложения. А в конце отвечу на вопрос, стоит ли этим заниматься?!


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



P.S. по традиции, ставь лайк, если убил дракона голыми руками)

Показать полностью 13 2
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: