Domanda

linguaggio D è un'alternativa credibile a Java e C ++? Cosa ci vorrà per diventare un'alternativa credibile? Dovrei preoccuparmi di impararlo? Merita l'evangelizzazione?

Il motivo principale che chiedo è che con il nuovo standard C ++ (c ++ 0x) quasi qui, mi è chiaro che il linguaggio è andato ben oltre il punto di non ritorno rispetto a chiunque lo abbia mai capito. So che C / C ++ non morirà mai, ma ad un certo punto dobbiamo andare avanti. Anche COBOL ha avuto il suo tempo e Java ha per molti aspetti annullato il C ++. Allora, qual è il prossimo? D riempie il conto?

È stato utile?

Soluzione

Ciò che determina il successo e la popolarità di un linguaggio di programmazione per lo sviluppo di software nel mondo reale è solo parzialmente correlato alla qualità del linguaggio stesso. Essendo un linguaggio puro, D ha probabilmente molti vantaggi rispetto a C ++ e Java. Per lo meno è un'alternativa credibile come linguaggio puro, essendo tutte le altre cose uguali.

Tuttavia, altre cose contano per lo sviluppo del software - quasi più del linguaggio stesso: portabilità (su quante piattaforme funziona), supporto per il debugger, supporto IDE, qualità standard della libreria, supporto dinamico della libreria, collegamenti per API comuni, documentazione , la comunità di sviluppatori, lo slancio e il supporto commerciale, solo per citarne alcuni. Sotto ognuno di questi aspetti, D è irrimediabilmente dietro Java, C ++ e C #. In effetti, direi che è persino dietro il cosiddetto "scripting". lingue come Python, Perl, PHP, Ruby e persino JavaScript in questo senso.

Per essere schietti, semplicemente non è possibile creare un'applicazione multipiattaforma su larga scala utilizzando D. Con una libreria standard immatura, nessun supporto in qualsiasi IDE moderno (ci sono plugin per entrambi Visual Studio e Xamarin Studio / MonoDevelop), supporto per librerie dinamiche / condivise limitate e pochi collegamenti ad altre lingue, oggi D non è più un'opzione.

Se ti piace quello che vedi di D, lo impari, non dovrebbe volerci molto se conosci già Java e C ++. Non penso che l'evangelizzazione sarebbe utile - a questo punto se D avrà successo, ciò di cui ha davvero bisogno è che più persone lo usino in silenzio e affrontino le sue principali carenze come la libreria standard e il supporto IDE.

Infine, per quanto riguarda il C ++, mentre la maggior parte concorda sul fatto che il linguaggio sia troppo complesso, migliaia di aziende stanno usando con successo il C ++ come parte di un sano mix di linguaggi consentendo solo un sottoinsieme più piccolo e ben definito del linguaggio. È ancora difficile battere il C ++ quando sono richieste sia prestazioni non elaborate che utilizzo di memoria ridotta.

Altri suggerimenti

Solo per aggiungere le mie esperienze personali nel mix:

Circa un anno fa ho lavorato a un progetto di gioco su piccola scala (3 programmatori) della durata di 3 mesi, in cui abbiamo usato D come lingua principale. L'abbiamo scelto in parte come esperimento, in parte perché aveva già collegamenti per SDL e alcuni altri strumenti che stavamo usando, e per lo più per i benefici sembra avere su C ++.

Abbiamo adorato usarlo. È stato veloce da imparare e facile da scrivere. Molte delle sue funzionalità si sono rivelate preziose e mi mancano che siano tornate al C ++.

Tuttavia, i seguenti punti hanno reso le nostre vite più difficili:

  1. Al momento non esisteva un IDE valido, il che rappresentava un grosso problema. Alla fine abbiamo creato il nostro personalizzando Scite. Funzionava bene, ma non era l'ideale.
  2. Al momento non era presente alcun debugger. Siamo riusciti a far funzionare WINDBG su base imprevista, ma non era affidabile. Il debug del codice senza un debugger ha reso la vita a volte infernale.
  3. Al momento c'erano 2 librerie standard tra cui scegliere (Tango e Phobos). Abbiamo iniziato con uno, siamo passati all'altro e avevamo davvero bisogno di un mix di funzionalità da entrambi (Tangobos!). Ciò ha causato mal di testa e riscrittura del codice.
  4. Collegamenti ad altri strumenti non disponibili. Alla fine abbiamo dovuto passare a DirectX (per motivi per cui non entrerò). Non erano disponibili collegamenti per DirectX, quindi abbiamo dovuto scrivere il nostro in C ++, crearlo come dll e associarlo a quello. Questo è stato un lavoro abbastanza brutto e ha richiesto del tempo.

Nel complesso, abbiamo adorato scrivere D. Ha reso la scrittura del codice semplice ed è stato veloce da imparare. I problemi che ho citato fanno eco alla risposta che è stata accettata per questa domanda: è il "extra" bit che devono essere indirizzati in D, il nucleo è solido.

Sono d'accordo che il C ++ sta diventando un linguaggio senza uscita - e mi fa male dirlo, dopo averlo usato negli ultimi 17 anni.

Penso che D sia il legittimo successore di C ++. Dal punto di vista linguistico "fa tutte le cose giuste" (anche se non sono d'accordo con ogni decisione minuto). Penso che con C e C ++ sul declino non ci siano altri linguaggi a livello di sistema che possano davvero fare quello che fanno, mentre si reggono nel mondo dei linguaggi moderni - tranne D! D non solo ricopre questo ruolo, ma lo eccelle! Uno sguardo a D1.x dovrebbe essere sufficiente per convincerti di questo - ma quando guardi D2.0 ti lascia senza fiato. Ritengo che non ci sia nessun altro linguaggio in giro oggi che funzioni come D2.0 nel colmare i paradigmi di programmazione imperativa e funzionale - che diventerà più significativo nei prossimi anni.

La mancanza di accettazione da parte del mainstream - o persino di visibilità - così come le librerie su larga scala, mature, sono ovviamente un ostacolo. Tuttavia non penso che tu possa cancellarlo per questo. Sono convinto che D crescerà per diventare una delle lingue più importanti in circolazione nei prossimi anni - e quelli che lo stanno prendendo sul serio ora saranno ben posizionati per assumere la guida in quel momento arriva.

Penso che la differenza avverrà a causa, in gran parte, del coinvolgimento di Andrei Alexandrescu. Questo non è per screditare Walter Bright in alcun modo, che ha fatto un lavoro importante nel portare D al mondo. Ma Alexandrescu è una figura importante e avvincente nella comunità C ++ - ed è lì che verrà la maggior parte dei potenziali switcher D. E ha anche dato un contributo significativo e importante a D2.0 a supporto della programmazione funzionale.

Si può ancora scoprire che D è destinato a essere il Betamax dei linguaggi a livello di sistema - ma i miei soldi sono su di esso che cambiano nei prossimi due anni.

Mi piace il fatto che D sia opera di un genio, principalmente una mente: Walter Bright, il cui compilatore Zortech è stato fantastico ai suoi tempi.

Al contrario, C ++ è troppo progettato dal comitato, anche se Bjarne è un'influenza. Troppe funzioni aggiuntive e strana nuova sintassi. Questa differenza si riflette nella facilità di apprendimento e facilità d'uso quotidiano, meno bug.

Le lingue più coerenti portano a una migliore produttività e gioia del programmatore, ma questo è soggettivo e discutibile! (Immagino che dovrei votare la mia risposta verso il basso)

D è un buon linguaggio e abbastanza popolare , ma come tutte le lingue, è solo un altro strumento. Quale strumento usare dipende dal tipo di persona che sei, da come pensi, dall'ambiente in cui lavori, dalle restrizioni delle lingue che applicano il programma e, soprattutto, dal programma stesso. Se hai tempo, consiglierei sicuramente l'apprendimento di D. Caso peggiore, non lo userai mai. Più probabilmente imparerai quali aspetti ti piacciono di più e in quali condizioni brilla di più, e ne trarrai vantaggio quando creerai nuovi programmi.

Consiglio di guardare la tabella comparativa D per vedere quali sono le caratteristiche sono per la lingua e vedere se sembra giusto per te.

Il linguaggio D è moderno. Nessuna lingua è perfetta e non ci sono dubbi. Ma le lingue sono nate per semplificare la vita. Dove il linguaggio D rispetto al C ++ ha molte buone caratteristiche, in termini di complessità. Sono coinvolte molte altre specialità di combinazione linguistica, che aiutano i programmatori a programmare più velocemente, con le funzionalità TOP introdotte da altre lingue. Vedi anche: per maggiori dettagli su D e altre lingue

  • D vs C ++, è la compatibilità, in cui sono coinvolti enormi linguaggi C ++ e richiede compatibilità con D. D consente già il 100% di compatibilità con C, che è comunque una buona vittoria.

  • D vs C ++, C ++ è la mia opinione un linguaggio molto carino, ma è difficile da programmare e richiede tempo, richiede sempre più esperienza per avere successo, ma D consente di fare lo stesso con semplicità

  • D vs C ++, non sono sicuro che C ++ lo faccia, ma D non consente l'assegnazione di variabili con nessuna restrizione di tipo utilizzando " auto " ;, che è utile avere una dinamica variabile, quando è necessario è possibile creare un tipo rigoroso

  • D vs C ++, se hai altre esperienze linguistiche, puoi iniziare subito con esso, ha una road map di apprendimento facile e viene progettata da un team esperto e dal supporto dell'azienda

  • D vs C ++, la cosa molto bella che ho trovato di D, è lo stile del codice, dà l'aspetto e la sensazione esattamente come C / C ++, mentre la codifica ricorda che sto facendo C / C ++ davvero moderno che ha chiamato D

Ci sono molte altre buone ragioni per il linguaggio D, non c'è motivo di sottovalutare nessuna lingua, è sempre la scelta dell'utente.

Dipende davvero da quali sono le tue esigenze: sul lato server esistono applicazioni commerciali su larga scala scritte in D do , e per questo D (che in genere usa Tango / Mango) è perfetto, e è probabile che tu possa soddisfare un numero maggiore di richieste rispetto a qualsiasi altra lingua / piattaforma.

Per soluzioni più specializzate in termini di protocolli e interattività (che molti sono) avrai più problemi a trovare le librerie necessarie e la mancanza di strumenti probabilmente ti influenzerà maggiormente.

D è piuttosto impressionante e il libro di Andrei al riguardo è ben scritto. Ma come altri hanno già detto, hai bisogno degli strumenti e del supporto della piattaforma. GDC potrebbe, nel tempo, essere la risposta ad entrambi.

Hai visto questo?

" GNU Debugger aggiunge il supporto per il linguaggio D " ;: http: // www. linux.com/news/enterprise/biz-enterprise/358956-gnu-debugger-adds-d-language-support

Inoltre, il sito digitalmars ha pagine che parlano dell'interfaccia con C e C ++ (per quelle librerie senza le quali non puoi vivere). Mi chiedo se ci sono strumenti che, dato un file di intestazione C, si prenderanno cura di scrivere i prototipi D.

Personalmente a questo punto non spingerei per fare un grande progetto in D, ma userei D per strumenti interni, facendo esperienza con esso e introducendo altri ad esso.

La domanda originale era se D fosse un'alternativa credibile a Java e C ++. Non penso che D e Java competeranno molto nella pratica; D compete con C ++ e ora Go. Altre domande riguardano le differenze tra D e Go, ma Go è generalmente considerato più facile da usare. Quindi sospetto che il futuro di D dipenda molto dalla quantità di spazio che può respirare tra C ++, l'attuale re della collina e Go, l'alternativa molto più semplice che ha il supporto di Google.

AGGIORNAMENTO: ho appena scoperto che il mio capitolo preferito del libro di Andrei , quello sulla concorrenza, è disponibile gratuitamente online. Sicuramente merita una lettura!

Ed ecco una lunga discussione sui relativi meriti / obiettivi / approcci di Go and D .

Sembra che alla domanda sia stata data una risposta. D è il linguaggio migliore rispetto a C ++.

La questione se D ai fini pratici abbia un'infrastruttura migliore è secondaria.

In breve, se sono entrambi linguaggi nuovi di zecca senza alcun supporto intorno a loro D è la lingua migliore, ergo è la lingua migliore.

Come linguaggio, ho sempre pensato che D fosse più vicino a C # che a C ++. Non nelle funzioni e nelle librerie, ma in "sentimento". È molto più pulito, più bello ... divertente (rispetto al C ++). IMHO il più grande ostacolo nel diventare un'alternativa credibile è strumenti, IDE e debugger. Se D supera alcuni ostacoli di uso / adozione diffusi, si manifesteranno più strumenti e librerie. (Io stesso tornerò a D, se ci saranno IDE e debugger utilizzabili.)

Funziona alla grande per i miei progetti di animali domestici. Lo userei per i progetti dei datori di lavoro, ma per non sapere quanto sarebbe difficile per loro trovare qualcuno che prendesse il controllo della fonte dopo che avessi passato. Non ci sono ragioni tecniche per evitarlo, almeno sulle piattaforme supportate. (bussa al legno)

Un approccio è quello di cercare lavori nella tua zona. Trova i lavori che vorresti fare e vedi quali competenze stanno chiedendo. Se stanno chiedendo C ++ o Ruby o Oracle o D, questa è l'abilità che ti aiuta principalmente a ottenere il lavoro che desideri.

Sembra un linguaggio molto ben progettato; molto meglio di C - C ++ - Obiettivo C. Posso vivere senza un IDE o un debugger per un po ', ma non senza una buona libreria documentata per D 2.0.

Tornerò tra 6 mesi ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top