Формируем наш мир - Конструктивный взгляд (gonchar) wrote,
Формируем наш мир - Конструктивный взгляд
gonchar

Categories:

Python



90% технической информации этого поста будет понятно только программистам.
Но последние 10% стоит прочесть - и "по жизни" такие вещи знать полезною, и стоит откорректировать представление о "крутизне" и интеллекте ВЕДУЩИХ МИРОВЫХ РАЗРАБОТЧИКОВ в сфере АйТи.

Предисловие


Разборки - разборками, проблемы - проблемами, а работать всё-таки надо.
Придумал одну системку, смесь организации, электроники и софта. Работаю сейчас почти один (кроме меня в "фирме" остались 4 человека - причём из-за моих сложностей все работают полу-дистанционно). Ну и привлекаю людей на отдельные работы - способность российских специалистов сделать именно то, о чём договорились, именно тогда и именно так ... скажем, любви к человечеству не прибавляет :)
Соответственно, многие штуки приходится делать совершенно самому. Даже не зная инструмента.

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

90%


Привлекал меня Питон (заочно) своей рекламируемой философией. Причём в первую очередь - "Должен существовать один — и, желательно, только один — очевидный способ сделать это."

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

И что поразило?

Ну, то, что Питон этот - полная дрянь, это ладно.
Но поразило то, что его "философия" - чистейшее враньё, причём я предполагаю, что - пользуясь словами Булгакова - "И интереснее всего в этом вранье то, ... что оно -- вранье от первого до последнего слова. "

Всё это время по мере написания (надеюсь, что закончил! :))) ) меня изумляло, как буквально на каждом шагу нарушается буквально каждый из принципов "философии".

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

1. Вот как можно было не сделать механизма передачи параметров по ссылке?!
Я сначала не мог поверить в подобное, думал, что-то пропускаю. Нет, разобрался.
И прочитал "объяснения" авторов на эту тему. Беру в кавычки, потому что это - не объяснение, а бред.
И это называется:
"Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное."


Смешно.

2. Как там? "Должен существовать один — и, желательно, только один — очевидный способ сделать это." Так?
Ну, конечно.
У меня - кроссплатформенная система, ориентированная на сильно разные экраны.
Поэтому я вынужден был заниматься такой чепухой, как размещение виджетов. Я пробежался в Инете - и выбрал tkinter, как наиболее распространённый-совместимый и т.д. А некоторая тонкость помешала мне использовать pack и grid - я вынужден был использовать place.
И в какой-то момент мне понадобилось знать ширину Label.
Что бы вы думали? Мне очевидным способом сделать это представляется mywidget.width (или с () в конце).
Однако этот способ почему-то даёт чушь. Зато есть "очевидный" winfo_width() - который тоже не работает до обновления "материнского" виджета. Потрясающе. Я убил на этот вопрос наверняка около часа - всё считал, что это я что-то делаю "не так".

3. Мне нужно было, чтобы по таймеру менялись некоторые данные на виджете. Грубо, данные с некоторого прибора. Ну - элементарная вещь. И тут я читаю:
а) обработку событий по таймеру надо запускать не в основном потоке
б) работу с виджетами tkinter надо производить в основном потоке
Фантастика.
Подчеркну - возможно, всё это как-то решается несложно. Но УЗНАТЬ, как делаются такие простейшие (!) вещи, оказалось большой проблемой. В итоге на 3-ю задачу я плюнул, сделал работу с виджетом из потока-демона. Решил, что если слетит программа, так и чёрт с ней, перезапустят. :) Не стоит именно она именно сейчас такой возни с разбирательствами.

10%

Сейчас, коллеги, слушайте внимательно. Я открою великие истины - о которых очевидно забыла АйТи-общественность, особенно её владельцы, топ-менеджеры и разработчики самого высокого уровня.
Это - не юмор.

Так вот, программы пишутся в 9...9% случаях ДЛЯ ДРУГИХ людей, НЕ ДЛЯ АВТОРА.
Очевидно? Очевидно.
Осознайте этот факт.

Соответственно, запускаться они будут также НЕ НА КОМПЬЮТЕРЕ АВТОРА, а на ДРУГИХ КОМПЬЮТЕРАХ.
Очевидно? Очевидно.
Примечание: Любителям точности, собравшихся писать возражение типа "а серверная система, ориентированная на обслуживание из нашего дата-центра", укажу на простое соображение: конкретный компьютер и конкретная операционная система не вечны, в силу обстоятельств вы будете вынуждены (!) поменять их хоть через пять минут!

А теперь думаем - ну, что вытекает из этих двух очевидностей?

А вытекает из них простейшее соображение. ЛЮБАЯ программа должна БЕЗ ПРОБЛЕМ запускаться на ЛЮБОМ компьютере соответствующего класса с установленной соответствующей системой. И этот запуск НЕ ДОЛЖЕН ТРЕБОВАТЬ КВАЛИФИКАЦИИ, отличной от квалификации ПОЛЬЗОВАТЕЛЯ ПРОГРАММЫ.

Очевидно? Мне - да.
Вопрос только, всегда ли можно этого добиться. Иногда, понятно, трудно, иногда совсем не получается.
Но есть ситуации, когда это точно сделать можно!

И вот Питон.
ИНТЕРПРЕТАТОР, ТРЕБУЮЩИЙ СРЕДУ. И куча объяснений, почему нельзя скомпилировать "в общем случае", и т.д., и т.п. И попытки обхода проблемы - да, да, почитал про способы, попробовал, впечатлился.

...!

Ребята. Да ПЕРВОЕ, что должен сделать разработчик среды типа Питона - это обеспечить возможность запуска питоновской программы БЕЗ СРЕДЫ.
Чтобы пользователь просто запустил ОДИН ФАЙЛ. Ничего больше.

И делается это ЭЛЕМЕНТАРНО. Всего-то нужно сделать режим работы среды, который, получив питон-программу, выдаст, например, для Виндоуз один exe-файл, который будет в неявном виде содержать ВСЮ СРЕДУ. Просто эта среда будет невидима для пользователя.
Да, возможно, любая программа, пусть всего лишь складывающая 2+2, получится ужасно большой - аж под 200 Мб! :) Я понимаю, такое решение признавалось негодным 20 лет назад. Но сейчас-то? Ну, будет каждая программа весить хоть гигабайт, что с того? Сегодняшний винчестер в несколько терабайт - обычное дело.
И то же самое относится к самым передовым, самым лучшим фирмам и разработчикам.
К той же JetBrains. В чём проблема сделать такой Kotlin?

Моё мнение - люди настолько зарылись в своих представлениях и деталях, что совершенно оторвались от реальности и потеряли понимание ОСНОВ того, что они вообще делают. Подчеркну - умнейшие люди.

========================

Спасибо, кто написал предложения на мой вопрос. Я не "забил" на это. Наоборот, я отношусь очень ответственно - поэтому напишу сразу, как буду готов действовать. Надеюсь побыстрее. Ещё раз спасибо.



------------------------------------------
Эта запись - копия из более правильного журнала: https://gonchar.dreamwidth.org/460090.html Лучше вести обсуждение в Дриме. Специальной регистрации там не требуется. Хотя и зарегистрироваться - дело пары минут.
Напишите комментарий туда. Сейчас там комментариев - comment count unavailable.
Tags: деятельность__it, личная__работа, работа__ненормальная
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 61 comments