Il nuovo linguaggio di programmazione e BCL per il cloud [chiuso]

1

Supponiamo che sia necessario implementare un nuovo linguaggio di programmazione e BCL progettati specificamente per operare nel cloud (non verrà mai utilizzato su macchine client). Dovrebbe essere ottimizzato per il cloud computing; facile da imparare, veloce, efficiente, potente, moderno.

Come sarebbe? Quali sarebbero le principali differenze da C #, Java, Ruby, Python, JavaScript? Come sarebbe BCL (libreria di classi base) diversa da diciamo quella in .NET Framework 4.0?

..

Allo stesso modo di Silverlight BCL è stato creato per l'uso in-browser / multi-piattaforma, un BCL completamente nuovo dovrebbe essere creato per un cloud, non credi?

..

Come menzionato da Jörg W Mittag, un linguaggio di programmazione creato esclusivamente per un cloud può avere i propri vantaggi rispetto ai linguaggi di programmazione tradizionali. Ad esempio, questa lingua potrebbe evolversi senza rompere le applicazioni esistenti, diciamo che rinomini un metodo / cambi la sua firma / o spostalo in un altro spazio dei nomi, tutte le applicazioni nel cloud verranno automaticamente aggiornate per riflettere tale modifica.

..

Teoricamente C # 5.0 potrebbe diventare un tale linguaggio con il suo complier come funzione di servizio. Ma ciò non eliminerà ancora la necessità di un BCL dedicato per il cloud.

    
posta Tarkus 07.06.2011 - 20:43
fonte

9 risposte

3

La domanda sembra sconfiggere lo scopo di avere anche una nuvola. Si suppone che il cloud sia una soluzione per astrarre il programmatore dal doversi occupare di cose come ridimensionamento, amministrazione di sistema, amministrazione di rete, ecc. (Disclaimer, questo dipenderà anche dal tuo servizio cloud, quando dico non preoccuparsi del ridimensionamento, sto pensando a qualcosa come S3 in cui ho lasciato che Amazon servisse 5 utenti o 5 milioni con lo stesso URL). Il cloud è progettato per essere una soluzione più che un problema che deve essere risolto. Quasi come chiedere, che tipo di umano dovremmo creare per adattarsi al meglio a una giacca?

Avendo qualche difficoltà ad articolare ciò che intendo qui, ma il mio punto è che se hai bisogno di un linguaggio specifico per il cloud, il cloud ha fallito il suo scopo.

    
risposta data 07.06.2011 - 22:27
fonte
3

La Newspeak lingua in realtà è progettata specificamente per il cloud.

Questo ha delle ramificazioni piuttosto interessanti. Ad esempio, è possibile eseguire refactoring oltre i limiti di distribuzione. Nelle lingue di oggi, questo non è possibile: non è possibile, ad esempio, eseguire un Renacting Refactoring del metodo su un'API pubblica, perché non si ha accesso a tutti i chiamanti. In un linguaggio cloud, tutti i chiamanti si trovano anche nel cloud, quindi puoi effettuare il refactoring attraverso il codice che non possiedi.

Ancora più interessante: puoi farlo a livello di lingua. Attualmente, una volta aggiunta una funzionalità a un linguaggio di programmazione o API, non potrà mai essere rimossa e / o modificata. I linguaggi di programmazione e le API possono crescere sempre, non restringersi mai. (Ad esempio in Java, ci sono API che sono state deprecate da 1.1 e sono ancora presenti in Java 8.) Newspeak OTOH può ridursi, perché se una funzionalità viene rimossa dalla lingua, puoi semplicemente aggiornare tutti i client della funzione per utilizzare la nuova sostituzione, poiché tutti i client sono accessibili nel cloud.

In realtà, questa ultima caratteristica è da dove la lingua prende il nome da: Nel 1984 di George Orwell, il fatto che le parole vengano rimosse da Newspeak è una delle caratteristiche principali della lingua.

    
risposta data 08.06.2011 - 01:43
fonte
1

La battuta risponde che stai riflettendo sul fatto che non c'è una ragione particolare per cui devi avere un linguaggio speciale per il cloud computing. Se ritieni che vi siano ragioni specifiche per cui le lingue esistenti sono inadatte per lavorare nel cloud, ti preghiamo di elencarle.

