LINUX.ORG.RU
решено ФорумTalks

Почему php считается плохим языком программирования?


1

1

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

Плюсы:

- Легок в изучении

- Обширная документация, разжеванные примеры

- Хостинг дешевле

- Процесс кодинга подобен процессу творчества

- Динамическая типизация

- eval()

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



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

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

Лучшая оценка - количество пользователей.

с венды пишешь?

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

да, по этому

Процесс кодинга подобен процессу творчества

пункту

nanoolinux ★★★★
()

- Хостинг дешевле

фига се критерий сравнения

Но почему тогда Вконтакте и другие крупные порталы не падают по десять раз в сутки?

наверно потому что тестируют. у нас проекты падали из-за багов mod_php (да, мы тестами не парились). Причём в весьма неожиданных местах. Ну а сексе с eaccelerator и битрикс легенды слагать можно.

Ну а если по делу то язык говно. И в type coersion (ваще писец, остальное просто меркнет), и в ООП (может щас лучше, я хз, могу и нагнать), и в качестве исходников (по крайней мере кишки питона выглядят лучше), написание экстеншенов тоже непростое, и отсутствие неймспейсов, вместо MVC каша (хотя, конечно, можно разделить), убогие средства языка типа «подавить вывод ошибок (@)», продолжает выполнение кода после ошибки, типичные проблемы типа «headers allready sent» которые зачастую сложно отдиагностировать из-за кривого кода, белая страница когда апач сегфолтится, конфликтующие экстеншены (к самому языку это не относится), возможны очень хитрожопые проблемы (см. топики на хабре) итд итп. В общем, там стооолько способов отстрелить себе ногу по локоть... И это при том что я не программировал на нём, только сисадминил сайты и прогерам помогал находить баги которые они сами туда и запихнули. И вообще первая страница из гугла: http://toykeeper.net/soapbox/php_problems/ Идеальных языков не бывает, но пых-пых прям таки сборник проблем.

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

А писать на нём проекты можно. На всём можно.

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

Скажите это Дурову.

А дрессировщики животных при чём?

grim ★★☆☆
()

Минусы:
нет нормального JIT'a, zend-optimizer'ы и hip-hop'ы не в счет.
Невозможно почеловечески заэмбеддить в приложения.
Чтобы оптимизировать на С критические участки кода, надо делать расширения, что хоть и не особо сложно, но достаточно геморно.
Из всего выше перечисленного - мой выбор - lua.

AiFiLTr0 ★★★★★
()

ты мал и глуп, и не видал больших за... закатов.

Сравни в php 0, NULL, FALSE, ", и 0.0 - будешь весьма удивлён. Любопытно, что в проектах >100 строк, эти величины равны/не равны ЧЕРЕЗ РАЗ. Я не знаю других языков, которые обладают такими любопытными свойствами - какой-бы быдлокод не писать на С (тоже не сахар), но там две константы ВСЕГДА либо равны, либо не равны.

Вообще, ИМХО PHP взял все самые жуткие грабли и из С, и из С++, и из некотох других ЯП, и сложил их вместе.

puding

- Процесс кодинга подобен процессу творчества

это да... Мне тоже нравится. В С как-то примитивно: ну это UB, не взлетит... А php это одно сплошное UB. I like it

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

Я не знаю других языков, которые обладают такими любопытными свойствами

JavaScript

geekless ★★
()
Ответ на: Могу врать, интересовался этим лет 7 назад от schizoid

ЕМНИП, это первоначальная.

Не-а. Я помню ещё время (1997..1998гг, кажется), когда на офсайте было примечание, что, мол, «мы сами не знаем, как оно расшифровывается». «Personal Home Page» появилось уже позже, видимо, в самом конце 1990-х гг. А рекурсивный акроним родился уже во времена популярности языка, когда оно явно стало больше, чем Home Page :)

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

Любопытно, что в проектах >100 строк, эти величины равны/не равны ЧЕРЕЗ РАЗ.

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

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

Integer a = 127;
Integer b = 127;
Integer c = 128;

