Если бы PHP был британским

Автор оригинала: Dave Child
  • Перевод
image

Когда Расмус Лердорф впервые собрал PHP, он решил, довольно предусмотрительно и невзирая на свои корни, не использовать в нем датский или даже гренландский. Кстати, правильно сделал, иначе было бы крайне неприятно с ним работать. Взамен он, находясь в этот момент в Канаде, выбрал местный язык. Нет, не французский, а именно этот идиотский диалект Королевского Английского, который еще называют «US English».

С тех пор британские разработчики на PHP выказывали свое недовольство по отношению к этому факту. О чем он думал? И, что самое важное, как нам исправить это надругательство? Как нам разработчикам проследить за тем, чтобы традиции Британской Империи соблюдались и в цифровую эпоху?

По наглой рыжей морде

$variable_name
Перво-наперво, и конечно же это и самое главное изменение из всех, что позволит достичь PHP элегантности — это удаление столь любимого в США символа и замена его чем-то более подходящим. Более стойким и … более надежным (прим. пер. тут имеет место игра слов, т.к. sterling — это как фунт стерлингов, так и надежный).
£variable_name

Аббревиатуры

Ничто так не ненавистно британцам, как аббревиатуры. Общение сокращениями — это неслыханно для улиц Лондона, т.к. ни один урожденный грамматик Британии не согласится использовать сокращения для отправки даже текстовых сообщений, таких как «До скор., дорога ОК, Спс, ББ!», а с большим удовольствием отпишет изысканное произведение в духе «Глубокоуважаемый сэр. Я прибуду, настолько быстро, насколько мне позволит это сделать время, а судя по моим наблюдениям — это произойдет примерно через час. Обещаю, что лошади будут скакать всю дорогу без устали и отдыха. С глубочайшим уважением.». Так, конечно, писать дольше, но мы же никуда не торопимся.

PHP же в свою очередь кишит аббревиатурами и акронимами, что совершенно не нужно:
str_replace()
is_int()
var_dump()
preg_match()
json_encode()
mysql_connect()
Следующие изменения должны улучшить ситуацию:
string_replace()
is_integer()
variable_dump()
perform_a_regular_expression_match()
javascript_object_notation_encode()
my_structured_query_language_connect()

Красноречие

if ($condition) {
    // Code here
} else {
    // Code here
}
Шекспир сгорел бы от стыда, если бы узнал, как его язык извратили, превратив в такое уродство. Краткость приветствуется только в правильном контексте, т.е. где-то в очень дальней дали, где ее будет не разглядеть, но не в нашем случае. Блок if … else — самый часто используемый код в PHP, поэтому мы должны сделать его как можно более безобидным. Вариантов его замены тьма-тьмущая, но я предлагаю такой:
perchance (£condition) { (пер. может быть)
    // Code here
} otherwise {            (пер. в противном случае)
    // Code here
}

Произношение

imagecolorallocate()
serialize()
newt_centered_window()
connection_status()
Здесь у меня меня просто не хватает слов. Какой уважающий себя джентльмен будет ожидать, что его поймут, если он так говорит. С трудом верится, что кто-то может настолько исказить слова, используемые в языке программирования. Они будут исправлены на следующие варианты, наравне с бесчисленным множеством схожих ошибок:
imagecolourallocate()
serialise()
newt_centred_window()
connexion_status()

Манеры

try {
    // Code here
} catch (Exception $e) {
    // Handle exception
    die('Message');
}
Удачный пример отсутствия каких-либо манер в PHP — это блок try … catch. Слишком уж прямолинейно для нового PHP. В дополнение ко всему слово «die» (пер. умри) слишком уж депрессивное. Новый же блок является, хотя и излишне многословным, но все же более вежливым и оптимистичным:
would_you_mind {                      (пер. вы не против)
    // Code here
} actually_i_do_mind (Exception £e) { (пер. вообще-то против)
    // Politely move on
    cheerio('Message');               (пер. всего хорошего)
}

Классы

Вероятнее всего, нет ничего более важного и укоренившегося в психологии Британцев, чем классы, и, пока все еще есть такая возможность исправить эту часть PHP, сделать это крайне необходимо:
class Republic {
    public $a;
    private $b;
    protected $c;
}
$example = new Republic;
Начнем с того, что текущая система не предназначена для классовой иерархии, и это неприемлемо. Поэтому мы начнем распределять классы по конкретным уровням: верхний, средний, рабочий, и ни один класс не сможет получить доступа к методам вышестоящего класса без специального разрешения этого класса (и, хотя, он и будет иметь это разрешение, это совершенно не будет уравнивать их, таким образом лишая права передавать эти права каким-либо иным нижестоящим классам). «Публичный» и «Приватный» в Британской классовой системе чаще всего являют собой синонимы (посмотрите, например, на номенклатуру школьного образования), потому они должны быть изменены, как и «Защищенный». Слово «new» (пер. новый), хотя и является допустимым, все же должно быть заменено на более подходящее для классовых вопросов:
upper_class Empire {       (пер. высший_класс)
    state £a;              (пер. общественный)
    private £b;            (пер. частный)
    hereditary £c;         (пер. наследуемый)
}
£example = nouveau Empire; (пер. новый)

