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
()

Ну шо там в треде?
Python хорошо обоссали?

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

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

Ghostwolf ★★★★
()
Ответ на: комментарий от 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
()
Ответ на: комментарий от xmikex

Инкапсуляция - в голове пишущего. В C++ и pascal она вроде как есть в языке, но все пацаны знают как обойти.

anonymous
()

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

anonymous
()

По работе смотрю новые питоновские проекты

Сочувствую, без сарказма.

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

Это показывают во всяких GeekBrains и прочих «школах» программирования.

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

Большая часть питонистов пришли с Django, на ней долго не было асинхрощины. Итог - большая часть питонистов в неё не умеют. В своё время видел как фронтер объяснял middle+ python developer (с 8 годами опыта работы) как работать с async/await… И питонист не понял.

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

Python сам по себе не способствует это. Python - хороший клей, средний язык скриптов (Lua и perl для этого лучше, ИМХО), язык прототипов или инструмент для разбора данных (если человек не умеет в R или Julia). Не более.

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

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

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

Я эту картину наблюдаю последние 5 лет и становится только хуже. Хайп Python дал буст с одной стороны. С другой сделал ещё ниже качество предложения на рынке труда. Сейчас уровень питонистов чаще всего ниже уровня какого-нибудь пхпшника (а вот они на самом деле нормальные ребята стали, когда бросили свои джумлы и вордпрессы).

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

Не приблизится. В Python чаще всего эти фичи - сахар, суть языка остаётся. Python - это огрызок всех подряд модных подходов, который не реализован полностью. Да, он удобный в быстрой разработке, но если смотреть на длительную перспективу - это плохой выбор, так как нужен очень большой hard skill для того, чтобы этот бардак сделать поддерживаемым, расширяемым и компактным. Не зря же один из создателей SICP забрал свои слова, что Java - это худшее, чтоб было с их университетом после того, как туда завезли Python.

Это вы ещё не смотрели видимо такие вещи как Sanic, где парадигма «мы сделаем технологию на нормальном языке, воспользуемся Python как языком бизнес-логики и будем рассказывать какой Python производительный».

Все-таки, Python не является Haskell, OCaml или каким-нибудь диалектом LISP.

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

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

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

Все какая-то портянка из 100500 глобальных def’ов вижу, в основном, в проектах.

Зато по дао питона и идиоматично написано. На самом деле, сейчас ещё усугублена ситуация сахаром, так как эти 100500 становятся не однозначными по смыслу.

Компании - солидные и платят этим Питонисам 250+ рублей в месяц. А стиль написания такой, за который могли бы уволить джуна в 2010ом, если речь шла про другой стэк (C#, Java).

А хотели бы 50к, так как понимаю низкий уровень продукта. Просто рынок стал дороже. За полтора года разработка стала дороже в два раза.

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

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

Это лень и нежелание просто?

Ну вот представь. Какой-нибудь продаван проходит курс какого-нибудь по data science и устраивается. Он пошёл в It потому, что там платят, а не потому что интересно. И на этом построена сегодня индустрия заработка на тех, кто «хочет в IT». Недавно так хайпили ноду и жс, теперь вот за змею принялись.

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

Не способность освоить что-то сложнее лапши считается объективной причиной?

P.S. не удтверждаю, что я - прав.

Да нет, тут много правильных мыслей.

Я просто реально не понимаю, почему качество Питон-проектов, как было примерно таким 10 лет назад, то таким и осталось…

А что вы ожидали от языка, созданного для обучения и дуболомов?

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

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

small-entropy
()
Ответ на: комментарий от small-entropy

Сейчас уровень питонистов чаще всего ниже уровня какого-нибудь пхпшника

ага именно поэтому 99% сайтов с sql-инъекциями написаны на php

tz4678 ★★
()

Заметьте. В тред набежала куча людей, которые рассказывают что примитивизм питона - это благо, возможность писать лишь на пол шишке по парадигме - это свобода, а низкий уровень компетенции оправдывают бизнесом. Nuff said

small-entropy
()
Ответ на: комментарий от small-entropy

Рассуждаешь как нуб. В питоне там при работе с базой плейсхолдеры по-умолчанию, но коннекторами никто не пользуется, пользуются ORM. ORM в свою очередь фильтрует все передаваемые параметры. В PHP же , если раньше гомносайты от взлома спасала magic_quotes_gpc, то теперь - ломай не хочу + начинающие не пользуются ORM, тяжеловесными фреймворками для которых нужно брать VPS вместо шаред хостинга, поэтому имеем, что имеем. Java с ее DAO ничем не лучше. Приложения на ней спасает только типизация, потому как 42' это не int. Эта дрисня свалится с 500-ошибкой, но взломана не будет, если там конечно не что-то типа "SELECT * FROMuserswhereemail= '" + email + "';".

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

Какой-нибудь продаван проходит курс какого-нибудь по data science и устраивается

на интернет-маркет-олуха они идут

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

У вас представление о вебе на уровне говносайтов и вебстудий. И да. Вы так и не ответили чем питон лучше PHP или Java. ORM - не часть языка.

small-entropy
()
Ответ на: комментарий от small-entropy

У вас представление о вебе на уровне говносайтов

будто на похапэ или джаве что-то кроме делают (примеры с житбрейнсом не катят, так как и на питоне тот же саблим наполовину написан и есть всякие spyder ide)

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

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

А что вы ожидали от языка, созданного для обучения и дуболомов?

Очень много понаписано, и чрезвычайно субъективно. Напишут только про этот пункт.

Если кто не помнит, именно Java создавалась как язык для дуболомов. Корпоративные рабы должны были фигачить код в строго заданных рамках. Чтобы в принципе не было возможности сделать шаг вправо или влево.

Возьмите рекламные материалы фирмы Sun за 1996-1997 года, почитайте. Правда, возможно, их уже не осталось в сети. Но я ещё помню.

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

Никакой возможности создавать свободные функции. Но дуболомы тут же начали клепать God Object’ы, реализующие всю функциональность приложения в одном классе.

И т.д. и т.п. В общем, не сработал подход.

emorozov
()
Ответ на: комментарий от small-entropy

Вы так и не ответили чем питон лучше PHP или Java.

Java — кошмарное дно, в коде на Java разобраться невозможно из-за того, что это чрезвычайно многословный язык, поверх которого наложили overengineering, в итоге, любой проект на Java представляет из себя кашу из десятков тысяч отдельных файлов («раб должен класть каждый класс в отдельный файл! рабу не позволено иметь выбор»), в которых SingletonAbstractFactoryFactory создаёт MethodRepositoryDescriptorConnectionAdapter, и т.д. и т.п., и за этим лесом деревьев (бизнес-логики) не видно.

Про PHP смешно даже сравнивать. Говноподелка, в которой в глобальном пространстве имён были тысячи функций, которые ещё и дублировали функциональность между собой, иногда отличаясь в деталях, иногда отличаясь только именами. И ещё логики в намименовании никогда не было: одна функция могла называться strpos_char, другая strip_char_str.

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

Это прям BASIC двухтысячных годов.

И да, несмотря на то, что в последние годы он (вроде бы) стал лучше, думаю, что PHP проекты — лидеры по количеству уязвимостей типа SQL injection и прочих в этом роде. Потому что он калечит мозг.

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

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

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

https://github.com/avshatalov48/bitrix-core-business/blob/master/components/bitrix/bizproc.wizards.setvar/component.php он утверждает что подобная говнина лучше парашной джанги… но джанга как бы я ее ненавидел на голову выше всяких ларавелей, yii и тем более ублюдского битрикса… большего кала чем последний я не встречал

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

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

Мухи любят и ищут …

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

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

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

Яснопонятно, фанатик детектед. Вы подтвердили мои слова своим вбросом. С «метапрограммирования на питоне» - это топ. Вы сделали мой день

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

Нет слов. Никогда не пишите на rust, haskell или облом другом вменяемом языке. Будет больно

С чего вы взяли что не пишу? :)

И, это, неужели PHP - вменяемый язык (он там выше сравнивался тоже с Python)? Ну серьёзно? Я помню как над ним постоянно потешались, потому что найти в нём косяк было просто, как два пальца. Из всех щелей прорывалось, потому что автор не был программистом (он и сам себя всегда так позиционировал), и даже не думал хотя бы два раза ни над одной фичей языка.

Ну или там Java - вменяемый язык? Да на ней никто писать не хочет, максимум, что хотят — это писать на JVM, но никак не на Java.

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

Когда человек говорит, что в дизайне Python косяков меньше, чем в PHP у любого, кто писал на обоих языках будут обоснованные сомнения. Я не говорю и не говорил, что РНР идеален или что он лишён недостатков. Я утверждаю, что в Python их ещё больше. Но современной массовой культурой это выдаётся за «фичи». Поэтому Python сообщество не развивается. Именно поэтому, после 7 лет работы с python я с удовольствием сменил стек. Про почему думаю, что не пишите - если вы писали бы часто сервисы на Rust, Haskell или C, то знали бы, что заморочек с типизацией там никак не меньше чем на Java. И менее многословными их можно назвать разве что при определенных подходах. Про саму Java - это монструозный инструмент, как и весь сектор enterprise разработки. В нем много недостатков, но есть много и хорошего. И язык развивается, его сообщество старается работать в разрезе best practice. В отличии от питонистов, для которых банальный асинхронный код уже вызов часто. Но, возможно, у меня не репрезентативная выборка.

