Задать вопрос
Pur1taN
@Pur1taN

PHP функциональный язык или объектно-ориентированный?

На собеседовании мне задали этот вопрос. Каким изначально задумывался этот язык?
  • Вопрос задан
  • 1223 просмотра
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 7
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Я бы так и ответил: "А при чём тут это?! Разве от этой информации зависит производительность и архитектура будущего кода? - Нет."

Ну, и цитата:
Таким образом, выбирая PHP, вы получаете свободу выбора операционной системы и веб-сервера. Более того, у вас появляется выбор между использованием процедурного или объектно-ориентированного программирования (ООП) или же их сочетания.
Говорит, что он - универсальный и не разделяется.
А задумывался он как гипертекстовый процессор для динамической обработки и создания HTML-страниц (контента, разметки и т.д.).
Ответ написан
PHP — какой угодно язык, но точно не функциональный.

З.Ы.
Жаль, что тут нельзя писать в какой именно конторе такое спросили.

UPD
Может в вопросе имелось ввиду не "функциональный", а "процедурный"? Вы не поверите как много людей путают процедурные и функциональные языки.
Если так, то PHP — и тот и другой. Точнее говоря, думаю, что правильный ответ в вашем случае был бы, что PHP — мультипарадигменный язык.
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Я могу дать вам лишь мой вариант ответа собеседующему:

Никаким. Отличительная черта PHP в том, что он не задумывался как язык программирования. Это даже в названии отражено - PHP (recursive acronym for PHP: Hypertext Preprocessor).

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

В PHP4 в язык были введены "классы" чтобы дать механизм изоляции состояния. Это еще нельзя было называть ООП просто потому, что... это не объекты а классы. Нет ни инкапсуляции, есть только ad-hoc полиморфизм (который есть у всех языков с динамической системой типов) и ограниченный полиморфизм подтипов. Ну а наследование классов и так признано ненужной штукой в контексте ООП.

В PHP5 наконец-то были введены интерфейсы, и теперь можно было делать нормальный полиморфизм. Были введены модификаторы доступа и т.д. но язык все еще остается процедурным по большому счету (и это нормально, поскольку все существующие ОО языки являются процедурными).

В PHP5.3 были введены анонимные функции. но без лексический скоупов, без функций высшего порядка делать "чистую функциональщину" просто не выйдет. Во всяком случае это будет неудобно.

Отсюда сделаем вывод - PHP на сегодняшний день, процедурный язык программирования, имеющий достаточно возможностей чтобы практиковать все основные парадигмы программирования просто с разной степенью удобства.
Ответ написан
Комментировать
nazares
@nazares
Software Engineer
Комментировать
@Mercury13
Программист на «си с крестами» и не только
PHP изначально задумывался скриптовым языком — языком процедурного программирования с динамической типизацией и возможностью вписать пару строк, не оформляя тело. Таким он и остаётся поныне, с вкраплениями ОО. Немного функциональщины, конечно, есть, но это не делает PHP — как, впрочем, Java или C++ — настоящим функциональным языком.
Ответ написан
Комментировать
Pur1taN
@Pur1taN Автор вопроса
Я так и думал, что все зависит от задачи. Имеет место как ООП, так и функциональное применение. Вот тогда-то вопрос "каким он задумывался?" меня в тупик и поставил.
Спасибо за ответы.
Ответ написан
@khrisanfov
Программист
Изначально функциональным, потом стал с поддержкой ООП. В C++ тоже можно использовать оба подхода из-за наследия C.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы