PDA

View Full Version : Programmazione Ibrida vs Nativa: Codemirror vs Scintilla


Raghnar-The coWolf-
18-12-2013, 23:26
Ciao a tutti,
nel tempo libero ultimamente sto cercando di realizzarmi una micro-IDE essenziale dato che non trovo nulla che mi soddisfi pienamente per le 3/4 opzioni che vorrei implementare (multi-window-editing sullo stesso file e folding, anche in Fortran) senza essere delle cose giganti incasinatissime (vedi Eclipse con photran) che poi finiscono per fare a pugni con la mia idea di GUI "minima", e magari la possibilità di aggiungere cose (semplici) mano a mano se ne sento la necessità, cercando magari di concretizzare un paio di ideuzze...

Vorrei solo fosse portabile (Linux e Windows, e per il futuro magari anche mobile) e il più facile e veloce possibile da realizzare.


Sto usando QT come GUI dato che mi è stato suggerito un po' ovunque, compreso qua.

Ora il mio dubbio è nella scelta fra un framework di editing nativo C++, da integrare in QT, oppure una programmazione di tipo "ibrido" utilizzando un framework javascript fra i tantissimi che ci sono sul mercato.

In particolare il mio sguardo è rimasto indeciso fra Scintilla (e il framework per QT già disponibile, qscintilla) e Codemirror.

Lato C++:
:) ho già pronta la finestra con un editor di base, ovvero qscintilla. Mi resta da investigare come gestire il testo per aprire una seconda (ennesima) istanza che pur maneggia lo stesso file e la prima parte è fatta, e non sembra così tremendo dato che evita il rimbalzo fra 10 linguaggi diversi (come Codemirror).
:) migliori performance rispetto a un ambiente ibrido.
:) manuale piuttosto chiaro e molto accessibile. Ho assoluto bisogno di avere il controllo sui testi che vengono caricati e gestiti (appunto per poter caricare due istanze che agiscono sulla stessa variabile che contiene il testo) e con scintilla questo sembra fattibile in modo se non semplice quantomeno naturale.
:| portabilità in pericolo? Posso rischiare di dover fare (e mantenere) più versioni per i diversi OS o è solo una questione di compilazione e C++ si adegua?
:| espandibilità ardua? Da un lato conosco meglio C++ di altro, dall'altro è un linguaggio per quanto potente non propriamente user friendly, e sta passando molto di moda (?) quindi sarà difficile trovare sviluppatori volanti?
:| in generale community ridotta?

Lato CodeMirror:
:) ho già pronto parser e folder per fortran. Ero convinto su uno sviluppo ibrido prima di incontrare difficoltà e ho iniziato sviluppando un codice per fare folding su fortran. (forse lo dovrei sottomettere alla community, dato che l'hanno chiesto in diversi)
:) Anche di questo ho già un editor di base pronto, ma:
:| Mia ignoranza su come interfacciare l'ambiente javascript/html di codemirror all'ambiente c++/qml di QT, dato che le chiamate e impostazioni sono in html5, mi sono un po' bloccato da quando sono al punto di dover implementare le diverse opzioni e da lì non ho più proseguito.
:| manualistica molto più parziale e generale chaos (almeno ai miei occhi) fra i diversi metodi e linguaggi utilizzati. Non riesco a capire esattamente DOVE Codemirror gestisce il testo e come e mi risulta molto difficile reperire questa (e altre) informazione in modo preciso. D'altro canto la comunità (di CM ma in generale di javascript) è molto frizzante e presente.
:( performance peggiori. Si rischia di avere difficoltà a gestire diverse finestre con molto codice (diciamo 10k righe...) caricato dentro? Al momento un po' di difficoltà ce l'ho, in scrolling e ridimensione della finestra, ma magari è la mia pessima programmazione e richiede solo un pochino di profiling.

Voi cosa consigliereste per i miei scopi? Perseverare su uno sviluppo ibrido con Codemirror? Programmare in modo più classico e nativo con Scintilla? Se avete altri framework editor da suggerire o risposte specifiche ai miei dubbi e blockpoints (come gestiscono i framework il file di testo? come interfacciare CM a QT/C++?) siete piùchebenvenuti!

banryu79
19-12-2013, 08:39
Date le mie scarse conoscense specifiche, non posso esserti utile.
Però finchè attendi lumi, prova a ingannare il tempo con questa lettura (http://codemirror.net/1/story.html), se già non la conosci.

Raghnar-The coWolf-
20-12-2013, 08:45
Date le mie scarse conoscense specifiche, non posso esserti utile.
Però finchè attendi lumi, prova a ingannare il tempo con questa lettura (http://codemirror.net/1/story.html), se già non la conosci.

grazie per il link, sara' utile nel caso in cui decida di proseguire con CodeMirror, ma ora mi servirebbe un po' di guida su cosa concentrarmi e capire perche'.