small-entropy
()
Ответ на: комментарий от small-entropy

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

Я писал на PHP немного года где-то до 2007. В те года PHP был полным дном. Не сомневаюсь, что за прошедшее время он улучшился, но мне даже неинтересно изучать, что за улучшения там получились. Чтобы он перестал быть дном, он должен был стать совсем другим языком.

Последний код на PHP, который я трогал, был галереей для фотографий (тогда не было инстаграмма, а были популярны различные галереи), продававшейся за десятки или сотни евро, в которой почти не было функций: любой повторяющийся код просто копировался Ctrl-C/Ctrl-V. Соответственно, любое исправление обязательно требовало поиска такого же куска кода во всех файлах галереи, и внесения однотипных исправлений.

После этого я, как уже писал выше, навсегда зарёкся касаться PHP кода. Ни за какие коврижки.

И это был отнюдь не единичный случай. Почти весь код на PHP, который я когда-либо видел, был нечитаемой кое-как сляпанной лапшой.

Да и сам язык представлял из себя убожество. Единственным его преимуществом было то, что не надо было настраивать инфраструктуру: если для того же Python требовалось ещё знать что такое вебсервер, интерфейс взаимодействия между вебсервером и твоим кодом, то на PHP можно было начинать хреначить код сразу же после установки, не читая и не узнавая ничего. Это приводило к феерическим провалам, и породило целую волну «разработчиков», программирующую методом сборки корабля в бутылке: трясти бутылку (изменять хаотично код), пока кораблик не соберётся.

Помню эти портянки списков функций в PHP, в которых половина функций дублировала друг-друга, и все они не имели никакой системы в именовании.

Сейчас всё это может быть изменилось, но совершенно неинтересно проверять.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 1)
Ответ на: комментарий от small-entropy

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

Вот именно, что у вас не может быть репрезентативной выборки. Во-первых, я не понимаю фиксации на каких-то фичах очень узкой применимости. У автора треда фиксация на говнопаттерне «синглетон». Здесь фиксация на асинхронности.

Асинхронность в Python костылилась уже лет 15 как (какой-нибудь Twisted), относительно недавно завезли нативные async/await, и они вовсю используются. Правда я не вижу, какое это имеет отношение к качеству кода. Асинхронность имеет очень узкую область применения, в этой области в Python она вполне себе используется (я применяю, и вокруг себя вижу). Но я не вижу причин считать асинхронность чем-то новым или выдающимся. Она применима в очень ограниченном числе случаев, она не делает код более понятным или читаемым, это просто технический приём для определённых ситуаций.

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

wordpress самая популярная cms, которая написана как раз в таком стиле. в рф самоя популярная для копропротивных - битрикс. причем. последний хуже wordpress. wp написан в процедурном стиле. ну собставенно по заветам создателей похапэ: 100500 функций в глобальном неймспейсе. из грехов: повсеместное использование global и дырявые плагины типа contact form 7, который позволяет шел залить на сервак.

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

tz4678 ★★ (04.12.21 10:58:07)

В питоне там при работе с базой плейсхолдеры по-умолчанию, но коннекторами никто не пользуется, пользуются ORM. ORM в свою очередь фильтрует все передаваемые параметры. В PHP же , если раньше гомносайты от взлома спасала magic_quotes_gpc, то теперь - ломай не хочу + начинающие не пользуются ORM…

О, кого я вижу! БДСМ-кот с Беларуси. Ну давай, побеседуем.

tz4678 ★★ (04.12.21 10:58:07)

но коннекторами никто не пользуется, пользуются ORM

Видел ряд питонистов, которые блюются от ОРМ и не хотят использовать sqlalchemy. У меня, к тебе кот такие вопросы, коль ты сам начал про ОРМ:

  1. А щито ты в контексте защит от SQL-инъекций про ОРМ, вспомнил только? Не, ОРМ понятное дело защищает на автомате, как правило. Причем, это касается почти любого стэка, но забавнее другое, а что ты не сказал, просто, про «параметризированные SQL-запросы»? Которые, собственно ОРМ под капотом и делают

  2. Кот, ОРМ - конечно классная весчь, но с рядом но. Но, надеюсь ты знаешь, что во многих high load проектах - многие отказываются от ОРМов или берут крайне легковесные аналоги, где сами люди пишут SQL-запросы. Яркий пример у .NET стэка: EntityFramework (толстый, тяжелый, медленный) и Dapper (легкий, и пишут SQL-запросы в классах-репозиториях, юзая параметр. запросы). В случае Java - Hibernate (который толстый и медленный, как EF) и jOOQ (примерно аналогично Dapper примера).

