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 лет назад, то таким и осталось… Адепты на других языках, как-то более лучше развиваются в плане чистоты своих проектов. Опять сугубо моё ИМХО.

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

Питон - это простой скриптовый язык, производительность которого желает лучшего, но кода большую часть процессорного времени занимает ожидание ввода/вывода уже становится неважным на чем написан бекенд. Так как все в вебе сводится к операциям ввода/вывода (за исключением небольшого количества задач с обработкой загружаемых изображений), то быстродействие питона и на крупных проектах не является самой главной проблемой. В таких проектах узкое горлышко - это база. Твой мир рухнет, если ты узнаешь, что я видел проекты на питоне, содержащие миллионы SLOC. Там есть ООП, но нет джавовых паттернов, почему их не используют тут писали не раз. Напомню для наркоманов: В ПИТОНЕ СВОИ ПАТТЕРНЫ, питонячьи, а не джавовые. А примитивный ты, расширяй кругозор или учись тоньше троллить.

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

если оно позволяют проще/надёжнее выполнить задачу - какая разница?

Разница в том, что мы сравниваем жопу с жопой или жопу с пальцем.

какие проблемы юзать кложу 24x7?

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

из-за зафорcенной иммутабельности и STM она всяко надёжнее той же Java

В теории - может быть, но на практике - ровно наоборот. Багтрекер был забит тикетами «кадавр жрал», на рядовые исключения в логе никто даже не смотрел толком. В сравнении с аналогичного масштаба жаварешениями падучесть была сильно выше.

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

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

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

наблюдаю (и пишу) 24x7 уже далеко не первый год, жручесть - замечал (если метрики, мониторинг, алертинг настроены - обычно проблема решалась в течение рабочего дня), падучести - да как-то не особо, стандартное бэкенд-решение живёт за каким-нибудь compojure и капитально упасть не может бай дизайн.

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

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

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

#pragma once

Со своими проблемами.

на си таки написан весь мир

Низкоуровневый шлак, призванный затыкать собой кривизну железа. Доживающий свой век. Менее десяти процентов. Доля постоянно падает.

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

стандартное бэкенд-решение живёт за каким-нибудь compojure и капитально упасть не может бай дизайн.

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

не из Яндекса?

Господь миловал.

LamerOk ★★★★★ ()

игра фигня мне не понравилось !!!!!!!!!!! остоётся токо ждать лутшего.Это для меня говно плохо зделана тупо.Немогли зделать всё как в Crusis!!! И графику и управление.Не рекоминдую такую игру!!!

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

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

  • мы так видим мир
  • в жопу ваш ооп, хоть мы его не изучали
  • пишем, как хотим

Ну что же? Я объявляю победу здравого смысла над недопрограммистами.

У джавистов - хищный взгляд таится за глазами мимо проплывает Java, нога на педали, новый GraalVM, как верный друг, он не предаст, сегодня я его объезжу, двигаюсь с собой в такт, нах$# питонистов! Я знаю, что они пиз*ят.

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

Думаешь только на питоне такая ситуация?

На Go, в большинстве случаев, тоже все печально. Большинство пишут тупо процедурный код, и хорошо, если по функциям разделяют. И когда говоришь: на этом проекте мы пишем в ООП/Функциональном стиле/… (нужное подчеркнуть), то встречаешь недоумевающий взгляд: «а что, так можно? там же нет классов и лямбд (ключевых слов)». И только где-нибудь в самом неподходящем месте, где по идее должен быть обычный цикл, какой-нибудь особо отличившийся подаван вкорячит самописный WorkerPool для массива из двух элементов, и будет с пеной у рта объяснять, как он сэкономил 0.001с процессора (на проекте с 2 rpm), родив при этом неподдерживаемое нечто.

По этому тут как в известном анекдоте: надо не кровати двигать…

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

сам придумал - сам с собой поспорил, сам признал себя победителем, ай молодец!

Дядь, во-первых, питон - говно (как и java, но у java хотя бы JVM есть, которая, как ни крути, a state of art), во вторых, я большую часть своей программерской карьеры пишу за деньги на том, что считается ФП языками. А вы, конечно, продолжайте утешать себя придуманными тезисами.

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

Это если у тебя унылый круд для веба.

ну, во первых сейчас у меня вовсе даже всё бигдато с МЛ, а во-вторых, унылые круды для веба - это, наверное, процентов 85 (например) всей разработки сейчас. Почему бы не облегчить жизнь этим 85%?

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

Писать на Go в ООП так себе идея. Авторы Go немало сил приложили к тому чтобы на нем было максимально неудобно это делать. Если ты, несмотря на все это все таки пытаешься использовать на Go ООП, то даже не знаю, хорошие у меня для тебя новости или не очень, но ты определнно Месье и да, ты знаешь толк… Ты, кстати, на ФОРТе в ООП стиле писать не пробовал? Говорят довольно необычные ощущения, попробуй, вдруг понравится.

anonymous ()

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

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

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

Не всегда есть выбор, как именно делать. Особенно, в больших проектах.

Тут больше тезис про то, что трудно найти людей с компетенциями, которые понимают разницу и могут развивать проект в общем ключе, а не плыть против течения, доставляя проблем остальной команде

reviz0r ()

Про одержимость синглетонами, кстати:

Чтобы проверить, нарушен ли принцип SRP, попробуйте описать то, чем занимается этот класс, в одном предложении. Получится что-то вроде: «Он стирает, сушит и гладит одежду». Наличие перечисления и союзов «и» — один из признаков возможного нарушения принципа единой ответственности. Наглядный пример нарушения принципа — паттерн Singleton. Такой класс выполняет две задачи: следит за тем, чтобы в программе был только один экземпляр, и выполняет какие-то полезные действия.

emorozov ()

Пишу на питоне для нужд фирмы. Бизнесу нужно решать задачи, а не изъё-ся с ООП, которое на мой взгляд вообще не нужно. Сейчас мне налетят тут всякие погромисты 300кк в наносекунду и начнут пояснять, но типа, это ваше мнение, я останусь при своём. Про type hints согласен, да. И слава яйцам, что питон даёт свободу выбора.

anonymous ()