Почему мне не нравится PHP

Read this article in:

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

Но следует отметить, что PHP далеко не так уродлив, как шрифт. PHP - это старый язык, родившийся до современного Интернета и предназначенный для легкого использования. Не для строительства монолитов бегемотов. По крайней мере, у PHP есть оправдание для неправильного синтаксиса. С другой стороны, Typescript якобы был создан, когда уже существовал современный интернет. Нет оправдания тому, что шрифт должен быть таким же уродливым, как и он. Это очень печальная новость, все. Боюсь, будет целое поколение программистов, которые думают, что уродливые языки - это нормально. Конец мини-ранту.

Теперь о том, что мне не нравится в PHP.

уродливые петли

Если я напишу:

 foreach ($collection as $block => $region) { ... }

Обратите внимание на токен «=>». Обычно вы видите это в словарном назначении ключевого значения, но здесь это означает противоположное, деструкцию, а не назначение. Имеет ли смысл использовать для этого тот же токен? Думаю, нет.

Также обратите внимание, что при чтении вышеприведенной строки вы должны прочитать середину, а затем вернуться к чтению начала. Не читается: foreach ($block => $region in $collection) {...} . Если я просто прочитаю первую половину и остановлюсь, то информация бессмысленна: на каждый (коллекция...) Может быть, php-люди привыкли к этой мерзости, но я нет, и я тем самым указываю, что это плохой синтаксис.

Сравните это с Python:

 for key, value in my_dict.items(): print(key, value)

Сравните это с рубином:

 collection.map { |key, value| print(key, value) }

Элегантный, да? Элегантный на всех языках, кроме php.

Увлекательный разделитель пространства имен

Что это значит?!

 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Entity\Entity\EntityFormDisplay;

О, обратный слэш... просто обычный персонаж сам по себе. Это глупо, я видел это и вернулся к отказу от использования php в течение года. В реальном мире, в Linux, задняя коса ускользает от следующего персонажа. Задняя коса никогда не бывает одинока, и следующий персонаж тоже особенный персонаж! Вы можете избежать специальных персонажей, таких как новые линии и знаки доллара, вы можете избежать вещей, которых не существует, вы можете избежать половины того, чего еще не существует - и это будет надежно и портативно. Я говорю об уникоде: вы можете написать \uXXXX и закодировать часть многобайтового символа, который не был добавлен в набор, используя огромную силу обратной реакции.

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

На самом деле, в реальном мире Linux, обратный слэш избежал бы следующего персонажа, и, например, «Drupal\Core» стал бы просто «DrupalCore», так как выход из «C» является не-операцией и приводит к тому же «C».

Сравните это с рубином:

 class Very::Simple::Namespace {}

По сравнению с Python:

 from utils.text.unicode import encode

Единственный уродливый — это php.

Ошеломляющий синтаксис массива

Что же это такое в мире?!

 $person = [
     'name' => 'Alice',
     'age' => 30,
     'city' => 'Austin',
 ];

Квадратные скобки?! Но это не список. Все в мире, кроме этих парней, используют «[]» для представления списков и «[]» для представления наборов / словарей / пепла. Не заставляйте меня начинать...

Сравните с рубином:

 person = {
   name: 'Alice',
 }
 person = {
   'name' => 'Alice',
 }

По сравнению с Python:

 person = {
     "name": "Alice",
     "age": 30,
     "city": "Austin",
 }

Опять же, PHP является уродливым.

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

Please login to post comments: