Новый язык поверх PHP? - PullRequest
52 голосов
/ 15 января 2011

Я разработчик PHP. Мне нравится PHP! Это действительно хороший язык, если вы знаете, как его использовать, но я знаю, что он допускает очень плохой дизайн иногда.

Это напоминает мне JavaScript, который имеет хорошие и плохие части. Один конкретный проект, CoffeeScript, пытается сосредоточиться только на хороших частях, вынуждая вас писать хороший код.

Я думал, можно ли что-то подобное сделать с PHP ... Новый синтаксис, который будет скомпилирован только для хорошего кода PHP, с учетом всех новых и интересных вещей, которые мы можем получить с помощью PHP 5.3.

Итак, опередив некоторых людей, я спрошу: Зачем создавать новый язык поверх PHP, если вы можете просто использовать Ruby или Python или что-то еще?

  • PHP прост в развертывании в любом месте
  • В самом языке много полезных функций и идей
  • Есть много хороших библиотек, написанных на PHP
  • ...

Итак, мои настоящие вопросы здесь ...

  • Это глупая идея? С чего бы это? Как вы думаете, CoffeeScript глупо?
  • Как кто-то начинает создавать новый язык поверх другого? Я ничего не знаю об этом, но я хотел бы узнать. С чего начать?

Ответы [ 12 ]

13 голосов
/ 15 января 2011

Идея определенно не глупая, особенно если она выполнена хорошо.

Мне очень нравится coffeescript, но у этого подхода есть и недостатки.Отладка сценария coffeescript все еще требует, чтобы вы прочитали сгенерированный код Javascript, что может быть утомительно, поскольку вы на самом деле не написали его сами.

Я понял, что Джереми Ашкенас, создатель coffeescript, начал работать над coffeescript после прочтения «Создайте свой собственный потрясающий язык программирования» Марка-Андре Курнойера .

Удачи!

10 голосов
/ 15 января 2011

Причина, по которой CoffeScript является хорошей идеей, заключается в том, что если разработчики хотят запускать код в клиентском браузере, они имеют для использования javascript;поэтому единственный способ программировать на другом языке - позволить этому языку быть преобразованным в javascript.

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

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

3 голосов
/ 30 сентября 2013

Это здесь и сейчас. новый язык , который для PHP является тем же, что CoffeeScript для Javascript.(Т.е., круто.)

SNOWSCRIPT

Код Snowscript выглядит так:

fn how_big_is_it(number)
    if number < 100
        <- "small"
    else
        <- "big"

Вывод PHP выглядит следующим образом:

function how_big_is_it($number) {
    if ($number < 100) {
        return "small";
    } else {
        return "big";
    }
}

Все, что ему нужно сейчас, это вы .

3 голосов
/ 16 января 2011

Хех, отличная идея.Мои мысли, некоторые противоречивые ...

Есть прецеденты для цивилизации плохих языков, помещая препроцессоры синтаксиса перед ними.

  • На заре Unix Fortran был популярен и был единственным переносимым языком, потому что большинство машин не имели компилятора Си.Но ванильный Фортран того времени даже не имел блочной структуры if-then-else , просто глупое одиночное выражение if или if-goto ,Итак, язык Ratfor был реализован в качестве препроцессора для Fortran-66.
  • Я считаю, что были (есть?) Препроцессоры Cobol, которыепредположительно имел дело с многословностью и ограничениями ранних диалектов кобола.
  • На сегодняшний день производные от Unix системы поставляются с макропроцессором, называемым m4.
  • В настоящее время доступно несколько CSS-препроцессоров, в особенности Sass и МЕНЬШЕ .

Но ...

  • Просто дайте ему умереть, и чем скорее, тем лучше
  • На самом деле проблема не в синтаксисе.
  • Надеюсьне вижу большой части параллели JavaScript-PHP.JavaScript это отличный язык.Это своего рода противоположность PHP.
  • Я не уверен, почему вы говорите, что PHP - отличный язык.Это один из худших.Каждая приличная функция - это патч или репатч в последней версии.
  • Как вы заметили, уже существует исправленная версия PHP: она называется Ruby икак язык, он почти идеален.Существует еще одна исправленная версия под названием Python .В долгосрочной перспективе мир был бы лучше, если бы мы поддерживали лучшие системы.
2 голосов

Я вижу, как пишу компиляторы в JavaScript (потому что сеть навязывает это нам), но это звучит как пустая трата времени.

Haxe уже делает это, хотя это не специальнонацеленный на PHP (связанный со статьей Википедии, а не их веб-сайтом, потому что, боюсь, меня заинтересуют, если я зайду на реальный сайт ...)

PHP легко развернуть где угодно

... как и его уязвимости.

Я знаю, что это иногда допускает очень плохой дизайн.

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

PHP достаточно медленный, не правда ли?хотите что-то на порядок медленнее?

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

2 голосов
/ 20 января 2011

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

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

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

Мысли

2 голосов
/ 15 января 2011

Написание преобразователя синтаксиса PHP, вероятно, будет интересным проектом.

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

2 голосов
/ 15 января 2011

Если бы для PHP было что-то вроде sass для CSS, мне было бы интересно. Но что бы вы хотели добавить? Или вы просто хотите отсеять плохое?

А что вы считаете плохим?

1 голос
/ 15 января 2011

Это то, о чем я думал уже часто.В некоторых случаях PHP просто беспорядочный.

На самом деле, у меня уже есть проект PrePHP , направленный на обеспечение функциональности PHP 5.3 для PHP 5.2.Но он добавляет некоторые незначительные языковые функции, такие как func()[0].Я не разрабатывал этот проект в течение некоторого времени, и он определенно не «чистый», но он показывает, что то, что вы хотите, возможно и даже не так сложно.

Если вы серьезно относитесь к этому,Я совершенно готов сотрудничать с вами.

0 голосов
/ 15 марта 2019

Мне уже 8 лет, но я все равно отвечу за всех, кто сталкивается с этим.

Hack - это язык, разработанный Facebook для решения некоторых проблем PHP, поскольку у Facebook была большая кодовая база PHP.Hack добавляет некоторые приятные функции поверх PHP, такие как постепенная типизация (что есть в TypeScript) и дженерики, среди прочих функций, и избавляет от некоторых более опасных функций PHP.Hack был когда-то надстройкой PHP, но больше не полностью совместим после удаления некоторых из худших функций PHP.

Это немного отличается от того, о чем вы спрашивали, поскольку на данный момент у Hack есть собственный интерпретатор, написанная Facebook, но изначально это был «лучший язык, который компилируется в PHP», поэтому я подумал, что стоит упомянуть здесь.

...