tz4678 ★★ (04.12.21 10:58:07)

Java с ее DAO ничем не лучше.

Лучше, оно хотя бы у него есть :D Да и схемы работы с level cache, интеграциями со всякими Akka, Axon намного лучше, поверь. Получается энтырпрайзненько со всеми DTO, DAO, POCO, BO и др.

tz4678 ★★ (04.12.21 10:58:07)

Приложения на ней спасает только типизация, потому как 42’ это не int. Эта дрисня свалится с 500-ошибкой, но взломана не будет, если там конечно не что-то типа «SELECT * FROMuserswhereemail= ’» + email + «’;».

Кот с Беларуси, у тебя что-то странноватое представление о том, как работают ОРМ движки, ибо они тут достаточно едины в high-level логике, что в Java, что в C# - что даже в сранном ПХП.

Ибо, когда создается запрос - все сводится в строку, если не делать параметрз. запросов или не пользоваться ОРМом (который под капотом делает параметр. запросы).

Если хочешь именно про Жабку, то:

  1. при использовании Statement, строки запросов/значений складываются

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

А если сравнивать с др. языками и стэками, то:

  • в C#/.NET можно использовать параметризованные запросы, такие как SqlCommand() или OleDbCommand() с привязанными параметрами

  • а, в PHP можно использовать PDO со строгой типизацией параметризованных запросов, используя bindParam()

P.S. неразвернутый коммент у тебя, БДСМ-кот, неразвернутый.

twinpeaks
() автор топика
Последнее исправление: twinpeaks (всего исправлений: 6)
Ответ на: комментарий от tz4678

tz4678 ★★ (06.12.21 13:17:15)

да хз о чем он. возможно, асинхронность сложно дается тем кто на js не писал.

БДСМ-кот, он четко написал:

  1. Middle Питонист не одуплял, как юзать async/await
  2. Ему подсказал фронтендер, как пользоваться этим
  3. Питонист-таки, все равно, не понял

Суть: он хотел сказать, что Питонисты такие дуболомы, что неспособны осилить тематики:

  • чем МП отилчается от асинхронки
  • event loop
  • и даже, тупо сахарным синтаксисом

Хотя, в принципе, в мире NodeJS такие же дуболомы сидят, просто владение синтаксисом в виде async/await еще не отражает скиллов, что чел корректно этим владеет. Зачастую можно увидеть картину, что если даже чел овладел синтаксисом, то он устраивает условный async chain hell, который работает, как куртизанка во время бубонной чумы и ее еще пираты трахают сзади.

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

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

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

что во многих high load проектах - многие отказываются от ОРМов

а что в 2022 high load, ранее это были сайты, которые вывозили 10к запросов в секунду. 99.9999% проектов никогда не достигнут таких показателей какие бы наполеоновские планы не строили менегеры…

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

Классно апелируешь, «сайты», я боюсь тебе щя пояснять, что в таких архитектурах, как: «гексагональная архитектура» и ряд других, обычно делится на:

  • primary adapters
  • secondary adapters

и что ты назваешь «сайтами», это как правило frontend API, которые относятся к primary адаптерам

да-да, кот, бекенд сервисы могут делицо, есть:

  • frontend APIs
  • backend APIs

и зачастую, на всякий фронт АПИ хреначат этот Ваш Питон с GraphQL, которые под капотом через призму микросервисной архитектуры дергают сервисы на С++, Жабке (backend APIs) или др. серьезном языке и стеке, которые общаются:

  • по gRpc
  • или по шине в виде RabbitMQ или Кафки

Посему, твой коммент про «сайты» вообще не понял. К чему он, что он раскрывает? И т.д., сейчас архитектура большинства порталов Яндекса или подобного уровня сервисов - намного серьезнее, чем было ранее 10-15 лет назад.

P.S. бдсм-кот, короче коржиков тебе, водочки и щастья!

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

и зачастую, на всякий фронт хреначат этот Ваш Питон с GraphQL, которые под капотом через призму микросервисной архитектуры дергают сервисы на С++, Жабке (backend APIs) или др. серьезном языке и стеке, которые общаются

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

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

tz4678 ★★ (07.12.21 18:10:56)

будто я не писал микросервисы. нету нигде сишки.

не надо «ля-ля», есть, самый яркий пример - иди в трейдеры, FOREX всякие, есть такая тема как HFT (High-frequency trading), и никто там не пишет на Го или Жабе, все на С++ или plain C, как правило… и на это есть логическое объяснение

то же, самое касается контекста работы с очень нагруженным РСУБД-кластером, когда по SLA за несколько секунд простая - бизнес получает штрафы по 10-20k за каждые 5 секунд простоя

twinpeaks
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.