Esistono linguaggi di script Web di tipo statico? [chiuso]


12

Sembra che ci siano due modi principali per impostare un back-end del server web. Puoi usare uno stack LAMP, con il codice lato server in qualcosa come PHP o Python (o Ruby o JavaScript, che non iniziano con una P.) Questi linguaggi di scripting tendono ad essere tipizzati dinamicamente, con tutti gli svantaggi in prestazioni, correttezza e manutenibilità apportate dai linguaggi tipizzati dinamicamente, ma è facile aggiornare il server perché tutta la logica di generazione delle pagine è memorizzata in script esterni.

L'altro stile di architettura principale ampiamente utilizzato è ASP.NET, in cui la logica di generazione della pagina è scritta in codice compilato. Questo tende a usare linguaggi tipicamente statici, quindi ottieni codice che ha il vantaggio di un compilatore, ma tutta la logica di generazione della pagina viene compilata nel server, il che significa che se devi cambiare qualcosa, devi smontare il server e sostituirlo con una nuova build.

Questo mi fa meravigliare. Esistono linguaggi di scripting lato server che utilizzano la tipizzazione statica, per il meglio dei due mondi?


2
Hai pensato di usare Go ?
pswg


4
"tutti gli svantaggi in termini di prestazioni, correttezza e manutenibilità che portano i linguaggi tipizzati dinamicamente". Queste asserzioni sono discutibili nella migliore delle ipotesi e sbagliate nella peggiore delle ipotesi (i JIT più veloci al giorno d'oggi sono per linguaggi tipizzati dinamicamente).
Javier,

2
"La logica di generazione della pagina è compilata nel server, il che significa che se devi cambiare qualcosa, devi smontare il server e sostituirlo con una nuova build." Esistono diversi ambienti server che possono passare a un nuovo file binario senza interruzione del servizio. vale a dire. Ricarica aggraziata USSGI
Javier

1
Per JVM ci sono un paio di framework che ti permettono di ricompilare e hot swap al volo.
back2dos

Risposte:


8

AGGIORNAMENTO: Le soluzioni più attuali includono AtScript

Dovresti provare Google Dart .

Ha una digitazione facoltativa, il che significa che è possibile aggiungere annotazioni di tipo che verranno verificate in modalità sviluppatore "controllato" al momento dell'esecuzione, ma non sono necessarie e la lingua offre molti dei vantaggi di altri linguaggi dinamici come Python. Tuttavia, l'editor farà l'inferenza di tipo per cercare di aiutarti a trovare gli errori in anticipo. La VM Dart è veloce e può produrre snapshot, che può accelerare il tempo di avvio fino a 10 volte. Si compila anche in javascript ed è veloce .

Il principale svantaggio qui è che è una tecnologia un po 'nuova, quindi non ci sono tante librerie per questo, e onestamente, l'interoperabilità con javascript non è così semplice come dovrebbe essere. Inoltre, la lingua è ancora in fase di sviluppo, quindi di volta in volta vengono apportate modifiche sostanziali.


Preferirei raccomandare TypeScript. Come il dardo, ma è compatibile con JavaScript.
Knerd,

4

La tua domanda si basa su diversi presupposti errati.

Python, Ruby sono entrambi compilati in bytecode prima dell'esecuzione. Il processo è automatico, ma le modifiche dell'applicazione richiedono un riavvio completo. Node.JS si comporta allo stesso modo ma viene compilato in base al codice macchina.

Il codice ASP.NET può essere precompilato e copiato sul server o compilato dinamicamente su richiesta dal codice sorgente sul server. IIS gestisce entrambe le forme di aggiornamento senza tempi di inattività pari a zero (le prime richieste dopo l'aggiornamento saranno lente). Con Python e Ruby sono possibili aggiornamenti a zero tempi di inattività, ma con così tante opzioni di distribuzione non sono scontati.

Sulla base di ciò, penso che saresti felice con qualsiasi linguaggio .NET.


3
Un linguaggio di scripting è quando puoi scriverne alcuni bit in un file ed eseguirlo. Non c'è motivo per cui non debba essere tipizzato staticamente.
Florian Margaine,

@FlorianMargaine Quindi C è un linguaggio di scripting?

@delnan c ++ anche.
mikerobi,

@mikerobi In realtà "mio" è anche C ++ (e AFAIK il successore di CINT), ho appena rovinato tutto.

2
@mikerobi Se esplori Picoc, noterai che l'intero punto in cui è stato scritto è essere un linguaggio di scripting. Non è solo un interprete per c, è un interprete abbastanza piccolo da essere incorporato in applicazioni e dispositivi più grandi e dare ai loro utenti la possibilità di scrivere piccoli script in c. Alcune lingue possono essere migliori negli script rispetto ad altre, ma una lingua non è male negli script solo perché non è stata ancora utilizzata (per ora). Alla fine della giornata, un linguaggio è solo sintassi e semantica, le implementazioni possono variare notevolmente.
yannis,

0

Non vi è alcun motivo per cui una lingua compilata debba essere fortemente tipizzata o difficile da aggiornare.

Potresti voler guardare alcune delle configurazioni web erlang come Cowboy, Webmachine e azoto. Con Dialyzer puoi ottenere un controllo del tipo molto corretto per verificarne la correttezza e puoi ricaricare i moduli al volo in fase di esecuzione poiché Erlang è stato progettato per essere in grado di aggiornare il software sul posto senza interrompere gli utenti esistenti.

Inoltre la webmachine (quella che ho usato di più) può essere abbastanza veloce. Ho visto webmachine avere risposte medie su endpoint API inferiori a 10 ms su un piccolo nodo Amazon EC2!

Se si desidera la digitazione statica, provare il framework Yesod , che è per il linguaggio Haskell. Haskell è fortemente tipizzato con un sistema di tipo molto ricco.

Non l'ho usato personalmente, ma la gente che conosco chi lo usa lo adora.


3
Non confondere la tipizzazione forte e statica. Haskell ha forti tipi statici, Python ha forti tipi dinamici.
mikerobi,

0

IMHO, il linguaggio di scripting Web migliore staticamente tipizzato è D .

Come i linguaggi di script interpretati, può compilare script al volo e alla velocità della luce.

Il linguaggio stesso sembra un superpotere JavaScript fortemente tipizzato, molto più potente di Go per esempio.

Tutto il contenuto della concorrenza è nascosto, come in PHP, e i modelli sono compilati in codice nativo.

Difficile da trovare meglio di così ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.