LINUX.ORG.RU

Почему во многих Питон-проектах не используют async/await и ООП, как в Java?

 , , ,


2

1

Привет, всем. По работе смотрю новые питоновские проекты, и немного удивляет следующие детали:

  1. по сей день, пытаются все оформить сугубо через def() и форкать разные Py-скрипты через систему

  2. не смотря на наличие async/await в Python v3 - не используют и не пытаются

  3. если и объявят class , то он сугубо используется для DAO/DTO, ни каких сложных ОО-дизайнов не оформляется… type hints не испольуются, ABC-контракты не используются, GoF-паттерны тоже

  4. прикрываются якобы композицией, и что вообще ОО-дизайн - мертвый дизайн (у Golang лагеря насмотрелись, что ли?)

Говорю не про публичные проекты, которые в GitHub можно найти. А про многие, которые делает разработка в рос. компаниях. Картину наблюдаю на разных компаниях в течении последних двух лет.

Вот, я не пойму… Я что-то не понимаю или что? Вроде, появляются различные интересные фичи в Python3 , ряд вещей позволяет приблизится к написанию кода, как на Java.

Все-таки, Python не является Haskell, OCaml или каким-нибудь диалектом LISP. Это язык с элементами функциональщины, а не pure functional language, как Haskell. Так от чего не снабдить свой код asyncio, все граммотно оформить по ОО-дизайну с SOLID-принципами, четко разработь с event loop и прочим… Все какая-то портянка из 100500 глобальных def’ов вижу, в основном, в проектах. Да и вроде… Компании - солидные и платят этим Питонисам 250+ рублей в месяц. А стиль написания такой, за который могли бы уволить джуна в 2010ом, если речь шла про другой стэк (C#, Java).

Вопрос: от чего же в новых питоновских проектах на живой практике многие разработчики не пытаются применить фичи из последней версии языка, и приблизиться к дизайну/стилю кода, как на Java. И вообще, все сделать по канону чистенько, соблюдая SOLID. При наличии уже таких возможностей.

Это лень и нежелание просто? Или есть объективные причины забить болт на все это, и далее оформлять спагетти-код километровый?

P.S. не удтверждаю, что я - прав. Возможно, я совсем не прав. Я просто реально не понимаю, почему качество Питон-проектов, как было примерно таким 10 лет назад, то таким и осталось… Адепты на других языках, как-то более лучше развиваются в плане чистоты своих проектов. Опять сугубо моё ИМХО.

Ответ на: комментарий от alpha

Ну и как обычно за «простые» проекты разработчикам премии не выписывают. Поэтому каждый раз надо изобразить что-нибудь этакое чтобы вчера нанятые джуниоры не просекли.

Гм.
Воотчую такое наблюдал.
Как-то один программист хвастал своей крутостью.
Попросил его показать код /на Delphi/.
А там бред сивой кобылы.
Сказал ему об этом, а он говорит, что код так написан, чтобы в нем всегда нуждались и никто бы его не смог понять его код без него …

anonymous
()
Ответ на: комментарий от anonymous

Сказал ему об этом, а он говорит, что код так написан, чтобы в нем всегда нуждались и никто бы его не смог понять его код без него …

Если бы он к примеру использовал какой-либо генератор кода, …
Но ничего этого не было.
Был обычный Г..ОД, который он и сам через месяц не разберет …

anonymous
()
Ответ на: комментарий от anonymous

Был обычный Г..ОД, который он и сам через месяц не разберет …

К сожалению у меня ранее то же аналогичная мания была …

Генерируемый код работал очень шустро /алгоритмы были спроектированы хорошо/.
Но вот сгенерированный код без меня никто не разобрал бы.

Почему?

Можно было сгенерировать код с readable названиями переменных или а-ля Метапрог.

Вот такой гад был

Каюсь!
anonymous
()
Ответ на: комментарий от anonymous

Но это же фундаментальная проблема, отсутствия наличия языка Y в языке Х :) ОПу надо было не стесняться и писать «почему в питоне используется питон? Безобразие!»

slackwarrior ★★★★★
()
Ответ на: комментарий от anonymous

Можно было сгенерировать код с readable названиями переменных или а-ля Метапрог.

Ни каких шаблонов и подстановок.
Речь шла именно о генерации логики кода …

anonymous
()
Ответ на: комментарий от anonymous

Речь шла именно о генерации логики кода …

Так что дело не в языке программирования, а в том, что ныне и раньше и послезавтра многим

ЯЙЦА МЕШАЮТ!

А виноват конечно

