Pull to refresh

Comments 48

Т.е. у PHP изначально не было ни единого шанса?
Как у языка — не было. Но он, ..., выжил!
Шанс стать молотком которым нельзя отбить пальцы?
Весь прикол в том, что PHP стал популярен благодаря двум вещам:
— работа в качестве модуля Apache (быстрее, чем каждый раз запускать интерпретатор);
— возможность вставлять код прамо в HTML (после Perl, в котором надо было начитать с написания HTTP-заголовков, это казалось очень даже не плохо).
И именно их сейчас почти никто не использует (второе некоторые начинающие пытаются, но получает линейкой по рукам от старших товарищей).
Вставлять код «прямо в HTML» — в этом нет ничего плохого. Плохо — когда там вместо viewModel оказывается обращение к базе и прочая бизнес логика.
Вы просто не умеете их готовить. Бизнес логика прямо в хтмл вполне себе решение, при условии что вы его понимаете и умеете использовать.
Когда PHP используется в качестве шаблонизатора, что нормально, тогда да, PHP-код внутри HTML — это совершенно нормально.
Вообщем-то не совсем так.
— перл модуль как бы тоже был.
— главная фишка, имхо, была в том, что в чистом перле по сути надо было руками парсить тело запросов, что и сейчас далеко не каждого обрадует, чистый пхп же и пост и гет запросы заворачивал в дружелюбные массивы.
Парсить руками тоже не надо было, был модуль CGI, хотя и его использование не отличалось особой простотой. А вот шаблонизаторы были не слишком простыми. И товарищ этот говорил поначалу, что пёрл был для него слишком сложен, поэтому то, что он не осилил он выкинул, а остальное запихал прямо в шаблонизатор. За это говорят и бессмысленные доллары перед переменными — человек не понял зачем в перле префиксы и просто скопипастил один из них :).
Ну да, а написать на перле шаблонизатор как-то хватило у него сил. А понять зачем доллары — нет.
Судя по статье и его сумбурным высказываниям, он до сих пор не очень это понимает :). Тут, как говориться, — «я сам в шоке» ;)
Ну, а вы как думаете, зачем он эти бессмысленные доллары притащил? Префиксы ужасны и в перле, но там они хоть семантическую нагрузку имеют. Прямо таки, взял худшее и выкинул из него лучшее :)
Это вопрос вкуса. Мне префиксы нравятся, например. А сумбурность высказываний — попробуйте собрать несколько высказываний за десятилетия для любого человека.
Вкус, так вкус. Но, всё-таки, нравятся, чтобы что? ;)
С perl не работал, просто вопрос, а разве эти недостатки не вопрос библиотеки или модуля к perl. Как сейчас например никто в чистом виде не общается с базой, а использует библиотеки ORM и т.д.
То есть если проводить аналогию, если сейчас создать язык который в себе имеет функционал работы с БД, то он выстрелит? Но опять же, есть pdo. Или я неправильно понял суть.
В то время было все совсем по-другому, скажем так веб был совсем другой, как таковых веб-программистов то даже в целом не было, оно называлось тогда вебмастер у нас. Ну и собственно как это было: захотел некий человек, возможно даже знакомый с программированием сделать сайт, причем не просто сайт а Интерактивный сайт :)

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

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

Ну т.е. с одной стороны как бы одно и тоже, есть либы, все такое, но как в том анекдоте — есть один нюанс.
Да не, пхп выстрелил исключительно из-за возможности писать код прямо в шаблонизаторе (на страничке).
На перле была традиционная программа в которой надо было или самому распарсить заголовки или подключить и инициализировать модуль cgi, потом достать оттуда данные, что-то с ними сделать, а потом вручную или внешним шаблонизатором со своим синтаксисом сформировать страницу, заполнить заголовки и отдать на вывод. Это тоже нормальный путь, особенно для больших проектов со сложным роутингом, но тогда была огромная потребность в маленьких относительно проектах (а пхп тогда был — персонал хоум пейдж) и пхп тут рулил значительно сильнее перла. Кстати, процесс небыл таким уж быстрым и резким. Имеющимся «вебмастерам» пхп не был особо нужен — у них уже был перл, язык гораздо более мощный, и на персонал хоум пейдж смотрели поначалу скорее как на игрушку.

>о есть если проводить аналогию, если сейчас создать язык который в себе имеет функционал работы с БД, то он выстрелит?

А это уже было. В этой области, когда была такая потребность, в своё время выстрелил акцесс. На текущий момент особой потребности в этом нет, поэтому не выстрелит.
Но есть, например, потребность в обработке данных и сейчас «выстреливает» язык R.
>что-то с ними сделать, а потом вручную или внешним шаблонизатором со своим синтаксисом >сформировать страницу, заполнить заголовки и отдать на вывод.
Да нифига, в целом нужно было написать вначале файла две строчки магические (которые были как раз заголовками) а далее print и поехала html страничка, такие примеры валялись везде, но вот дальше начинались проблемы.

