Por que não gosto de sintaxe PHP

Read this article in:

Tomei a decisão de usar PHP como parte da minha pilha geral, juntamente com rubi, javascript e python. A principal razão é que houve um monte de grande software escrito no PHP, e eu quero usá-lo. No entanto, depois de deixar o mundo PHP para Ruby, e depois voltar para ele, vejo muitas coisas irritantes que me incomodam no PHP. Neste artigo, falei sobre alguns deles.

Mas, é importante notar, PHP não é tão feio quanto digitação. E PHP é uma língua antiga, nascida antes da internet moderna, e projetada para uso leve também conhecido como "páginas". Não para construir monólitos behemoth. Então pelo menos PHP tem essa desculpa para entender a sintaxe errada. Por outro lado, a digitação foi supostamente criada quando a internet moderna já existia. Não há desculpa para a escrita ser tão feia como é. É uma notícia muito triste, pessoal. Receio que haverá uma geração inteira de programadores que pensam que línguas feias são normais. Fim mini-rante.

E agora as coisas que eu não gosto sobre PHP.

loops feios

Se eu escrever:

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

Observe o símbolo '=>'. Você normalmente vê-lo no dicionário atribuição de valor-chave, mas aqui significa o oposto, descructure em vez de atribuição. Faz sentido usar a mesma coisa? Acho que não.

Também observe que ao ler a linha acima, você tem que ler o meio dela, em seguida, voltar a ler o início. Não lê: para cada um ($bloco => $região em $coleção) {...} . Se eu ler a primeira metade e parar, a informação é sem sentido: para cada um ($colection... Talvez as pessoas php estão acostumados a esta abominação, mas eu não sou, e eu estou apontando para fora que é sintaxe ruim.

Compare isso com a píton:

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

Compare isso com o rubi:

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

Elegante, não é? Elegante em cada idioma diferente do php.

Separador de espaços de nomes atricioso

O que isso significa?!

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

O corte ao contrário é... apenas uma personagem normal, sozinha. Isso é estúpido, eu vi isso e voltei a não usar php durante um ano. No mundo real, em linux, o corte ao contrário escapa ao próximo personagem. O corte ao contrário nunca está sozinho, e o personagem a seguir também é um personagem especial! Você pode escapar de personagens especiais como novas linhas e sinais de dólares, você pode escapar de coisas que não existem, você pode escapar de metade de uma coisa que ainda não existe - e será à prova de futuro e portátil. Eu estou falando sobre unicode: você pode escrever \uXXXX e codificar uma porção de um caráter multi-byte que não foi adicionado a um charset, todos usando o tremendo poder do retrocesso.

De certa forma, o backslash é um personagem meta-meta, é mais especial do que um backtick ou um sinal de dólar, é indiscutivelmente o personagem mais especial de todos. E o PHP usa-o para quê? Por nada, só para separar as coisas. Separar coisas com uma vírgula.

Na verdade, no mundo real do linux, a barra ao contrário escaparia do próximo personagem, e por exemplo `Drupal\Core` se tornaria apenas `DrupalCore', uma vez que escapar `C' é um no-op e resulta no mesmo `C'.

Compare isso com o rubi:

 class Very::Simple::Namespace {}

comparar com python:

 from utils.text.unicode import encode

Novamente, o único feio é php.

Stupefying array sintaxe

O que é isso?!

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

Suportes quadrados? Mas não é uma lista. Todos no mundo, além desses caras, usam `[]` para representar listas e `{}` para representar conjuntos/dicionários/hashes. Não me faças começar...

Comparar com rubi:

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

comparar com python:

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

Novamente, PHP é o feio fora.

Atualizo a lista assim que vir ou me lembrar de outras coisas irritantes. Mas por enquanto - espero que você possa ver como as pessoas têm fortes preferências de linguagem. E isso era apenas sintaxe simples, não reflexão, não biblioteca padrão ou outras considerações. Eu acho que o rubi é uma linguagem infinitamente mais elegante e prazerosa, e é perturbador que o rubi não esteja recebendo uso suficiente dos programadores do mundo.

Please login to post comments: