-
Recenti
- angel_omega on 5x15 in Tokyo: il nostro viaggio in giappone in un libro
- Design Motivazionale: Usabilità Sociale e Group Centered Design | myaranea on Motivational Design 1.5: dagli elementi alla metodologia, un unico documento
- Stefano Gargiulo on Radial Menu Prototype, Mac OSX style
- Folletto Malefico on WordPress Portal 0.9
- Notizie dai blog su Tempo di restyling per l’interfaccia di Youtube on "Dove trovi il tempo di fare tutte queste cose?"
- TheDarkMaster on Q-Zar! Pericolo! Pericolo! Pericolo!
Folletto- ...contacting twitter...
-
Scritti
- Motivational Design 1.5: dagli elementi alla metodologia, un unico documento
- Massime conversazionali di Paul Grice
- Design Motivazionale: Usabilità Sociale e Group Centered Design
- Architetture per Assistenti Virtuali Emozionali
- Elementi Teorici per la Progettazione dei Social Network
- Mezzi Pubblici: Milano dovrebbe imparare da Tokyo
- Appunti sulle Emozioni Artificiali
- RitaliaCamp: il mio punto.
- Spunti sulla Rappresentazione del Significato
- Osservati in bagno
- Bias Linguistico Intergruppi: Il Caso Litvinenko
- Filosofia del Linguaggio: Confronto fra Due Teorie dei Nomi
- Camminava per Strada
- Pensieri Rincorsi
- Bagaglio
- ATM Milano rinnova i biglietti… davvero un miglioramento?
- Tutto quello che avreste voluto sapere sul sonno (ma avevate troppa paura di chiedere)
- Dei Simboli
- Il salto
- Lì.
- Silenzio. Silenzio.
- Lucciole o farfalle?
- SC6 – Erano vestiti di blu
- Serrature
- Chi si ferma ai dadi è solo uno sciocco
- Sofismo del Vero
-
Trova
Idee libere
3d abitudini adobe agile ajax alegria amazon ambiente amd amore anniversario apollo apple apprendimento architettura arte atm attenzione augmented-reality azioni barcamp blog blogosfera bug burocrazia bzaar bzaarcamp bzaarcamp06 cat censura chiavi cinema cirque-du-soleil cms codeusability colour comic community comunicazione conferenza copyright cpu creatività css design dialogo digg discorso disegno domus-academy douglas-adams ecmascript educazione emozione energia evento evoluzione explorer feed fermi fiducia film filosofia firefox flash flex flickr flow flux folletto follia forum foto frontiers06 game gatti giappone golem good50x70 google grafica hacker history html http identity ideo illustrator im infographics informatica information injection intel intelligenza interaction interfacce internet iphone Ipse Dixit italia java javascript javascript argilla jobs jquery koan koyaanisqatsi lavoro law lean lex libri libro limerick linguaggio linux low profile mac maison malware management manifest maps maschere mashup mehrabian memoria mente menu metalettura metodologia microsoft milano minimalism monitor montalcino morra mostra motivazione multitasking munari musica mutts naked-day network newsvine nielsen occasioni openculture openid opensource openspime organizzazione osx p2p paranormale parole pausa peer pensieri percezione perfezione photoshakr php phpgolem piublogcamp pkm png poesia postit pratchett programmazione prototype psiche psicologia python qualità racconti razzismo regolamento relazioni religione retorica risoluzione ritalia rpg rss ruby ruby-on-rails sabifoo safari scelte scienza scrivere scrum sdp semplicità sentimenti sesso siena silicon valley simboli sociale società sonno speranza spime sql ssh standard statistiche stereotipi story subtle suono surreale sviluppo svn tags teatro technology tempo things thx tutorial twitter typography università usabilità user experience verità video virtualizzazione vm wabi-sabi wallpaper web widetag widget wii wiki windows word wordpress zeitgeist zen -
Chi sono?

Solipsista atipico. Questa è forse la definizione migliore per il proprietario di questo blog, Davide Casali aka Folletto Malefico "@.
Programmatore, grafico, fotografo. Scrittore, disegnatore, creativo. Utopista, osservatore. Sbaglia come tutti, ma ama correggersi.
E' Interaction Designer & Architecture Designer, lavora in maison,the e segue alcuni progetti nel suo tempo libero.
E' laureato magistrale in Teoria e Tecnologia della Comunicazione e si interessa di psicologia sociale applicata alle tecnologie.
12 comments
A quel punto si iniziano ad aggiungere estensioni, eccezioni, note a margine, che rendono di nuovo il linguaggio un casino indicibile :D
L'esempio è banalmente Java: abbiamo gli iteratori che sono la cosa più "ovvia" di un linguaggio di programmazione e still devi scrivere 5 righe di codice ogni volta che devi usarne uno. Capisci anche tu che non è un problema di potenza espressiva del linguaggio (Java è di alto livello) quanto un problema dettato dal fatto che nessuno ha pensato a fattori come semplicità di scrittura e leggibilità del codice.
Non puoi venirmi a dire che un loop Python è meno espressivo di un loop Java, ed è evidente: svolgono esattamente la stessa funzionalità.
L'esempio l'ho scelto di proposito come un caso significativo di questa dicotomia fra linguaggio di alto livello, linguaggio semplice e linguaggio usabile.
2. ora, non per fare il geek at all costs, ma Vim al foldable code ci e' arrivato molto prima. Ed e' abbastanza mainstream, o almeno lo era... e' un po' che non sono in contatto col mondo unix. Ci sono altri aspetti di Vim che me lo fanno considerare molto usabili, non a 360 gradi certo (e non alzare il sopracciglio) ma ci tornero' su.
Ora devo scappare ;)
(2) Vim lo fa? Si, sarebbe allora sua la prima apparizione mainstream di sicuro. Sai come si fa/da quando è stato introdotto?
...hai sgamato il sopracciglio :P
Ad esempio se vuoi foldare da linea 7 a 20
:7,20 fo
1) alza le mani dalla tastiera e prendi il mouse
2) punta all'inizio (fine) della riga e trascina, tenendo cliccato fino all'altra estremità
3) click destro, "copia" (o Crtl + C, se uno fa il figo)
4) click destro, "incolla" ( o Ctrl + V)
sarò io che sono pazzo, ma secondo me gli ambienti di scrittura modali offrono qualche comodità in più, agli utenti "hard-core"
copiaincolla con vim
1) sposto il cursore sulla riga
2) "yy"
3) "p"
senza aggiungere che posso ripetere i comandi n volte, semplicemente facendo precedere il numero di ripetizioni al comando stesso.
tutto questo evitando di muovere le mani dal piano di scrittura e quindi con una interruzione minima del flusso di lavoro.
Poi boh, ma io quando apro VS mi perdo nella miriade di cose che permette di fare. Io credo di dover Scrivere / Compilare, cosa sono tutte le altre cose? (nn lo ho sottomano per fare esempi seri) Perchè devo per forza fare un Progetto? Dove imposto le opzioni del compilatore?
Esempio banale:
1) sposto il cursore sulla riga
2) shift+mela+dx | shift+fine
3) mela+c | ctrl+c
4) mela+v | ctrl+v
Calcolando che tutto questo lo faccio senza dovermi "ricordare" la modalità e senza cambiare modalità, la differenza in velocità non è così rilevante (seppur esistente) mentre la differenza in termini di usabilità è notevole.
Per quanto riguarda il resto, è piuttosto evidente che non hai mai dovuto gestire un progetto sufficientemente grosso con VS. Già solo quando scrivevo programmi in VB4-5-6 se non avessi avuto una IDE come VS, con stack trace puntuale, step-by-step in tempo reale, interfaccia wysiwyg per realizzare i form etc, capisci che *non* sarei stato così veloce a linea di comando e con un editor normale. VS ad oggi è a mio avviso uno dei migliori se non il miglior IDE in circolazione. :)
Per quanto riguarda il progetto... non è così differente dalla necessità di avere un makefile... ;)
Però son tutti discorsi che seppur inerenti esulano dall'intento dell'articolo: ok copia incolla da tastiera, ma questo lo si faceva già nel 1980. Siamo nel 2006...
Inoltre altri linguaggi non-java, proprio per tipizzazione poco spinta, possono usare costrutti array-like su mappe:
myarray['key'] = "ciccio"
In java non è così. I casi in cui ti serve una map, usi una map, altrimenti usi un array (o implementazioni di Collection).
Infine in java puoi usare i Set: Set keys = myMap.keySet()
e ciclare direttamente sulle chiavi evitando così un passaggio!
Sugli IDE possiamo essere d'accordo oppure meno. In Eclipse e altri esistono i fold di parte del codice + template pronti o da scrivere da soli al bisogno.
Jedit poi ha anche macro sulla stessa linea dei template, anche questi piuttosto facili da scrivere e personalizzare con poco sforzo.
Infine una nota: quando l'IDE scrive "troppo" ci lamentiamo di non avere il controllo del codice o che la re-ingegnerizzazione poi diventa costosa, se scrive "poco" ci lamentiamo lo stesso??
my 2 cents!
Francesco
Ciclare su un array con chiavi era un esempio (che è appunto diverso dal voler ciclare solo sulle chiavi) per mostrare con qualcosa di pratico cosa intendevo per "usabilità del codice".
Mostra in modo piuttosto evidente come una banale operazione di loop su un elemento strutturale base del linguaggio sia qualcosa di estremamente complesso - dal punto di vista dell'usabilità - rispetto ad altri linguaggi.
Sugli IDE, il punto non era elencare quale sia il migliore o quale abbia certe feature. Il punto era dire che non ci sono stati miglioramenti sensibili. Il fatto che Eclipse abbia fold e template, mi pare solamente una comprova di quanto non si sia fatto sotto questo punto di vista.
La nota è invece fuori luogo: non mi pare di aver citato da nessuna parte un IDE che scrive "troppo", la questione era ben differente ed era orientata all'usabilità, non a quanto codice scrive da solo. Il fatto che tu me l'abbia annoverato come un difetto mi fa però di contro notare come il problema non sia sentito neppure da chi sviluppa, che crede che "le cose sono così e stop" e il massimo a cui riesce a fare riferimento è "quanto codice scrive l'IDE", che mi pare un assurdo sul concetto usabilità.
Non siamo piu' ai tempi del Drdos o di dos 2.0, le cose sono molto piu' complesse ora: limitarsi ad un analisi di un linguaggio avulsa dal resto che gira attorno al linguaggio e' un errore.
Per aprire un file in java il sorgente e' ancora piu' lungo:
fatti una libreria, saluta tutte queste righe. La marea di meta-linguaggi che sono in sviluppo mica li fanno su PHP (con tutto il rispetto del caso). Un bel giorno da OO si passera' ad uno step successivo, e lo si sta sperimentando con java.
Un'orm come hibernate se lo inventano in Java, poi nella rincorsa c'e' gente che ne fa un nhibernate, etc
Infine vorrei programmare il mio cellulare, il sito web, il web service, l'applicazione desktop e qualle enterprise con un linguaggio che sia supportato da piu' fornitori, standardizzato, maturo, che viva a lungo, e magari per piu' piattaforme:
se mi dici c# neanche rido, c'e' m$ che piange, mi basta questo.
Il fatto che poi in java ci siano svariate pecche non e' affatto escluso da quanto dico qui sopra, ma c'e' differenza tra e .
ciao :-)
Non è un errore: le stesse cose in linea del tutto teorica potresti dirmele parlando di Assembly. Sono tutte considerazioni *fuori* sintassi di linguaggio. Il problema qui citato è *proprio* la sintassi del linguaggio e nient'altro. Se ancora, invece di Java SUN avesse sviluppato qualcosa con una sintassi Ruby-like, non cambierebbe una virgola del tuo discorso, ma cambierebbe tutto nel mio.
E' come se io ti dicessi che il sistema di guida delle automobili rispetto ai jet ha dei problemi e tu mi rispondessi che comunque le automobili sono più standardizzate, diffuse, economiche, funzionali e comode.
Capisci che sono due considerazioni completamente diverse e non ha senso di dire che una è un "errore". ;)