при этом a == b, но a != c :)

А про ужасы Си/Си++ для неокрепшего ума я вообще молчу :D

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

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

Демагогию ты умеешь, да.

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

С «каждым языком», ага. Хорошо сравнил, наглядно.

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

Или ты так, демагогию развести? :)

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

Тонкостей может быть на 10 страниц, а может быть — на 250, мелким шрифтом.

Я же говорю, ты разводишь демагогию, заменяя разговор о количестве говна на разговор о «разве есть принцессы, которые не какают?!»

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

сколько ты не нужных вещей перечислил в одном посте.

в смысле?

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

ты разводишь демагогию, заменяя разговор о количестве говна на разговор о «разве есть принцессы, которые не какают?!»

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

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

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

Из всего выше перечисленного - мой выбор - lua.

чтоа?..

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

Видишь ли, ключевой момент заключен в твоей фразе про «нужно их знать, как и в каждом языке».

А каких языков drBatty не знает — это вообще не имеет значения в контексте обсуждения, т.к. ты просто нашел удобную фразу, откуда начать свои рассуждения.

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

Я не знаю других языков, которые обладают такими любопытными свойствами

а как же JavaScript? Особенно в реализации от мазилы

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

В ынтерпрайзе здесь вам не тут. В ынтерпрайзе вас научат надевать сапоги на свежую голову.

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

Лучшая оценка работы рекламщиков - количество пользователей.

так правильнее.

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

Да у тебя целый пост ненужностей собран вместе.

mod_php
eaccelerator
битрикс

белая страница когда апач сегфолтится
апач

конфликтующие экстеншены

возможны очень хитрожопые проблемы (см. топики на хабре)
хабре

убогие средства языка типа «подавить вывод ошибок (@)»

А кто заставляет ЭТО юзать?

продолжает выполнение кода после ошибки

Если ты хочешь то делаешь иначе, руками.

типичные проблемы типа «headers allready sent»

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

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

Ну вот а ты возьми типичный линукс, и установи на него 2-3 самописных приложения на каком нибудь руби.
А потом попробуй без знания руби разобраться, почему оно не работает, или пофиксить.
При том что каждое приложение хочет именно свою версию гемов и руби, а на новой сыплет ошибками и не работает никак.

Тогда проблемы php покажутся приятными и радостными мгновениями.
И да, я не стараюсь сказать что руби чем то хуже php, просто у них текущая ниша применения очень разная.
Чтобы в удобстве разворачивать проекты на python/руби/perl и прочих жалательно иметь как минимум VPS под проект, иначе начинается содомия с окружением.

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

ключевой момент заключен в твоей фразе про «нужно их знать, как и в каждом языке».

У тебя есть сомнения в этом утверждении?

А каких языков drBatty не знает — это вообще не имеет значения в контексте обсуждения

Очень даже имеет. Ибо он речь завёл о сравнении с другими языками. При чём опираясь на неверные знания о PHP.

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

Сказал бы, что в PHP сложные правила сравнения разных типов — я бы согласился.

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

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

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

Ну да, это я пропустил) Просто известная особенность, (Integer)16 == (Integer)16, но (Integer)1024 != (Integer)1024.

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

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

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

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

лисп наверное :-X

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

А ты еще глупее, если считаешь себя ясновидящим.

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

а как же JavaScript?

JavaScript прекрасен, подобно рассвету на горе Фудзи, и столько же непостижим неискушенному в поэзии уму.

var a = [0]
alert(a == a && !a == a)

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

Сравни в php 0, NULL, FALSE, ", и 0.0 - будешь весьма удивлён.

Это ты ещё js не видел. Тоже язычок для вебдевелопинга. Сразу вспоминается анекдот про автоваз и проклятое место.

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

KRoN73

Integer a = 127;
Integer b = 127;
Integer c = 128;

при этом a == b, но a != c :)

что мне хотел сказать К.О.?

KRoN73

А про ужасы Си/Си++ для неокрепшего ума я вообще молчу :D

