Сегодня день рождения создателя PHP, Расмуса Лердорфа (дат. Rasmus Lerdorf). Хочу представить вашему вниманию несколько фактов из его биографии и парочку цитат, чтобы понять ход мысли и мировоззрение этого «программиста».

В 1994 году Расмус запилил набор скриптов на Perl/CGI, обрабатывающих шаблоны HTML-документов, позже воплотившийся в интерпретатор языка программирования PHP, с помощью которого можно было решать различные задачи веб-приложений.

image

«Тот PHP который мы знаем сейчас — совсем не то, что я сделал в самом начале. Десятки, если не сотни людей принимали участие в разработке. Я был просто первым разработчиком.»

«PHP как зубная щетка. Вы пользуетесь ей каждый день, она выполняет свою работу, простой инструмент. Что вы хотите знать про зубные щетки?»

Ещё в университете, Лердорф разрабатывал графические интерфейсы для всяких корпораций. После окончания учёбы нанялся в компанию Nutec Informatica, прогал под UNIX/DOS и участвовал в разработке интерфейса Nutec Desktop. В 1994-м году Лердорф создал графический интерфейс для Toronto Internet Service Provider. В том же году, Расмус создал собственную компанию Lerdorf Consultants Inc.

image

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

«Есть люди, которые любят программировать. Я их не понимаю.»

«Я не настоящий программист. Я просто соединил вместе вещи, которые работали. Настоящий программист бы сказал: „Это работает, но тут утечки памяти на каждом шаге. Нужно пофиксить.“ А я вот просто перезагружаю Apache через каждые 10 запросов.»

В 1994 в сети появился скрипт, написанный Лердорфом и названный «PHP-Tools for Personal Home Page», который собирал статистику о посещении веб-страницы. Именно его можно считать началом зарождения PHP. Скрипт имел открытый код и Расмус Лердорф собирал отзывы пользователей, обрабатывал комментарии и ошибки, расширяя и улучшая собственную разработку.

image

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

«Для тех кто записывает мои цитаты: Я ужасный кодер, но скорее всего лучше чем вы:)»

«Я никогда не считал PHP чем то большим, чем просто инструментом для решения задач.»

С 2002-го года и до 2009-го Лердорф работал в Yahoo! Inc. Будучи ярым приверженцем open source, Лердорф держит связь со многими программистами PHP, с каждым днём улучшая и модифицируя собственное детище. Он также является автором более пятнадцати книг по языку PHP.

image

«PHP очень редко является самым слабым звеном.»

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

«PHP — это молоток. Никто не разбогател на производстве молотков.»

image

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

image

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

Расмус активно выступает на open source конференциях и консультирует стартапы.

С днем рождения, Расмус Ледорф!

Поддержка публикации — компания Edison, которая разрабатывает оповещалку для трейдеров, а так же делает систему учета энергоресурсов и водоснабжения для коттеджного поселка.
Поделиться с друзьями
-->

