LINUX.ORG.RU
ФорумTalks

Кого-то прорвало

 ,


0

2

$ summary --Ъ http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

I can’t even say what’s wrong with PHP, because— okay. Imagine you have uh, a toolbox. A set of tools. Looks okay, standard stuff in there.

You pull out a screwdriver, and you see it’s one of those weird tri-headed things. Okay, well, that’s not very useful to you, but you guess it comes in handy sometimes.

You pull out the hammer, but to your dismay, it has the claw part on both sides. Still serviceable though, I mean, you can hit nails with the middle of the head holding it sideways.

You pull out the pliers, but they don’t have those serrated surfaces; it’s flat and smooth. That’s less useful, but it still turns bolts well enough, so whatever.

And on you go. Everything in the box is kind of weird and quirky, but maybe not enough to make it completely worthless. And there’s no clear problem with the set as a whole; it still has all the tools.

Now imagine you meet millions of carpenters using this toolbox who tell you “well hey what’s the problem with these tools? They’re all I’ve ever used and they work fine!” And the carpenters show you the houses they’ve built, where every room is a pentagon and the roof is upside-down. And you knock on the front door and it just collapses inwards and they all yell at you for breaking their door.

That’s what’s wrong with PHP.

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

Скорости-то как раз php вполне хватает, на средних веб задачах не хуже явы. JIT ему просто не нужен, скрипты отрабатывают за десятки миллисекунд.

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

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

Таки ПХП тормоз. ФАКТ. А для средних веб-проектов похрен что брать. Что яву, что пхп, что луа, что до диез с гопнетом. На то они и средние веб-проекты. Для них надо брать то, что хорошо знает человек, который их будет делать и сопровождать.
Отсутствие ООПа в стандартной библиотеке это плюс. Проще намного для простых проектов, где проще без ООПа написать что-то и сделать это БЫСТРО. А у пистона stdlib его в разы хуже чем у похапэ и проблем у него с этой несогласованностью в разы больше. А уж ООП в пистоне сделан так, что мне кажется люди были очень больны. copy.copy чего только стоит.
Треды во все поля это тоже какая-то лютая практика, попахивающая маразмом. Сколько тредов нужно питонокодеру чтобы написать терминалку? Посмотрев примерчик из pyserial года два назад я понял что три. И еще понял, что на питоне без сильно большой надобности писать ничего не буду.

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

Да, и еще как-то разбирал не свой код на питоне, там был простейший мост с н последовательных портов, на одно tcp/ip соединение. Количество тредов там было 2*(количество портов)+3. Если это считается нормальной практикой, то я явно что-то в этой жизни не понимаю.

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

и проблем у него с этой несогласованностью в разы больше

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

Сколько тредов нужно питонокодеру чтобы написать терминалку?

Потоки? Что за терминалку?

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

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

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

Не зная, как это делается в питоне, навскидку, — два потока минимум. Лучше три. Один — чисто под интерфейс, второй — ввод-вывод с буферизацией, третий — обработка. В потоке ui никакие вычисления делать нельзя.

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

Знаешь, решение на epoll'e и на С меньше занимало, как это не странно, чем весь этот веселый цирк на пистоне. Вот для сравнения, код сниффера N последовательных портов на С, написанный мною: https://github.com/nekromant/usniffer/tree/master/src

И тот эпичный терминал на пистоне:
http://pyserial.svn.sourceforge.net/viewvc/*checkout*/pyserial/trunk/pyserial/serial/tools/miniterm.py

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

И да, у меня на весь ввод/вывод 1 единственный поток.

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

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

И да, у меня на весь ввод/вывод 1 единственный поток.

Для маленького консольного приложения пойдет, но для gui — никогда.

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

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

Как минимум потому, что внезапно в питоне есть epoll, но он только для tcp сокетов, и к последовательным портам не применим, потому как pyserial этого нихрена не умеет. (Сейчас вроде смотрю доку - появилась возможность, выдернуть дескриптор, но искать epoll в select.epoll это все равно писец как интуитивно). Но самое забавное не в том, что возможность такая есть, а в том что так все на питоне пишут. И для простых задач, где достаточно 200 строчек кода на С, привлекают овер9к тредов, и сотни строк кода.
У меня терминалка с тем же функционалом, что питоновская уместилась в 250-300 строк на С. Вместе с настройкой порта. На питоне - 600 + код pyserial. Хотя код на С должен быть в теории больше, потому как там надо делать больше. Это уже достаточно за себя говорит.
Резюмируя: Питон многословнее java, дебильный синтаксис, бардак в stdlib, некоторые вещи вызывают тупо фрастрейшн: copy.copy; select.epoll и т.п. Извините, но PHP ЛУЧШЕ этого.
Из плюсов питона только хороший JIT и обилие кода.

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

Для маленького консольного приложения пойдет, но для gui — никогда.

Сейчас не про GUI речь.

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

Я в целом-то не спорю, кроме:

Извините, но PHP ЛУЧШЕ этого.

Если уж о задачах потоковой обработки, то php вообще в них неприменим.

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

Питон умеет больше, намного легче расширяется, лучше стандартизирован, поэтому не знаю, как можно говорить, что php лучше него.

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

Питон умеет больше, намного легче расширяется, лучше стандартизирован, поэтому не знаю, как можно говорить, что php лучше него.

Питон стандартизован? Питон не стандартизован вообще никак, есть только референсная реализация. У нас перед глазами есть эпичная несовместимость между 2 и 3 версией. Если разработчики языка могут вот так одним движением сломать многолетнюю кодобазу, ни во что не ставя тот титанический труд, который был на неё затрачен, то я вообще не знаю чего ещё можно от них ожидать, и к языку отношусь с большой опаской.

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

О-ло-ло. Каким одним движением? Уже версия 3.3 на носу, но при этом вторую ветку поддерживают.

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

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

Пиши на ранней версии? :}

Зачем? Это же не я исписал ту простыню, это не меня не устраивает текущая ситуация. :)

я, собственно, не о версии, а в смысле «из коробки».

Такая изкоробка во всех языках, имеющих более или менее длинную историю.

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

Каким одним движением? Уже версия 3.3 на носу, но при этом вторую ветку поддерживают.

Вот это и есть то самое «Ж». Если бы совместимость не сломали, то про вторую ветку бы уже давно все забыли.

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

Пятой? OK, считаем, что первых четырёх не было. :)

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

Чего набросились, «специалитсы». Может быть человек и не из IT? Форум русскоязычный, он все правильно говорит.

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

Может быть человек и не из IT?

Какое ему тогда дело до ITшных тем? Тем более, когда эти темы связаны с разработкой софта.

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

Ну, пользоваться то не историей надо, а всё же тем, что есть.

И? Что-то сказать хотели? Потому что вы уже начали спорить со мной моими словами. :)

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

goto start, ну :}

Не, ну вы уже определитесь.

1. Сломано изначально.

Нет, не изначально. Изначально было мало, но нормально.

2. Изначально не важно, надо пользоваться тем, что сейчас.

Сейчас везде сломано.

3. Сломано изначально.

--

Как говорится, мозг взорван. :)

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

Тебе ещё раз повторить? %) Сломано изначально означает из коробки как ты начинаешь использовать PHP всё уже поломано.

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

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

внезапно человек использует софт. поэтому дело есть, например.

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

А в более других языках ты сказал «можно поломать», а это не одно и то же.

Не, вы ни фига не поняли. И в других всё так же сломано из коробки. И точно так же, как на php, на них можно писать и на знать горя, если следовать рекомендации врача из анекдота: «Так не делайте так».

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