Python!
anonymous
()

множество проектов на бидоне написано непрограммистами и которым довольно тяжело даётся концепция классов и объектов

для них бидон лишь вспомогательное средство и вертели они на пне ООП в целом и шаблоны проектирования в частности

Ford_Focus ★★★★★
()
Ответ на: комментарий от vtVitus

Обожаю лоровских экпертоффф. Язык не знаю, но вивовата джафка !! ну а чё.

А я обожаю лоровских телепатов. Откуда тебе (не)знать сколько лет я корпоративный жавашлак (не)поддерживал и (не)контрибутил в апачевские поделки (не)включая хадуп?

slovazap ★★★★★
()
Ответ на: Микросервисы от WitcherGeralt

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

firkax ★★★★★
()
Ответ на: комментарий от Ford_Focus

Это обычно применимо к учёным (видел как-то код химика). Эти на любом языке могут написать кошмарно. Но питон им хотя бы не даёт отступы случайно ставить.

slovazap ★★★★★
()
Ответ на: комментарий от Ford_Focus

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

firkax ★★★★★
()

Async/await - есть нюансы при использовании. Вещь хорошая, но при использовании возникают вопросы совместимости и поддержки существующих вещей. Плюс лично у меня после опыта работы с aiohttp возник вопрос - а может всё же стоило взять фласк?

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

Kazun3500
()

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

def
. ООП в java по сетевой части - это страшная потеря времени, тоже кучу лапши повидал в java проектах и все этих паттерны зачастую просто скрывают недостатки языка, а питон их лишён. На питон всё делается за день-два, на java ты будешь неделю писать и половина недели тестами покрывать, и во время прогонки тестов обнаружатся затыки, просадки и прочее, что заставит переписывать вновь, тюнить JVM - короче, нахер это надо

menangen ★★★★★
()
Ответ на: комментарий от firkax

Питон - это не скриптование. У питон полноценная виртуальная машина как в java (без JIT), с компиляцией в байткод, как и у руби, php, как и у всяких hermes (facebook/meta/react native), quickjs, lua и прочих быстрых языках. Уже никто не интерпретирует код построчно - это прошлый век. Хоть бы разобрались, прежде, чем чушь писать

menangen ★★★★★
()
Последнее исправление: menangen (всего исправлений: 1)
Ответ на: комментарий от Ford_Focus

Как и слоники со своим php, там вообще каждый первый остался на уровне школоты, пишут странички и до сих пор пускают их через реинкарнацию CGI на шаред хостинге, тоже о «классах» легенды ходят (типа, ой, не, не буду учить эту сифоню, там же всё на классах ааа), тупо молятся на всякие laravel, если бы они не были в ООП стиле написаны, то пхп-шники до сих пор бы писали процедурщину

menangen ★★★★★
()
Последнее исправление: menangen (всего исправлений: 1)

Так от чего не снабдить свой код asyncio, все граммотно оформить по ОО-дизайну с SOLID-принципами, четко разработь с event loop и прочим…

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

t184256 ★★★★★
()
Ответ на: комментарий от alpha

это java выбирают в проект потому что проект сложный, или это проект автоматичсеки становится большим и сложным как только для него выбирают java?

Жабопроект обычно сразу сложный, и со временем становится очень сложным. Но вот пистонопроект обычно сначала простой, а потом становится нечитабельной кашей которую проще с нуля переписать чем чинить.

Так что имхо жабопроект в долгосрочной перспективе лучше

upcFrost ★★★★★
()
Ответ на: комментарий от Kazun3500

Плюс лично у меня после опыта работы с aiohttp возник вопрос - а может всё же стоило взять фласк?

Зачем брать фласк, когда есть aiohttp?

vvn_black ★★★★★
()
Ответ на: комментарий от menangen

Хоть бы разобрались, прежде, чем чушь писать

Ну вот и разобрался бы прежде чем отвечать чушью на моё сообщение.

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

firkax ★★★★★
()
Ответ на: комментарий от menangen

Как и слоники со своим php, там вообще каждый первый остался на уровне школоты, пишут странички и до сих пор пускают их через реинкарнацию CGI на шаред хостинге, тоже о «классах» легенды ходят (типа, ой, не, не буду учить эту сифоню, там же всё на классах ааа), тупо молятся на всякие laravel, если бы они не были в ООП стиле написаны, то пхп-шники до сих пор бы писали процедурщину

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

firkax ★★★★★
()
Ответ на: комментарий от slovazap

и сложились многие из них не от хорошей жизни, а от убогости и невыразительности некоторых языков. Той же жавы

