Создание языка программирования на основе PHP

программирование php java проектирование

PHP был первым языком, с которого я начинал изучать программирование.
Спустя некоторое время я перешел на Java SE. Для создания сайтов я ее не использовал, использовал в Desktop-программировании.

Вернувшись на PHP, я понял, насколько же он несовершенен по сравнению с Java.
Я пробовал изучать строго объектно-ориентированные фреймворки, но работа с ними меня особо не впечатлила.


Я сформулировал небольшой список того, чего меня не устраивает в PHP:
- Отсутствие автозагрузки классов. В Java компилятор изначально "знает" о всех классах, а конструкция import используется лишь для разрешения доступа к пространству имен. В PHP же по умолчанию такого не предусмотрено вообще, а уровень удобства автозагрузчиков фреймворков оставляет желать лучшего.

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

- Отсутствие инициализации полей "на лету". То есть я могу сразу же полю присвоить строку или число, например, а вот вызывать конструктор и создать объект - уже нет.


Примечание:
Предположим, типы перемененных я еще смогу заменить обертками классов, однако тогда возникает следующая проблема - я не могу перегрузить конструктор, и тогда вместо
String s = "string" должен буду писать String s = new String("string").

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


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

Примечание:
Вопрос в том, как подойти к реализации всего этого.
Я хочу сделать все, не изменяя исходники PHP, в виде фреймворка.

В "Примечании №1" я более подробно расписал проблемы, с которыми столкнулся.
Опыта работы в PHP у меня не так много, чтобы понять, как их решить.

Примечание:
> php.net/__autoload
__autoload() всего лишь автоматически вызывается интерпретатором, если класс не найден. На нее вешают загрузчик классов, но это никак не сам загрузчик.

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

> существует группа функций is_*:
Как раз пример неэффективного использования возможностей программиста: этим должен заниматься интерпретатор, а не программист.

И давайте не будем превращать это в холивар Java vs PHP. Меня интересует реализация, а не вопрос о том, стоит ли это реализовывать.
Ответы:
А в чем собственно вопрос?
- Отсутствие автозагрузки классов.
http://www.php.net/manual/en/function.spl-autoload-register.php
> Отсутствие автозагрузки классов
это вообще странно. возможность доступна очень давно:
http://php.net/__autoload
Зря вы тратите время. Java - это Java, а PHP - это PHP.
Я PHP разработчик могу вас заверить, что пародировать java в php больше вредит, чем помогает.
Безусловно php очень нетребовательный язык - это и достоинство и недостаток. Но при стиле java программирования необходимо пачками плодить сущности, что его очень усложняет. PHP выполняется совсем по иному, нежели java, поэтому тут избыточность кода довольно существенная проблема. В яве конечно есть @#$ машина, не умеющая с памятью работать но процесс выполняется постоянно, в пхп же - каждый запрос - отдельный процесс (если брать обычную связку apache + php) и здесь это критично.
> Как раз пример неэффективного использования возможностей программиста
криворукого программиста. нормальный программист документирует код, из-за чего подобных проблем нет.
человек может писать на каком угодно языке, но если код не документируется, а переменные имениуются по логике, понятной лишь самому разработчику, это не проблема языка.
Вам шашечки или ехать?
на кой это надо? есть фреймворки
а для того что вы говорите RoR есть, в нем веб приложения вообще пару щелчками пальцев создаются, а
хотя по сути он работает медленнее чем чистый пхп, но быстрее чем пхп+смарти+фреймвок + прочая хрень(лень придумывать), и уж точно быстрее чем еще один язык созданный на пхп.
>>> Вернувшись на PHP, я понял, насколько же он несовершенен по сравнению с Java.
отдай баллы мне!
Вы полный ноль в знании php. В php все эти вещи есть, учите мат. часть.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

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

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.