Sabato, Maggio 15, 2010
Perchè continuo a preferire SciTE a Notepad++ e PSPad ?
Recentemente, alcuni visitatori mi hanno chiesto il motivo per il quale continuo ad utilizzare SciTE invece di passare a software come Notepad++ o PSPad.
Nonostante io ne riconosca i meriti, questi editor poco si adattano alle mie necessità. In questo piccolo articolo cercherò di spiegare il motivo per il quale continuo a ritenere SciTE la miglior soluzione nel panorama degli editor di testo generici.
Un editor di testo non è un IDE!
Iniziamo subito a definire cosa sono SciTE, Notepad++ e PSPad. Questi software sono semplici editor di testo, utilizzabili con qualsiasi file, indipendentemente dal linguaggio utilizzato. Programmi che consentono l’editazione semplificata di file sorgenti, scritti in un’ampia varietà di linguaggi di programmazione e, più in generale, forniscono una serie di utilità che semplificano il trattamento di qualsiasi testo.
Al contrario un’IDE è un ambiente altamente integrato e specifico per la modifica di particolari tipi di file. Tanto per fare un nome, a mio parere, il miglior IDE in circolazione per file scritti in C++, C# e VB.NET è sicuramente Visual Studio di Microsoft.
Un IDE è pensato per essere utilizzato con determinati tipi di file, solitamente un numero molto ristretto, e fornisce tutte quelle funzioni utili alla loro modifica. Questo significa che, l’apertura di file non riconosciuti ne riduce notevolmente le capacità.
Se ad esempio editassimo un file scritto in C++ con SciTE, PSPad o Notepad++, e poi facessimo la stessa cosa con Visual Studio, ci accorgeremmo delle notevole superiorità e comodità di quest’ultimo, rendendoci immediatamente conto di come un’IDE sia molto, molto, più produttivo rispetto ad un editor generico.
Purtroppo, essendo gli IDE dedicati in modo specifico a certi tipi di file e linguaggi, sono piuttosto scomodi da usare con testi non riconosciuti, sicuramente più scomodi rispetto ai più generici SciTE e simili.
Un altro problema con gli IDE è rappresentato dal fatto che, se si utilizzano molti linguaggi diversi, spesso e volentieri un solo ambiente non è sufficiente, costringendoci all’utilizzo di uno, due, tre ambienti diversi. A questo bisogna poi aggiungere il fatto che, normalmente, un IDE è un software complesso e, come tale, necessita di molta più memoria libera, dando spesso una sensazione di lentezza generale.
Un editor generico non potrà mai essere un IDE
Per quanti sforzi si facciano, un editor di testo generico come SciTE, Notepad++ o PSPad, non potrà mai diventare un IDE.
Perchè ? Semplice, proprio la natura degli editor generici, predisposta alla modifica di qualsiasi file di testo, con un’occupazione ridotta di memoria e con la necessità di rimanere molto rapido, sia al caricamento, sia durante l’editazione, ne impedisce la trasformazione.
Facciamo un esempio. Prendiamo il progetto Eclipse, editor di testo pensato per essere utilizzato sia come editor generico, sia come IDE per, teoricamente, qualsiasi linguaggio.
Se provassimo ad utilizzarlo, ci accorgeremmo presto che le sue prestazioni e le sue modalità operative fanno si che non possa più essere definito editor di testo generico, infatti, ha assunto la forma di un vero e proprio IDE, con tutti i pro e i contro, cosa che lo rende scomodo da usare per file che lui stesso non riconosce o riconosce solo parzialmente, facendogli perdere quella poliedricità e rapidità, necessarie ad un software più generalista.
Allo stesso modo, risulta controproducente il tentativo di usare un IDE come editor generico. Anche l’ottimo Visual Studio, nonostante sia ampiamente estendibile, difficilmente potrà essere usato come editor generalista, frenato dalla necessità di una corposa installazione (occupando centinaia di Mb), dalla sua pesantezza e dalle sue caratteristiche che, ad esempio, lo limitano a riconoscere una piccola parte dei linguaggi di programmazione esistenti.
Perchè SciTE ?
Iniziamo ora ad esaminare quelle che, a mio parere, sono le caratteristiche distintive di SciTE che ne fanno l’editor di testo più adatto alle mie esigenze e che determinano la sua superiorità rispetto a prodotti (ottimi) come PSPad o Notepad++.
Occupazione di memoria
Tendenzialmente un software che utilizza poca memoria risulta essere molto più rapido al caricamento inoltre, utilizzando meno risorse impatta meno sulle prestazioni dell’intero sistema.
In questo ambito, SciTE non è secondo a nessuno. Per capire meglio, ho misurato l’occupazione dei tre editor (SciTE, Notepad++, PSPad) in diverse condizioni (in grassetto è evidenziato quello più parsimonioso) :
- Occupazione memoria senza file aperti :
SciTE = 5452 KB
Notepad++ = 9140 KB (+%67)
PSPad = 15244 KB (+179%) - Occupazione memoria con file da 100 KB aperto :
SciTE = 9356 KB
Notepad++ = 13008 KB (+39%)
PSPad = 17864 KB (+%91) - Occupazione memoria con file da 1 MB aperto :
SciTE = 11252 KB
Notepad++ = 14824 KB (+%31)
PSPad = 19128 KB (+%170) - Occupazione memoria con 2 file aperti (1 MB + 100 KB) :
SciTE = 11372 KB
Notepad++ = 15216 KB (+%33)
PSPad = 19840 KB (+%74)
Utilità aggiuntive
Una delle caratteristiche che apprezzo meno degli editor di testo è la presenza di funzioni che copiano le caratteristi che altri software già esistenti.
Facciamo subito un esempio. La funzione che consente il confronto di 2 testi. Sia PSPad, sia Notepad++ forniscono una propria modalità di confronto, ognuna dotata di caratteristiche apprezzabili.
Guardando al panorama del software Libero, avendo la necessità di confrontare due file, abbiamo l’eccellente WinMerge. Programma maturo, veloce, dotato di tutto il necessario e, soprattutto, esente da bug.
Per quale motivo ogni editor deve introdurre una nuova funzione di confronto? Non sarebbe molto più saggio riutilizzare i software già esistenti? Per quanto mi riguarda la risposta è SI, infatti all’interno della mia personale distribuzione di SciTE, per il confronto di due o più file è utilizzato proprio WinMerge!
Allo stesso modo, l’editazione di un file binario, utilizzando la modalità esadecimale, per quale motivo deve appoggiarsi ad un funzione interna? Esistono una moltitudine di eccellenti editor esadecimali Liberi già pronti. In questo caso RSciTE porta con se l’eccellente Frhed.
Linguaggio di programmazione interno per estendere l’editor
A tutti i software manca qualcosa! Non esiste ora, e forse non esisterà mai, il software che fornisce il 100% delle funzioni di cui ho bisogno.
Ovviamente, gli editor di testo non fanno eccezione. E’ quindi necessario, per ottimizzare al massimo il lavoro, un software espandibile, capace di essere automatizzato dall’utente.
Da questo punto di vista, tutti gli editor in esame consentono l’aggiunta di funzioni tramite moduli aggiuntivi. Ciò che differenzia, in modo significativo, SciTE dai suoi due rivali (PSPad e Notepad++) è la possibilità di estendere il programma utilizzando un linguaggio di scripting interno indipendente dal sistema operativo utilizzato.
Cosa significa “linguaggi di scripting interno”?
SciTE può essere esteso utilizzando due sistemi. Il primo prevede che, l’utente, prenda i sorgenti (Liberi) del programma e li modifichi a suo piacimento. Purtroppo questo approccio richiede una certa esperienza di programmazione in C/C++, cosa che può frenare la maggior parte degli utilizzatori.
Il secondo sistema per espandere SciTE prevede l’uso del suo linguaggio interno di scripting, LUA!
Lua è un linguaggio di programmazione, semplice da apprendere, maturo, potente, molto compatto e utilizzabile sui principali sistemi operativi, cosa che lo ha reso la scelta ideale per un’editor di testo multipiattaforma come SciTE.
Nella pratica, per poter aggiungere una nuova funzione all’editor, è sufficiente scrivere un file di testo utilizzando proprio Lua.
Facciamo subito un esempio. Supponiamo di avere un file contenente una parola per riga, supponiamo di volerlo ordinare alfabeticamente (ordinamento ASCII), ecco come potremo risolvere il problema usando SciTE e un piccolo script Lua :
do
local tbLinee = { } ; --tabella file
local function insertLinea( idx, linea )
editor:AddText(linea);
end
local function OrderCurrentBuffer()
local linea,pos;
local i=0;
linea = editor:GetLine(i);
while linea do
tbLinee[i] = linea;
i = i + 1;
linea = editor:GetLine(i);
end
table.sort(tbLinee);
editor:ClearAll();
table.foreach(tbLinee, insertLinea);
end
OrderCurrentBuffer();
print("nOrdinamento File Concluso con successo.");
end
Una volta copiato questo codice in un semplice file di testo, ci basterà aprire il file da ordinare e lanciare lo script (in RSciTE si può premere F12 e utilizzare la funzione “Esegui File SciTE/LUA”).
Questo sistema ci consente, senza essere esperti programmatori, di realizzare procedure sofisticate per l’elaborazione dei nostri testi, avendo la certezza di poter eseguire le procedure su più sistemi operativi (quelli supportati da SciTE) senza dover modificare nulla.
Lua non permette solamente la realizzazione di funzioni che operano sul testo, ma permette all’utente di realizzare veri e propri lexer! In SciTE un lexer è l’interprete che consente al software di distinguere la sintassi di un determinato linguaggio, permettendone la corretta colorazione.
Utilizzabile su più sistemi operativi
Ad alcuni questa caratteristica non interessa, per altri è fondamentale. Comunque sia, SciTE è disponibile sia per Windows, sia per Linux, mantenendo inalterate le sue caratteristiche.
SciTE e RSciTE
Quando ho scoperto SciTE ne sono subito rimasto affascinato. Purtroppo erano assenti una serie di funzioni per me fondamentali.
Grazie alle proprietà di SciTE ho potuto estendere il software per adattarlo alle mie specifiche esigenze. Aggiungendo funzioni e configurazioni personalizzati mi sono accorto che queste potevano essere utili anche ad altri.
Proprio da questa constatazione è nato RSciTE che, nella pratica, è una distribuzione di SciTE comprensiva di tutte le procedure e le configurazioni che, nel tempo, ho realizzato e che utilizzo quotidianamente.
Per conoscere meglio RSciTE, clicca qui.
Scrivimi/Info
Seguimi su Buzz
Condividi