Udaff — русский пиктографический Python. От элементарных алгоритмов до гомоморфного шифрования (Стас Фомин, OSEDUCONF-2020) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) |
||
</blockquote> {{----}} [[File:{{#setmainimage:Udaff — русский пиктографический Python. От элементарных алгоритмов до гомоморфного шифрования (Стас Фомин, OSEDUCONF-2020)!.jpg}}|center|640px]] {{LinksSection}} <!-- <blockquote>[©]</blockquote> --> {{vklink|1696}} {{fblink|2649457065307298}} <references/> {{stats|disqus_comments=5|refresh_time=2021-08-25T02:00:4431T16:41:14.096101572155|vimeo_plays=63|youtube_comments=0|youtube_plays=1301}} [[Категория:OSEDUCONF-2020]] [[Категория:Python]] [[Категория:IT-образование]] [[Категория:СПО в образовании]] [[Категория:Криптография]] |
Версия 13:41, 31 августа 2021
- Докладчик
- Стас Фомин
В русскоязычном пространстве наблюдается странный эффект изобретения «русскоязычных» языков программирования, и попыток навязать их обучающимся в Школе и ВУЗе
См. например Кумир, SLang (не путать с еще одной самоделкой — СЛанг)… множество их.
С одной стороны, вроде как основания есть — из-за специфики высшего образования в РФ (бесплатное образование, оплачивается ВУЗам МинОбром подушевым образом, отчислять невыгодно, и даже запрещено), в ВУЗы на околопрограммиские специальности попадает множество немотивированных и функционально необразованных кадров, не способных понимать даже текст с десятком ключевых слов на английском. С другой стороны, возможно успех таких платформ типа 1C именно этим и обусловлен, да и есть немало энтузиастов, которые считают, что русификация ЯП — полезна, и учить на русифицированных языках эффективно.
Однако проблема всех этих самоделок в том, что язык — это не только синтаксис грамматики в BNF на полстраницы, а это инфраструктура:
- Редакторы, IDE, поддерживающие 100500 удобных фич, не говоря уже о обязательной «построчной» отладке.
- Разработчики «Русских ЯП» пытаются делать некие подобия IDE, благо сейчас это можно слепить из каких-нибудь готовых компонентов (модуль текстового редактора с подсветкой, MDI интерфейс с менюшками) — но все что получается, это скажем прямо, уровень 90х, и сравнивая это с бесплатным и open-source «швейцарским ножем» Visual Studio Code, (не говоря уже о коммерческих IDE) хочеться только плакать от жалости.
- Инфраструктура пакетов (сами библиотеки, пакетные менеджеры), 100500 пакетов для решения всего скучного и типового, не говоря уже о нетривиальных платформах (быстрый вход в разработку игр, математические методы и AI и т.п.)
- Правильные концепции и парадигмы языка, проверенные десятилетиями обкатки на миллионном комьюнити профессионалов.
- Возможность получения профессиональных НАВЫКОВ, вшитых на уровень костного мозга, которых можно применить в профессиональной разработке для решения реальных проектов. Чтобы стартовав с элементарных алгоритмов и простых поделий, можно было эволюционировать в профессионала.
Но если «показать что-то про программирование на русском», на уровне «операторы-ветвление-цикл-функция-рекурсия» для совершенно левых людей (которым максимум в 1C в жизни придется что-то подправить) — допустимо, то совращать «девственно» чистых школьников кривыми поделиями, отрубая им прямой выход к реальной разработке и отбивая желание программировать («пробовал ваше программирование на К… » — ничего не работает, тормозит, криво, неудобно, долбайтесь сами), как минимум неэтично, хотя к сожалению, уголовно ненаказуемо.
Кстати, иногда изобретают «еще одну платформу для обучения» даже не для русификации языка, а для, скажем так, «реанимации стюардессы», типа паскаля[1], но проблемы остаются те же — какое-то свое подмножество языка, унылые среды разработки, все сбоку от майнстрима и сообщества.
Возникает дилемма — как бы убить двух зайцев — пользуясь одной платформой дать возможность неодаренным и негодным студентам и школьникам «попробовать программирование», а продвинутым, тут же, в том же классе, на том же софте, дать возможность уйти в отрыв и стать настоящими профессионалами.
…
Содержание
Видео
Thesis
Решение
Итак, уже есть Python, идеальный язык для обучения, рожденный как язык для обучения, десятилетиями использующийся от везде — от уровня младших школьников, до профессионалов, как в программировании, так и в куче научных областей — будь то астрономия, биоинформатика, статистика… везде.
Знание его полезно, если не сказать необходимо, даже тем, кто не программист, если деятельность хоть как-то интеллектуальна (да, даже если экономист-юрист уровня выше чем «за рубль покупаем, за три продаем, на эти два процента и живем»).
К нему есть куча IDE, включая прекрасную поддержку даже в бесплатном и свободном Visual Studio Code (не нужно изобретать страшные велосипеды), есть 100500 пакетов, платформы для написания всего — игр, десктоп и вебприложений, даже мобильной и IOT разработки… Впрочем, все это банально и очевидно.
Наша идея — добавить еще «маленькую лесенку» снизу, разрешив писать ключевые слова и базовые функции на русском, для тех, кто вот только стартует, не потеряв никаких возможностей Python.
Для этого можно воспользоваться идеей «пользовательских кодировок», перекодирующих файл с программным кодом при открытии. В результате, несколько десятков ключевых слов Python приводятся к каноническому английскому виду, их понимает и язык, и отладчики и т.п. А обучающийся имеет полную возможность, по мере изучения, постепенно заменить «русские аналоги» их оригинальными ключевыми словами, и с улыбкой (но без ненависти) забыть свои самые первые программы.
Английский | Русский |
---|---|
and | и |
as | как |
assert | проверить |
break | прервать |
class | класс |
continue | продолжить |
def | функция |
del | удалить |
elif | ежели |
else | иначе |
except | случись |
exec | выполни |
finally | наконец |
for | перебор |
from | из |
global | глобальное |
if | если |
import | подключить |
in | в |
is | суть |
lambda | лямбда |
not | не |
or | или |
pass | ничего |
печать | |
raise | паника |
return | вернуть |
try | пробовать |
while | повторять |
with | пусть |
yield | вернуть |
range | интервал |
Лично я (Стас Фомин), не считаю, что это необходимо. На мой взгляд лучше таки выучить эти пару десятков ключевых слов Python на английском, и отсеять «электорат» с уровнем IQ меньше веса.
Но идя путем «выбора меньшего зла» (toss a coin to…), я уверен, что этот подход лучше изобретения кривых велосипедов 🚲🚵♀🚵♀ от скучающих преподавателей, которые будут калечить поколения школьников 👨🎓👨🎓👨🎓 и студентов 👩🎓👩🎓👩🎓. Т.е. я был бы рад, если все это не пригодилось при обучении, но при встрече с изобретателем 🤡 очередного «национального языка» 📜, у меня будет куда его конструктивно послать 🤦♂.
С другой стороны, может это пригодится где-то, где Python 🐍 используется как DSL для какой-нибудь бизнес-логики 🧮🗠📊 — короткие функции, которых должны править и вычитывать специалисты 🧙♂️🧙♂️ в предметной области, может это пригодится и там.
Более того, можно привлечь к программированию, совсем, так сказать, правополушарных людей 👽👽👽, и использовать вместо идентификаторов функций и переменных значки emoji:
(собственно идея и код взяты из проекта https://github.com/suda/python-emoji-encoding, спасибо его автору!)
Ну а название «udaff», отсылает к популярному времен начала Рунета ресурсу 🐍╰⋃╯🐍, который прекрасно иллюстрировал идею, что буквоедство и грамотность не так важны, как суть и контент, а иногда такое «грязное языковое хакерство», как кстати, в предложенном решении, даже весело. Кстати, тут несложно сделать и поддержку разных версий «падонкоффского языга».
Использование
Поддерживается только 3 питон, ибо нет смысла поддерживать второй.
Ставится в систему
<code>sudo pip3 install udaff-encoding </code>
(в pip еще не зарегистрировал, но с гитхаба можно поставить)
После инсталляции, ставьте первой (или второй, если первая shebang-строка) строчкой спецификатор кодировки:
# -*- coding: udaff -*- функция 📢(✉️): печать(✉️) 📢("✋ 🌏")
Удаление (ужаса?)
Как обычный python-пакет, но возможно надо руками выкинуть udaff.pth
из каталога site-packages
. Это конечно надо автоматизировать.
Проблемка
Сейчас нельзя напрямую запустить отлаживать файл с такой кодировкой. Будет ругаццо:
<code>SyntaxError: encoding problem: udaff </code>
Пока есть воркараунт, сделать промежуточный файл-прокси, который включит как модуль нужный файл
$ cat proxy.py import test2
Его уже можно чем угодно запускать.
Но кстати, отладке под Visual Studio Code это не мешает — можно запускать и отлаживать прямо из редактора.
Еще что-то как-то глючит под Anaconda в Windows, нет времени разбираться. </blockquote>
Примечания и ссылки
- ↑ Я очень уважаю Pascal как язык, и Delphi — как путь в профессиональное сообщество, и например, считаю «турецкий путь», вполне себе решением (хотя не самым оптимальным)
Plays:194
Comments:5