Per inciso ...

The same way Silverlight BCL was built for in-browser use

Il fatto che qualcosa esista non lo rende necessario.

    
risposta data 07.06.2011 - 20:53
fonte
1

Come hai posto la domanda, non c'è una sola risposta che possa sperare di essere anche vicino a universalmente corretta. Un ovvio problema è che praticamente ogni fornitore di "cloud" ha un'idea diversa di cosa significhi. La SalesForce vista di "the cloud" è un lotto diverso da Amazon Amazon 2 , solo per dare un esempio ovvio.

Guardando oltre, tuttavia, penso che l'idea generale di adattare la lingua alla piattaforma sia per lo più scarsa. Il codice di un programma applicativo deve essere orientato principalmente verso la logica di tale applicazione piuttosto che sulla piattaforma su cui viene distribuito.

Nella misura in cui viene definito, tuttavia, il "cloud computing" è poco più o meno del calcolo distribuito a distanza. Stando così le cose, Erlang è una risposta ben nota. Un tempo Occam era abbastanza noto, ma era strettamente legato al Transputer Inmos di quando quest'ultimo fallì, Occam scomparve con esso. Anche se potrebbe mettere un po 'a repentaglio la mia reputazione, una possibilità ancora migliore (IMO) è un linguaggio chiamato "Par", che viene presentato in un libro (difficile da trovare) denominato Programmazione parallela: un nuovo approccio (da, ahem ... un tizio chiamato "Bara").

Par ha il vantaggio (IMO, ovviamente) di consentire al programmatore di fornire un consiglio su mappatura e scheduling (e tale) per un particolare algoritmo, ma inserendo queste in annotazioni (facoltative) che lo scheduler normalmente rispetterà il grado possibile, ma è libero di ignorare se non possono essere soddisfatti. Il codice esprime gli algoritmi e la logica; le annotazioni esprimono la mappatura all'implementazione sottostante. I due sono chiaramente separati, sebbene siano anche tenuti insieme (normalmente nello stesso file sorgente) per mantenere la manutenzione ragionevole.

    
risposta data 08.06.2011 - 00:42
fonte
0

Bene, Google ha sviluppato Vai a tale scopo. Il fatto, che loro l'hanno fatto (costruito e rilasciato ), indica che è una soluzione funzionante. Probabilmente anche molto buono per alcuni problemi (cioè quelli che incontrano).
Ma dubito che ci sarà mai il miglior linguaggio per il cloud computing.

    
risposta data 07.06.2011 - 22:36
fonte
0

What it would look like?

Erlang

Facile da imparare, veloce, efficiente, potente, moderno.

Già usato esattamente per questo.

What would be it's major differences from C#, Java, Ruby, Python, JavaScript?

Niente come C #, Java, Ruby, Python, JavaScript.

Esattamente come Erlang

How would it's BCL (base class library) differ from let's say the one in .NET Framework 4.0?

Utilizzerebbe la libreria Erlang.

    
risposta data 07.06.2011 - 23:56
fonte
0

E il linguaggio di programmazione Clojure?
Clojure è minimal, elegante, estremamente potente, linguaggio di programmazione pronto per la programmazione simultanea ed è un Lisp.

Forse la funzione menzionata di Newspeak può essere implementata in Clojure tramite macro?

    
risposta data 08.06.2011 - 14:55
fonte
-1

What it would look like?

Python

Facile da imparare, veloce, efficiente, potente, moderno.

Già usato esattamente per questo.

What would be it's major differences from C#, Java, Ruby, Python, JavaScript?

Niente come C #, Java, Ruby, JavaScript.

Esattamente come Python

How would it's BCL (base class library) differ from let's say the one in .NET Framework 4.0?

Utilizzerebbe la libreria Python.

    
risposta data 07.06.2011 - 22:17
fonte
-2

Dovrebbe essere limitato al dominio del problema in una lingua specifica con funzioni di alto livello per lavorare direttamente all'interno dell'applicazione che lo ospita.

Ovviamente dovrebbe essere .... VBA

    
risposta data 07.06.2011 - 20:45
fonte