2010-06-18 9 views
5

Sono interessato a creare un nuovo IDE di stile per un progetto parallelo. Principalmente per farla finita con il normale blocco note su steroidi IDE. Sto cercando un po 'di ispirazione per cose che sono state provate o che hai visto (o meno) che sembravano interessanti e che sarebbe stato utile avere in un IDE. Cose che posso con sono:Concetti IDE sperimentali

http://digitaltools.node3000.com/blog/1052-field-experimental-programming-suite

http://www.cs.brown.edu/people/acb/codebubbles_site.htm

+0

"Sono interessante", e modesto troppo :-p –

risposta

4

Andrew Ko (ex CMU, ora professore alla U Wash) concentrato gran parte della sua tesi di laurea sul permettere alle persone di eseguire il debug, chiedendo "Perché qualcosa capita "o" perché non l'ha fatto ". Il progetto è stato chiamato WhyLine e aveva persino una versione per Java.

1

Come cambiare il codice interattivo su tutte le reti? Quindi apporti una modifica al codice e la modifica viene automaticamente aggiornata sulla macchina del tuo amico dall'altra parte della stanza. Potrebbe fare alcune interessanti tecniche di sviluppo. Probabilmente si tradurrebbe in un caos completo, ma hey! È un'idea!

Modifica: Espanderò. I sistemi di repository attuali come SVN o TFS possono essere semplicemente fastidiosi quando si tratta di conflitti. Se le modifiche apportate da un altro sviluppatore potrebbero essere immediatamente riflesse nel sistema, eventualmente evidenziate in qualche modo, allora sarebbe più facile sapere con cosa non fare confusione.

Inoltre, è un vero problema quando modifico una funzione di una classe e un altro sviluppatore aggiunge una funzione alla classe in modo che TFS rilevi un conflitto e io debba risolverlo manualmente. Ciò che sarebbe bello sarebbe la possibilità di ottenere un blocco non su un file specifico ma su un ambito specifico. Così ho potuto verificare una funzione e lasciare il resto del file aperto alla modifica!

+0

Vuoi dire SubEthaEdit? http://www.codingmonkeys.de/subethaedit/index.html – ddimitrov

+0

@ddimitrov: Yipee! – Anthony

+1

um, i sistemi attuali sono git e hg. svn era la generazione precedente e roba come cvs o tfs sono la generazione precedente. la tecnologia è molto meglio ora, non ha bisogno di gestire file bloccati come cvs, e quasi mai devono fondersi manualmente come svn, e se voglio ottenere le modifiche di qualcun altro prima che spingeranno alla linea principale, posso farlo. –

2

Sono probabilmente una persona terribile per parlare di questo, dal momento che trovo l'utilizzo di IDE come la programmazione con pesi di piombo sulle mie braccia, ma immagino che possa essere utile per ottenere la prospettiva di quel lato del recinto. Qualsiasi idea interessante o sperimentale che le persone hanno ancora bisogno di affrontare le esigenze di base degli strumenti di sviluppo.

Un IDE è in genere un editor di qualche tipo, un debugger e un compilatore. Dal momento che questi sono tre parti distinte dello strumento, corro attraverso di loro separatamente

Ecco quello che voglio da un editore

  1. essere veloce. non voglio mai essere in attesa di cose da caricare. mai.
  2. dammi potenti modi per manipolare e saltare nel codice. Non mi importa di imparare le curve quando si tratta di uno strumento che uso per circa 10 ore al giorno in media, il rovescio della medaglia è che non voglio sprecare il mio tempo a diventare bravo con strumenti che non sono potenti.
  3. dammi un modo decente per aprire i file. le finestre di dialogo aperte per i file non sono abbastanza buone, né gli alberi dei progetti.
  4. buon supporto per avere molte cose aperte allo stesso tempo. Ho uno schermo da 27 ", le schede non sono neanche lontanamente abbastanza, attualmente vivo con split, ma non sarebbe difficile trovare qualcosa di meglio
  5. non farmi mai toccare un mouse durante la modifica del codice. Mi interessa la curva di apprendimento, quello che voglio sono la velocità, l'efficienza e la potenza
  6. Se mi dai un visual designer, è meglio renderti più produttivo quindi digitare, producendo codice con lo stesso livello di flessibilità di cui sono in grado di produrre con il testo.Devo ancora trovare un visual designer che faccia questo, ogni altro che io abbia mai usato fondamentalmente abbassa la barra per imparare a fare qualcosa, ma ti fa pagare la strada in manutenibilità e flessibilità. Considero ogni singolo esempio di programmazione disegnando immagini che ho fino ad ora come un fallimento, se usato per scopi seri (cioè non sbattere qualcosa e non preoccuparsi della qualità)
  7. refactoring automatizzato. Ora sto usando vim, e l'unica cosa che mi manca è riuscire a estrarre metodi da altri metodi, o premere un pulsante per rinominare qualcosa e sentirsi al sicuro con ciò che lo strumento farà.
  8. analisi del codice. Voglio vedere gli errori di sintassi mentre accadono, vedere se sto scrivendo codice ridondante, o vedere suggerimenti se c'è un modo migliore per fare qualcosa.
  9. ottimo test runner. Pratico TDD, e i corridori di test scadenti mi spingono fino al muro, poiché ha un tale impatto su tutto ciò che faccio.

