idlesign / pythonz

Место, где делают pythonz.net
https://pythonz.net
GNU Affero General Public License v3.0
46 stars 19 forks source link

Создание итеративного визуального интерпретатора Python/ Предложения решений по ключевым словам. Практика JB. #85

Open sigmadt opened 3 years ago

sigmadt commented 3 years ago

Новичкам обычно трудно понять, что происходит under the hood в коде. Я помню свои первые начинания, когда для меня было загадкой, как работают вложенные циклы в хитрых динамически изменяющихся массивах, тогда-то и пригодились визуальные интерпретаторы, что я нашел в интернете. Однако из-за низкой скорости серверов было тяжело подобрать стабильно работающее решение, поэтому на данном проекте я бы хотел реализовать что-то подобное. Причины я бы обозначил следующие:

  1. Во-первых, справочник может утомить впервые прикоснувшихся пользователей, визуальные интерпретаторы покажут, что не все так уже и страшно в программировании все работает по одни и тем же канонам
  2. Тем, кто интересуется алгоритмами, но еще не имеет достаточно знаний, чтобы в голове вращать хитрые структуры данных, такое решение будет очень handy
  3. Даже продвинутым Python-разработчикам бывает полезно визуализация процесса: когда дела доходят до AVL-tree или связных списков, как-нибудь хранящихся в других структурах данных, когда там неочевидное сканирование и добавление новых данных
  4. В справочниках такого интерактива нет!
  5. Все остальные решения медленные и не выглядят элегантными (что нельзя сказать о самом Python): нужно минималистичное и быстрое решение, с понятными указателями на текущие операции, подсказками по улучшению и красивой древовидной структуры зависимости структур данных в коде

Следующее интересное предложение состоит в следующем. Как часто, мы как студенты, которые используют Python ежедневно для своих учебных и рабочих целей пользуемся googling-ом, чтобы найти как сделать те или иные вещи? Почти всегда на помощь приходят форму stackoverflow или написанные решения с geeksforgeeks, однако так бывает не всегда, к тому же здесь играет роль человеческий фактор: зачастую там рабочие решения, но они больше похожи на костыли и выглядят не вполне элегантно (не по-питоновски). Поэтому я бы хотел реализовать модель машинного обучения, которая по заданным ключевым словам (или целым предложения) будет выдавать рабочий код по вопросу. Для простых вопросов (генератор словарей, применение лямбда функций для массивов, создание классов) уж точно можно реализовать и интегрировать в справочник. Если бы у меня под рукой был такой сервис в те года, когда я учился писать на Python, жизнь была бы сейчас совсем иной. В общем, идея относится к утопичной концепции "все и в одном месте", но на первых порах даже простых решений будет вполне хватать, потому что при обычном поиске в гугле мы тратим как минимум 3 операции: вбить запрос, посмотреть 2 источника, внутри каждого источника скопировать решения и адаптировать под свой код. В моем идеальном мире в справочнике можно будет задавать пространство имен переменных, желаемые функции и т.п. Я всегда мечтал поработать над реальным веб-сервисам и интегрировать туда модель машинного обучения, которая будет помогать нашему Python-community. (Кстати, 2 года назад я уже писал веб-сервис с интегрированной простой моделью машинного обучения, она даже завернута в Docker!).

idlesign commented 3 years ago

Спасибо за идеи и развёрнутое описание.

  1. Это довольно масштабная, амбициозная задача, но со множеством подводных камней. Сюда относятся как требования к производительности и безопасности исполнения кода, так и адаптация под конкретную версию интерпретатора. Отсюда сложности и с реализацией, и с последующей поддержкой. Однако, подходы уже совершались, например, https://pythontutor.com/visualize.html

  2. Если я правильно понял идею, то это не менее масштабная задача, потенциально оставляющая программистов без работы %) Там есть ещё один нюанс в части не «по-питоновски», потому как восприятие во многих случаях субъективно. Вместе с тем, часть с машинным обучением можно попробовать соотнести с #29