Пожалуйста, не используйте Python для инструментария

Пожалуйста, не используйте Python для инструментария

Python и 1000 программ

Вложенные инвестиции


Говорят что время дороже денег, так вот, вы инвестируете свое время в обучение языку программированию, а также изучаете инструментарий в определенном направлении. У всех людей свой уровень освоения нового. К примеру некоторые могут уверенно писать на Python уже через год, другие через два, и т.д. И ведь не факт что изучая данный язык, он будет востребованный в будущем с таким то уровнем освоения.


Модный язык


От многих ютуберов, людей изучающие программирование уже год, просто от бомжа Валеры в подъезде можно услышать: Изучай Python, там низкий порог вхождения! Возможно это да, но путь все равно будет тернистым. Если вам не нравится синтаксис Python, прошу в другой язык. Не нравится - не учи, ведь потом себя будешь мучить в будущем.


Антисоциальное поведение


Возможно меня убьют некоторые программисты этого канала, но язык Python - антисоциальный язык. Это значит что язык более фокусируется на потребностях разработчика, нежели потребностях пользователя. Достаточно высокомерно от удава!


Итак, что же я имею в виду, когда говорю, что Python антисоциален?


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


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


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


Это случается нередко. На самом деле, каждый год мы теряем недели разработки из-за того, что программы на Python внезапно перестают работать. Каждое обновление в цепочке зависимостей любых из используемых нами инструментов, сопряжено со значительными рисками сломать нашу среду сборки. Нам приходится тратить время на починку нашего инструментария, прежде чем мы сможем вернуться к основным задачам. Если честно, все настолько плохо, что если я склонирую встраиваемый код через несколько недель после того как это было закоммичено, и попытаюсь собрать, вероятность того, что не соберется - примерно 50/50.


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


Переосмысление инструментов


Не все готовы переходить с языка на язык из-за настроек системы. Но не каждый программист имеет дикое желание постоянно переписывать П.О, которое работает. Хотите решать проблемы, возникшие из-за выбора Python? Выяснять, как заставить приложения на Python работать предсказуемо, надежно и без необходимости постоянных действий со стороны пользователя? Или все таки сосредоточиться на создании продукта? В таком случае для тех, кто знает Python я советую создать пару проектов. Выбрать современные языки по типу Rust или GO, в общем любой язык со статической типизацией. На худой конец можно взять Java с его файлами "jar" содержащий все зависимости. Не модный, но куда менее хрупкий вариант.


Перепишите свой проект на один из этих языков. Возможно вам придется повторить это несколько раз для освоения нового навыка. Но помните: Основная цель – научиться создавать более качественные приложения и тулинг.


Заключительные мысли


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


И вы можете быть совершенно эгоистичным в том что: если вы создадите что-то, что сделает ваших пользователей счастливее, это хорошо отразится и на вас.

Report Page