Scalabilità e linguaggi di programmazione

6

Che cosa rende un linguaggio scalabile?

Credo che la scalabilità dipenda più dalla progettazione del sistema. Mi sembra davvero strano, dire che una lingua è più scalabile rispetto all'altra.

    
posta r15habh 26.07.2011 - 09:26
fonte

5 risposte

8

Se vuoi un punto di vista accademico, leggi questo articolo . Se stai pensando a Scala, leggi la panoramica di Odersky e degli amici dove discutono cosa rende scalabile Scala . C'è anche una domanda correlata .

In breve, Scala ha caratteristiche come l'overloading dell'operatore, classi definite dall'utente, tratti e molti altri, che consentono di esprimere molti problemi specifici del dominio in modo molto naturale.

    
risposta data 26.07.2011 - 09:30
fonte
6

Non esiste un linguaggio scalabile. Ogni lingua fino ad oggi non riesce in qualche modo.

  • Il programma supporta le librerie scritte in quella lingua?
    Pascal esemplifica questo problema. non scalabile in questo senso.

  • La lingua è coerente?
    Visual Basic non è scalabile in questo senso. Visual Basic è un outlier in questo senso in quanto mostra costantemente un'assoluta mancanza di coerenza. L'overloading operativo in C ++ e in altri linguaggi è una buona funzionalità, ma anche una disfunzione quando il sovraccarico è incoerente con il significato di base (ad esempio std::isteam::operator>> ).

  • Il linguaggio è stabile?
    Un programma scritto 20 anni fa in Fortran o Lisp ha buone probabilità di essere compilabile e gestibile oggi. Python e scala non sono scalabili in questo senso. Esegui l'upgrade alla versione più recente e migliore e potresti interrompere il codice che è stato scritto la scorsa settimana.

  • La lingua è ampiamente accessibile?
    I primi computer sono stati programmati a livello di bit (ENIAC) o livello macchina (UNIVAC-1). Sei donne erano in grado di programmare l'ENIAC. Queste sei donne sono state riconosciute da più organizzazioni per questa incredibile impresa. Un complesso di programmi moderni su larga scala è stato scritto da persone con diversi livelli di abilità di programmazione. Un linguaggio che richiede una laurea in informatica non è scalabile. Il Lisp, ad esempio, è una lingua meravigliosa che è rimasta molto povera nel mondo accademico perché non è accessibile alle masse.

  • Il linguaggio supporta le stringhe?
    Buona fortuna scrivere un parser in Fortran.

  • Il linguaggio supporta l'elaborazione numerica?
    Buona fortuna a scrivere un programma scientifico in Cobol. I programmatori Diehard Fortran rifiutano C (e C ++, e Java e ...) perché nelle loro menti nulla si avvicina a Fortran quando si tratta di programmazione scientifica. Per questo motivo, molte delle biblioteche scientifiche fornite da lingue non Fortran sono semplicemente wrapper attorno alle librerie Fortran piuttosto che alle porte delle implementazioni Fortran nella lingua di destinazione.

  • La lingua è applicabile a un'ampia gamma di problemi?
    Le due domande precedenti sono specializzazioni di questa domanda più ampia. Le lingue originali per uso generale, Fortran, Lisp e Cobol. erano tutt'altro che scopo generale.

  • Il linguaggio funziona bene?
    Buona fortuna a scrivere una simulazione di una galassia in python o scala. La risposta potrebbe tornare quando l'universo finisce. Le prestazioni non contano, finché non ha importanza. Quando è importante, le prestazioni possono essere fondamentali. Un linguaggio che evita di affrontare problemi di prestazioni non è scalabile.

  • Il linguaggio invita tecniche di programmazione sbagliate?
    Perl invita i programmatori a scrivere codice di sola scrittura. FORTRAN (Fortran molto meno) ha invitato i programmatori a scrivere il codice spaghetti. Le lingue moderne invitano i programmatori a nascondere gli spaghetti con costrutti come eccezioni e interruzioni, ma sono ancora spaghetti vecchio stile. C'è anche l'ereditarietà degli spaghetti in C ++ e Smalltalk, gli spaghetti call trees in lingue in cui una funzione a dieci linee è vista come troppo lunga. E ovviamente lasagne bucate, ravioli che perdono e una miriade di altri tipi di codice di pasta scadente. Queste disfunzioni mettono in discussione la scalabilità.

  • La lingua è una buona lingua per la creazione di codice legacy?
    Troppi progetti di grandi dimensioni hanno bisogno di assumere un ex dipendente come consulente perché l'autore originale è l'unica persona che ha la minima possibilità di comprendere il codice. Una lingua che è buona per la creazione di sistemi legacy non è una buona scelta come linguaggio scalabile.

  • La lingua è sicura?
    I grandi sistemi sono scritti inevitabilmente da persone che in qualche modo riescono a trovare tutti i difetti nel linguaggio di implementazione. I project manager di un sistema ampio e complesso possono scegliere tra due classi di persone per l'authoring del sistema: gli informatici che non conoscono il dominio del problema o gli esperti di dominio che non sanno come scrivere bene il codice. Non possono usare persone che possono vivere in entrambi i mondi perché queste persone sono in numero limitato e distruggerebbero la scala delle retribuzioni dell'azienda. Un linguaggio scalabile deve essere sicuro per quanto riguarda il dominio e per quanto riguarda i costrutti di informatica. Tale linguaggio non esiste.