Лорчую.

нечитабельная многословная объектная лапша

Удваиваю.

одну предельно чётко очерченную задачу io concurrency

А это уже не совсем так. Сейчас ProcessPoolExecutor может решать те же задачи, что раньше решали через Celery. И просто как обёртка над мультипроцессингом это удобно.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Ответ на: комментарий от vvn_black

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

WitcherGeralt ★★
()
Ответ на: комментарий от peregrine

У меня для тебя плохие новости: ты не сечёшь в питоне.

GIL перестал быть проблемой как раз благодаря asyncio. Если нужно нагрузить больше ядер, ты просто запускаешь больше контейнеров. Всё, проблема однопотока решена раз и навсегда. Без контейнеров процессы тоже можно пускать рядышком и эвейтить результаты. То есть, прям красота.

В type hints мало смысла

Всё больше и больше. Посмотри как они используются в том же FastAPI, например. И mypy действительно находит такие вещи, которые раньше можно было прохлопать.

WitcherGeralt ★★
()
Ответ на: комментарий от xmikex

man property (и в целом дескрипторы)

Не инкапсуляция, но ровно то, что нужно.

WitcherGeralt ★★
()
Ответ на: комментарий от tz4678

Это не инкапсуляция, это переименование. Почитай как работает. Доступ сохраняется, просто добавляется префикс к названию и всё.

WitcherGeralt ★★
()
Ответ на: комментарий от firkax

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

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Ответ на: комментарий от WitcherGeralt

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

Python 3.10.0 (default, Oct  7 2021, 07:41:25) [GCC 11.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> class Foo:
...   __protected = 42
... 
>>> Foo().__protected
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Foo' object has no attribute '__protected'. Did you mean: '_Foo__protected'?
>>> Foo()._Foo__protected
42

Но в этих языках с псевоинкапсуляцией без котрой якобы нельзя жить тоже можно через Reflector до приватных членов (гыгы) добраться

tz4678 ★★
()
Ответ на: комментарий от tz4678
>>> class Foo:
...   def __init__(self):
...     self.__prop = 42
... 
>>> Foo().__prop
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Foo' object has no attribute '__prop'
>>> Foo()._Foo__prop
42
tz4678 ★★
()
Ответ на: комментарий от tz4678

Насколько это дешево и бездарно… И ты, мальчик, еще что-то вякал на Java? :) Мда… Пойду лучше винца попью.

twinpeaks
() автор топика
Ответ на: комментарий от alpha

ааа!!!

ааааааааа!!!!

аааааааааааааааааааа!!!!

Забанься, дебил!

filosofia
()

Java-мартышку спросить забыли

anonymous
()
Ответ на: комментарий от tz4678

Можно упороться и упихать значение в стейт дескриптора. Не говорю, что это корректно, но так похитрее будет.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)

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

filosofia
()
Ответ на: комментарий от twinpeaks

Речь шла сугубо про приватные проекты компаний. Пруфов дать не могу, ибо проекты - приватные.

ну так и спрашивай у авторов приватных проектов компаний, к нам ты чего доебался?

anonymous
()
Ответ на: комментарий от filosofia

а сложные вещи на питоне тоже просто пишутся. архитектуру придумывать не надо: djnago, flask, fastapi, aiohttp, sanic и прочие ее тебе навязывают, тебе остается только модельки создать и связи между ними

tz4678 ★★
()
Ответ на: комментарий от tz4678

Из всего вышеперечисленного гвоздями прибита только джанга, остальное ничего не навязывает. Особенно aiohttp, которую даже фреймворком нельзя назвать. Остальное — микрофреймворки, определение как бы намекает.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 2)

Почему во многих

Ну во-первых, приведи статистику. Многих – это 2-3? Сколько в твоем окружении таких проектов? Какого объема это проекты? Иначе звучит как либеральная демагогия, не связанная с реальными фактами.

Компании - солидные

Дифинируй что такое солидность компании или тролль.

спагетти-код

На python он при всех прочих будет вкуснее, чем на java или php. Просто потому что by design язык не дает говнокодить кастуя магию, которая будет в итоге понятна только автору. Не говорю, что python не дает говнокодить, но все-таки даже говнокод будет таким, чтобы быстро разобраться в нем.

не пытаются применить фичи из последней версии языка как на Java

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