И если на пхп форумах можно было встретить себеподобных и радостно обсуждать всю ночь вопросы жизни разницы между print, echo и всё такое, то на perl форумах на любой вопрос отвечали, в лучшем случае «man neponyatnaya_liba_kotoruyu_hren_ustanovish» и всё.
в целом нужно было написать вначале файла две строчки магические

Кроме заголовков там ещё были трое граблей, на которые было легко наступить (иначе вообще всё не работало, а сообщение об ошибке для начинающего ничего не говорило):
  1. правильный путь к perl в самой первой строчке,
  2. файл сохранён с «правильными концами строк»,
  3. правильные права доступа к файлу.
>там ещё были трое граблей, на которые было легко наступить
Ну так да, сначала гуглишь первый пример, потом гуглишь вопрос почему первый пример не работает :) Хотя, тут подумалось, наверное половина уже после первого шага уже пошла в пхп :)
Но в целом я видел на перле, примерно такую же смесь html с кодом.
Да нифига, в целом нужно было написать вначале файла две строчки магические (которые были как раз заголовками) а далее print и поехала html страничка, такие примеры валялись везде, но вот дальше начинались проблемы.

Вы имеете в виду такой хелловорлд?


#!/usr/bin/perl
print "Content-type:text/html\r\n\r\n";
print '<html><head><title>Hello Word - First CGI Program</title></head>';
print '<body><h2>Hello Word! This is my first CGI program</h2></body></html>';

Не, это слишком просто и не интересно. Я про библиотеку cgi. Как-то так:


#!/usr/bin/perl
  use CGI qw/:standard/;
  print header(),
    start_html(-title=>'Hello!'),
    h1('Hello!'),
    'Hello, world!',
    end_html();

А с обработкой параметров ещё больше гитик.


то на perl форумах на любой вопрос отвечали, в лучшем случае «man neponyatnaya_liba_kotoruyu_hren_ustanovish» и всё.

:) Ну, да, суровые бородатые вебмастера в свитерах. Зачем же их отвлекать на всякую фигню :).

Это вполне ожидаемо. Программирование не решает проблемы наемного рабства и рабства в принципе. Да, зарплаты больше, фриланс и прочее. Но если начальник хочет миллиард, он его добудет. И если не ты это сделаешь для него, то он наймет другого.
«Я не настоящий программист. Я просто соединил вместе вещи, которые работали. Настоящий программист бы сказал: „Это работает, но тут утечки памяти на каждом шаге. Нужно пофиксить.“ А я вот просто перезагружаю Apache через каждые 10 запросов.»
Ну раз уж Создатель языка так завещал, то какой с нас-то спрос? :)
Я очень ленивый и поэтому обожаю PHP :)
Бывают же и честные датские создатели языков программирования. :D А ведь есть среди них и те, которые якобы действительно руководствовались целью спроектировать язык программирования, но получился С++. :| Но да не будем о грустном, тем более оффтоп…

P.S. Не знал, что у истоков PHP стоял датчанин. Популярная, выходит, у датчан профессия языки программирования создавать. :) Помимо двух упомянутых сходу ещё Хейлсберга могу вспомнить, ну и может там ещё кто был.
Коротковата статья. Чего не хватает… Может легенд о создании PHP?
Расмус, красавчик!
именно так я его и представлял. Пойду посмотрю, что за книги он написал…
Читаю, прямо одно к одному:

«Я очень очень плохо писал парсеры. Я до сих пор хреново пишу парсеры.»


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


Расмус разговаривает о безопасности с разработчиками Joomla в 2007.


P.S. Что характерно, никто громко не обсуждает Suhosin и прочие костыльные, но решения для увеличения безопасности. А ведь цитаты его авторов, думаю, сюда бы неплохо подошли, наверняка там будет что-то вроде "… а когда мы посмотрели внутрь кода..." и прочие признаки «удивления».
Очевидно, что никто не написал это, боясь быть заминусованным. Их страхи понятны, однако если мне нравится PHP, и я ниже напишу почему, то что решат эти минусы? Он перестанет мне нравиться, или я даже уволюсь с места, на котором я работаю, в числе всего прочего, и потому, что мне очень нравится этот язык, а не потому, что я больше ни на чем писать не умею, ибо изучил PHP когда был школьником, чтобы писать скрипты для серверов на хостинге, купленном на сэкономленные от завтраков деньги?

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

PHP невероятно логичен, первый пришедший в голову пример — программа, которая считает сумму всех чисел в строке. Чисто гипотетическая задача, который я помогал решать ребенку в школе (на Паскале):

function str_sum ($num) {
  
  $num = str_split ($num);
  
  $output = 0;
  for ($i = 0; $i < sizeof ($num); ++$i)
  $output += $num[$i];
  
  return $output;
  
}

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

