{"id":466,"date":"2016-03-11T10:41:09","date_gmt":"2016-03-11T09:41:09","guid":{"rendered":"http:\/\/www.hunggartorino.it\/ql\/?p=466"},"modified":"2016-03-11T12:16:07","modified_gmt":"2016-03-11T11:16:07","slug":"ssb-un-nuovo-modo-di-programmare-in-superbasic","status":"publish","type":"post","link":"https:\/\/www.hunggartorino.it\/ql\/ssb-un-nuovo-modo-di-programmare-in-superbasic\/","title":{"rendered":"SSB, un nuovo modo di programmare in SuperBASIC"},"content":{"rendered":"<p style=\"text-align: justify;\">\n<p style=\"text-align: justify;\">Il SuperBASIC, come ben sappiamo, \u00e8 uno dei pi\u00f9 potenti linguaggi di\u00a0programmazione esistenti sulla piattaforma QL, con le sua capacit\u00e0 di\u00a0estendersi praticamente all&#8217;infinito, di aggiungere nuovi comandi e\u00a0funzioni non solo permette di avere un linguaggio di programmazione\u00a0sempre aggiornato alle nuove esigenze ma di avere un ambiente\u00a0personalizzato per i propri singoli bisogni, senza dover mantenere in\u00a0memoria intere liste di comandi inutili.<br \/>\nMa, se da un lato offre molteplici potenzialit\u00e0 a livello di\u00a0integrazione ed estensione, difetta notevolmente nel suo ambiente di\u00a0sviluppo.<br \/>\nIn SuperBASIC infatti non offre infatti un editor degno di questo nome,\u00a0ED va bene per piccoli programmi estemporanei ma creare un software di\u00a0livello professionale con questo strumento presenta non pochi problemi\u00a0sia dal punto dello sviluppo che quello della manutenzione, permette\u00a0l&#8217;editazione di un file alla volta, non ha alcuna opzione di copia\u00a0incolla ne di ricerca, il SuperBASIC fa anche la sua parte in tutto\u00a0questo, occorre essere onesti, costringe il programmatore ad adoperare\u00a0i numeri di linea precludendogli praticamente l&#8217;utilizzo di quasi\u00a0tutti gli editor, salvo dover togliere e rimettere a manina tutti i\u00a0numeri di riga, inoltre non permette di scrivere comandi su pi\u00f9 righe\u00a0rendendo oltremodo scomodo la costruzione di IF complesse con pi\u00f9 di\u00a0due o tre operandi.<br \/>\nNon \u00e8 possibile inoltre inserire automaticamente dentro un sorgente\u00a0altre parti o routine esterne, in quanto i compilatori non supportano\u00a0l&#8217;istruzione MERGE e in ogni caso bisogna stare molto, ma molto attenti\u00a0a non sovrapporre numeri di riga, pena la perdita di righe di codice.<br \/>\nL&#8217;ultimo bastone tra le ruote ci arriva a sorpresa da Q_Liberator,\u00a0l&#8217;ottimo compilatore che tutti conosciamo almeno per sentito dire, il\u00a0quale per poter supportare le direttive $$ ingloba tutti i commenti<br \/>\ndell&#8217;oggetto compilato aumentando a dismisura le dimensioni del file\u00a0senza alcuna ragione, o costringendo in alternativa il povero\u00a0programmatore e togliere manualmente tutti i commenti, o ancora a non\u00a0inserire alcun commento nel sorgente e rendendo cos\u00ec assai pi\u00f9\u00a0complessa la manutenzione del programma stesso.<br \/>\nTutto ci\u00f2 contribuisce a far guardare il SuperBASIC con una certa\u00a0diffidenza da parte di chi si appresta alla creazione di software di un\u00a0certo livello.<br \/>\nUna soluzione a questi problemi ci viene direttamente dagli Stati Uniti\u00a0nella persona di Tim Swenson, con il software SSB, giunto ormai alla\u00a0versione 2.7.1.<br \/>\nChe cos&#8217;\u00e8 esattamente SSB?<br \/>\nNon \u00e8 ne un editor ne un linguaggio di programmazione, ma un traduttore\u00a0di linguaggio, ossia \u00e8 in grado di trasformare in SuperBASIC un\u00a0programma scritto in un formato chiamato &#8216;Structured Super BASIC&#8217;\u00a0(SSB).<br \/>\nNon si tratta di un nuovo linguaggio ma di un nuovo modo di scrivere il\u00a0SuperBASIC, molto pi\u00f9 versatile e libero dalle regole, \u00e8 poi SSB che\u00a0provvede a trasformare il tutto nel formato a noi conosciuto.<br \/>\nFacciamo ora una breve panoramica su questo nuovo modo di scrivere le\u00a0istruzioni.<br \/>\nInnanzitutto i programmi SSB sono contenuti in un normalissimo file\u00a0ASCII, possono essere quindi editati da un qualunque editor di testo,\u00a0seconda cosa non esistono pi\u00f9 i numeri di riga, SSB provvede ad<br \/>\ninserirli automaticamente in fase di trasformazione.<br \/>\nE&#8217; possibile inserire delle righe vuote (verranno eliminate in\u00a0automatico anch&#8217;esse) per aumentare la leggibilit\u00e0 del programma.<br \/>\nI commenti vengono ora inseriti tramite il simbolo ## e vengono tolti in\u00a0fase di trasformazione in SuperBASIC in modo da non appesantire\u00a0inutilmente l&#8217;applicazione.<br \/>\nSe invece desideriamo che il commento resti incluso, ad esempio per\u00a0supportare le direttive $$, basta usare il simbolo **.<br \/>\nVediamo ora un piccolo esempio, ci\u00f2 che in SuperBASIC si\u00a0scriverebbe in questo modo:<\/p>\n<p style=\"text-align: justify;\">100 REMark +- Programma dimostrativo 1 &#8212;&#8212;&#8212;&#8212;+<br \/>\n110 :<br \/>\n120 FOR CICLO = 1 TO 10<br \/>\n130 PRINT CICLO<br \/>\n140 END FOR CICLO<br \/>\n150 :<br \/>\n160 PRINT &#8220;FINE ELABORAZIONE&#8221;<\/p>\n<p style=\"text-align: justify;\">in SSB diventa:<\/p>\n<p style=\"text-align: justify;\">## +- Programma dimostrativo 1 &#8212;&#8212;&#8212;&#8212;+<\/p>\n<p style=\"text-align: justify;\">FOR CICLO = 1 TO 10<br \/>\nPRINT CICLO<br \/>\nEND FOR CICLO<\/p>\n<p style=\"text-align: justify;\">PRINT &#8220;FINE ELABORAZIONE&#8221;<\/p>\n<p style=\"text-align: justify;\">In SSB cambia anche il modo di lavorare, routine di carattere generale\u00a0possono essere scritte su file separati ed essere unite al programma\u00a0principale tramite il comando #include, in questo modo se cambia una\u00a0routine non occorre riportare la modifica su tutti i programmi ma \u00e8\u00a0sufficiente ricompilarli velocemente, SSB provveder\u00e0 in automatico ad\u00a0effettuare gli aggiornamenti.<br \/>\nE&#8217; possibile inoltre eseguire compilazioni condizionali, ossia certi\u00a0blocchi di istruzioni vengono inseriti o meno al posto di altre in base\u00a0all&#8217;impostazione di uno switch, questa opzione \u00e8 utilissima per<br \/>\nautomatizzare la creazione di versioni demo o provviste di debug senza\u00a0dover creare cloni del programma.<br \/>\nE&#8217; inoltre possibile dividere le linee tramite il carattere &#8220;\\&#8221; in modo\u00a0da aumentare la leggibilit\u00e0 del programma, ad esempio l&#8217;istruzione\u00a0SuperBASIC:<\/p>\n<p style=\"text-align: justify;\">100 IF COMODO1 = &#8220;PIPPO&#8221; AND COMODO2 = &#8220;PLUTO&#8221;<\/p>\n<p style=\"text-align: justify;\">in SSB diventa:<\/p>\n<p style=\"text-align: justify;\">IF COMODO1 = &#8220;PIPPO&#8221; \\<br \/>\nAND COMODO2 = &#8220;PLUTO&#8221;<\/p>\n<p style=\"text-align: justify;\">Chiaramente il carattere in questione non viene considerato se si\u00a0trova all&#8217;interno di una stringa.<br \/>\nSSB supporta anche le parole chiave GO TO e GOSUB tramite un sistema\u00a0di label molto intuitivo.<br \/>\nIl progetto \u00e8 in costante sviluppo e potete trovare tutti gli\u00a0aggiornamenti oppure sul nostro sito Internet alla sezione Magazzino.<\/p>\n","protected":false},"excerpt":{"rendered":"Il SuperBASIC, come ben sappiamo, \u00e8 uno dei pi\u00f9 potenti linguaggi di\u00a0programmazione esistenti sulla piattaforma QL, con le sua capacit\u00e0 di\u00a0estendersi praticamente all&#8217;infinito, \n<a class=\"moretag\" href=\"https:\/\/www.hunggartorino.it\/ql\/ssb-un-nuovo-modo-di-programmare-in-superbasic\/\"> [..more...]<\/a>","protected":false},"author":1,"featured_media":473,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[41],"tags":[],"class_list":["post-466","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programmazione"],"_links":{"self":[{"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/posts\/466","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/comments?post=466"}],"version-history":[{"count":3,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/posts\/466\/revisions"}],"predecessor-version":[{"id":475,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/posts\/466\/revisions\/475"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/media\/473"}],"wp:attachment":[{"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/media?parent=466"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/categories?post=466"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hunggartorino.it\/ql\/wp-json\/wp\/v2\/tags?post=466"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}