Jacopo Montagnani – WordPress VS AppInventor

Transcript

Jacopo Montagnani – WordPress VS AppInventor
 Strumenti per semplificare i processi di programmazione: quanto sono effettivamente efficaci? WordPress VS AppInventor Iacopo Montagnani -­‐ 424834 INTRODUZIONE ......................................................................................................................................... 3 SEMPLIFICARE LA PROGRAMMAZIONE, ALCUNI STRUMENTI UTILI ................................................................................ 3 UN MODO DIVERSO DI AFFRONTARE IL PROBLEMA ................................................................................................... 4 WORDPRESS ............................................................................................................................................. 6 CONCETTI PRELIMINARI E INTRODUZIONE ............................................................................................................... 6 VANTAGGI NELL’UTILIZZO DI WP .......................................................................................................................... 6 SVANTAGGI NELL’UTILIZZO DI WP ........................................................................................................................ 7 SI POSSONO OTTENERE RISULTATI PROFESSIONALI? ................................................................................................. 8 RISULTATI OTTENIBILI TRAMITE WORDPRESS .......................................................................................................... 8 CONSIDERAZIONI ............................................................................................................................................. 10 APP INVENTOR ........................................................................................................................................ 11 CONCETTI PRELIMINARI E INTRODUZIONE ............................................................................................................. 11 VANTAGGI NELL’UTILIZZO DI AI .......................................................................................................................... 11 SVANTAGGI NELL’UTILIZZO DI AI ......................................................................................................................... 11 RISULTATI OTTENIBILI TRAMITE APPINVENTOR ...................................................................................................... 12 SI POSSONO OTTENERE RISULTATI PROFESSIONALI? ............................................................................................... 13 CONSIDERAZIONI ............................................................................................................................................. 14 CONCLUSIONE ......................................................................................................................................... 15 BIBLIOGRAFIA ......................................................................................................................................... 16 SITOGRAFIA ............................................................................................................................................ 16 Introduzione Per programmare basta conoscere un linguaggio di programmazione e utilizzare un qualsiasi editor di testo installato su di un computer: può essere sufficiente l’applicazione Blocco Note che troviamo nativamente sulle macchine Windows.1 Questo approccio classico alla programmazione spaventa coloro che non hanno mai avuto a che fare con un linguaggio di programmazione, che tendono a vedere questo ambito come una “materia destinata a pochi eletti”. Per imparare a scrivere codice correttamente, infatti, è necessario apprendere una delle tante “lingue informatiche” con la relativa “grammatica”, ma non solo. E’ fondamentale imparare a ragionare in maniera logica e strutturata al fine di costruire algoritmi e procedure per risolvere le problematiche in cui ci imbatteremo durante la costruzione di un programma, di un sito o di un’applicazione. Per venire incontro alle esigenze di chi vuole programmare, sono stati sviluppati software in grado di aiutare nei processi di programmazione e veri e propri nuovi metodi di programmazione, più intuitivi rispetto ad un linguaggio a basso livello 2 e più vicini a quello che è il linguaggio umano. Possiamo effettuare una classificazione sommaria degli strumenti che si propongono di aiutare un developer, in base a quanto questi siano vicini alla programmazione tradizionale o a quanto si allontanino da essa andando verso una programmazione visuale. Nella realtà dei fatti, nessuno sviluppatore utilizza il Blocco Note per programmare. Semplificare la programmazione, alcuni strumenti utili In aiuto del programmatore esistono editor di testo avanzati, focalizzati al mondo della programmazione. Questi editor sono in grado di dare suggerimenti durante la stesura del codice, indentare automaticamente quest’ultimo in modo da essere maggiormente comprensibile, colorare il codice per far riconoscere immediatamente alcune parti del programma (variabili, funzioni, frammenti ecc.), generare parti automaticamente, aprire e chiudere parentesi, virgolette, apici ecc. Questi editor sono nati, oltre che per semplificare i processi, anche per consentire al programmatore di commettere il minor numero possibile di errori, spesso di distrazione. Una semplice parentesi non chiusa, infatti, può compromettere il funzionamento dell’intero programma. Il presupposto indispensabile nell’utilizzo di questi editor risulta essere la conoscenza del linguaggio di programmazione. Un editor, per quanto ben strutturato e implementato, risulta del tutto inutile a chi non conosce un linguaggio adeguato o non è in grado di scrivere righe di codice con una sintassi corretta e un’adeguata logica nella costruzione degli algoritmi. Fra gli editor più famosi per la programmazione troviamo NetBeans. Netbeans è un ambiente di sviluppo multi-­‐linguaggio scelto dalla Oracle Corporation e dotato di migliaia di plug-­‐in in grado di renderlo adatto ad ogni tipo di programmazione. Con NetBeans si possono costruire siti internet complessi, applicazioni Java, script in C++ ecc. Altro punto in favore di Netbeans è che questo software, essendo scritto in Java, risulta compatibile con tutti i sistemi operativi (Mac OS, Windows, Linux). Fra le funzioni di NetBeans troviamo l’indentazione del codice, la colorazione di quest’ultimo, un ottimo debugger Java, la possibilità di effettuare ricerche all’interno del codice e altre centinaia di strumenti indispensabili per una corretta programmazione. Esiste poi un altro genere di editor, focalizzato soprattutto al mondo del web, che cerca di andare incontro a coloro che non conoscono, o quanto meno non in maniera approfondita, i linguaggi di 1
