MicroEMACS e multi edit

MicroEMACS e multi edit

MicroEMACS è oggi sicuramente uno degli editor di testo piu’ avanzati presenti sulla nostra piattaforma, la sua potenza e versatilità sono sicuramente le sue caratteristiche principali.
Quest’ultima in particolare rende difficile descrivere questo editor in poche righe perché parlare di un suo aspetto significa trascurarne immeritatamente gli altri.
Per questo motivo in passato ho provveduto a scrivere una serie di articoli, usciti nei passati numeri di QL Magazine, in cui per ogni articolo ne descrivevo una potenzialità o illustravo l’utilizzo di determinate opzioni.
Questa volta vorrei parlarvi dell’ editing contemporaneo di più programmi e per farlo inizierò descrivendo due “concetti” tipici di MicroEMACS, la finestra e lo schermo.
In questo articolo userò il termine “videata” per indicare quella che viene normalmente chiamata “finestra” in altri ambienti, ad esempio Windows, per non generare confusione con il concetto di finestra di MicroEMACS, che è una cosa leggermente diversa.

Lo schermo

In MicroEMACS si definisce “schermo” l’intera area editabile presente nel programma, quindi in pratica tutta la videata principale ad esclusione della barra di stato, dei menù, della barra del titolo e poche altre cosette.
Come sappiamo la videata di MicroEMACS è ridimensionabile e quindi può diventare molto grande, tanto per fare un esempio una videata a pieno schermo con una risoluzione 1024×768 (è consigliabile almeno un monitor 17 pollici) mette a disposizione un area editabile di circa 60 righe per 160 colonne (vado a memoria).
Un grande spazio quindi, che vedremo più avanti come sfruttare al meglio.
Per ora aggiungiamo solo che posso avere a disposizione più schermi, a ciascuno dei quali posso dare un nome mnemonico a mia scelta e che ho a disposizione un set di comandi per poter aprire/chiudere/scorrere questi schermi a mio piacimento usando appunto il nome mnemonico che ho impostato.

La finestra

Ogni schermo è divisibile in più parti, chiamate finestre.
E’ possibile associare ogni finestra ad un file diverso oppure per visualizzare parti differenti dello stesso file, oppure ancora delle soluzioni miste, non vi sono limitazioni.
Anche qui, come per gli schermi, ho a disposizione un set di comandi per manipolare a piacimento le mie finestre.
Chiariti questi due concetti, con i quali il principiante spesso si confonde, vediamo come utilizzarli.
Non mi interessa in questa sede elencare una sbrodolata di comandi, questo è un articolo e non un tutorial, mi interessa piuttosto comunicare dei concetti di utilizzo.
Ovviamente tutto ciò ha un qualche interesse nel momento in cui ho l’esigenza di editare più file a tempo o passare rapidamente in zone differenti di un file molto lungo, o ancora entrambe le cose a tempo.

Un semplice esempio.

Voglio riportare le modifiche fatte nel programma “PIPPO” anche nel programma “PLUTO” Apro quindi entrambi i programmi con MicroEMACS, a questo punto posso optare per diverse soluzioni:

1. Posso scegliere ad esempio di avere due schermi differenti caricare un programma per ogni schermo e passare da un programma all’altro a seconda delle mie esigenze, tipico se dispongo di una risoluzione video modesta o se voglio lasciare parte dello schermo libero per altre attività.

2. Posso decidere di avere un unico schermo e di dividerlo in due finestre, ognuna delle quali contenente un programma, soluzione comoda se dispongo di un monitor con un alta risoluzione.

Come vedete MicroEMACS si può adattare facilmente non soltanto alle vostre esigenze ma anche ai vostri gusti e al vostro modus operandi senza dover quindi imparare filosofie di utilizzo differenti ma semplicemente mutuarle da strumenti a voi già noti.

Un esempio complesso.

Un esempio complesso tipico è quando devo modificare i parametri di passaggio tra un programma principale ed una serie di programmi secondari.
Immaginiamo di avere un programma “PAPERINO” che in due punti differenti dello stesso chiamerà tre sottoprogrammi “QUI” “QUO” e “QUA” e di dover ad esempio aggiungere dei parametri di input.
Mi sarà molto comodo in questo caso avere tutti e quattro i programmi aperti, visualizzando le zone in cui dovrò intervenire.
Avere però cinque finestre sullo stesso schermo può creare aree di lavoro troppo piccole, limitare la visibilità del programma e rallentare il mio lavoro.
Definirò quindi uno schermo chiamato “MAIN” nel quale avrò magari due finestre che visualizzano due parti differenti dello stesso file (i due punti che devo modificare).
In seconda battuta definirò un altro schermo, che chiamerò “CALL”.
All’interno di “CALL” definirò tre finestre in cui inserirò i tre programmi secondari.
In questo modo posso sia cambiare schermo che passare da una finestra all’altra in maniera estremamente agevole, mantenendo al tempo stesso una buona visibilità su tutti i programmi e anche una certa struttura logica del mio lavoro, i programmi secondari sono infatti raggruppati nello stesso schermo e visto che probabilmente, fatta la modifica sul primo, posso riportare la stessa sugli altri due mi è utile avere tutti e tre i punti sott’occhio.
Lo stesso discorso vale per l’altro schermo dove i due punti di modifica del programma principale sono disponibili nello stesso schermo.

Un occhio alle prestazioni.

Qualcuno potrebbe obiettare: “perché devo complicarmi la vita in questo modo assurdo? Apro un editor differente per ogni file ed il gioco è fatto!”.
Sicuramente è vero, ma questa è una soluzione prettamente da utente piuttosto che da sviluppatore.
In altre parole è una soluzione efficace ma non efficiente.
Mi spiego meglio: ogni programma in esecuzione occupa notoriamente due aree di memoria, una per il codice, l’altra per i dati; se utilizziamo un editor multi file come MicorEMACS utilizziamo una sola area per il programma e un’area dati per ogni singolo file aperto, se invece lanciamo un editor differente per ogni file duplichiamo l’area dedicata al codice.
Il risultato visivo non cambia, la funzionalità è la medesima ma l’utilizzo delle risorse del nostro QL è ben differente.
Forse uno non si rende conto esattamente di quanto pesante sia quest’ultima soluzione finché non fa due calcoli, proviamo a farli assieme.
Immaginiamo per comodità di calcolo che l’ipotetico editor che sto utilizzando (non importa quale sia) occupi 50Kb e che i file da lui aperti siano tutti della stessa dimensione: 10 Kb.
Nel caso dell’esempio semplice a due file avremo:

50+10+10 = 70 kb utilizzati

mentre nel caso multi editor avremo:

50 + 10 + 50 + 10 = 120 Kb utilizzati

una bella differenza!
Allo stesso modo nel caso dei 5 file aperti l’utilizzo della ram aumenta in modo esponenziale, avremo:

50 + 10 + 10 + 10 + 10 + 10 = 100kb utilizzati

contro i:

50 + 10 + 50 + 10 + 50 + 10 + 50 + 10 + 50 + 10 = 300 kb!!!!

Tenuto conto dei limiti di memoria del QL mi pare una scelta poco consigliabile, anche se ho memoria a sufficienza, rischio di “dimenticarmi” di essere quasi al limite delle mie risorse e di aprire qualche altra applicazione con il rischio di mandare in blocco la macchina e perdere tutto il mio lavoro.
Lascio scegliere a voi.