Search
Write a publication
Pull to refresh

Comments 21

Прикольным свойством синтаксиса Питона является то, что вместо pass можно поставить три точки:

def delete_user(self, user: User):
    ...

Хотя семантика немного разная, но результат тот же.

Не надо делать UI на Питоне, не надо.

А на чем надо делать начинающим разработчикам UI?

На компилируемых языках.

От использования компилируемого языка UI не станет ни лучше, ни хуже. Тем более под капотом у PySide библиотека Qt на C++.

Спор о "правильности" языков со строгой типизацией или с динамической идет не первый десяток лет.

А новички как выбирали языки с низким порогом вхождения и большим количеством готовых библиотек, так и выбирают.

Типизация тут не при чем, а тот факт, что новички выбирают питон - далеко не аргумент в пользу того, что на нем стоит делать приложения с GUI. Питон - далеко, очень далеко не самый подходящий для этого инструмент. Его удел - склейка библиотек, написанных на других языках и бэкенд, производительность которого без костылей не впечатляет.

Эта статья для людей которые изучают питон. Чувак изучает язык и ему по барабану его производительность. Научится ли он работать с классами, делая гуи? Вполне может. Выучит ли он базовые типы и синтаксис языка? Да, вполне себе. Научится ли он базово алгоритмике? Тоже да.

Вообще люди делают визуальные новеллы на renpy с гуи, и у них проблем нет с производительностью(сам лично тестил - все там хорошо кликается и бодро работает), инструмент устраивает, так что твои тезисы про то, что питон не для гуи, сам по себе спорный

Можно какие нибудь аргументы?

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

Если мне нужно рисовать сотни линий в секунду, то я возьму подходящий инструмент, например, биндинг к OpenGL. На питоне так то 2D/3D игры делают.

Но причем тут GUI? Элементы не питоном же обрисовываются, а скомпилированными библиотеками. Я не думаю, что скорость отрисовки сотни элементов будет заметно большой, тем более на каком нибудь PyQT, где тупо xml файл с разметкой загружается.

Статичные элементы обрабатывает сторонняя библиотека, а команды на обработку отдает Питон. Рисование линий - это стандартный тест производительности отрисовки, в том числе для GUI. Одной командой нарисовать линии "бесконечно" задать нельзя, если в самой библиотеке не будет создан такой странный метод. Следовательно, отдавать команды будет Питон из цикла.

Любые действия, идущие от UI, будут останавливать основной поток, в котором идет отрисовка интерфейса, чтобы выполнять код (например, кнопки). Время выполнения кода в кнопке = время фриза окна.

Время реакции кода на клик, думаю будет в статистической погрешности. Какая разница, за 0.1 мс среагировал код, или за 1 мс.

Лично я рисовал на канвасе на самой одной из самых медленных библиотек - tkinter. Сотня элементов перерисовывалась в режиме реального времени без заметных глазу лагов. А тысячи куда? Можете привести пример?

Речь не о реакции на клик, а не действии внутри кнопки.

Сотня элементов - это не значит, что выполнено 100 инструкций для отрисовки. Одна лишь только векторная кнопка может потребовать отрисовки в десятки линий. Питон с PyQt спасает только то, что GUI рисует сама библиотека кодом на C++. А вот любое рисование внутри этого GUI средствами Питона обречено на лаги.

Вы сейчас серьезно? Человек реализовал софтверный рендеринг и все делал вручную, используя библиотеку для 2d игр (с которой она как бы справляется сама по себе нормально).

И ещё раз, какое это имеет отношение к GUI? Если тебе нужны кнопки и другие контролы, ты не будешь их рисовать ручками.

  1. GUI и есть по большой части - софтверный рендеринг

  2. В статье используется PyGame - как раз Питон-движок для игр, который использует SDL (GPU отрисовку)

Нет ничего более неблагодарного и бесполезного чем графика на питоне)

А вы, получается, обучаете программированию на питоне?

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

Трудность не в том, чтобы взять готовый фреймворк типа Джанго, а в понимании как они устроены. Все эти библиотеки выглядят как черный ящик. И переход от консольных приложений до современных решений слишком резкий получается. Нужны промежуточные этапы обучения. У вас хороший пример получился

Спасибо за положительный отзыв.

Целенаправленно обучением Python я не занимаюсь. Более того, знаю Python весьма посредственно. Мой основной стек Java.

Со временем видишь как развиваются начинающие, где у них возникают трудности. ИТ технологии стали массовой отраслью.

Причем сейчас довольно много народа пытаются попробовать ИТ без четкой цели "хочу стать именно разработчиком, эта мечта всей моей жизни". Классический путь в виде поступления в ВУЗ на ИТ специальность для таких товарищей слишком серьезное и рискованное решение.

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

Sign up to leave a comment.

Articles