Udaff — русский пиктографический Python. От элементарных алгоритмов до гомоморфного шифрования (Стас Фомин, OSEDUCONF-2020) — различия между версиями
Материал из 0x1.tv
StasFomin (обсуждение | вклад) |
StasFomin (обсуждение | вклад) |
||
| (не показано 20 промежуточных версий этого же участника) | |||
;{{SpeakerInfo}}: {{Speaker|Стас Фомин}}
<blockquote>
В русскоязычном пространстве наблюдается странный эффект изобретения «русскоязычных» языков программирования, и попыток навязать их обучающимся в Школе и ВУЗе
См. например [http://0x1.tv/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9A%D1%83%D0%BC%D0%B8%D1%80 Кумир], [http://0x1.tv/20190127E SLang] (не путать с еще одной самоделкой — [http://0x1.tv/20171021CA СЛанг])… множество их.
С одной стороны, вроде как основания есть — из-за специфики высшего образования в РФ (бесплатное образование, оплачивается ВУЗам МинОбром подушевым образом, отчислять невыгодно, и даже [https://youtu.be/LDdgdKI20cU?t=1351 запрещено]), в ВУЗы на околопрограммиские специальности попадает множество немотивированных и функционально необразованных кадров, не способных понимать даже текст с десятком ключевых слов на английском. С другой стороны, возможно успех таких платформ типа 1C именно этим и обусловлен, да и есть немало энтузиастов, которые [http://www.0x1.tv/%D0%94%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2_%E2%80%94_%D0%9E%D0%9E%D0%9F_%D0%B8%D0%BB%D0%B8_%D0%BD%D0%B5_%D0%9E%D0%9E%D0%9F,_%D0%B8%D0%BB%D0%B8_%D0%BD%D0%B5%D1%87%D1%82%D0%BE_%D0%BB%D1%83%D1%87%D1%88%D0%B5_%D0%9E%D0%9E%D0%9F%3F_(%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9_%D0%9D%D0%B5%D0%B4%D0%BE%D1%80%D1%8F,_ISPRASOPEN-2019)#comment-4763683278 считают, что русификация ЯП — полезна], и [https://youtu.be/LDdgdKI20cU?t=1503 учить на русифицированных языках эффективно].
Однако проблема всех этих самоделок в том, что язык — это не только синтаксис грамматики в BNF на полстраницы, а это инфраструктура:
* Редакторы, IDE, поддерживающие 100500 удобных фич, не говоря уже о обязательной «построчной» отладке.
** Разработчики «Русских ЯП» пытаются делать некие подобия IDE, благо сейчас это можно слепить из каких-нибудь готовых компонентов (модуль текстового редактора с подсветкой, MDI интерфейс с менюшками) — но все что получается, это скажем прямо, уровень 90х, и сравнивая это с бесплатным и open-source «швейцарским ножем» Visual Studio Code, (не говоря уже о коммерческих IDE) хочеться только плакать от жалости.
* Инфраструктура пакетов (сами библиотеки, пакетные менеджеры), 100500 пакетов для решения всего скучного и типового, не говоря уже о нетривиальных платформах (быстрый вход в разработку игр, математические методы и AI и т.п.)
* Правильные концепции и парадигмы языка, проверенные десятилетиями обкатки на миллионном комьюнити профессионалов.
* Возможность получения профессиональных НАВЫКОВ, вшитых на уровень костного мозга, которых можно применить в профессиональной разработке для решения реальных проектов. Чтобы стартовав с элементарных алгоритмов и простых поделий, можно было эволюционировать в профессионала.
Но если «показать что-то про программирование на русском», на уровне «операторы-ветвление-цикл-функция-рекурсия» для совершенно левых людей (которым максимум в 1C в жизни придется что-то подправить) — допустимо, то совращать «девственно» чистых школьников кривыми поделиями, отрубая им прямой выход к реальной разработке и отбивая желание программировать («пробовал ваше программирование на К… » — ничего не работает, тормозит, криво, неудобно, долбайтесь сами), как минимум неэтично, хотя к сожалению, уголовно ненаказуемо.
Кстати, иногда изобретают «еще одну платформу для обучения» даже не для русификации языка, а для, скажем так, «реанимации стюардессы», типа паскаля<ref>Я очень уважаю Pascal как язык, и Delphi — как путь в профессиональное сообщество, и например, считаю «[https://jonlennartaasenden.wordpress.com/2020/01/20/turkey-secures-delphi-access/ турецкий путь]», вполне себе решением (хотя не самым оптимальным)</ref>, но [https://habr.com/ru/post/417229/ проблемы остаются те же — какое-то свое подмножество языка, унылые среды разработки, все сбоку от майнстрима и сообщества].
Возникает дилемма — как бы убить двух зайцев — пользуясь одной платформой дать возможность [https://youtu.be/LDdgdKI20cU?t=1144 неодаренным и негодным студентам и школьникам] «попробовать программирование», а продвинутым, тут же, в том же классе, на том же софте, дать возможность уйти в отрыв и стать настоящими профессионалами.
…
</blockquote>
{{VideoSection}}
{{vimeoembed|408660536|800|450}}
{{youtubelink|}}
|6XLcwQfuBek}}
<!--
{{SlidesSection}}
[[File:Udaff — русский пиктографический Python. От элементарных алгоритмов до гомоморфного шифрования (Стас Фомин, OSEDUCONF-2020).pdf|left|page=-|300px]]
-->
{{----}}
== Thesis ==
=== Решение ===
Итак, уже есть Python, идеальный язык для обучения, рожденный как язык для обучения, десятилетиями использующийся от везде — от уровня младших школьников, до профессионалов, как в программировании, так и в куче научных областей — будь то астрономия, биоинформатика, статистика… везде.
Знание его полезно, если не сказать необходимо, даже тем, кто не программист, если деятельность хоть как-то интеллектуальна (да, даже если экономист-юрист уровня выше чем «за рубль покупаем, за три продаем, на эти два процента и живем»).
К нему есть куча IDE, включая прекрасную поддержку даже в бесплатном и свободном Visual Studio Code (не нужно [http://0x1.tv/20150124G изобретать страшные велосипеды]), есть 100500 пакетов, платформы для написания всего — игр, десктоп и вебприложений, даже мобильной и IOT разработки… Впрочем, все это банально и очевидно.
Наша идея — добавить еще «маленькую лесенку» снизу, разрешив писать ключевые слова и базовые функции на русском, для тех, кто вот только стартует, не потеряв никаких возможностей Python.
Для этого можно воспользоваться идеей «пользовательских кодировок», перекодирующих файл с программным кодом при открытии. В результате, несколько десятков ключевых слов Python приводятся к каноническому английскому виду, их понимает и язык, и отладчики и т.п. А обучающийся имеет полную возможность, по мере изучения, постепенно заменить «русские аналоги» их оригинальными ключевыми словами, и с улыбкой (но без ненависти) забыть свои самые первые программы.
[[Файл:factorial.png|Пример отладки «факториала|center]]
{|
! Английский
! Русский
|-
| and
| и
|-
| as
| как
|-
| assert
| проверить
|-
| break
| прервать
|-
| class
| класс
|-
| continue
| продолжить
|-
| def
| функция
|-
| del
| удалить
|-
| elif
| ежели
|-
| else
| иначе
|-
| except
| случись
|-
| exec
| выполни
|-
| finally
| наконец
|-
| for
| перебор
|-
| from
| из
|-
| global
| глобальное
|-
| if
| если
|-
| import
| подключить
|-
| in
| в
|-
| is
| суть
|-
| lambda
| лямбда
|-
| not
| не
|-
| or
| или
|-
| pass
| ничего
|-
| print
| печать
|-
| raise
| паника
|-
| return
| вернуть
|-
| try
| пробовать
|-
| while
| повторять
|-
| with
| пусть
|-
| yield
| вернуть
|-
| range
| интервал
|}
Лично я (Стас Фомин), не считаю, что это необходимо. На мой взгляд лучше таки выучить эти пару десятков ключевых слов Python на английском, и отсеять «электорат» с уровнем IQ меньше веса.<br> Но идя путем «выбора меньшего зла» (''toss a coin to…''), я уверен, что этот подход лучше изобретения кривых велосипедов 🚲🚵♀🚵♀ от скучающих преподавателей, которые будут калечить поколения школьников 👨🎓👨🎓👨🎓 и студентов 👩🎓👩🎓👩🎓. Т.е. я был бы рад, если все это не пригодилось при обучении, но при встрече с изобретателем 🤡 очередного «национального языка» 📜, у меня будет куда его конструктивно послать 🤦♂.
С другой стороны, может это пригодится где-то, где Python 🐍 используется как DSL для какой-нибудь бизнес-логики 🧮🗠📊 — короткие функции, которых должны править и вычитывать специалисты 🧙♂️🧙♂️ в предметной области, может это пригодится и там.
Более того, можно привлечь к программированию, совсем, так сказать, правополушарных людей 👽👽👽, и использовать вместо идентификаторов функций и переменных значки emoji:
<code-python>
</code-python>
(собственно идея и код взяты из проекта [https://github.com/suda/python-emoji-encoding https://github.com/suda/python-emoji-encoding], спасибо его автору!)
Ну а название «udaff», отсылает к популярному времен начала Рунета ресурсу 🐍╰⋃╯🐍, который прекрасно иллюстрировал идею, что буквоедство и грамотность не так важны, как суть и контент, а иногда такое «грязное языковое хакерство», как кстати, в предложенном решении, даже весело. Кстати, тут несложно сделать и поддержку разных версий «падонкоффского языга».
=== Использование ===
Поддерживается только 3 питон, ибо нет смысла поддерживать второй.
Ставится в систему
<pre><code>sudo pip3 install udaff-encoding </code></pre>
(в pip еще не зарегистрировал, но с гитхаба можно поставить)
После инсталляции, ставьте первой (или второй, если первая ''shebang''-строка) строчкой спецификатор кодировки:
<code-python>
# -*- coding: udaff -*-
функция 📢(✉️):
печать(✉️)
📢("✋ 🌏")
</code-python>
=== Удаление (ужаса?) ===
Как обычный python-пакет, но возможно надо руками выкинуть <code>udaff.pth</code> из каталога <code>site-packages</code>. Это конечно надо автоматизировать.
=== Проблемка ===
Сейчас нельзя напрямую запустить отлаживать файл с такой кодировкой. Будет ругаццо:
<pre><code>SyntaxError: encoding problem: udaff </code></pre>
Пока есть воркараунт, сделать промежуточный файл-прокси, который включит как модуль нужный файл
<div><pre>$ cat proxy.py import test2</pre></div>
Его уже можно чем угодно запускать.
Но кстати, отладке под Visual Studio Code это не мешает — можно запускать и отлаживать прямо из редактора.
Еще что-то как-то глючит под Anaconda в Windows, нет времени разбираться.
{{----}}
[[File:{{#setmainimage:Udaff — русский пиктографический Python. От элементарных алгоритмов до гомоморфного шифрования (Стас Фомин, OSEDUCONF-2020)!.jpg}}|center|640px]]
{{LinksSection}}
<!-- <blockquote>[©]</blockquote> -->
{{vklink|1811}}
{{fblink|2649457065307298}}
<references/>
{{stats|disqus_comments=5|refresh_time=2021-08-31T16:41:14.572155|vimeo_plays=63|youtube_comments=0|youtube_plays=131}}
[[Категория:OSEDUCONF-2020]]
[[Категория:Python]]
[[Категория:IT-образование]]
[[Категория:СПО в образовании]]
[[Категория:Draft]]Криптография]]
[[Категория:Русскоязычные языки программирования]] | |||
Текущая версия на 13:46, 21 апреля 2025
- Докладчик
- Стас Фомин
В русскоязычном пространстве наблюдается странный эффект изобретения «русскоязычных» языков программирования, и попыток навязать их обучающимся в Школе и ВУЗе
См. например Кумир, 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, нет времени разбираться.
Примечания и ссылки
- ↑ Я очень уважаю Pascal как язык, и Delphi — как путь в профессиональное сообщество, и например, считаю «турецкий путь», вполне себе решением (хотя не самым оптимальным)
Plays:194 Comments:5