Да, на многих других языках все будет выглядеть примерно так же, однако отсюда проистекает и иной довод: типизация. Ведь это потрясающе! Взять тот же пример. Я писал его просто наслаждаясь тем, что всю грязную работу берет на себя PHP. Я создал переменную, введя в нее числовое значение. Ну естественно я в дальнейшем буду работать с ней как с числом, зачем при ее инициализации мне тыкать пальцем, что эта переменная имеет числовое значение? Это что, массив, если ее значение — число? Или она вдруг с какой-то стати станет массивом? Дак ведь при операциях с несочетаемыми типами данных PHP об этом честно сообщает. Та же переменная $output. Если я ее создал, присвоив ей числовое значение и работаю с ней как с числом, дак с какого перепугу, вдруг обработав ее каким-либо образом, функция вернет строку, если все время я работал с ней как с числом, соответственно число ею и возвращается? Я понимаю, что строгая типизация введена весьма задолго до сред программирования, которые сообщают что и где не так, однако сейчас они есть, а для того же PHP c этой ролью прекрасно справляется браузер. Многие задачи выполняются на нем гораздо проще, чем в других ЯП, зачастую он требует заметно меньшего количества кода, и так далее. Ну а сам его код может быть переписан, это ли проблема… Я бы переписал, да. Хотя и в PHP 7 очень многое для этого сделано, А функции mb_* из коробки для работы с юникодом, с которым, как считают многие, он работать не умеет, огромное комьюнити и весьма активная разработка — очевидные вещи, с которыми, я уверен, спорить никто не будет — являются еще одним веским аргументом.

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

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

И так далее. Писать можно много, но мне кажется основную суть я изложил. Репутация PHP весьма подпорчена, в основном из-за этих самых школьников, о которых я говорил выше, и понятно, что аудитория много говорит о самом языке. Эти школьники уже давно выросли, многие из них и вовсе оставили программирование, однако пройдут годы, пока его репутация будет восстановлена, и я не уверен, будет ли вообще… Однако, как мне кажется, это весьма не справедливо.

Я не претендую на истину в последней инстанции, я просто изложил виденье его мною, может я и заблуждаюсь, почему нет?
PHP живет долго потому, что сейчас вообще нет нормального языка для веба, везде свои подводные камни, никто не знает, куда идет бэкенд. Так что грех ругать только PHP…
Основное преимущество PHP исходя из Вашего комментария заключается в динамической типизации. А весь посыл заключается в том, что языки с динамической типизацией (в лице PHP) удобнее по сравнению со статической. Думаю, PHP ругают не за это.

Тот же код на Python больше похож на песню.

def str_sum(num):
    output = 0
    for i in num:
        output += int(i)

    return output
Это так, благодарю за краткую выдержку, даже самому интересно стало))) Соглашусь, вполне возможно, что ругают не за это, я вкратце прошелся и по этому тоже, совсем кратенько, возможно статью все-таки написать нужно будет, не ожидал, что эта тема окажется настолько всеобьемлющей. Считаю, что большей частью это его бэкэнд и возраст его разрабов, так сказать. Посмотрел на Вики раздел языков с динамической типизацией, и оказался, мягко говоря, в шоке. В подкатегориях четыре языка: Лисп, Лого, Перл и Раби. В самих категориях вообще что-то нечленораздельное. Только JS и Python заметил. PHP и вовсе не увидел (!). Судя по всему, эту тему обходят стороной, но ведь должна быть какая-то причина этому? После десяти лет программирования я как-будто бы заново открываю для себя мир. Дожили)
В моем примере num — строка, как и в комменте, на который я отвечал. А у Вас $num — это php-массив?
да, то массив. Хотите сказать, что питон сам превратит строку в массив в вашем примере и не нужно делать
num = List num
?
Да, преобразовывать строку в список в питоне не нужно для того чтобы пройтись по ней циклом.
Соглашусь с комментатором выше: Вы действительно работаете со строкой как с массивом. Компилятор выдаст ошибку на foreach. Однако в строке можно обратиться к любому ее символу по его ключу с нуля подобно массиву, чем она правда не является, это просто аналогия. Честно признаться, я специально предварительно прогнал ее значение через str_split () чтобы не было вопросов как это числовая переменная вдруг стала массивом. Можно обойтись и вовсе без нее, тогда переменная $num в цикле будет иметь вид $num[$i], это еще минус строка.
действительно, неплохой вариант. Но это лишь особенности приведения типов или хранения строк. Поэтому основная конструкция вполне себе сопоставима с кодом на питоне.
Да, вещь интересная, жаль малоизвестная. И вся ее прелесть в том, что работает и на utf-8. Еще конкретно по примеру — у кого вдруг имеются проблемы с циклами — его можно записать в виде foreach (range (0, count ($num)) as $i), то есть «диапазон от и до». Нагляднее некуда!) А?) Ну ведь песня же!) Ну и из мелких нюансов — например в инкременте плюсы над ставить вначале, это в среднем быстрее. Остальное в тему нужно вспоминать, сейчас увы не могу ничего с ходу предложить…
Чем мне понравился php в далеком 2008 году, так тем, что не нужно было объявлять переменные, париться с их типами.

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

Сайт обрастал кодом постепенно, сначала это были просто статические страницы.

Возможность писать код в html тоже понравилась.
Неужели так сложно объявлять переменные и их типы?
Если можно об этом даже не думать, то почему бы и нет? :)

Хотите, объявляйте.

Ну и это был 2008 год, я был совсем юн. :)
Sign up to leave a comment.