Солнце никогда не заходит…

Есть надежда на то, что эти несколько простых изменений изменят репутацию и статус PHP среди других языков. Более он не будет считаться бедным двоюродным братом американцем, вместо этого он сможет занять свое законное место Британского языка — Короля скриптовых языков.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 74

    +49
    Думаю этому больше место в юморе, чем тут
      +20
      Шекспиру понравился бы Objective-C :)
        +2
        В точку. Один из самых многословных языков, на которых я писал. Не то, чтобы это плохо, но забавно. Названия селекторов некоторых методов занимает по пол экрана. Благо с автодополнением все хорошо.
        +17
        Был бы язык программирования для настоящих джентельменов, поел овсянки и давай кодить…
          +2
          и не забыть про five o'clock
            0
            pm или am? Это важно.
              +4
              Зависит от дня недели :)
                0
                зависит от дедлайна :)
                0
                на счет этого англичане в курсе
                0
                Не для рабочего класса же.
              +7
              Совсем другое дело было бы, если бы php был русским, боюсь он не был бы столь вежлив…
                +56
                оптимизация кода будет сводиться к вставлению матерщины перед вызовом функций — «анукаблядь str_replace()» просто обязана отработать быстрее обычной str_replace()
                  +11
                  Или по крайней мере молчать о внутренних проблемах.
                    +1
                    :-D
                    теперь точно псто в юмор перенести
                    +31
                    есть_чо {
                    // Code here
                    } а_если_найду (Exception $e) {
                    // Handle exception
                    внатуре('Message');
                    }
                      +1
                      Вариант для заядлых быдлокодеров?
                    +2
                    хватитит уже одной известной русскоязычной поделки в продуктах 1С…
                      +2
                      Чем вас не устраивает «поделка»? Только личным полным незнанием вопроса?
                      Взглянул бы я как обзывали переменную ИтоговоеСубконтоЗабалансовогоСчётаОС на английски, а потом его переводили обратно :).
                      з.ы. хотя, в 1С можете писать и на языке Шекспира, в платформе зарезервированы 2-язычные синонимы для всех конструкций.
                    +9
                    А где можно купить такого слона? :)
                      +3
                      Это ElePHPant. Он не продается, а вся информация, что существует тут.
                        +21
                        а как же эта фотка?
                          +6
                          Интересно, эта девушка вообще знает, что такое PHP?
                            +3
                            Я сомневаюсь, что меня интересовал PHP рядом с ней. :))
                              +1
                              Я бы не был на столько опрометчив.
                              –2
                              Нет.
                              0
                              У слоника аж глазки в кучу:))
                              0
                              Нашёл страничку заказа php-слоника, но не могу заказать, потому как не даёт выбрать метод оплаты. :-(
                            +12
                            Надо было слонику прифотошопить монокль и цилиндр.
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                в википедии говорится, что купили права на съёмку русской версии… кто знает когда смотреть можно будет??
                                • НЛО прилетело и опубликовало эту надпись здесь
                                –12
                                faepalm.php
                                  –12
                                  facepalm*
                                  +2
                                  Можно написать простенький транслятор который переводит ключевые слова на любой язык мира и обратно в оригинальный.

                                  Думаю опреденной аудитории бы приятно писать например на имперском или латыни…
                                    0
                                    Имперском?
                                      +1
                                      Возможно, имелся в виду мицгольский.
                                        0
                                        А… ну на латыни было бы интересно пописать :) Не на переводе конечно ПХП на латынь, а на ПХП с грамматикой латыни :)
                                    +3
                                    Даааа...)
                                    Со всеми этими американскими color и center совсем отвык от правильных британских colour и centre.
                                    Первое время постоянно писал такие слова в кодде именно по-британски, т.к. учил клссический английский 14 лет ))
                                      0
                                      Писал тут реализацию протокола по британской спеке, теперь в части непосредственно связанной с протоколом, везде colour, а в остальной части (рисование) — color. Хотел было попереименовывать, но сломался на том какой из вариантов выбрать в качестве окончательного :).
                                      0
                                      А я бы покодил на таком PHP =)
                                        +2
                                        Почему-то вспоминается 1С…
                                          +3
                                          perform_a_regular_expression_match() — чепуха; на самом деле первая буква в сокращении «preg» происходит от «Perl».
                                            0
                                            a_perl_compatible_regular_expression_mathc()?
                                              +1
                                              MySQL тоже некорректно переводить как my structured query language, ибо MySQL -это СУБД, а не язык. Вообще, MySQL — это название продукта, а не аббревиатура, которую можно расшифровать.
                                                +3
                                                Perform a regular expression match это пояснение на php.net к тому, чем занимается функция preg_match, а не попытка расшифровки preg_*

                                                А preg_ это скорее PCRE Regular Expression *** (не знаю, что есть g, может grow from :) )
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                    –1
                                                    как вариант
                                                    +1
                                                    >Perform a regular expression match

                                                    а preg_last_error тогда получается «Perform a regular expression last error»? :)
                                                      +3
                                                      C учётом того, что PCRE расшифровывается как «Perl Compatible Regular Expressions», то вы написали «Perl Compatible Regular Expressions Regular Expressions».
                                                    +5
                                                    Вы что! Perl — это аббревиатура, это неприемлемо!
                                                      0
                                                      обычно для обозначения Perl-совместимых регулярных выражений всё-таки используют аббревиатуру PCRE
                                                        0
                                                        В PHP все функции, работающие с Perl-совместимыми регулярными выражениями, имеют префикс preg: www.php.net/manual/en/ref.pcre.php
                                                        +3
                                                        В таком случае, получится practical_extraction_and_report_language_regular_expression_match().
                                                        +12
                                                        >hereditary £c; (пер. наследуемый)
                                                        а вот это вместо protected я считаю гениальным. аккурат переносит смысл
                                                          +1
                                                          Смех смехом, но в PHP с наименованием функций полный зоопарк, никакой системы. В str_replace нижнее подчеркивание есть, в strpos нет и т.п. Без документации не обойтись. В этом плане objective-C намного приятней, несмотря на многословность.
                                                            +6
                                                            В этом плане многие языки приятней
                                                              0
                                                              Это да. Но даже на Obj-C, который считается одним из самых многословных, и редко какая статья по которому обходится без комментариев про «ужасный синтаксис и мерзкие скобочки», даже на нём программировать приятней.
                                                                0
                                                                Тут надо разделять: ObjC — страшный язык, Cocoa — прекрасный фреймворк.
                                                              0
                                                              Название фукнции strpos() и других подобных, полагаю, заимствовано напрямую из Си. Переименовывать не стали для удобства.
                                                                0
                                                                Возможно, так и было (хотя функции strpos в ANSI C нет). Но в результате получился зоопарк. addslashes, html_entity_decode, htmlspecialchars_decode. Брр… Уже почти 3 года как на PHP не программирую, а отрицательные эмоции от именования функций до сих пор остались. :)
                                                              0
                                                              При виде ключевого слова otherwise, сразу вспомнился XSLT, да есть в нем что-то английское.
                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                +2
                                                                В этот хмурый дождливый вечер, взирал с упоением на то, что Хабрапарсер отнесся с достаточным почтением к новому изложению известного языка программирования.
                                                                  +1
                                                                  Джентльмену стоит пообщаться с выходцами из наших бывших колоний, что понять всю бесполезность данной затеи. Но думаю имеет смысл продолжать дальнейшие исследование в данном направлении.
                                                                  :)
                                                                    +1
                                                                    £variable_name

                                                                    Кстати, Larry Wall в качестве первоапрельской шутки предлагал в Perl 6 вместо $ использовать €
                                                                    www.nntp.perl.org/group/perl.perl6.language/2006/04/msg24898.html
                                                                      0
                                                                      is_integer() уже добавили :)
                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                          0
                                                                          за 3 дня -106 кармы… да, это надо уметь. Вас, батенька, надо в анналы.
                                                                          +1
                                                                          Ничто так не ненавистно британцам, как аббревиатуры.


                                                                          Да, но как бы они тогда называли сам язык?
                                                                            +1
                                                                            Удивительно, что никто не упомянул: в PHP неожиданно встречаются фрагменты на иврите.
                                                                            The PHP lexical analyzer gives this token the cryptic name T_PAAMAYIM_NEKUDOTAYIM. It might as well have been written in Hebrew. Wait, it is written in Hebrew. That name means «double colon».
                                                                            www.php.net/manual/en/keyword.paamayim-nekudotayim.php#69537

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

                                                                            Самое читаемое