quello che voglio da un debugger

  1. un REPL. questo mi ha fatto impazzire quando ero bloccato con Visual Studio, e probabilmente ho trascorso più tempo nella finestra immediata di chiunque altro nella squadra. L'intero punto di un debugger è la possibilità di esplorare cosa sta succedendo durante l'esecuzione, se non riesco a digitare codice arbitrario e vedere cosa valuta, mi sento come se avessi una mano legata dietro la schiena
  2. possibilità di cambiare codice al volo, anche se con un REPL e una lingua decenti, questo tipo si prende cura di sé
  3. capacità di spostarsi avanti e indietro in esecuzione.
  4. velocità, non farmi aspettare
  5. buoni modi per saltare nel codice. se sono in linea 1, e voglio saltare per la linea 500 per vedere cosa sta succedendo, dovrei essere in grado di farlo

quello che voglio da un compilatore

  1. velocità, almeno in modalità di sviluppo. google go è in grado di compilare 500, 000 loc in millisecondi su un laptop, questo è ciò di cui sto parlando. Se il linguaggio deve essere compilato, ogni secondo guardando l'output del compilatore sta rendendo più difficile fare qualsiasi cosa tu stia facendo (rintracciare un bug, testare una funzionalità, eseguire test, ecc.)
  2. hai bisogno di un modo per agganciare in metodi arbitrari per pre e post esecuzione, o pre-elaborazione dei file di codice in un modo più generale (si pensi alle macro del lettore Lisp). se non puoi farlo con la lingua, devi essere in grado di farlo con il compilatore
  3. buona analisi. dimmi dove ho incasinato al momento della compilazione se non riesci a catturarlo prima della trasparenza
  4. . in realtà non voglio nemmeno saperlo, a meno che non stia interagendo direttamente con esso.

Quello che ho

Attualmente, io uso vim, che mi dà 1, 2, 3 (con fuzzyfinder.vim/rails.vim), 4, 5, e un pessimo 8 (con syntastic .vim). Non ho refactoring o analisi del codice, e mi manca davvero, ma IMO vale più del compromesso.

per il debug, io uso ruby-debug, che in realtà non è eccezionale. in pratica ottieni 1, 2 (più causa di ruby ​​e ruby-debug), e 3, ma questo è tutto.

Non usare più un compilatore (grazie a Dio), ma non usarne uno dopo averne usato uno per 7 anni (almeno professionalmente) evidenzia davvero quale terribile impatto hanno sul processo di sviluppo.

+0

Il tuo commento sulla velocità del compilatore è un strano. Se la tua lingua ha un repl (di D.1), allora sto scommettendo che può fare la compilazione incrementale, e non so perché vorresti o abbia bisogno di compilare 500KLOC in una volta sola. Ad esempio, sto usando SBCL ora, e non è il compilatore più veloce del mondo, ma non riesco a ricordare l'ultima volta che ho avuto bisogno di compilare più di 20 linee (1 funzione) alla volta. Certo, ci vogliono 40ms enormi per compilare una funzione sul mio portatile, ma in alternativa, fa tutto ciò di cui ho bisogno in soli 40ms. – Ken

+0

Non ho mai usato una lingua con la compilazione incrementale prima, ma ciò avrebbe attenuato il problema di cui stavo parlando. Se stai rintracciando un bug eseguendo il codice/compila/prova la danza, ogni secondo che la fase intermedia richiede è un grosso problema. Sono un web guy, il mio ultimo lavoro, i tempi di compilazione per i nostri progetti sono stati ovunque da 45 secondi a 2 minuti. 2 minuti rende difficile mantenere lo slancio, soprattutto se paragonato all'esperienza del cambio di codice, alt-tab, ricarica esperienza. –

+0

dopo wikipedia-ing sbcl (e scoprendo che è un dialetto cl), si scopre che ho già sperimentato la compilazione incrementale prima (con clojure), non ho mai usato alcun lisp in modo serio. Sei completamente corretto però, i problemi con i tempi di compilazione vanno via. Inoltre, l'intera soluzione di sviluppo orientata alla REPL che si ottiene con emacs + SLIME è (IMO) il modo più avanzato di fare ciò che qualcuno ha ancora creato. Davvero vorrei che ci fossero più lavori leggeri disponibili ... –