Я заметил, что все попытки принести Java-подобные монструозные конструкции и способы изложения кодомыслей сравнимы с попытками бегать как гепард или летать как орел, не имея нужного строения тела или крыльев, когда ты <другое животное> и у тебя есть масса преимуществ несравнимых с тем, под кого ты пытаешься мимикрировать. Просто это другой язык, на котором иначе излагают мысли. Это как упрекать кого-то за гэкание или другое проявление локального диалекта. Короче, надеюсь, что объяснил мысль.

сделать по канону чистенько, соблюдая SOLID

Можно делать солид, взять ООП и наворотить так, что потом рота разработчиков будет дружно материться, разбирая поделку автора, чья мысль ушла в разнос на волнах советов о «каноничной разработке». Советам из интернета, книжек и форумов можно не следовать, прикинь :)

Картину наблюдаю на разных компаниях в течении последних двух лет.

Примеры.

Python лично для меня – это инструмент быстрого и безболезненного создания читабельных, поддерживаемых и расширяемых прототипов, которые так же быстро могут быть переписаны и адаптированы под новые (или изменяющиеся) задачи. При этом, когда требуется делать фундаментально, железобетонно и так, чтобы… а я вот даже не знаю для чего так делать, т. к. завтра бизнес скажет «мы хотим вот так» и бизнесу срать на эти ваши ООП, ивен лупы-залупы, которые в 99% случаев не нужны и задачи решаются тупо иначе, а не как тебя пытались научить в университете или где-то еще.

Я считаю, что программирование – это не про конкурс красоты кода, а про решение задачи. Что для тебя «чистота кода», то для других – трата времени, сжигание панамер денег и исключительно эгоистичный изъеб.

lx1
()
Последнее исправление: lx1 (всего исправлений: 1)
Ответ на: комментарий от menangen

до сих пор пускают их через реинкарнацию CGI на шаред хостинге

так все скриптовые языки работают в web через fastCGI :) Можно к упомянутым laravel и symfony прикрутить Swoole и получить неумирающий php, я даже видел такое на проде

(типа, ой, не, не буду учить эту сифоню, там же всё на классах ааа), тупо молятся на всякие laravel

хочешь сказать между symfony и laravel большая разница? боюсь расстроить…

если бы они не были в ООП стиле написаны, то пхп-шники до сих пор бы писали процедурщину

в том и дело, что в php принято брать открытые CMS||Framework и следовать их code style целиком и полностью, а там обычно всё по последнему слову техники, даже вротпресс пытается морфировать.

Ford_Focus ★★★★★
()
Ответ на: комментарий от eternal_sorrow

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

WitcherGeralt ★★
()
Ответ на: комментарий от peregrine

А зачем оно в питоне то надо? Говна на отладке покушать захотелось?

Чтобы «было как у всех».

wandrien ★★
()
Ответ на: комментарий от tz4678

архитектуру придумывать не надо

Лол. Всё, что вам нужно знать о питон-макаках.

wandrien ★★
()
Ответ на: комментарий от WitcherGeralt

Т.е. ты так и не понял чем отличаются треды от процессов и виртуалок? И почему производительность у питона никчёмная, кроме того что он сам по себе не больно быстрый и ставит во главе угла скорость разработки и простоту кода, а не возможность оптимизаций? У меня для тебя очень плохие новости...

Рассказываю для детей на пальцах: при создании треда в нормальном ЯП накладные расходы фигня полная (они есть, но они реально минимальны относительно всех остальных вариантов), все задержки связаны по сути с моментами синхронизации тредов (которые в свою очередь обычно связаны с тем, что ты хочешь что-то почитать/записать в общем для потоков пространстве). Ты можешь без конца создавать и удалять новые треды, особо на производительности это не скажется (в сравнении с процессами и тем более контейнерами/виртуалками). Процесс страртовать куда дольше, почитать и пописать в общую переменную через очень большие хаки, иногда требующие права рута (например ЕМНИП так делает программа, упрощающая процесс игры в dwarf fortress - dwarf terapist), но иногда и пайпы/файлы годятся, правда там уже не с общей переменной работа будет, но и хаки через рут не нужны. С контейнерами всё ещё хуже, там кроме твоего процесса ещё куча говна делается. С виртуалками ещё хуже, там говна ещё больше. И получается следующее - ядра грузятся, а полезного профита мало (как собственно обычно и происходит на самом деле да даже с потоками эффективность 2 ядер и двух потоков не совсем 200%, а чуть меньше. А основной профит почему так делают - в масштабируемости, когда за доллары берут процессор в 50+ ядер и вот тут уже будет значительное ускорение, а можно вообще кластер сделать из 100500 компов и пофигу что там какие-то виртуалки с дикими накладными расходами, не хватает мощности ещё пару тысяч компов докинем, благо пока это сильно дешевле, чем изобретать новые более узкоспециализированные архитектуры компов, процессоров, ОС, ЯП и т.д., хотя и тут работа идёт, вон куду сделали из наиболее свежего). Асинхронность в первую очередь нужна не для производительности, она нужна когда у тебя куча мелких задачек и надо чтобы визуально или не визуально оно не зависало/они переключались между собой. А асинхронность + многопроцессность - это такой большой костыль, который иногда юзают, потому что нормальных штук не завезли, а брать нормальный ЯП у которого всё нормально с потоками, например C++ очень не хочется, да и макаки на проекте не поймут, потому что они в него не умеют. Скорость разработки на C++ и Python-е как-то на порядки отличается, что тоже не способствует...

