tbutton

tbutton

пикабушник
7296 рейтинг 14 подписчиков 1834 комментария 63 поста 8 в "горячем"
3

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

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

Зачем это надо и почему такой странный заголовок? Тут всё просто, в связи с последними событиями, происходящими в Рунете, компьютерная грамотность населения начала стремительно расти. Если когда-то достаточно было уметь переустановить винду, чтобы девушка решила, что ты хакер и была в восторге, то сейчас этого, увы, недостаточно. Сейчас даже умение поднять 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

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

Результат

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

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

Показать полностью 14
4457

Декриминализация 138.1 УК РФ (камеры и gps)

У нас почти получилось...

«Оградить обычного человека»: комиссия Госдумы одобрила проект декриминализации уголовной статьи о шпионских устройствах

https://russian.rt.com/russia/article/464133-v-gosdume-odobr...


Совфед готов декриминализировать уголовную статью о «шпионских» устройствах Об этом сообщает Рамблер.

https://news.rambler.ru/politics/36781268-vyydet-srok-sovfed...


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

Наиболее резонансным стало дело фермера, повесившего gps-датчик на телёнка:

http://www.mk.ru/social/2017/12/14/v-tyurmu-za-gpsdatchik-dl...


Этой истории даже уделили время на прямой линии с президентом. Мы очень близки к декриминализии этой глупой статьи. Люди получат законное право зафиксировать факт вымогательства или взятки, получат право охранять свое имущество с помощью видеокамер и записывающих устройств. Можно будет приобретать мини камеры и диктофоны, не боясь быть привлеченным к уголовной ответственности.


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


Пикабу верим в тебя!


Пожалуйста, поднимете в топ, 6 комметов для минусов прилагаю.

14

Пирожки за 5 минут

Навеяно постом про кулинарную книгу

https://pikabu.ru/story/prestuplenie_veka_5921776


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

Пирожки за 5 минут Кулинария, Пирожок, Рецпт, 5 минут, Навеяно постом, Длиннопост
И вот наконец появилась возможность воспользоваться интернетом! Решил начать с простых рецептов. Стал смотреть рецепты и тут мне на глаза попался рецепт "Пирожки за 5 минут!". То что нужно! Открываю его и...
Пирожки за 5 минут Кулинария, Пирожок, Рецпт, 5 минут, Навеяно постом, Длиннопост
Пирожки за 5 минут Кулинария, Пирожок, Рецпт, 5 минут, Навеяно постом, Длиннопост
Показать полностью 2
19

В Ульяновске взломали «умную остановку» и показали горожанам кино для взрослых

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


Происшествие случилось на проспекте Филатова.


Администрация города показала видеозапись инцидента.


На кадрах видно, что подросток подошел к остановке. Сначала на одном из мониторов появились кадры из игры Assassin's Creed Origins, а затем на другом - кадры из порноролика. Молодой человек в течение нескольких минут стоял около остановки и смеялся, после чего ретировался с места происшествия.

Бонус в комментариях - фото "героя" :)

Месяц музыки и звука на Пикабу. Делайте громче!

Месяц музыки и звука на Пикабу. Делайте громче!

Рекламный отдел Пикабу и LG опять с конкурсами и подарками. Октябрь торжественно объявляем месяцем музыки и звука. На этот раз мы разыграем не только UltraWide-монитор (вот такой), но и умную колонку с «Алисой» (вот такую). Но обо всем по порядку.


Что происходит?

Вместе с LG мы устраиваем тематические месяцы. Сентябрь был посвящен учебе. Мы советовали сайты с лекциями, проводили мастер-класс по созданию гифок и рассказывали, что делают студенты-технари. Вы писали посты на конкурс и голосовали за лучший. Победителем стал @kka2012. Скоро он получит от нас ультраширокий монитор, чтобы еще быстрее писать свои юридические истории!


Как поучаствовать?

В октября ждем ваши посты на тему музыки и звука. Сделайте подборку любимых подкастов, аудиокниг или музыкальных клипов. Расскажите, как увлеклись монтажом, сделали пару крутых ремиксов или пошли на уроки вокала. Что угодно! Чтобы участвовать в конкурсе, нужно поставить в посте тег #звук или #музыка и метку [моё].


Еще раз коротко:

– Напишите пост на тему месяца (октябрь — музыки и звука) до 25 октября включительно.

– Поставьте тег #звук или #музыка и метку [моё].

– Все! Терпеливо ждите голосования.


За первое место дарим 29-дюймовый монитор LG, а за второе – умную колонку LG с «Алисой». Удачи!

Отличная работа, все прочитано!