ужасы php ужаснее. Поверьте.

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

Сразу вспоминается анекдот про автоваз и проклятое место.

Вспомнил. Поржал. Предлагаю устроить в треде вазосрач.

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

лисп наверное :-X

Ну да. И Форт :) Впрочем, не зная, как работает Форт-машина, ты с последним таких граблей наворотишь... С Лиспом, по-моему, тоже.

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

Зачем? О российском автопроме либо хорошо, либо никак.

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

PolarFox

Это ты ещё js не видел. Тоже язычок для вебдевелопинга.

не, видел. Я просто его за язык НЕ считаю. Это что-то типа HTML, который иногда выполняется. Во всех браузерах по разному, и даже в одном и том же - как карта ляжет. Иногда полезен, писать красные !!! тупому юзеру на тупые ответы в real time.

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

ужасы php ужаснее. Поверьте.

Зачем мне верить, когда я на Си/Си++ 7 лет плотно программировал, на PHP — 11 лет? :) Как бы, есть что с чем сравнивать. Можно до кучи сюда же года три на Java. лет пять на Фортах и ассемблерах разных систем. Года три на Perl, много лет (эдак, лет 14), но неактивно и поверхностно на JavaScript.

Поверьте, я могу сравнивать ужасы языков, опираясь на свою практику, а не чужую веру или мнение мэйнстрима :)

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

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

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

На всех платформах по разному, и даже в одном и том же - как карта ляжет

Это фикс про Си :)

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

В Java сравнение для Integers через `==` работает только для диапазона [-128, 127], (если не указано иное в java.lang.Integer.IntegerCache.high) - и то это особенность оптимизации.

Сравнивать нужно через .equals(). Я сильно сомневаюсь, что много кто на этом месте спотыкается, так как в ВУЗ-е это проходили чуть ли не на первом семинаре, да и у Эккеля это в первых главах вроде есть.

Наверное, имелось в виду, что-то вроде этого:

Integer a = 129;
Integer b = 129;
...
a == b // false
a.equals(b) //true

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

Было бы логично, если бы a == b в этом примере давали ворнинг. Или всегда возвращали false, как сравнение двух различных объектов, пусть даже представляющих одинаковые данные.

PS: Java знаю на уровне хелловорлдинга под андроид.

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

На этом можно споткнуться при автобоксинге.

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

А почему PHP?

В смысле, почему я на нём пишу? Смешно, но потому что 11 лет назад выяснилось, что mysql_* функции оного на извлечении килобайтных объёмов текстов из БД работают в 9(!) раз быстрее, чем практикуемый на тот момент Perl/DBI :) Учитывая, что в тот момент это было бутылочное горлышко, я быстро переехал на PHP. А менять его на что-то другое в своих проектах пока просто причин нету. Работает достаточно удобно и эффективно. Предубеждений против любых языков у меня нет, неудобным PHP не считаю, проблем фреймворков нет, так как фреймворк у меня свой :)

Вот в альтернативных проектах — да, бывало. В 2004..2007 на Java много MMORPG программировал, сейчас, вроде, началось шевеление на оживление того проекта, посмотрим... Скрипты системные мелкие до сих пор на Perl пишу иногда. И на Python случается. Делал один проект на Django.

Но основной хлеб (с толстым слоем масла) по многим причинам идёт с PHP и причин для «охоты к перемене мест» пока не вижу :) Как появятся причины — так и поменяю основной язык. Я не фанатик, я даже на QBasic толстые проекты когда-то делал :D

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

С++, ObjC сейчас совсем не такие страшные.

Да, тут ещё важно отметить, что я для десктопа не программирую. Думаю, на десктопе, скорее всего, моим основным языком был бы Python :) Возможно, с Си++ в критических местах. Objective-C — вообще востребован на только на Apple. А современного Си++ я вообще побаиваюсь. Там такого в шаблонах и STL наворотили... Освоить это всё, что за последние лет 15 наворотили — это ж несколько месяцев уйдёт, не меньше... Пока нет целей, которые оправдают такие затраты :)

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