Domanda

Mi chiedo quanto sia maturo e stabile D, e se potrebbe essere un buon sostituto per C / C ++.

So che attualmente ci sono due biblioteche standard (Phobos e Tango).È ancora il caso che non ci sia una libreria standard unificata?

Inoltre ho sentito qualche tempo fa che le lingue hanno problemi sui confini del codice GECC / NON GECT.Non riesco a trovare alcun riferimento a questo sul sito Web D, quindi questo problema è ancora vero?

È stato utile?

Soluzione

La versione 1 di D è matura e stabile, e ci sono sicuramente persone che lo usano per un vero lavoro. Phobos è l'unica biblioteca standard che D ha mai avuto o probabilmente avrà mai avuto, ma i Phobos di D1 mancano abbastanza che sono state create varie librerie di terze parti per riempire le lacune. Tango è il più grande di questi ed è la biblioteca di terze parti più pesantemente utilizzata (quindi perché spesso viene chiamato una seconda libreria standard anche se non lo è, e Walter Bright sarà veloce per indicare che non è). Tuttavia, il tango e i Phobos in D1 non si mescolano molto bene (IIRC perché Tango sostituisce alcune cose standard come il collezionista della spazzatura), quindi c'è una buona possibilità che qualcuno che la programmazione in D1 utilizzerà Tango senza Phobos. Inoltre, D1 è supportato da più compilatori in aggiunta al compilatore primario da Digital Mars - incluso LDC e GDC.