Комментарии (48)


  1. insanustu
    22.11.2016 15:37
    +12

    Т.е. у PHP изначально не было ни единого шанса?


    1. vshemarov
      22.11.2016 15:44
      +4

      Как у языка — не было. Но он, ..., выжил!


    1. jrip
      22.11.2016 19:05

      Шанс стать молотком которым нельзя отбить пальцы?



  1. marenkov
    22.11.2016 15:44
    +6

    Весь прикол в том, что PHP стал популярен благодаря двум вещам:
    — работа в качестве модуля Apache (быстрее, чем каждый раз запускать интерпретатор);
    — возможность вставлять код прамо в HTML (после Perl, в котором надо было начитать с написания HTTP-заголовков, это казалось очень даже не плохо).
    И именно их сейчас почти никто не использует (второе некоторые начинающие пытаются, но получает линейкой по рукам от старших товарищей).


    1. maniacscientist
      22.11.2016 17:45
      +6

      Вставлять код «прямо в HTML» — в этом нет ничего плохого. Плохо — когда там вместо viewModel оказывается обращение к базе и прочая бизнес логика.


      1. mpakep
        23.11.2016 11:17
        -3

        Вы просто не умеете их готовить. Бизнес логика прямо в хтмл вполне себе решение, при условии что вы его понимаете и умеете использовать.


      1. marenkov
        23.11.2016 12:01

        Когда PHP используется в качестве шаблонизатора, что нормально, тогда да, PHP-код внутри HTML — это совершенно нормально.


    1. jrip
      22.11.2016 19:12
      +3

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


      1. avost
        23.11.2016 05:34
        -1

        Парсить руками тоже не надо было, был модуль CGI, хотя и его использование не отличалось особой простотой. А вот шаблонизаторы были не слишком простыми. И товарищ этот говорил поначалу, что пёрл был для него слишком сложен, поэтому то, что он не осилил он выкинул, а остальное запихал прямо в шаблонизатор. За это говорят и бессмысленные доллары перед переменными — человек не понял зачем в перле префиксы и просто скопипастил один из них :).


        1. Pilat
          23.11.2016 06:51
          +1

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


          1. avost
            23.11.2016 07:31

            Судя по статье и его сумбурным высказываниям, он до сих пор не очень это понимает :). Тут, как говориться, — «я сам в шоке» ;)
            Ну, а вы как думаете, зачем он эти бессмысленные доллары притащил? Префиксы ужасны и в перле, но там они хоть семантическую нагрузку имеют. Прямо таки, взял худшее и выкинул из него лучшее :)


            1. Pilat
              23.11.2016 08:12
              +1

              Это вопрос вкуса. Мне префиксы нравятся, например. А сумбурность высказываний — попробуйте собрать несколько высказываний за десятилетия для любого человека.


              1. avost
                23.11.2016 08:53
                -1

                Вкус, так вкус. Но, всё-таки, нравятся, чтобы что? ;)


      1. ShNURoK42
        23.11.2016 10:43

        С perl не работал, просто вопрос, а разве эти недостатки не вопрос библиотеки или модуля к perl. Как сейчас например никто в чистом виде не общается с базой, а использует библиотеки ORM и т.д.
        То есть если проводить аналогию, если сейчас создать язык который в себе имеет функционал работы с БД, то он выстрелит? Но опять же, есть pdo. Или я неправильно понял суть.


        1. jrip
          23.11.2016 11:02
          +1

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

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

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

          Ну т.е. с одной стороны как бы одно и тоже, есть либы, все такое, но как в том анекдоте — есть один нюанс.


        1. avost
          23.11.2016 12:16

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

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

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


          1. jrip
            23.11.2016 19:29

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

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


            1. ainoneko
              24.11.2016 04:29

              в целом нужно было написать вначале файла две строчки магические

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


              1. jrip
                24.11.2016 15:44

                >там ещё были трое граблей, на которые было легко наступить
                Ну так да, сначала гуглишь первый пример, потом гуглишь вопрос почему первый пример не работает :) Хотя, тут подумалось, наверное половина уже после первого шага уже пошла в пхп :)
                Но в целом я видел на перле, примерно такую же смесь html с кодом.


            1. avost
              24.11.2016 12:36

              Да нифига, в целом нужно было написать вначале файла две строчки магические (которые были как раз заголовками) а далее 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» и всё.

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


  1. SibWeb
    22.11.2016 16:12
    +3

    С днем рождения, папочка!


  1. akubintsev
    22.11.2016 17:41
    +7

    С ДР Расмус. Спасибо за молоток!


  1. lookid
    22.11.2016 17:47
    -11

    Это вполне ожидаемо. Программирование не решает проблемы наемного рабства и рабства в принципе. Да, зарплаты больше, фриланс и прочее. Но если начальник хочет миллиард, он его добудет. И если не ты это сделаешь для него, то он наймет другого.


  1. Goodkat
    22.11.2016 19:41
    +14

    «Я не настоящий программист. Я просто соединил вместе вещи, которые работали. Настоящий программист бы сказал: „Это работает, но тут утечки памяти на каждом шаге. Нужно пофиксить.“ А я вот просто перезагружаю Apache через каждые 10 запросов.»
    Ну раз уж Создатель языка так завещал, то какой с нас-то спрос? :)


  1. teemour
    22.11.2016 19:56
    +4

    я так и думал


  1. valemak
    22.11.2016 20:19
    -1

    Я очень ленивый и поэтому обожаю PHP :)


  1. Reuniko
    22.11.2016 23:21
    +3

    PHP7 — торт.


  1. kemiisto
    23.11.2016 00:00
    +4

    Бывают же и честные датские создатели языков программирования. :D А ведь есть среди них и те, которые якобы действительно руководствовались целью спроектировать язык программирования, но получился С++. :| Но да не будем о грустном, тем более оффтоп…

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


  1. Express777
    23.11.2016 00:00
    +1

    Коротковата статья. Чего не хватает… Может легенд о создании PHP?


  1. Skit25
    23.11.2016 10:44
    +1

    Расмус, красавчик!
    именно так я его и представлял. Пойду посмотрю, что за книги он написал…


  1. Standfest
    23.11.2016 13:01
    +1

    Благодоря Расмусу, у нас очень легко появилась работа лет 10-13 назад))


  1. dmitry_ch
    23.11.2016 18:21

    Читаю, прямо одно к одному:

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


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


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


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


  1. Acuna
    24.11.2016 04:41

    Очевидно, что никто не написал это, боясь быть заминусованным. Их страхи понятны, однако если мне нравится 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 весьма подпорчена, в основном из-за этих самых школьников, о которых я говорил выше, и понятно, что аудитория много говорит о самом языке. Эти школьники уже давно выросли, многие из них и вовсе оставили программирование, однако пройдут годы, пока его репутация будет восстановлена, и я не уверен, будет ли вообще… Однако, как мне кажется, это весьма не справедливо.

    Я не претендую на истину в последней инстанции, я просто изложил виденье его мною, может я и заблуждаюсь, почему нет?


    1. stokker
      24.11.2016 08:27

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


    1. Al1
      24.11.2016 14:48

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

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

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


      1. Acuna
        24.11.2016 18:53

        Это так, благодарю за краткую выдержку, даже самому интересно стало))) Соглашусь, вполне возможно, что ругают не за это, я вкратце прошелся и по этому тоже, совсем кратенько, возможно статью все-таки написать нужно будет, не ожидал, что эта тема окажется настолько всеобьемлющей. Считаю, что большей частью это его бэкэнд и возраст его разрабов, так сказать. Посмотрел на Вики раздел языков с динамической типизацией, и оказался, мягко говоря, в шоке. В подкатегориях четыре языка: Лисп, Лого, Перл и Раби. В самих категориях вообще что-то нечленораздельное. Только JS и Python заметил. PHP и вовсе не увидел (!). Судя по всему, эту тему обходят стороной, но ведь должна быть какая-то причина этому? После десяти лет программирования я как-будто бы заново открываю для себя мир. Дожили)


  1. imgen
    24.11.2016 15:11

    то же самое, не вижу разницы

    function str_sum ($num) {
      $output = 0;
      foreach($num as $key => $value)
             $output += $value;
      return $output;
    }
    
    


    Было адресовано для этого комментария


    1. Al1
      24.11.2016 17:16

      В моем примере num — строка, как и в комменте, на который я отвечал. А у Вас $num — это php-массив?


      1. imgen
        24.11.2016 18:38

        да, то массив. Хотите сказать, что питон сам превратит строку в массив в вашем примере и не нужно делать
        num = List num
        ?


        1. Al1
          24.11.2016 19:24

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


    1. Acuna
      24.11.2016 18:34

      del


    1. Acuna
      24.11.2016 18:42

      Соглашусь с комментатором выше: Вы действительно работаете со строкой как с массивом. Компилятор выдаст ошибку на foreach. Однако в строке можно обратиться к любому ее символу по его ключу с нуля подобно массиву, чем она правда не является, это просто аналогия. Честно признаться, я специально предварительно прогнал ее значение через str_split () чтобы не было вопросов как это числовая переменная вдруг стала массивом. Можно обойтись и вовсе без нее, тогда переменная $num в цикле будет иметь вид $num[$i], это еще минус строка.


      1. imgen
        25.11.2016 09:39

        действительно, неплохой вариант. Но это лишь особенности приведения типов или хранения строк. Поэтому основная конструкция вполне себе сопоставима с кодом на питоне.


        1. Acuna
          27.11.2016 02:01

          Да, вещь интересная, жаль малоизвестная. И вся ее прелесть в том, что работает и на utf-8. Еще конкретно по примеру — у кого вдруг имеются проблемы с циклами — его можно записать в виде foreach (range (0, count ($num)) as $i), то есть «диапазон от и до». Нагляднее некуда!) А?) Ну ведь песня же!) Ну и из мелких нюансов — например в инкременте плюсы над ставить вначале, это в среднем быстрее. Остальное в тему нужно вспоминать, сейчас увы не могу ничего с ходу предложить…


  1. M-A-XG
    24.11.2016 21:56

    Чем мне понравился php в далеком 2008 году, так тем, что не нужно было объявлять переменные, париться с их типами.

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

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

    Возможность писать код в html тоже понравилась.


    1. ls18
      28.11.2016 10:10
      +1

      Неужели так сложно объявлять переменные и их типы?


      1. M-A-XG
        01.12.2016 14:14

        Если можно об этом даже не думать, то почему бы и нет? :)

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

        Ну и это был 2008 год, я был совсем юн. :)