I diversi linguaggi di programmazione disponibili sono ridondanti?

7

Ovviamente questo non si applica a tutte le lingue. Ma mi chiedevo se alcune lingue esistono solo a causa della cultura di mercato della concorrenza.

Ad esempio, sappiamo tutti che C è ampiamente utilizzato per sistemi integrati e leggeri. E, per quanto ne so, nessuno li morde.

Ma che ne dici di JAVA, C #, Ruby, PHP, ASP.NET, Python, Perl e figlio?

So che PHP è molto più leggero di ASP.NET e JAVA e alcuni direbbero che è il suo differenziale, perché è possibile distribuire le applicazioni molto più velocemente. Altri direbbero che, nonostante ciò, in futuro capirai che avrai bisogno di un linguaggio più solido.

Ci sono diversi casi, come nel caso di Twitter, usando SCALA.

Che cosa diresti se, ad esempio, domani ti svegli nel Garden of Eden, dove tutti lavorano insieme senza concorrenti. Quali linguaggi di programmazione ti unire o interrompere?

Il mio punto è: ci sono linguaggi di programmazione che esistono solo a causa della concorrenza o tutti hanno applicazioni molto specifiche e non possono essere buttati via o la loro funzionalità è stata unita?

    
posta Keyne Viana 31.08.2011 - 19:25
fonte

4 risposte

20

Sì, i diversi linguaggi di programmazione sono ridondanti in larga misura, ma non è necessariamente una cosa negativa. I linguaggi di programmazione che riescono di solito diventano trincerati e sono praticamente impossibili da cambiare. (Un'eccezione che dimostra che la regola è C ++ 1x, in cui il cambiamento è assolutamente glaciale.) Quando questo accade, i nuovi linguaggi che sono in qualche modo ridondanti ma migliorano il vecchio linguaggio arriva insieme per imparare dagli errori e portare il meglio degli altri paradigmi . Spesso c'è disaccordo su cosa siano esattamente il bene e il male della vecchia lingua e quali siano le migliori caratteristiche degli altri paradigmi, quindi ci devono essere più lingue nuove per provare una varietà di approcci. Se hai bisogno di compatibilità e stabilità usi la vecchia lingua. Se hai bisogno di produttività, nuove funzionalità e meno cruft, sei una delle nuove lingue. Esempi:

  1. C è un ottimo linguaggio per il bit bashing di basso livello. Il C ++ ha aggiunto fondamentalmente tutte le funzionalità di produttività che potrebbero essere aggiunte a C senza perdite importanti di compatibilità con le versioni precedenti, con sovraccarico zero e, al momento, entro i limiti della tecnologia del compilatore. D and Go sono tentativi di realizzare un linguaggio di programmazione dei sistemi migliore basato su ciò che è stato appreso da quando C ++ si è radicato, con una tecnologia di compilazione più moderna e con un overhead piccolo ma non zero che è più accettabile al giorno d'oggi di quando è stato creato C ++. D concentra più metaprogrammazione ed espressività ed essendo un C ++ migliore, Go si concentra maggiormente sulla semplicità e sull'essere un C migliore.

  2. Il BASIC era tra i primi tentativi di un linguaggio dinamico di alto livello, ma era troppo limitato per essere molto utile. Perl ha reso i linguaggi dinamici utili per il lavoro reale, ma ha accumulato tonnellate di cruft perché si è evoluto più di quanto non fosse stato progettato. Python e Ruby cercano di prendere il meglio del Perl e di creare un linguaggio con un design più pulito e coerente. Ovviamente i progettisti di Python e Ruby hanno idee un po 'diverse su quali siano le parti migliori di Perl.

  3. Java ha aperto la strada all'idea di un linguaggio VM di forza industriale con una garbage collection super efficiente che può facilmente essere JIT compilato in codice con prestazioni paragonabili a quelle native. Probabilmente sono andati in mare favorendo la semplicità rispetto all'espressività, ma è troppo tardi per cambiare. C # è simile a Java, ma essere nuovi aveva molta più libertà di innovare e rendere il linguaggio più espressivo.

  4. I linguaggi aromatizzanti funzionali hanno un aspetto molto accademico, con una curva di apprendimento ripido, nonostante i loro vantaggi in termini di ragionamento sul codice e sulla concorrenza e, in alcuni casi, la tersezza. I recenti tentativi di renderli più accessibili e orientati al mondo reale includono Scala e F #.

risposta data 31.08.2011 - 20:49
fonte
6

Il problema con questo è che i diversi programmatori preferiscono o addirittura hanno bisogno di pensare in modi diversi. Ad esempio, personalmente interromperò praticamente tutte le implementazioni interpretate o il linguaggio digitato dinamicamente, perché semplicemente non ne vedo la necessità e preferisco di gran lunga linguaggi di implementazione compilati tipicamente in modo statico. E poi interromperò ogni lingua senza distruzione deterministica o dove non puoi scegliere per istanza come allocare la tua memoria - che praticamente lascia il C ++. Ma un altro programmatore potrebbe scoprire che improvvisamente non ha gli strumenti di cui ha bisogno. Non tutti sono all'altezza delle stesse sfide. Alcune persone preferiscono eseguire il debug degli errori di tipo nei linguaggi di tipo run-time per eseguire il debug degli errori di sovraccarico errati in lingue tipizzate staticamente.

Modifica per chiarezza: se chiedi a due programmatori quali sono le lingue importanti, otterrai tre risposte diverse.

    
risposta data 31.08.2011 - 19:39
fonte
3

Sì, sono terribilmente ridondanti. Se tutti usassimo semplicemente il miglior linguaggio di programmazione, gli altri potrebbero cadere nel dimenticatoio. Ora, se solo potessimo essere d'accordo su quale fosse il miglior linguaggio di programmazione ...

Scherzi a parte, ci sono buone ragioni per cui ci devono essere molti linguaggi di programmazione:

a.) un linguaggio di programmazione che è buono per il bit-bashing di basso livello può (e di solito lo fa) mancare di astrazioni di livello superiore, rendendolo inadatto per la programmazione in grande

b.) un linguaggio di programmazione con astrazioni di alto livello spesso dipende da un ambiente di runtime molto pesante (spesso persino un ambiente macchina virtuale completo scritto in un'altra lingua), e quindi non può essere usato direttamente per la programmazione bare metal (o addirittura per la generazione di codice nativo)

c.) linguaggi di programmazione diversi spesso incoraggiano modi molto diversi di pensare a un problema - e dal momento che ci sono molti diversi tipi di problemi nel mondo, alcune lingue e problemi creano abbinamenti naturali, mentre altri accoppiamenti possono essere imbarazzanti o addirittura inutilizzabile (al di là del livello di 'taratura di turing' in cui qualsiasi lingua può essere utilizzata per qualsiasi scopo).

    
risposta data 31.08.2011 - 19:43
fonte
2

L'unica lingua che conosco proviene dalla competizione è stata J ++ di Microsoft e che è stata uccisa nel 2004 .

Un sacco di lingue sono create per soddisfare una particolare esigenza dell'autore. Esempi di questo sono Perl e Ruby.

Perl è stato creato da Larry Wall nel 1987 per facilitare l'elaborazione dei report. Rubino è stato creato da Yukihiro Matsumoto a causa del malcontento con altre lingue. Voleva creare un "... linguaggio di scripting che fosse più potente di Perl e più orientato agli oggetti di Python ...".

    
risposta data 31.08.2011 - 19:47
fonte

Leggi altre domande sui tag