View Single Post
Old 04-02-2010, 15:53   #3
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Linguaggi da imparare per un principiante in ordine di preferenza :

1) Scala
2) Java
3) C

Linguaggi da imparare per chi non è un principiante in ordine di preferenza:

1) Scala
2) C
3) Smalltalk

Framework per applicazioni con GUI in ordine di preferenza:

1) Swing
2) Java3D
2) JMonkeyEngine
2) Xith3d
2) Ardor3d

Database per piccole applicazioni singolo utente o multiutente in ordine di preferenza:

1) Berkeley DB

Linguaggio Scala

E' un linguaggio "post-funzionale" (denominazione corrente per i linguaggi di quinta generazione, cioè quelli nati per integrare almeno due delle prospettive dominanti che nel caso di scala sono 3: procedurale, imperativa, orientata agli oggetti), staticamente tipato, che produce programmi e librerie per la piattaforma Java. Ideato da Martin Odersky e sviluppato da un team indipendente di cui fa parte l'ideatore.

Pro: progettato per combinare le prospettive orientata agli oggetti, funzionale e procedurale in modo pieno. I programma scala sono eseguibili sulla la piattaforma Java SE.
Contro: la sintassi del linguaggio è sufficientemente articolata da permettere di scrivere puro ciarpame. La sua diffusione nell'ambito nostrano avverrà in ritardo (Nostradamus beccati questa!).
Perchè va imparato come primo linguaggio: permette di avvicinarsi alla programmazione gradualmente usando di volta in volta la prospettiva più idonea, sfruttando la capacità del linguaggio di essere interamente conforme alle singole prospettive che offre. Si può cioè essere interamente ed esclusivamente procedurali o orientati agli oggetti o funzionali. Molti algoritmi usati per l'apprendimento sono ad esempio procedurali e la possibilità di tradurli senza fare ricorso ad elementi appartenenti ad altre prospettive è vantaggioso nella misura in cui chi studia non è distratto da forme estranee.
Perchè va imparato: la fusione coerente delle tre prospettive, unita alla sintassi, rende il linguaggio notevolmente espressivo. In effetti il linguaggio stesso offre la possibilità di definire dei DSL "ritagliati" attorno alla caratteristiche di uno specifico problema da risolvere.
Strumenti consigliati: Netbeans, Eclipse o IntelliJ con relativo plug-in

Linguaggio Java

E'... be', Java. Comunque, è un linguaggio orientato agli oggetti, staticamente tipato, partorito da James Gosling e sviluppato da Sun Microsystes (ora Oracle)

Pro: è probabilmente il linguaggio con la migliore documentazione attualmente disponibile, sia per quantità che per qualità. E' il linguaggio dominante della piattaforma Java EE che è a sua volta ampiamente diffusa in ambito lavorativo.
Contro: le modifiche maggiori ricevute con la versione 5 lo hanno pasticciato ed è molto probabile che la versione 7 peggiorerà la situazione.
Perchè va imparato come primo linguaggio: è praticamente auto-idiomatico (cioè le possibilità di scrivere un programma che appaia "strambo" agli occhi di un altro programmatore Java sono infinitesimali). E' arcinoto quindi è molto facile trovare qualcuno che sia in grado di rispondere ai dubbi iniziali che possono sorgere quando si affronta un nuovo linguaggio.
Perchè va imparato: il parco software Java attualmente in uso è sufficientemente ampio perchè ci sia trippa per gatti per i prossimi cinquant'anni - tipo Cobol per capirci. E' il linguaggio principale della piattaforma Java che è una delle poche che ha una catena completa di sviluppo multi-os (non bisogna cambiare IDE, application server o librerie). La relativa vecchiaia rende lo sviluppo privo di sorprese.
Strumenti consigliati: Netbeans, Eclipse, IntelliJ

Linguaggio C

Come Java è Java, anche C è C. Linguaggio procedurale, tecnicamente di alto livello - nel senso che le sue specifiche non dipendono da una particolare architettura, cioè non è un assembly - staticamente tipato.

Pro: è un linguaggio con poche regole che si imparano rapidamente. Se un qualsiasi dispositivo è programmabile ci sono ottime possibilità che sia programmabile in C.
Contro: ammette l'uso di un preprocessore. Molto di ciò che occorre scrivere dipende dal compilatore e dal sistema operativo. Le possibilità di incontrare una libreria C ben documentata sono pari a quelle che Megan Gale vi chieda di sposarla (Nota 1: no, non sei George Clooney. Nota 2: vale anche se sei femmina, non sembra che per lei faccia una gran differenza)
Perchè va imparato come primo linguaggio: avendo una manciata di regole si impara in fretta.
Perchè va imparato: perchè prima o poi capita di doverlo usare. Anche se pensate di no, capita.

Smalltalk

Linguaggio orientato agli oggetti - nel senso precisato da Alan Kay "il programma è lo scambio di messaggi tra un insieme di oggetti - dinamicamente tipato, integrato con un ambiente di esecuzione.

Pro: è un linguaggio dinamico in una piattaforma dinamica - che è l'unico posto dove un linguaggio dinamico può avere senso.
Contro: difficile trovare materiale. La versione più completa è a pagamento. La versione free (Squeak) è un po' stramba. Generalmente poco usato.
Perchè va imparato: lo sviluppo di software con una piattaforma smalltalk è di per sè fonte di ispirazione. E' difficile persino descriverlo. E' la massima espressione del dinamismo.
Strumenti consigliati: VisualWorks

Swing

API per lo sviluppo di interfacce grafiche utente, sviluppate da Sun Microsystem (ora Oracle ), distribuite come parte della piattaforma Java SE 1.2+

Pro: permette di creare GUI complesse senza uno strumento di design, sia usando i componenti predefiniti sia costruendone di nuovi. Ha un paio di strutture di base che si ripetono per tutto il framework: imparate quelle si riescono a "leggere" tutte le API. E' il GUI framework della piattaforma Java, quindi è usabile con i linguaggi da questi supportata (oltre a Java, Scala, Python, PHP, Javascript). E' poi facilissimo usare una GUI Java da C\C++ tramite JNI.
Contro: è tanto. Il manuale "Swing" di O'Reilly (imprescindibile) conta 1200 pagine e tratta le basi.
Strumenti consigliati: un grafico. Un conto è programmare, un conto è disegnare. Swing non è photoshop: se come artisti fate schifo, la vostra GUI farà schifo. Per fare una GUI vi serve un grafico che vi faccia i disegni.

Java3D - JMonkeyEngine - Ardor3d - Xith3d

Sono tutti motori di rendering 3D in tempo reale basati su uno scenegraph per la piattaforma Java. C'è molto da fare nel campo delle interfacce grafiche, soprattutto dopo il pesante regresso imposto dalla diffusione delle applicazioni web.

pro: consentono di realizzare interfacce grafiche 3D multipiattaforma senza preoccuparsi del dettagliume di basso livello.
contro: la difficolta nel disegno cresce col quadrato delle dimensioni coinvolte: in 3D ti accorgi di fare schifo al cubo.
Strumenti consigliati: un grafico - come per il 2D.

Berkeley DB

Pro: è un database non SQL, piccolo, rapido, transazionale, serverless. E non è SQL.
Contro: si paga (e non poco) se l'applicazione non è open source.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!

Ultima modifica di PGI-Bis : 04-02-2010 alle 23:26.
PGI-Bis è offline