Sarebbe pratica un'alternativa tipizzata staticamente a JavaScript sulle pagine web?

9

La preferenza per la digitazione dinamica e statica è in gran parte una questione di gusti e diverse persone li trovano più o meno adatti in diverse situazioni.

La mia domanda è, sarebbe tecnicamente possibile avere un'alternativa tipizzata staticamente a JavaScript per l'aumento della pagina Web sul lato client ecc.?

    
posta Armand 15.12.2010 - 23:10
fonte

13 risposte

22

Non c'è certamente alcuna ragione tecnica che una cosa del genere non possa esistere. Non c'è nulla di particolare nel codice lato client che imponga l'uso di lingue digitate dinamicamente.

    
risposta data 15.12.2010 - 23:55
fonte
16

Poiché è altamente improbabile che un'altra lingua trovi un'ampia adozione, la soluzione migliore sarebbe quella di creare una versione tipizzata staticamente di JavaScript (cioè un linguaggio vicino a java) e un preprocessore che lo converta in un normale JavaScript.

Ad esempio, il tuo script è simile a questo:

<script type="text/staticjavascript">
   String foobar(int foo, String bar) {
      String result="";
      for (int i=0; i<foo; i++) {
         result += bar;
      }
      return result;
   }
</script>

e il preprocessore controlla che ogni variabile, funzione, oggetto, ecc. sia usata correttamente in base al suo tipo, e cambia lo script in

<script type="text/javascript">
   function foobar(foo, bar) {
      var result="";
      for (var i=0; i<foo; i++) {
         result += bar;
      }
      return result;
   }
</script>

che ogni browser può gestire.

    
risposta data 15.12.2010 - 23:34
fonte
8

My question is, would it be technically possible to have a statically-typed alternative to JavaScript for client-side web page augmentation etc.?

Certo. Il Google Web Toolkit compila Java a JavaScript in modo statico ... Basta pensarci: tutta la bellezza e la flessibilità di Java, con tutte le prestazioni di JavaScript generato dalla macchina!

Seriamente, potresti farlo per tutti i tipi di lingue, e molti hanno provato (ci sono o sono stati anche compilatori per C e C #). Se il risultato finale è pratico o non dipende da ciò che stai cercando di realizzare: Google dopo una piattaforma coerente per lo sviluppo di app lato client molto grandi e ha il proprio motore JavaScript da avviare; potresti scoprire che l'adozione di una tale bestia per effetti hover e la strana chiamata AJAX introduce molto più dolore che semplicemente imparare a vivere con un po 'di codice non tipizzato ...

    
risposta data 16.12.2010 - 01:02
fonte
6

La maggior parte dei vantaggi di linguaggi tipizzati staticamente sono realizzati in fase di compilazione. Se la lingua verrà interpretata sul client, molti di questi vantaggi andranno persi. Se li si compila sul server, è necessario capire come caricarli ed eseguirli sul client (si pensi ai controlli ActiveX). Si può andare con un approccio ibrido (compilare un modulo token intermedio), ma in pratica si torna alle applet Java.

    
risposta data 16.12.2010 - 14:30
fonte
4

Esiste già.

ActionScript 3 (il linguaggio di scripting di Flash e Flex) è un dialetto di ECMAScript che implementa tipi forti e tu può usarlo più o meno nello stesso modo lato client di JavaScript (la differenza è che AS3 richiede un plugin flash ed è compilato). Io personalmente cerco di allontanarmene di questi tempi, ma se sei nel campo "statico", dagli un vortice.

Questo risponde alla domanda principale, e ora che lo abbiamo, la tua domanda secondaria diventa "Flash è pratico?" La risposta è "sì", con pochi "se" se "ma" s

  • ... se è necessario nascondere il codice per qualsiasi motivo.
  • ... se vuoi un livello di interattività molto, molto (passato a livello jQuery)
  • ... ma anche senza HTML5, le compatibilità cross-browser stanno migliorando molto ultimamente.
  • ... ma HTML5 arriverà presto.
  • ... ma una delle grandi estensioni della tipizzazione / compilazione statica (al contrario dell'interpretazione) è la maggiore velocità consentita dall'ottimizzazione (e Flash non ha una velocità molto buona, nonostante il sistema di tipi)
risposta data 16.12.2010 - 02:25
fonte
3

In teoria, puoi incollare qualsiasi script su una pagina che desideri. Il tag <script> ha un attributo type , dopotutto.

L'unico ostacolo è ottenere una quota di mercato sufficiente in termini di implementazione in diversi browser per renderlo utile da usare.

Quindi sì, è abbastanza improbabile a questo punto.

    
risposta data 15.12.2010 - 23:15
fonte
2

Sarebbe pratico? No.

È possibile? Sì!

Sviluppare la propria alternativa tipizzata staticamente a JavaScript richiederebbe molto tempo, nel migliore dei casi. Nel peggiore dei casi, non saresti in grado di convincere alcun browser esistente a implementare il tuo linguaggio di scripting del client e dovresti scrivere il tuo.

    
risposta data 15.12.2010 - 23:52
fonte
1

Forse trovi la tua risposta qui: link

Nota: a mio parere, le risposte più recenti sono più perspicaci nonostante il loro punteggio inferiore.

    
risposta data 23.12.2010 - 02:36
fonte
1

Puoi usare lingue come haXe per scrivere il tuo codice in modo tipicamente statico ed esportarlo in javascript. JavaScript sta diventando molto veloce, quindi è sufficiente come linguaggio di output. Cercare di applicare una lingua tipizzata in modo statico come standard Web è quasi impossibile. I tentativi di introdurre la tipizzazione statica in JavaScript hanno fallito per ragioni di ampio respiro da discutere.

    
risposta data 23.12.2010 - 11:21
fonte
1

Sarebbe tecnicamente possibile? Se deve essere implementato in Java, direi "molto, molto difficile, ma possibile" senza una significativa perdita di prestazioni.

In questo momento sto scrivendo a mano un DSL staticamente digitato in Java, e l'unico modo per evitare il controllo dei tipi di esecuzione è usare i generici e sopprimere gli avvertimenti "non controllati" ... cioè fino al momento è venuto per implementare array multidimensionali (i parametri di classe devono essere noti al momento della compilazione e sono quindi intrinsecamente finiti, mentre gli array multidimensionali rappresentano un numero infinito di tipi ...) Sto ancora cercando di capirlo, sfortunatamente-- I ' Sono sicuro che incontrerò problemi simili con le classi definite dall'utente.

Il fatto è che continuo a inciampare in questo tipo di problemi, ma dopo essermi seduto per un po ', ho trovato una buona soluzione. Quindi, per farlo e avere i vantaggi prestazioni della tipizzazione statica (nessun controllo del tipo di runtime), direi che è estremamente difficile, ma non impossibile. Meno la performance, direi difficile ma molto possibile.

So che è una vecchia domanda, pensavo che la mia esperienza potesse essere preziosa per qualcuno.

    
risposta data 18.07.2012 - 23:13
fonte
0

È tecnicamente possibile scrivere script sul lato client in qualsiasi linguaggio di scripting supportato dall'agente utente (browser). In pratica, l'unica lingua ampiamente supportata è JavaScript / ECMAScript. È improbabile che i creatori di browser convinti di implementare e supportare un nuovo linguaggio in questa fase non riescano; quindi, se volessi utilizzare un nuovo linguaggio lato client tipicamente staticamente, dovresti tradurre la nuova lingua in JavaScript o implementare un interprete per esso in JavaScript.

Ci sono diversi progetti che già fanno qualcosa del genere; ad esempio, Google Web Toolkit , come menzionato in una delle altre risposte.

    
risposta data 16.12.2010 - 12:32
fonte
0

Dato che non hai alcuna speranza di ottenere tutti i browser che vengono utilizzati nel mondo reale per supportare una nuova lingua; il linguaggio dovrà essere compilato in jscript.

Poiché tutti gli esempi del web sono in jscript, il linguaggio dovrebbe essere per lo più simile a jscript.

Penso che ci sia scope con un "sottoinsieme" di jscript che è controllato da un controllore statico ma è anche jscript valido. Per esempio:

  • Tutte le variabili devono avere un commento che dice che esistono tipi prima del primo utilizzo.
  • Tutti gli usi delle variabili devono essere validi con quanto sopra.
  • Funzioni / classe non possono essere utilizzati se non sono stati dichiarati in un commento #
  • Un commento nella parte superiore del file js deve elencare tutti gli altri file js da cui dipende.
risposta data 23.12.2010 - 10:58
fonte
0

La tipizzazione statica facoltativa faceva parte del Project Harmony di ECMAScript, indipendentemente dal fatto che si verifichi o meno in JavaScript (basato sul browser) JavaScript è sconosciuto. Vedi questo link di Wikipedia: link

    
risposta data 19.07.2012 - 05:26
fonte

Leggi altre domande sui tag