PHP7 è un linguaggio tipizzato statico o dinamico? [chiuso]

3

Negli ultimi anni, abbiamo utilizzato versioni di PHP digitate in modo dinamico. Tuttavia, in PHP7 abbiamo un'opzione per abilitare i "tipi rigorosi":

(Nota: le dichiarazioni di tipo scalare utilizzano ripetutamente la frase "controllo di tipo debole" o "testo tipizzato rigorosamente" rispetto a statico / dinamico.)

È giusto dire che PHP7 è un linguaggio tipizzato staticamente? In caso affermativo o no, perché?

    
posta Hassan Althaf 07.01.2016 - 13:20
fonte

1 risposta

9

Come già accennato, i sistemi "forti" e "deboli" sono malati -defined:

'Languages are often colloquially referred to as "strongly typed" or "weakly typed". In fact, there is no universally accepted definition of what these terms mean. In general, there are more precise terms to represent the differences between type systems that lead people to call them "strong" or "weak"'.

I tipi statici possono essere verificati al momento della compilazione. Il compilatore dispone di informazioni sufficienti per verificare i tipi statici prima dell'esecuzione di un programma. (Se viene utilizzata una variabile tipizzata in cui il tipo non è previsto, si tratta di un errore del compilatore.) Tipi dinamici non può essere perfettamente determinato al momento della compilazione. Questo non significa che le variabili nei linguaggi dinamici non hanno tipi. Significa semplicemente che non c'è modo di essere sicuri al 100% del tipo di una variabile fino al runtime.

Secondo le RFC di PHP per dichiarazione del tipo di reso e dichiarazione del tipo scalare , le dichiarazioni non tipizzate e le modalità di valutazione sono ancora consentite. Ciò significa che non tutto il PHP è tipizzato staticamente. Come tale, non ha senso chiamare PHP un linguaggio tipizzato staticamente. Invece, è un linguaggio tipizzato dinamicamente con un paio di caratteristiche di tipo statico.

Il fatto che la dichiarazione di tipo scalare RFC utilizzi effettivamente le definizioni "strict" e "weak" type sta dicendo. I PHP sono orgogliosi che non siano nerd linguistici. Questo non è né buono né cattivo. Significa solo che i progettisti di linguaggi si stanno concentrando su cose diverse rispetto, ad esempio, ai progettisti di Haskell.

    
risposta data 07.01.2016 - 14:26
fonte

Leggi altre domande sui tag