Linguaggi Back End

rob25111

Nuovo Utente
38
0
La maggior parte del linguaggio usati per il Backend (riferito quindi a web app) son tutti interpretati ho notato.
Qual è il perché ?

Ps ovviamente intuisco la risposta, voglio solo avere un riscontro
 

pabloski

Utente Èlite
2,868
916
In realtà c'è una ragione storica più che tecnologica. In origine i web services si programmavano in C, Pascal o C++. Ed erano serviti tramite CGI.

Ma i linguaggi compilati dell'epoca non era produttivi e semplici da usare, come i linguaggi interpretati tipo Perl, che fu il primo linguaggio interpretato ad essere usato per questo tipo di attività.

Successivamente però nacque il filone dei linguaggi basati su virtual machine e bytecode. Nel tempo sono diventati sempre meno interpretati e più compilati jit. Java per esempio.

Mentre i linguaggi compilati non si sono di fatto evoluti, almeno fino all'arrivo di Go e Rust. E fai caso che proprio Go sta mangiando la torta di Node.js, PHP e pure Java EE.

Comunque sia, sia i linguaggi interpretati che basati su vm, hanno due caratteristiche: (1) semplicità della sintassi e un potente e ricco modello di programmazione, il che semplifica la vita del programmatore, (2) un meccanismo per controllare il ciclo di vita delle variabili, il che aiuta a ridurre il numero di bug.

Siccome sul web i bug sono spesso esposti al mondo, è un bel vantaggio. Stessa cosa per i tempi di sviluppo, che più sono corti e meglio è.

E poi c'è un'altra ragione storica, ovvero il costo e il tempo della compilazione. Negli anni '80 e '90 non era difficile che capitasse di modificare uno script direttamente sul server. Chiaramente, senza compilazione, si risparmiava tempo nella modifica del codice e relativo testing. E non si appesantiva il server. Un pò come oggi si preferisce l'hot reloading.
 

rob25111

Nuovo Utente
38
0
In realtà c'è una ragione storica più che tecnologica. In origine i web services si programmavano in C, Pascal o C++. Ed erano serviti tramite CGI.

Ma i linguaggi compilati dell'epoca non era produttivi e semplici da usare, come i linguaggi interpretati tipo Perl, che fu il primo linguaggio interpretato ad essere usato per questo tipo di attività.

Successivamente però nacque il filone dei linguaggi basati su virtual machine e bytecode. Nel tempo sono diventati sempre meno interpretati e più compilati jit. Java per esempio.

Mentre i linguaggi compilati non si sono di fatto evoluti, almeno fino all'arrivo di Go e Rust. E fai caso che proprio Go sta mangiando la torta di Node.js, PHP e pure Java EE.

Comunque sia, sia i linguaggi interpretati che basati su vm, hanno due caratteristiche: (1) semplicità della sintassi e un potente e ricco modello di programmazione, il che semplifica la vita del programmatore, (2) un meccanismo per controllare il ciclo di vita delle variabili, il che aiuta a ridurre il numero di bug.

Siccome sul web i bug sono spesso esposti al mondo, è un bel vantaggio. Stessa cosa per i tempi di sviluppo, che più sono corti e meglio è.

E poi c'è un'altra ragione storica, ovvero il costo e il tempo della compilazione. Negli anni '80 e '90 non era difficile che capitasse di modificare uno script direttamente sul server. Chiaramente, senza compilazione, si risparmiava tempo nella modifica del codice e relativo testing. E non si appesantiva il server. Un pò come oggi si preferisce l'hot reloading.
Chiarissimo ..
un ulteriore domanda (scusa la mia inesperienza)

se usassimo linguaggi compilati però si genererebbe un eseguibile a ogni richiesta(?) quindi a ogni utente ?Se si ciò non sarebbe comunque un motivo in più per usare gli interpretati che magari (non lo so) per questo tipo di uso utilizzano meno risorse ?
 

pabloski

Utente Èlite
2,868
916
se usassimo linguaggi compilati però si genererebbe un eseguibile a ogni richiesta(?) quindi a ogni utente ?

Praticamente un esercizio di masochismo. Zero pro e tanti contro. Why??

Se si ciò non sarebbe comunque un motivo in più per usare gli interpretati che magari (non lo so) per questo tipo di uso utilizzano meno risorse ?

Logicamente. La compilazione ahead-of-time richiede comunque più tempo e più risorse computazionali. Anche se produce codice eseguibile più performante!!

Ma se devo compilare ad ogni richiesta....boh, un TSO sarebbe il minimo!
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili