2010-03-23 4 views
24

L'utilizzo di linguaggi funzionali puri può avere molti vantaggi rispetto all'impiego di imperativi impuri, ma i linguaggi di sistema di basso livello generalmente consentono di ottenere prestazioni molto più elevate, specialmente quando sono indispensabili perché consentono di specificare i passaggi esatti in come la cpu dovrebbe calcolare il risultato.Perché darcs invece di git?

Se esiste sempre un elenco di strumenti in cui le prestazioni elevate sono un must assoluto, allora inserirò VCS in cima all'elenco e Git lo raggiunge molto bene. Tuttavia, le prestazioni non sono comunque l'unico vantaggio di Git rispetto a molti altri tipi di sistemi di controllo delle versioni.

Il team git gestisce molto bene il codice c non sicuro, e non mi preoccupo mai del mio sistema di tipi (o di qualsiasi altra caratteristica del linguaggio in cui è scritto), quindi perché ci sono molti sviluppatori di haskell che devono usare i darcs quando useranno solo il prodotto finito?

+5

perché? hai mai visto le persone passare da git a darcs? – hasen

+4

@hasen j: http://stackoverflow.com/questions/4114045/convert-git-repo-to-darcs :-) –

+3

Questa intera domanda non ha senso. Tunnel Haskell si comporta altrettanto rapidamente quanto accordato C. Ed è più facile scrivere, eseguire il debug e mantenere. Darcs è più lento di git perché utilizza un modello più ricco e richiede algoritmi più lenti. Questo si traduce in un'esperienza in cui si interrogano i darcs, al contrario di "programmare" git sulla riga di comando. – nomen

risposta

21

Penso che in generale alcune comunità di utenti si aggancino verso una tecnologia o un'altra. Ciò è particolarmente vero se una tecnologia utilizza il linguaggio della comunità. È anche possibile (anche se non ne ho idea) che l'autore e/o gli utenti iniziali di Darcs fossero abbastanza noti sviluppatori di Haskell, avendo così più influenza.

Ci sono altri esempi, come Mercurial sembra essere più popolare nella comunità Python mentre altri linguaggi sembrano usare Git.

Una volta che si utilizza un particolare software, potrebbe non valere la pena di passare a un altro anche se ci sono dei vantaggi.

Onestamente, però, usa quello che ti piace di più. A questo punto è quasi obbligatorio installare hg, git e svn e conoscere le basi per utilizzarli. Se stai usando Haskell sembra che probabilmente devi aggiungere Darcs a questo elenco.

-4

Sembra implicare che git e darcs siano equivalenti (o addirittura simili) all'infuori del linguaggio di implementazione.

Se li hai usati entrambi, capirai che questa domanda non ha senso. Se non li hai usati entrambi, la risposta alla domanda ha un evidente prerequisito di conoscenza di entrambi.

Darcs esiste. Questa è una giustificazione sufficiente per esistere ed essere usata. Se ti piace, anche tu puoi essere un utente. Se non ti piace, capirai perché hai scelto qualcos'altro.

+47

Sembra che tu stia insinuando che questa è una risposta. Se pensi che questa sia una risposta, ti sbagli! Se leggi la tua risposta, potresti capire che non aiuta l'OP o nessuno nella sua posizione. – hasen

+9

Forse potresti dirci come sono diversi. – Zach

+1

Sembra che tu stia usando entrambi. Puoi dirci da un utente POV come si comporta darcs rispetto a git (cosa chiedeva l'OP) o come un dev che desidera imparare haskell può riuscire a usare git per non essere costretto a imparare due strumenti contemporaneamente? Sono sinceramente interessato a questo tipo di feedback. –

58

Darcs gestisce raccolte di patch anziché cronologia cronologica. Maggiori informazioni su questo sono sul darcs wiki page documenting differences with other VCS. Questa differenza è illustrata da una funzione di darcs denominata spontaneous branches che utilizza una forma avanzata di cherry-picking. Ho usato un flusso di lavoro basato su questo ampiamente con un progetto LoC da 100.000k. Oltre a questa differenza tecnica, darcs è molto user-friendly. Ci sono meno comandi e la maggior parte sono interattivi per impostazione predefinita, chiedendoti cosa fare.

A causa della forza e della facilità d'uso di darcs, lo preferisco molto a git, che uso anche regolarmente per progetti open source. Darcs è abbastanza facile da usare che, anche se devi imparare git per contribuire ad alcuni progetti, puoi comunque divertirti e trarre vantaggio dall'uso di darcs in altri progetti in cui puoi scegliere.