risposta data 26.07.2011 - 14:03
fonte
2

Erlang è un buon esempio di linguaggio scalabile. È stato progettato da zero per supportare in maniera massiccia paralleli, (morbidi) in tempo reale, thread non interferenti con un meccanismo di passaggio pulito dei messaggi. L'ecosistema linguistico è stato progettato per un uptime quasi del 100% con aggiornamenti sul posto.

Ciò che rende scalabile una lingua è se interferisce o meno quando si desidera passare dall'esecuzione di un singolo thread su un singolo nodo a più thread su molti nodi. Puoi farlo utilizzando qualsiasi lingua, ma la facilità con cui viene eseguita è molto diversa da quella delle lingue.

Un altro esempio è FORTRAN. Altri hanno buttato giù il buon vecchio "FORTRAN" per non essere scalabile, ma direi il contrario. Data la sua natura statica e il suo rigido modello di programmazione, è stato costantemente utilizzato in situazioni di calcolo ad alte prestazioni a causa della facilità di parallelizzazione. Non sarebbe la lingua che sceglierei per la programmazione di rete, ma se volessi trovare gli autovalori di matrici gigantesche, sarebbe il go to language (gioco di parole).

    
risposta data 26.07.2011 - 14:38
fonte
0

La scalabilità in una lingua è molto diversa dalla scalabilità in un programma. In un programma significa che può utilizzare più risorse in base alle esigenze, ma in un programma si tratta più di essere in grado di estenderlo a seconda delle esigenze, con nuovi tipi, costruzioni, ecc ...

Ad esempio, Scala è stato progettato pensando a questo, per essere facilmente estendibile, e per questo ti dà gli strumenti giusti; se puoi, puoi leggere più dettagliatamente qui

    
risposta data 26.07.2011 - 09:35
fonte
0

Un linguaggio può essere chiamato "scalabile" nel senso che supporta l'incapsulamento pulito e la modularizzazione del codice, è ragionevolmente facile da leggere, può supportare le astrazioni con cui lavori e così via. Anche l'ortogonalità può essere d'aiuto, poiché quando hai un solo modo di esprimere i pensieri nella lingua, puoi capire meglio il codice degli altri. In breve, la lingua è scalabile se ti offre gli strumenti giusti per costruire comodamente i sistemi di grandi dimensioni .

Le persone discutono su quali funzionalità linguistiche siano realmente d'aiuto per la scalabilità, per esempio molte persone del Perl ti diranno che l'ortogonalità non è richiesta perché una lingua sia scalabile. Ma gli esempi che ho dato dovrebbero comunque darti l'idea.

    
risposta data 26.07.2011 - 09:36
fonte

Leggi altre domande sui tag