La versione 2 di D sta solo raggiungendo la maturità e la stabilità. Hanno smesso di fare importanti cambiamenti nella lingua, quindi in genere non devi preoccuparti di tutto ciò che ti sta dando con un aggiornamento del compilatore come nel caso in passato mentre stavano ancora inchiodando la lingua. Infatti, ora è abbastanza maturo che Andrei Alexandrescu rilasciato il linguaggio di programmazione D come risorsa definitiva sulla lingua che dovrebbe rimanere errori di blocco validi nel testo (ed è uno dei migliori libri di linguaggio di programmazione che io "Se leggere anche io). Tuttavia, c'è ancora un sacco di bug-fixing in corso, quindi è possibile imbattersi in un bug che ti causa un bel po 'di irritazione per la tua particolare applicazione. È sicuramente maturo abbastanza e abbastanza stabile da fare un vero lavoro con esso, ma essere consapevole che è abbastanza possibile correre in bug.

Tango non è stato ancora portato a D2, quindi non è davvero un'opzione durante la programmazione in D2. Tuttavia, Phobos sta arrivando abbastanza bene. Sta ottenendo un sacco di grandi aggiunte ad esso (in realtà ha contenitori ora! - La mancanza di contenitori in Phobos è un grande motivo per usare il tango in D1 piuttosto che Phobos), e ha alcune cose davvero potenti in IT - std.algoritmo è particolarmente bello. Il modo D maniglie delle funzioni di Lambda, delle funzioni annidate e dei puntatori delle funzioni rende le funzioni di passaggio per gli algoritmi che potrebbero semplificare gli anni più facili di quanto sia nell'attuale standard di C ++. Inoltre, è stato fissato in D2 in modo che il collezionista della spazzatura e qualche altra roba principale che il tango stava duplicando è ora separato da Phobos. Quindi, una volta che Tango è stato portato a D2, sarai in grado di mescolare i Phobos e il codice Tango - anche se come è stato sottolineato in una risposta precedente, Phobos e Tango utilizzano filosofie di design piuttosto diverse (Tango è molto simile a Java e Phobos Usando pesantemente modelli e meta-programmazione con Duck-Typing piuttosto che interfacce), quindi non so quanto bene si mescoliranno da quel punto di vista.

Attualmente, credo che DMD sia l'unico compilatore che è aggiornato per quanto riguarda le specifiche per D2, ma credo che ci sia il lavoro svolto sui compilatori GDC e LDC D (anche se attivi che funzionano è, non lo so). Inoltre, Walter Bright sta attualmente lavorando sul porto a 64 bit di DMD, quindi riceveremo la compilazione nativa a 64 bit uno di questi giorni relativamente presto.

Nel complesso, direi che D2 è pronto per l'uso, ma devi essere consapevole del fatto che c'è ancora un sacco di lavoro a farlo per quanto riguarda le correzioni di bug e simili. Quindi, D2 è sicuramente pronto per l'uso di hobby e potenzialmente per un uso serio al lavoro, ma se tu veramente bisogno di stabilità (come se stai facendo un errore e un errore significa morte), allora D1 sarebbe probabilmente una scelta migliore. Naturalmente, la grande cosa da ricordare di D2 è che ha molte caratteristiche che D1 non ha, quindi a meno che tu non abbia davvero bisogno di una stabilità della roccia solida, allora D2 è probabilmente il modo di andare. Fortunatamente, continua a maturare e stabilizzarsi, quindi il tempo è sicuramente avvicinato quando non ci sarà alcuna domanda che usare D2 sarebbe meglio.

A prescindere, sia D1 che D2 sono buone sostituzioni per C e C ++ nel caso generale. Possono fare ciò che c e c ++ fanno, e (specialmente nel caso di D2) probabilmente può farlo meglio. Il posto principale che D potrebbe cadere dietro è in quanto bene è ottimizzato. C'è un sacco di codice che sarà altrettanto veloce in D come in C o C ++, ma c'è ancora un sacco di lavoro da fare su D, quindi c'è molto spazio per ottimizzarlo oltre, e a volte in ritardo dietro C e C ++ per l'efficienza . Quindi, in generale, D è efficiente, ma se tu veramente bisogno la più efficienza che puoi ottenere, potrebbe non essere ancora abbastanza buono per ciò di cui hai bisogno (anche se ci sta arrivando). Inoltre, ci sono molte librerie mature C e C ++ là fuori mentre D non ha da nessuna parte vicino allo stesso livello di codice fluttuante là fuori con cui lavorare. Qualsiasi codice C potrebbe essere utilizzato con D poiché le funzioni C possono essere chiamate da D, e alcuni dei codici C ++ potrebbero essere (anche se ci sono alcune restrizioni quando si mescolano il codice C ++ con D), in modo che non sia necessariamente molto un impedimento, ma è qualcosa di cui essere a conoscenza. T.

Il luogo principale dove è carente sarebbe sarebbero le biblioteche della GUI.Ci sono alcuni per D1, e c'è lavoro svolto sulle biblioteche della GUI per D2, ma non credo che nessuno di loro sia particolarmente maturo a questo punto.

Allora, come con tutto, quale lingua dovresti usare dipende da ciò che stai facendo.D farà la maggior parte delle cose e li faranno bene.Ma non fa tutto, e sta ancora maturando.Personalmente, a questo punto, uso D a meno che non abbia bisogno di usare qualcos'altro per un particolare progetto, che non è spesso a meno che il progetto non fosse già scritto in qualcos'altro, e non ha senso portarlo in questo momento.Quindi, suggerirei vivamente di usare d, ma dovrai esaminarlo e usarlo per vedere se farà davvero quello che vuoi a questo punto.

Altri suggerimenti

Consiglio di utilizzare D2 con Phobos.È nel punto in cui la lingua è abbastanza piacevole e abbastanza stabile da compensare le frustrazioni occasionali causate da problemi di implementazione.

.

So che attualmente ci sono due biblioteche standard (Phobos e Tango), quindi presumo che ci possano essere persone che cercano di unirli.

"Unificazione" è estremamente improbabile a causa delle differenze nelle licenze. Quando Tango verrà portato a D 2.0, sarai in grado di usarlo accanto a Phobos, che non è (facilmente) possibile in D 1.0.

.

Inoltre ho sentito qualche tempo fa che le lingue hanno problemi sui confini del codice GECC / NON GECT. Non riesco a trovare alcun riferimento a questo sul sito Web D, quindi questo problema è ancora vero?

Credo che ci siano solo problemi se non stai attento a come gestire la memoria. Se tutti i riferimenti a un oggetto assetato GC vengono memorizzati al di fuori delle regioni di memoria contrassegnate come radici GC, il GC considererà l'oggetto non rinnovato e lo eliminerà.

.

Se dovessi scegliere D come sostituzione di C oggi, che d (V 1.0 o V 2.0) e quale libreria standard suggeriresti?

Phobos e Tango stanno entrando in direzioni in qualche modo diverse. Phobos (in D 2.0) cravatta in stretta con le nuove funzionalità di D2. Tango è più confezionato e contiene moduli che non sono presenti in Phobos, ad es. Supporto del cliente HTTP / FTP, varie classi di crittografia, ecc. Seducono anche diverse filosofie di design (Phobos è più imperativo / meta-programmatrice-ish, mentre Tango è molto strettamente oop-simile, e quindi simile a Java a tale riguardo). < / P >.

.

Mi chiedo quanto sia maturo e stabile D, e se potrebbe essere un buon sostituto per C / C ++.

Sarei diffidente di usare qualsiasi linguaggio che non è stato ancora supportato da un corpo di standard come ANSI, ISO o ECMA.Questo è forse un indicatore di maturità.Ciò ha detto che Java e Delphi ad esempio caderebbero in quella categoria, e mentre non uso quelle lingue, potrebbero probabilmente essere descritte come "mature".

Un'altra misura potrebbe essere il numero e la qualità dei libri e degli articoli scritti per la lingua.C'è un libro per D che sono a conoscenza di Andrei Alexandrescu.Ha anche scritto un lungo Articolo sulla lingua per il DR. Dobbs, dove si occupa specificamente del problema della libreria standard.

Ho avuto una buona esperienza che scrive un piccolo gioco in D1 con Phobos e SDL, ma è un progetto piuttosto piccolo.

A mio parere, D Manca:

    .
  • Un forum ufficiale del Web dove le persone possono ottenere aiuto e cercare risposte (non newsgroup)
  • Un repository ufficiale per molti SDK convertiti in D (ad esempio SDL, GTK, ecc. Questi sono spesso difficili da trovare e usare, quando esistono affatto.)

Non penso che la questione di sostituzione cise se una potenziale sostituzione sia "buona" o "matura" abbastanza a livello teorico, ma piuttosto sulle considerazioni pratiche e il fatto che c sia "abbastanza buono" per cosaÈ usato per.A meno che una lingua abbia completato ambienti di costruzione e runtime nativi per tutti i principali sistemi operativi là fuori, non è realmente pratico per ciò che c è usato per.Il fatto che c sia la lingua di Posix è una parte importante dell'intero numero.

Sicuramente altre lingue semi-basso livello come D potrebbero avere grandi applicazioni in campi specializzati.Ma è improbabile che vedi il principale software multiplatform (server Web, server di database, processori di database, browser Web, ecc.) Scritto in D perché nessun sistema operativo importante (molto meno di tutti) viene fornito con un ambiente di build o runtime. .

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