Por qué no me gusta la sintaxis PHP

Read this article in:

He tomado la decisión de utilizar PHP como parte de mi pila general, junto con ruby, javascript y python. La razón principal es que ha habido un montón de gran software escrito en PHP, y quiero utilizarlo. Sin embargo, después de dejar el mundo PHP para Ruby, y luego volver a él, veo muchas pequeñas cosas molestosas que me molestan en PHP. En este artículo, corrí sobre algunos de ellos.

Sin embargo, PHP no está tan cerca como el tiposcript. Y PHP es un idioma antiguo, nacido antes del Internet moderno, y diseñado para el uso de la luz aka "páginas". No para la construcción de monolitos. Así que al menos PHP tiene esta excusa para equivocarse la sintaxis. Typescript, on the other hand, was allegedly created when the modern internet already existed. No hay excusa para que el tiposcript sea tan feo mentalmente como lo es. Es una noticia muy triste, todos. Me temo que habrá una generación entera de programadores que creen que las lenguas feas son normales. Final mini-rant.

Y ahora por las cosas que no me gustan de PHP.

feo bucles

Si escribo:

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

Fíjate en el token '= título'. Normalmente lo verías en la asignación de valor clave del diccionario, pero aquí significa lo opuesto, destsructure en lugar de la asignación. ¿Tiene sentido usar la misma ficha para ello? Creo que no.

También note que al leer la línea anterior, usted tiene que leer el medio de ella, luego volver a leer el principio. No se lee: previsión ($block = título $region en $collection) {...} . Si acabo de leer la primera mitad y parar, la información no tiene sentido: ante... Tal vez la gente de Php está acostumbrada a esta abominación, pero no lo soy, y estoy señalando que es mala sintaxis.

Compare eso con Python:

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

Compare eso para frotar:

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

Elegante, ¿verdad? Elegante en cada idioma que no sea php.

Atricious namespace separator

¿Qué significa esto?

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

Oh, el golpe al revés es... sólo un personaje ordinario por sí mismo. Eso es estúpido, lo vi y volví a no usar Php por un año. En el mundo real, en linux, el choque atrasado escapa al siguiente personaje. ¡El corte atrasado nunca está solo, y el siguiente personaje es también un personaje especial! Usted puede escapar de caracteres especiales como las nuevas líneas y los signos del dólar, usted puede escapar de cosas que no existen, usted puede escapar la mitad de una cosa que todavía no existe - y será a prueba de futuro y portátil. Estoy hablando de unicode: puedes escribir \uXXXX y codificar una porción de un personaje multi-byte que no se ha añadido a un charset, todo usando el tremendo poder de la barra de atrás.

De alguna manera, la barra de atrás es un personaje meta-meta, es más especial que un backtick o un signo de dólar, es posiblemente el carácter más especial de todos. Y PHP lo usa... ¿para qué? Para nada, solo para separar las cosas. Separar cosas con coma.

De hecho, en el mundo real de linux, el choque atrasado escaparía al siguiente personaje, y por ejemplo `Drupal\Core` se convertiría en simplemente `DrupalCore`, ya que escapar `C` es un no-op y resulta en el mismo `C`.

Compare eso para frotar:

 class Very::Simple::Namespace {}

comparar a pitón:

 from utils.text.unicode import encode

Una vez más, el único feo es Php.

Sintaxis de matriz Stupefying

¿Qué es esto?

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

¿Pantallas cuadradas? Pero no es una lista. Todos en el mundo aparte de estos tipos utilizan `[]` para representar listas y `{}` para representar conjuntos/diccionarios/hashes. No me hagas empezar...

Compare con ruby:

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

comparar a pitón:

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

De nuevo, PHP es el feo.

Actualizaré la lista una vez que vea o recuerde otras cosas molestas. Pero por ahora - espero que puedas ver cómo la gente tiene preferencias de lenguaje fuertes. Y esto era simplemente simple sintaxis, no reflexión, no biblioteca estándar u otras consideraciones. Creo que ruby es un lenguaje infinitamente más elegante y placentero, y es molesto que ruby no esté recibiendo suficiente uso de los programadores del mundo.

Please login to post comments: