tbutton
Уникальность
Хипстер разозлился, что его фото было использовано в статье о том, как выглядят все хипстеры. Потом он понял, что это не он....
Превращаем язык программирования в язык любви
Сейчас я покажу как создать свой язык программирования. Воу-воу, не спеши пролистывать пост, впереди тебя ждёт много картинок и пошаговая инструкция, так что даже если ты с компьютером на вы, то у тебя всё равно всё получится, я в тебя верю. Если возникнут вопросы - напиши в комментариях и я тебе отвечу.
Зачем это надо и почему такой странный заголовок? Тут всё просто, в связи с последними событиями, происходящими в Рунете, компьютерная грамотность населения начала стремительно расти. Если когда-то достаточно было уметь переустановить винду, чтобы девушка решила, что ты хакер и была в восторге, то сейчас этого, увы, недостаточно. Сейчас даже умение поднять 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) и всё будет успешно работать как и прежде.
Результат
Таким образом, у нас уже есть солидный задел на будущее и осталось всего ничего до создания своего собственного языка программирования. Если было интересно можно поддержать пост и оставить свой комментарий. Любите своих близких, дарите им подарки, посвящайте им стихи, музыку, картины, языки программирования, я знаю что ещё и будьте счастливы. До встречи в новом посте!
Декриминализация 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 комметов для минусов прилагаю.
Пирожки за 5 минут
https://pikabu.ru/story/prestuplenie_veka_5921776
С детства хотел научиться готовить, но кулинарные рецепты из кулинарных книг своего детства, в упор не понимал - добавьте соль на кончике ножа, две щипотки зелени и т.п.