В противном случае никакие numpy никогда бы не были в виде батареек, их писали бы на самом питоне, а не на сишке с фортраном, а для ускорения просто более мощные компы разработчикам бы давали с большим числом ядер. И вообще у нас давно есть python без GIL и с многопотоком + более-менее терпимой производительностью, называется julia, более того из julia очень просто дёргать Python через PyCall. Скажу по секрету, там где нужна производительность, а C++/C тянуть не хочется так как первый требует большую компетенцию от разрабов, второй слишком низкоуровневый и оба полноценно работают с юникодом через костыли или нетривиальное байтодрочество, некоторые от безысходности тянут julia и получают профит по скорости в пару-тройку раз просто на ровном месте, почти не парясь и не делая никаких оптимизаций (с оптимизациями выжмут намного больше). Так что в реальности стоит подумать, нужна ли тебе возня с потоками в питоне или проще брать компилируемый яп который даже с говноархитектурой в один поток даст ускорение в несколько раз, а потом в батарейку вынести этот узкий кусок.

Всё больше и больше.

Согласен. Скоро смысл появится вообще хороший, потому как обсуждают использование type hints для ускорения, по крайней мере в том питоне который в байткод собирается, как это давно сделано в julia. Однако многие проекты начали писаться ещё до 3.5 и вносить туда type hints можно конечно, но не то чтобы это первостепенная задача была. В новых проектах есть смысл type hints использовать.

peregrine ★★★★★
()
Ответ на: комментарий от slovazap

Ух, прямо полегчало. По всем пунктам согласен.

peregrine ★★★★★
()
Ответ на: комментарий от vtVitus

Неа, бизнес выбирает не из-за цены платформы обычно, а из-за цены макак на рынке и их количества. Т.е. пусть есть дешевая платформа A, которая идеально решает проблемы бизнеса, но на всю страну 10 разработчиков, которые её знают и кроме того что их сложно собрать, потому 4 не хотят ехать в Москву из Питера и Урюпинска без больших денег, так ещё и те 6 что в Москве хотят сотни нефти. Менять их не на кого, в случае чего, а учить новых джунов не всегда хорошая идея. В таком случае выгоднее брать дорогую платформу Б, потому что разрабов на ней море и цена их копеечная.

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt
Python 3.8.12 (default, Sep 10 2021, 00:16:05) 
[GCC 7.5.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys
<module 'sys' (built-in)>
>>> sys = 123
>>> sys
123
>>> sys.modules
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'modules'

В каком месте удивляться?

no-such-file ★★★★★
()
Ответ на: комментарий от peregrine

Каждый, кто работал в компании, на должности выше джуниора, знает, что найти даже джуна на Пыхтон, который сможет по описанию задачи «Написать функцию, принимающую на вход два числа, и возвращающую их сумму (напр., add(2, 2) -> 4)» написать такую функцию и не ошибиться в пяти местах, и не сделать это в виде колбасы с длиной строки в 250 символов (я периодически вижу и строки длиной в неск. тысяч символов - ну не удосуживается большинство дочитать туториал даже до того места, где рассказывается 5 способов переноса строк в Пыхтоне), без пробелов, отступов, не нарушив каждое положение PEP-8, почти невозможно.

Увы, я не знаю, почему это так. М.б. несовершенны методы набора и отсева людей (но видел это в компаниях из разных стран, с разными HR и методиками отбора), но есть подозрение, что просто программирование не по плечу большинству людей.

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

Какие уж там SOLID…

Язык, мне кажется, здесь почти не при чём. Разве что есть ощущение, что те, кто не могут осилить даже Пыхтон, идут в PHP, поэтому в кодовую базу проектов на PHP лучше не заглядывать.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 5)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.