Per un esempio di programmazione tramite Blocco Note, vedi: Java 6 – Luigi Comi, Apogeo 2007 (pag. 55) “In informatica, per linguaggio a basso livello si intende il sottogruppo di linguaggi di programmazione orientati alla 2
“In informatica, per linguaggio a basso livello si intende il sottogruppo di linguaggi di programmazione orientati alla macchina, al contrario del linguaggio ad alto livello che è invece orientato all'utente.” (Da Wikipedia – Programmazione a basso livello: http://it.wikipedia.org/wiki/Linguaggio_di_programmazione_a_basso_livello) 2
programmazione, affiancando alla programmazione tradizionale una forte componente di programmazione visuale. Uno degli esempi più conosciuti è certamente Dreamweaver. Dreamweaver è un programma realizzato da Adobe che grazie a un editor visuale di tipo WYSIWYG 3 consente di realizzare pagine web inserendo testo, immagini e collegamenti ipertestuali senza necessariamente conoscere il linguaggio HTML. Il programma, in realtà, converte in codice ogni singola azione compiuta dall’utente e il codice generato può essere modificato in un secondo momento. Sviluppo visuale e tradizionale possono quindi sia procedere parallelamente che separatamente in base alle competenze e alle esigenze del programmatore. Questi editor, di solito, sono utilizzati per il web o per risultati nei quali l’interfaccia grafica ha la priorità rispetto a quello che effettivamente il codice deve fare. La conoscenza di un linguaggio di programmazione è comunque fortemente consigliata poiché potrebbe essere necessario intervenire sul codice per migliorare alcuni aspetti o velocizzare alcuni processi che l’editor non riesce a gestire in maniera ottimale. Entrambi i tipi di strumenti presentati (Netbeans e Dreamweaver), presuppongono una conoscenza più o meno approfondita di un linguaggio di programmazione e dei processi di programmazione. Se non si conosce assolutamente la programmazione cosa si può fare per realizzare un sito, un’applicazione o un programma? Esistono strumenti che, sfruttando i VPL (Virtual Programming Language), promettono di riuscire in questi intenti senza che l’utente debba saper necessariamente programmare. Nel web troviamo editor di questa categoria specifici per ogni tipo di necessità. Si possono reperire programmi per la costruzione di videogiochi (Construct2), per realizzare siti web (Wix), applicazioni mobile (AppInventor) ecc. L’utente si limita a sistemare blocchi e regolarli settando dei parametri mediante interfacce, per ottenere un risultato finale funzionante, ma senza sapere quale sia il codice necessario alla macchina per compiere determinate azioni. La maggioranza dei VPL è basata sull'idea di “box e frecce” ovvero di blocchi (rettangoli, cerchi, parti di un puzzle) concepiti per strutturare funzioni e connessi tra loro mediante frecce (o incastri nel caso dei puzzle. L'ambiente per la programmazione visuale provvede tutto il necessario per poter "disegnare" subito un programma; in rapporto ai linguaggi scritti le regole sintattiche sono praticamente inesistenti. 4 L’utente ha immediatamente la possibilità di visualizzare lo stato del programma durante le fasi di debug. Questo tipo di programmazione risulta particolarmente "istintiva" e automatica e spesso, in forme basilari, viene utilizzata per far apprendere ai bambini i concetti base dell’informatica e il corretto modus operandi. Un modo diverso di affrontare il problema Le soluzioni presentate nel paragrafo precedente sono tutte relative a una semplificazione della stesura del codice. Queste soluzioni consentono all’utente di costruire “box su box” o “riga di codice su riga di codice” il programma, il sito o l’applicazione che ha in mente. In questi casi, è l’utente a occuparsi di ogni singolo aspetto del progetto che sta costruendo. Esistono, però, alternative che affrontano la situazione in maniera completamente diversa. Nel mondo del web è stata sviluppata una soluzione intermedia che va a creare uno strato fra quello che è il linguaggio a basso livello e quella che invece è la realizzazione vera e propria di contenuti ad alto livello: è il caso dei CMS. In informatica un Content Management System (letteralmente “sistema di gestione dei contenuti”), è uno strumento software, installato su un 3
“Le interfacce grafiche introdussero l’approccio WYSWYG, ossia “quel che vedi è quel che avrai”. In altre prole, il documento appariva sullo schermo nello stesso modo in cui sarebbe risultato nella stampa” Web Usability – Jakob Nilsen, Collana cultura digitale -­‐ Apogeo, 2000 (pag. 82) 4
Linguaggio di programmazione visuale – Wikipedia (http://it.wikipedia.org/wiki/Linguaggio_di_programmazione_visuale) server, il cui compito è facilitare la gestione dei contenuti di siti web, svincolando il programmatore da conoscenze tecniche specifiche di programmazione. I CMS rientrano quindi in quella fascia di strumenti in grado di aiutare un individuo a evitare alcune delle fasi della programmazione o, in certi casi, la totalità di questi processi. Il concetto intorno al quale ruotano i CMS non è tanto quello della semplificazione nella stesura, quanto piuttosto il “non dover reinventare ogni volta la ruota”. L’utente può sfruttare una struttura solida, costruita da altri, per ottenere un risultato professionale senza dover creare passo dopo passo ogni singola parte del suo sito, ma concentrandosi soprattutto sul contenuto. L’approccio risulta essere quindi totalmente diverso. Perché, ad esempio, devo costruire un form di login con Dreamveawer, alternando codice e programmazione visuale, quando posso affidarmi a una struttura creata da altri, che risponde perfettamente alle mie esigenze, è stata sviluppata nel corso del tempo e migliorata di versione in versione? Nella realizzazione di un sito, infatti, alcuni elementi si ripetono costantemente (gallerie d’immagini, form di login, iscrizione alla newsletter, strutture a colonne, barre laterali, menù ecc.). Grazie ai CMS queste parti possono essere inserite con facilità dall’utente nella struttura del proprio sito, costruita dal CMS stesso, con la possibilità di modificarle nel caso l’utente ne abbia le competenze. L’individuo avrà, quindi, la possibilità di ottenere ottimi risultati senza scrivere alcuna riga di codice, imparando a gestire uno di questi strumenti. Queste soluzioni sono accessibili anche a chi non conosce linguaggi di programmazione, anche se, come vedremo in seguito, questo preclude la possibilità di sfruttare in maniera approfondita il CMS per realizzare i propri obiettivi. Di seguito analizzeremo due soluzioni che promettono di realizzare da un lato siti internet, dall’altro applicazioni mobili per smartphone. Questi strumenti possono essere considerati delle alternative reali alla programmazione? I risultati ottenuti sono sufficienti a creare soluzioni valide o quanto meno un punto di partenza per implementare una versione completa in futuro? WordPress Concetti preliminari e introduzione WordPress (WP) è una piattaforma software di pubblicazione di contenuti CMS, sviluppata con PHP usando come gestore di database MYSQL. WordPress nasce inizialmente per la costruzione di blog e si specializza in seguito nella creazione di siti in generale, mantenendo comunque una struttura orientata al mondo del blogging. Analizzando i dati forniti da Builtwith5 possiamo constatare che 13,166,969 siti sono realizzati attraverso la piattaforma WordPress e nella “Top Milion Sites” ben 151,971 utilizzano questo CMS. Probabilmente molte delle pagine web che frequentiamo quotidianamente sono costruite mediante WordPress e neanche ce ne accorgiamo. Questo perché la piattaforma ha sviluppato una versatilità tale da consentirne l’utilizzo nei più svariati campi: gallerie fotografiche6, siti di informazione 7 , blog di privati o grandi aziende 8 , e-­‐commerce 9 ecc. La grande versatilità di WordPress è data dalla possibilità di personalizzare i temi in maniera più o meno radicale, intervenendo in back-­‐end 10 attraverso apposite sezioni oppure modificando direttamente il codice. Altri strumenti fondamentali per modificare il sito sono i plug-­‐in, che possono rivoluzionare in maniera radicale il core11 di WordPress o semplicemente aggiungere alcune funzionalità. Un esempio di plug-­‐in in grado di modificare radicalmente WordPress e aggiungere moltissime feature è WooCommerce. Attraverso WooCommerce la piattaforma di blog viene convertita totalmente in una studiata ad hoc per realizzare siti e-­‐commerce, mantenendo tutte le funzionalità base garantite da WP. Per renderci conto della potenza di WordPress e di quanto siano utili ed efficaci certi plug-­‐in è sufficiente analizzare alcuni dei dati offerti da Builtwith. Il numero di siti e-­‐commerce realizzati con WooCommerce è pari a 397,935. WooCommerce copre il 18.51% delle casistiche totali di siti e-­‐commerce. Il concorrente più famoso, il CMS “Magento”, riesce a raggiungere a fatica il 10% del totale pur essendo uno strumento studiato appositamente per la realizzazione di soli negozi virtuali.12 Una volta realizzata una struttura passando per temi e plug-­‐in e una volta configurato il sito in modo che aderisca elle nostre idee, i contenuti possono essere facilmente inseriti attraverso l’interfaccia WYSIWIG presente in back-­‐end. L’utente potrà riempire di contenuti la struttura realizzata, sfruttando una modalità di creazione del tutto simile a quella per la stesura di un testo su Word, ma con l’aggiunta di alcune funzioni avanzate orientate al web. Vantaggi nell’utilizzo di WP -­‐
-­‐
Semplicità di utilizzo. WordPress è una piattaforma semplice da utilizzare, che non richiede particolari competenze per essere sfruttata. Risulta particolarmente utile anche per quelle persone che si affidano a terzi per la costruzione del sito e che hanno intenzione solamente di gestire la parte relativa ai contenuti attraverso l’interfaccia di back-­‐end. Numero di temi. WordPress mette a disposizione un numero elevatissimo di temi creati ad hoc per ogni tipo di soluzione. Questa enorme possibilità di scelta permette di garantire una sufficiente originalità al sito web creato. 5
Sito ufficiale -­‐ https://trends.builtwith.com/cms/WordPress http://themeforest.net/item/chocolate-­‐wp-­‐responsive-­‐photography-­‐theme/full_screen_preview/299901 7
http://time.com 8
http://blogs.adobe.com 9
http://demo2.woothemes.com/?name=fashionable 10
Interfaccia a disposizione dell’utente per inserire contenuti e apportare modifiche al tema. 11
Nucleo, cuore. Termine utilizzato per definire la struttura nativa di WordPress. 12
https://builtwith.com/ecommerce/ 6
-­‐
Numero di plugin (?). WordPress mette a disposizione un elevato numero di plug-­‐in (circa 20,000) che migliorano le prestazioni di gestione del sito web e ne estendono le funzionalità. Le tipologie sono numerosissime e permettono di soddisfare qualsiasi tipo di richiesta, tuttavia occorre conoscere o saper riconoscere quali siano i programmi migliori, quelli più adatti alle nostre esigenze. Visto il gran numero di plug-­‐in disponibili, infatti, non sempre è facile trovare quello adatto, ma soprattutto ben programmato. Il sistema di valutazione offerto da WordPress permetterà di capire abbastanza semplicemente quali plug-­‐in siano più affidabili di altri. Nonostante questo, però, districarsi nella “giungla” di plug-­‐in che offrono una medesima funzionalità non sempre è semplice. La vasta libreria, purtroppo, include anche plug-­‐in mal realizzati che potrebbero compromettere il funzionamento dell’intero sito. Svantaggi nell’utilizzo di WP -­‐
Troppi aggiornamenti. WordPress e i suoi plug-­‐in sono aggiornati continuamente. In generale gli aggiornamenti non sono un fattore negativo, ma può capitare ad esempio che alcuni temi cambino andando a modificare l’aspetto grafico o strutturale del sito web in maniera inaspettata. Lo stesso può essere detto dei plug-­‐in che riguardano, ad esempio, la gestione SEO, piuttosto che particolari form o altro. In certi casi può persino essere “rischioso” eseguire l’aggiornamento. Il caso più eclatante è stato, in passato, quello del pulsante Like di Facebook 13 . Cambiando il modo in cui il social network gestiva le funzionalità del pulsante, sono andati a compromettersi tutti i plug-­‐in che sfruttavano questa funzione con la vecchia struttura e non tutti gli sviluppatori sono stati in grado di adattare rapidamente il proprio codice a questa nuova necessità, causando un momentaneo malfunzionamento dei pulsanti che ormai troviamo alla fine di ogni pagina web. -­‐
Non sempre adatto. Anche se WordPress permette di adattarsi alle numerose tipologie di siti web, può non essere la soluzione più adeguata in alcuni casi. E’ importante non dimenticare che WordPress nasce come una piattaforma di blogging, quindi ci sono casi in cui sarà possibile trovare soluzioni ad hoc più adeguate rispetto a quelle offerte da WP. Layout avanzati difficili da realizzare. In WordPress il design delle pagine può essere personalizzato entro certi limiti. Siti che utilizzano layout grafici avanzati, con una struttura delle pagine differente per ogni pagina, sono difficilmente gestibili attraverso il CMS se non andando a modificare il codice. -­‐
-­‐
Tempi di caricamento elevati. Spesso l’uso di CMS in genere implica un tempo maggiore nel caricamento delle pagine rispetto a un sito statico. -­‐
Siti multilingua mal gestiti. Risulta complesso costruire un sito multilingua con questo CMS. Esistono specifici plug-­‐in in grado di collegare ai vari articoli in lingua madre, la controparte straniera, ma non sempre funzionano in maniera adeguata. Una soluzione al problema sarebbe la modifica del core da parte degli sviluppatori dello stesso WordPress. Un aggiornamento in questo senso è atteso dopo il rilascio della versione 4.0.14 13 I cambiamenti apportati e il suono funzionamento del tasto Like: https://developers.facebook.com/blog/post/2013/11/06/introducing-­‐new-­‐like-­‐and-­‐share-­‐buttons/ La versione 4.0 è stata rilasciata nel mese di Settembre 2014 -­‐ https://WordPress.org/news/2014/09/benny/ 14
Si possono ottenere risultati professionali? Installando una versione di WordPress sul proprio spazio web abbiamo la possibilità di scegliere fra alcuni temi predefiniti oppure cercare online temi adatti alle nostre esigenze e installarli. Alcuni temi possono essere acquistati su siti come “themeforest.net” e “temify.me” a prezzi piuttosto contenuti (50$-­‐80$). I temi disponibili sono migliaia e, con un po’ di pazienza, non sarà difficile trovare un tema che ci piaccia e possa aderire a quelle che sono le nostre richieste. Una volta installato il tema, non resta che settare alcuni parametri come immagine dell’header, voci nel menù, footer, colorazione generale ecc. In un secondo momento possono essere installati plug-­‐in per aggiungere funzioni che non sono previste nativamente sul tema da noi scelto. Il risultato è professionale e piuttosto immediato. Quali problematiche posso incontrare utilizzando WordPress in questo modo? WordPress non è adatto nei casi in cui un “amatore” voglia realizzare un sito che nella sua mente risulta ben ideato e strutturato. Sarà infatti impossibile, nonostante la grande quantità di temi disponibili, trovarne uno che aderisca perfettamente a quello che ha ideato. Anche intervenendo sula struttura dall’interfaccia di back-­‐end e installando plug-­‐in non è detto che si riesca ad ottenere il risultato desiderato. In questo senso WordPress sembra essere più adatto se l’idea di partenza viene adattata e fatta aderire ad un layout scelto fra i molti disponibili e poi sviluppata sulla base del layout selezionato. La scelta di un tema prefabbricato, comunque, comporta dei rischi. Il principale è quello di ritrovarsi nella situazione in cui due siti risultino praticamente identici. In alcune situazioni questo potrebbe non rappresentare un problema; in fin dei conti, avere un sito con una struttura solida, ben realizzato e piacevole da vedere può essere sufficiente per una buona fetta degli utenti. Queste soluzioni sembrano particolarmente indicate per realtà piccole come aziende locali, fotografi amatoriali, band emergenti ecc. Se invece volessi personalizzare totalmente un sito per non far adattare la mia idea al tema, ma il tema alla mia idea? Grazie a WordPress è possibile fare anche questo. Conoscendo alcuni linguaggi di programmazione (PHP, HTML, CSS) posso modificare radicalmente WordPress a livello di codice e realizzare un sito unico partendo da un tema predefinito o dalla famosa “pagina bianca” del Blocco Note. Risultati ottenibili tramite WordPress Uno dei temi più famosi di WordPress, essendo uno di quelli predefiniti, è sicuramente TwentyFourteen. L’aspetto del tema è il seguente: Figura 1 -­‐ Tema Twentyfourteen WordPress Andando a modificare il tema di base in maniera profonda, si possono ottenere risultati straordinari. Se l’aspetto di un sito realizzato mediante TwentyFourteen è quello di Figura 1, chi direbbe che anche il sito in Figura 2 è stato creato partendo dallo stesso tema? Figura 2 -­‐ Tema Toscana Medical Supports basato su Twentyfourteen Questo è possibile modificando totalmente il codice del tema base, in modo da scegliere quali elementi mostrare all’interno della pagina e in quale modo mostrarli, con grafiche costruite ad hoc e plug-­‐in personalizzati (magari creati dall’utente stesso) e realizzati per soddisfare esigenze specifiche. A questo punto, c’è da sciogliere un altro interrogativo. Se WordPress è pensato per gestire un blog, come posso creare un sito più classico, magari che mostri dei prodotti? L’elemento base di WordPress è l’Articolo, ma è possibile creare ulteriori tipi di elemento (custom post type) in modo da rendere praticamente infiniti i campi di utilizzo di WordPress. Si potrebbe, ad esempio, creare un elemento “prodotto” e assegnargli caratteristiche particolari come prezzo, colore, taglia ecc. In questo modo avremo una struttura per l’inserimento del contenuto in tutto e per tutto simile a quella dell’articolo, ma che, modificando il codice di visualizzazione in maniera adatta alla nuova categoria, può mostrare i prodotti come veri e propri oggetti invece che come semplici testi con immagini. Grazie alla struttura base di WP sarà poi possibile gestire il singolo prodotto con le pagine “single” e gli archivi di prodotti grazie alle pagine “archive” che automaticamente riescono a gestire rispettivamente singoli elementi o archivi di elementi di uno stesso tipo. Il modo in cui sono gestiti questi due tipi di pagine può essere configurato sempre attraverso il codice. Considerazioni WordPress si propone come uno strumento professionale e ben supportato per la realizzazione dei siti. Il concetto alla base di WP (e dei CMS in genere) è quello che un qualcosa che è stato già creato e sviluppato in maniera professionale, non ha bisogno di essere riscritto totalmente da un solo programmatore. Il programmatore esperto potrà modificare il CMS piegandolo alle proprie esigenze, ma potrà sempre fare affidamento su una struttura solida piuttosto che doversi occupare di ogni singola parte del sito da solo. D’altro canto l’utente non esperto può ottenere risultati soddisfacenti con il minimo sforzo, sacrificando in parte la sua idea, ma potendosi concentrare sul contenuto, senza occuparsi della struttura. App Inventor Concetti preliminari e introduzione App Inventor (AI) è un ambiente di sviluppo per applicazioni Android, creato da Google ma ora di proprietà del Massachussetts Institute of Technology. Il progetto iniziale prevedeva un ambiente di sviluppo per individui che volessero programmare applicazioni semplici per Android per scopi personali. Allo stato attuale, le applicazioni possono essere pubblicate sul Google Play Store e si possono effettuare test durante lo sviluppo inviando le applicazioni direttamente allo smartphone o al tablet (tramite WIFI o USB) o testarle direttamente su PC installando un emulatore Android. Il sistema di costruzione delle app risulta particolarmente intuitivo poiché al posto di comporre codice per eseguire azioni, è sufficiente unire dei blocchetti come se stessimo componendo un puzzle. La parte grafica presenta una simulazione di uno schermo in cui possiamo inserire pulsanti, aree di testo, immagini ecc. a cui collegare le azioni costruite mediante il puzzle. Altro aspetto importante di questo editor è che consente di utilizzare, senza bisogno di alcuna conoscenza, le periferiche e alcune componenti software del proprio smartphone. Attraverso un’interfaccia grafica avremo accesso direttamente, ad esempio, all’accelerometro o al flash della fotocamera o ancora, con pochi click, potremo associare a un campo di testo la possibilità di compilarlo attraverso la funzionalità di speech recognition15. Vantaggi nell’utilizzo di AI -­‐
-­‐
-­‐
Semplicità. Grazie ad apposite strutture, avremo facilmente accesso agli strumenti messi a disposizione dello smartphone. Intuitività. AppInventor risulta essere uno strumento intuitivo per quanto riguarda la costruzione grafica dell’app. Progettare la grafica di un’applicazione si limita al disegnare l’interfaccia con pulsanti, blocchi, aree di testo e immagini pronti per l’uso. Programmazione semplificata. AppInventor sfrutta un sistema che, teoricamente, semplifica la fase di progettazione dell’algoritmo. Attraverso il sistema a blocchi, infatti, gli errori di sintassi durante la stesura del codice vengono praticamente azzerati. Risulta inoltre più semplice capire quali pezzi di codice siano compatibili con altri e quali parti non avrebbero senso se collocate in determinate posizioni. Svantaggi nell’utilizzo di AI -­‐
-­‐
Codice non modificabile. Essendo il codice gestito totalmente da AI, questo non è migliorabile. Lo sviluppatore è impossibilitato a intervenire sul codice appena generato anche perché, se questo fosse modificabile, risulterebbe effettivamente difficoltoso convertire il nuovo codice in una nuova struttura a puzzle come quella prevista. Dimensioni limitate. AppInventor non sembra adatto per sviluppare applicazioni che devono gestire un gran numero di media dal momento che impone una dimensione massima delle applicazioni a 5 MB (in futuro il limite potrebbe venir rimosso). 15
http://appinventor.mit.edu/explore/sites/all/files/ConceptCards/SpeechRecognition.pdf -­‐
Funzionalità limitate e poca personalizzazione. Su AppInventor le possibilità di costruzione del codice risultano limitate. Alcune funzioni, ad esempio, non possono essere sviluppate con i blocchi a disposizione, che sono non sufficienti a coprire tutte le necessità che un programmatore potrebbe. Anche una funzione basilare come lo scegliere i colori di background dell’applicazione è limitata a un numero esiguo di colori. Questo aspetto causa una poca personalizzabilità dell’interfaccia grafica e un’omologazione generale. Risultati ottenibili tramite AppInventor Sul sito ufficiale di AppInventor16 è presente una lista delle migliori applicazioni realizzate grazie a questa piattaforma. Prendiamo in esame l’applicazione “One Percent Fitness”, premiata come miglior applicazione del mese di Giugno 2014. L’app propone di aiutare a raggiungere determinati obiettivi nel campo del fitness (corsa, flessioni, addominali, peso ecc.). In pratica, ad esempio, quando l’utente completa una corsa, inserisce il tempo impiegato e il programma calcola l’1% in più rispetto al valore indicato. Una volta calcolato, questo valore viene salvato in modo da porre un obiettivo per la successiva attività fisica. Se ad esempio un utente corre 5 Km la prima volta che utilizza l’applicazione, la successiva avrà come obiettivo quello di correre 5.05 Km. I traguardi possono essere settati in base al tempo, al numero di ripetizioni, all’intensità di un’attività, ai kg da perdere durante una dieta. Figura 3 -­‐ One Percent Fitness Tenendo traccia dei risultati ottenuti e eventuali fallimenti, l’applicazione calibra i traguardi in modo da tenere traccia dei propri progressi e ricordando all’utente quale sia l’obiettivo finale impostato. L’applicazione ha una struttura particolarmente semplice, con sei pulsanti con i quali accedere alle rispettive sessioni e un grafico che mostra i risultati fino all’obiettivo finale prefissato. In fin dei conti la parte algoritmica si limita a salvare il valore di alcune variabili e a svolgere un semplice calcolo d’incremento dell’1% del risultato ottenuto (da 16
http://appinventor.mit.edu inserire manualmente). Si possono ottenere risultati professionali? Il risultato finale dell’applicazione presentata nel paragrafo precendente può essere ottenuto da tutti con un minimo sforzo attraverso AppInventor. Ottenere un risultato professionale e realizzare realmente tutte le app che ci passano per la testa con AI sembra, invece, impossibile. Immaginiamo, partendo dall’esempio precedente, di voler sviluppare l’applicazione in modo da aggiungere alcune funzioni e rendendola più completa e funzionale. Potremmo volere, invece di inserire manualmente i dati, che sia il telefono a calcolare le distanze, sfruttando il GPS e facendo una media della velocità in base allo spazio percorso e al tempo impiegato. Potremmo sviluppare un’applicazione del genere sfruttando AppInventor? Forse sì, ma la sola aggiunta di una funzione tutto sommato base, sembra già di difficile realizzazione con questo sistema. Le app che troviamo sul Google Play Store, specie in posizioni alte delle classifiche di gradimento, sono decisamente più complesse. Se, oltre a questa, iniziamo a voler aggiungere funzioni come la pubblicazione dei risultati sui Social Network o il voler salvare questi dati su di un database online per confrontarsi con altri utenti ecc. i limiti di AppInventor risultano evidenti. Uno dei punti di forza di AI, invece, risulta essere la semplicità con cui si riesce a comporre l’algoritmo grazie all’utilizzo dei blocchi. Analizziamo un esempio di blocco, il comando if-­‐else. Figura 4 -­‐ Il costrutto if-­‐else in AppInventor Il puzzle è facile da comprendere perché vicino all’if c’è uno spazio in cui attaccare solo determinati pezzi in modo da seguire un percorso logico. In genere si potrebbe riassumere il blocco nella frase “Se si verifica questa situazione fai questo, altrimenti fai quest’altro”. In realtà, la parte difficile della programmazione, però, non dovrebbe essere quella di costruire in maniera corretta il costrutto if-­‐else, quanto piuttosto capire che, in un determinato passo della programmazione, nell’algoritmo, è necessario utilizzare quel costrutto invece di un altro (un ciclo for o while ad esempio) e quali parametri debbano essere modificati e in quale modo. E’ veramente necessario utilizzare un sistema a blocchi per un costrutto che, convertendolo in un fittizio pseudocodice, risulterebbe simile a questo? If (Paolo va in Italia) { print (“CIAO”); } else { print(“HI!”) } Oltre ad essere ugualmente comprensibile con un minimo sforzo, la parte di codice scritto risulta più facilmente implementabile, personalizzabile e modificabile in futuro. La soluzione a blocchi evita quindi errori di battitura o di costrutti sbagliati, ma una volta apprese queste basi di programmazione, potrebbe addirittura risultare più lento rispetto allo scrivere qualche riga di codice. Tutt’altro discorso, invece, è quello relativo alla gestione dell’interfaccia grafica e delle componenti dello smartphone. La soluzione proposta risulta decisamente diretta e intuitiva, ma a causa della scarsa personalizzabilità e dell’impossibilità di scrivere codici complessi, i risultati saranno comunque limitati e condizionati a tal punto da rischiare di compromettere il prodotto finale. Considerazioni AppInventor risulta essere inadeguato per un uso professionale. Non a caso la programmazione visuale è spesso associata al primo apprendimento della programmazione per bambini.17 Questo genere di linguaggi può essere, infatti, utile a far imparare importanti concetti di calcolo matematico, a ragionare in modo sistematico e a pensare in modo. Un VPL è adatto per bambini e ragazzi perché la programmazione potrebbe risultare complessa non solo per il tipo di ragionamento, ma anche per la necessità di dover formalizzare questo ragionamento in un linguaggio preciso, in cui sbagliare la chiusura di una parentesi o un punto e virgola potrebbe compromettere il funzionamento dell’intero programma. Per un adulto questo processo di formalizzazione non dovrebbe essere troppo impegnativo, soprattutto con l’aiuto degli editor presentati nei paragrafi introduttivi. Se si vuole sperimentare, quindi, AppInventor risulta essere un buon punto di partenza perché ci consente di mettere immediatamente in pratica un’idea senza conoscere né un linguaggio di programmazione, né come funzionano le varie componenti di uno smartphone. Qualora si volesse sviluppare un qualcosa di più complesso, però, saremo costretti ad abbandonare questa piattaforma. Potrebbe essere quindi consigliabile iniziare subito con metodi tradizionali, senza perdere tempo in sperimentazioni che potrebbero rivelarsi fini a se stesse. Nel caso che l’utilizzo sia quello amatoriale, niente ci vieta di scegliere la soluzione proposta da AppInventor, ma prendiamo questa decisione con la coscienza che non potremo in futuro andare oltre questo livello. 17
Per ulteriori esempi di programmazione visuale per bambini visita: http://coderdojomilano.it/risorse/programmazione-­‐visuale/ Conclusione Dopo aver analizzato i risultati ottenibili con l’utilizzo di WordPress e quelli di AppInventor possiamo trarre delle conclusioni. WP riesce a soddisfare le richieste di gran parte degli utenti giungendo a compromessi, ma comunque risultando professionale. Se l’utente decide di dedicarsi alla parte di programmazione può non porre limiti alla propria immaginazione e creare un qualsiasi tipo di sito. WP offrirà un grande aiuto negli aspetti descritti nei paragrafi precedenti e potrà essere completato dalle conoscenze dell’utente oppure utilizzato per come è stato concepito, in maniera standard, ottenendo comunque ottimi risultati. Stessa cosa non può essere detta per AppInventor. Le applicazioni presenti nella galleria delle migliori app del sito ufficiale risultano comunque piuttosto amatoriali. Se da un lato questo può essere sufficiente per una certa fetta di utenza, sicuramente lascerà insoddisfatti molti. Al contrario di una piattaforma come WP, infatti, l’utente avanzato non potrà fondere quelle che sono le proprie conoscenze con il sistema AppInventor e il risultato sarà, anche nel caso del programmatore esperto, poco professionale e approfondito. La semplificazione data dalla programmazione visuale, inoltre, si limita prettamente a quella dell’interfaccia grafica. Se un utente, infatti, riesce a comprendere la parte algoritmica attraverso una serie di pezzi di puzzle, con uno sforzo minimo potrebbe trasformare quei pezzi in codice di programmazione. La parte difficile della programmazione, infatti, non risulta essere quella della sintassi, che per quanto difficoltosa può essere paragonata all’apprendimento di una nuova lingua, ma quella algoritmica, ovvero quella di risoluzione del problema. Inoltre, una volta compiuto questo sforzo da parte dell’utente, con l’utilizzo di editor specializzati, si supereranno gli evidenti limiti di strumenti come AI e si potranno realizzare una gamma di applicazioni decisamente più vasta rispetto a quella delle app realizzabili attraverso questo editor. Bibliografia “App Inventor, Scrivere e distribuire App per cellularei e tablet Android” – Antonio Taccetti (ebook) “Sviluppare applicazioni con Wordpress” – Thord Daniel Hedengren (ebook) Sitografia Wikipedia – link specifici nelle pagine del testo BuiltWith – builtwith.com Wordpress – www.wordpress.org AppInventer -­‐ http://appinventor.mit.edu/explore/ Toscana Medial Supports – www.toscanamedicalsupports.it