Ваш опыт работы с haxe и другими языками, которые компилируются в PHP? [закрыто]


23

Я хотел бы услышать мнения от людей, которые использовали язык, который компилируется в php. Один такой язык, который я знаю, это Haxe . Другие, о которых я читал, это Кира и Фарен .

Насколько хорошо эти языки интегрируются с PHP? Относительно легко написать плагин для PHP CMS в них?

Насколько зрелы их реализации и инструменты?

Вы бы порекомендовали их тем, кто использует php cms, но ненавидит php?


1
HaXe это хорошо. По крайней мере, попробуй. Я только что установил его, загрузил и протестировал свою первую страницу PHP за 9 минут (включая время на загрузку haxe), это просто, и за этим стоит большое сообщество с большим количеством документов
JTS

Я создал pratphall.org, который является типизированным языком, который компилируется в PHP.
Чад Рец

Ответы:


9

Я создатель Pharen, который компилирует Лиспский диалект в PHP. Чтобы ответить на ваши вопросы, он довольно хорошо интегрируется с PHP. Легко включить существующие функции вызова библиотек / использовать их объекты.

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

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


«Легко включать существующие библиотеки, вызывать функции / использовать их объекты». Этого должно быть достаточно для работы с большинством внешних библиотек, включая API для плагинов для CMS. Оригинальный пост не был слишком конкретным о том, что означает интеграция. Я также объяснил состояние его (отсутствия) зрелости.
Сценарист

Спасибо за ваш ответ и за ваше предложение помочь мне. Фарен совместим с любым другим лиспом? У него есть свои операторы или он использует только те, что в php? Например, действует ли == в pharen так же, как в php?
Ким

Это его собственный диалект прямо сейчас, вдохновленный Clojure. Основная причина этого заключается в том, что в других стандартах есть много багажа, например, их собственные стандартные библиотеки, в которых нет необходимости. Он использует те же операторы, что и PHP, поэтому вы можете использовать (== "foo" "foo")
Scriptor

3

Джош К прав в некоторых отношениях, лучше знать php, чтобы лучше ориентироваться на время выполнения php. Тем не менее, главная причина этого не в том, что haxe - плохой компилятор, а в том, что php - такой «особенный» язык.

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

Php автоматически превращает целое число в число с плавающей точкой при переполнении. Это, конечно, нарушает строгую типизацию, на которую полагаются языки, такие как HaXe, для обеспечения безопасности типов (и для обеспечения простых вещей, таких как быстрые алгоритмы хеширования). Я думаю, что это еще одна ужасная языковая особенность. Кроме того, haXe не может здесь помочь, потому что это поведение PHP не может быть изменено.

Итак, поехали. Я думаю, что haXe делает php лучше, потому что он устраняет некоторые (предполагаемые) языковые недостатки для php. Тем не менее, в php есть так много странных вещей, что вам, в конце концов, придется хорошо его изучить, чтобы исправить некоторые его особенности.

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

Соответствующие ссылки:

php magic: http://haxe.org/doc/advanced/magic

(также ищите «причуды платформы» в разделе сообщества основного сайта haxe.org)


Спасибо за Ваш ответ. Были ли у вас проблемы с вызовом php из haxe или наоборот?
Ким

Таким образом, PHP (динамический язык) имеет проблемы с haXe (зависит от статической типизации)? Удивительно! PHP немного странный язык, но, учитывая его корни в Perl, это понятно. То, что вы считаете «ужасными языковыми особенностями» и что такое «стандартный динамизм», похоже, очень похоже.
Джош К

1
Вы можете иметь статические языковые функции наряду с динамическими функциями времени выполнения. Они не являются взаимоисключающими. Для этой цели HaXe использует индикатор типа «Динамический». Пространство имен и математические операции не имеют ничего общего с динамизмом языка. Это просто причуды php.
Jdonaldson

2

Ужасный мусор

Я использовал haXe по рекомендации кого-то и никогда не рекомендую никому по любой причине .

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

Вы бы порекомендовали их тем, кто использует php cms, но ненавидит php?

Нет! Я бы порекомендовал вам либо изучать PHP правильно, либо использовать другую CMS. Поскольку кажется, что у вас нет выбора в части CMS, другой вариант - выучить язык и разобраться с ним.

Насколько зрелы их реализации и инструменты?

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


Похоже, у вас есть задача написать что-то для приложения PHP. Помимо очевидных проблем, связанных с тем, что вашему коду придется импортировать существующие функции / объекты PHP, и вышеупомянутого мусора, всем, кто работает над этим, теперь придется изучать ваш язык для языкового компилятора. В противном случае они будут возиться с неубедительным кодом «PHP», который является результатом. Это также означает, что если они работают над этим, вам придется переопределить эти изменения в вашем коде, или рискуете потерять изменения, сделанные кем-то еще.

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


«Кросс-компиляция между языками»

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


5
Пожалуйста, постарайтесь не волноваться по этому поводу и не делайте слишком много предположений. Что заставляет вас думать, что я не выучил php "правильно"? Как иначе я бы стал ненавидеть это? Сгенерированный код не проблема для меня, так как я не хочу его трогать. Отладка не является проблемой, так как я очень редко использую отладчик. Другие разработчики также не являются проблемой, так как большинство плагинов CMS в любом случае не являются большими проектами. Вы делаете очень широкие заявления о haxe. Не могли бы вы подкрепить их примерами? Это будет высоко ценится. Кроме того, как давно вы использовали это?
Ким

5
Так вы говорите, что компилятор создает глючный php-код? Это одна из тех широких претензий, которые я хотел бы, чтобы вы подкрепили примером. Другое широкое утверждение: «Кросс-компиляция между языками приводит к путанице, ошибкам и ошибкам». Пожалуйста, приведите примеры для этого. Если вы хотите обсудить, стоит ли использовать язык PHP, я уверен, что в Интернете вы найдете тысячи людей, которые сделают это с вами. Я не один из них.
Ким

10
«Кросс-компиляция между языками - это приводит к путанице, ошибкам и ошибкам». Странно, но я тут подумал, что любой компилятор делает именно это - переводит один язык на другой (например, на ассемблер, код C, JVM ...).
Foo

1
На самом деле, будучи профессиональным программистом и имея много языков / фреймворков / API-интерфейсов под моим пристальным вниманием (java, c ++, python, php, ruby, javascript и т. Д.), HaXe был для меня маяком света. Впервые за все время я столкнулся с языком, который, как я обнаружил, сделал все правильно, и который был "хорошо" со всех сторон. Я не могу понять, как кому-то это может не нравиться. Для PHP это ограничено, хотя.
dagnelies

1
Полностью согласен с большинством терминов (особенно о haxe). Но работать с php с использованием синтаксиса lisp действительно весело! Поэтому я хочу быть в такой странной части кода просто для удовольствия.
cnd

1

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


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

Я хотел бы нацелить Neko на haXe, но я не хочу зависеть от httpd Apache. Мне нравится иметь возможность выбора на веб-серверах.
Стеш

1

Если это сделать плагин для PHP CMS, оставайтесь с PHP.

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


-1

Я уже пробовал Haxe, и я не могу рекомендовать его для веб-разработки.

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


Можете ли вы объяснить, почему вы не рекомендуете Haxe?
Джей Элстон
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.