Giugno 21, 2018, 06:17:51\nAutore Discussione: Quale linguaggio per iniziare a programmare ? (Letto 40459 volte)\n« Risposta #15 inserita:: Ottobre 04, 2004, 05:24:59 »\nIl mio caloroso saluto verso i miei cari amici.\nVolevo intervenire in merito,giusto per dire la mia.\nIl mio iter di linguaggi è il seguente.\nC/C++ ----->VB ------>\n----------------------> JAVA/C# ----->VC++\nIl c/c++ e l\_'asm andrebbero studiati in due corsi in\nparallelo.Gettando così solidissime basi.Per non parlare del fatto che imparando due linguaggi parallelamente\nabitui la tua mente ad essere versatile.Inoltre questa\ntecnica del parallelismo ti ritorna utile nella vita da informatico.\nEs.Sei un libero professionista,hai tre progetti su cui lavorare,tutti e tre in un linguaggio diverso.Come Fai?\nTi assicuro che ogni volta il tuo cervello deve abituarsi al \_"cambio\_" di linguaggio e situazione...salvare i dati del progetto precedente,recuperare quelli\nche avevi immagazzinato dell\_'altro per poi dimenticarti tutto e riprendere il terzo....quindi se\ninizi questo lavoro di push e pop ogni volta...ti rimarrà più semplice poi.(ora torniamo a noi)\n-Proseguire poi con un linguaggio a scelta tra delphi e VB.\nEssi sono due linguaggi differentissimi sotto il profilo reale ma molto simili nella facilità di apprendimento ed anche un po nella sintassi.\nCon il VB ti potrà sembrare all\_'inizio di poter creare l\_'impossibile.Con il tempo inizierai a sopperire e a risentire un approccio \_"veramente\_" oop e la \_"pochezza\_"\ncon la quale gli ingegneroni microsoft produssero tale prodotto.\nCon il delphi potrai \_"gustare\_" ciò che le teste borland hanno prodotto.E cioè una \_"piattaforma\_" in grado di far volatilizzare i difetti del VB perndendone solo i lati migliori.Delphi denominato infatti VB KILLER ha molti pregi.Uno dei quali è la compatibilità nel tempo,senza tralasciare che il compilatore è velocissimo...(almeno fino alla 7),e crea eseguibili veramente piccoli.\nDiciamo che per l\_'85% delle applicazioni desktop VB di meno,o Delphi di più ti permettono di cavartela senza traumi(si fa per dire senza...) o cmq discretamente.\nSe poi il tuo range di applicazioni è più orientato verso internet o cmq vuoi restare aggiornato con i tempi,è opportuno che tu impara java o un linguaggio .net unito a qualche linguaggio di script(PHP con java , asp con .net o ancora perl o python).\nSe poi le tue applicazioni sono di ambito ingegneristico o scientifico o che cmq vadano a fondo nel tuo sistema operativo....o la tua voglia di programmatore vuole fare un\_'esperienza veramente diversa allora puoi imparare il VC++.Con quel \_"coso\_" puoi toccare le vette o rinunciare subito.Perchè \_"domarlo\_" è una bella sfida.\n\_"Sa chi sa che non sa ma non sa chi sa che sa\_"\n« Risposta #16 inserita:: Ottobre 04, 2004, 06:17:25 »\nHai fatto bene: poteva essere interpretata in maniera ambigua...\nPerò mi accorgo che al giorno d\_'oggi si stanno perdendo sempre più i legami con i linguaggi madre. [...] Si vanno a rompere i legami con il concreto.\nVero. Infatti, una sana concezione della programmazione prevede anche l\_'ASM (almeno sulle basi!) e, soprattutto il C.\nIo continuo a sostenere che chi non ha programmato ALMENO in C, non è, semplicemente, un programmatore. Punto. E\_' uno script kiddie, forse.\nPer questo mi accanisco a indicare C/C++ come via, in maniera da imparare almeno un linguaggio di \_"medio livello\_" (qualcuno potrebbe scannarmi per definire il C di \_"medio livello\_").\nGiusto! Piacerebbe anche a me (spero che veda la discussione).\nRicordandogli che l\_'approccio dovrebbe essere UMANO (ovvero orientato a un normale essere umano ), mi piacerebbe vedere a che posto metterebbe Prolog e LISP.\nNon dopo che gli avrò fatto visita col software dell\_'Ipnorospo!\n« Risposta #17 inserita:: Ottobre 05, 2004, 10:01:09 »\ngrazie dei consigli! mi avete effettivamente chiarito le idee sui vari linguaggi e confuse su che strada prendere.\nalla fine credo che studierò il VB a scuola(per forza). a casa mi farò prima il C# per poi passare o al delphi o testarmi sull assembly. dopodichè dal C# al C++...\nsecondo voi può essere minimamente giusto come percorso? tempo necessario al giorno e per finere il mio iter(mettendo come ipotesi che io mi impegni seriamente(quando inizio una cosa di solito la faccio bene))?\n« Risposta #18 inserita:: Ottobre 06, 2004, 09:11:16 »\ncredo che i tempi siano mooooolto relativi per imparare un linguaggio.\nSappi che c\_'è chi dice che per \_"imparare\_" realmente il visual C++ servano mediamente 1 anno e mezzo intensivo.\nMa questo rimane sempre relativo.\nRispondi a me se riesci: Quando un programmatore può dire di conoscere un linguaggio?\nPotrei risponderti 2 settimane, potrei dirti 2 giorni, potrei dirti mai..\nNon ti mettere dei paletti e lascia che il cammino venga da sè.\n« Risposta #19 inserita:: Ottobre 06, 2004, 09:15:52 »\nSinceramente non so cosa consigliarti e non posso dire che un linguaggio è meglio di un altro o che un altro linguaggio è più facile di un altro però ti posso raccontare la mia esperienza e poi sarai tu stesso a trarne le dovute conclusioni.\nAnche io ho iniziato a programmare sulla base di input dati a scuola e ti devo dire la verità, non è moltissimo tempo che programmo quindi non me la sento di definirmi un guru.\nIn compenso mi sono tolto parecchie soddisfazioni.\nHo iniziato a programmare circa 4 anni fa quando in terzo ragioneria superiore ci hanno avvicinato al Pascal.\nDa subito è scoccata una certa affinità tra me e la programmazione e mi ci sono buttato a capofitto.. n\_'altro poco mi studiavo pure la parte grafica\nL\_'anno successivo, invece, ci hanno fatto fare Visual basic (da molte soddisfazioni perchè ti permette di avere un programma immediatamente funzionante e ti permette di gestire l\_'interfaccia grafica come se il programma lo stessi disegnando su carta per non parlare della grande potenza del linguaggio (non ai livelli di C ma quasi)).\nIn quinto ho studiato le basi di dati e quindi l\_'SQL, un campo totalmente nuovo e che a prima vista mi sembrò una cosa barbosa e lenta ma poi.. si è rivelato utilissimo!\nAl primo anno di Università Poi mi hanno chiesto di imparare Java e lì mi son fermato a livello didattico (tralasciando l\_'html che è un passaggio doveroso).\nPascal = serve per l\_'\_"acquisizione della mentalità algoritmica\_" che è la cosa più importante in assoluto perchè se non risolvi prima il problema inventando o mettendo a punto un metodo, una funzione o un sistema che lo possa risolvere.. puoi sapere tutti i linguaggi di programmazione ma.. non ti servono a nulla!\nVisual Basic = Applicazione della mentalità algoritmica a programmi di tipo visuali con la gestione automatica del codice relativo al making degli \_"oggetti visuali\_" e grandi soddisfazioni immediate.\nI programmi creati funzionano solo sotto windows.\nSQL = Inizialmente pensavo che non servisse a nulla comunque lo imparai lo stesso.. ora mi rendo conto che è stata una santissima cosa! (Vedi PHP)\nJava = è stata la svolta! Un linguaggio molto versatile ma veramente molto potente con una sintassi molto semplice e allo stesso tempo molto completa. Quì mi sono reso conto di cosa avveniva effettivamente e cosa ci stava alla base di tutti i linguaggi di programmazione che ho fatto fino ad allora: Applicazione della solita mentalità algoritmica associata ad uno sviluppo da ZERO da una pagina bianca a creare tramite codice oggetti grafici, gestione di eventi, interlacciamento con database e strutture dati.. insomma un altro mondo! Veramente il TOP!\nCerto è che non è un \_"learning language\_" cioè non è stato pensato come un linguaggio per apprendere la programmazione da zero ma se si vuole iniziare a programmare almeno via console senza iniziare pesantemente con la gestione della grafica, è molto più semplice dei linguaggi precedenti (certo la facilità di creazione della grafica di Visual Basic te la sogni!) ma a livello di codice... non ce n\_'è per NESSUNO!\nInoltre i programmi scritti in Java come forse saprai funzionano su qualsiasi Sistema Operativo mentre i programmi scritti in altri linguaggi vanno ricompilati per ogni S.O.\nPHP = Java! Ebbene si.. è quasi totalmente identico a java.. cambiano solo alcune cose tipo la definizione delle variabili e delle strutture dati nonchè qualche altra struttura e qualche operando tipo il \_".\_" per concatenare le stringhe.. tutto il resto è JAVA! Naturalmente essendo un linguaggio per il web gli si aggiungono tutte le specifiche del caso tipo le apposite funzioni per l\_'accesso ai database ecc. E quì mi è servito l\_'SQL! Perchè le applicazioni web dinamiche spesso e volentieri si appoggiano su database per il prelevamento e l\_'immissione dei dati, pensa a questo stesso forum.\nVa ricordato che PHp non è \_"java per il web\_" perchè per quello c\_'è Java Enterprice Edition (J2EE).\nC/C++ = E\_' il progenitore di molti linguaggi di programmazione tra cui Java e di conseguenza PHP ciò porta alla conclusione ovvia che la sintassi è del tutto simile a java e PHP. Vale per cui lo stesso discorso di Java.\nHa dalla sua una grande velocità di esecuzione dei programmi (solo i programmi in assembler sono più veloci) e una grande integrazione con files di libreria ecc.\nI programmi creati funzionao anche sualtri SO ma vanno ricompilati.\nDelphi = Un Pascal \_"rimodernato\_" in versione visuale, è come se stessi usando il Visual Basic per disegnare la finestra solo che per scrivere le routine usi il pascal, quindi puoi creare applicazioni visuali scrivendo il codice necessario in pascal. Naturalmente anche in questo caso si ha una ottima interoperabilità col Sistema operativo Windows ma per gli altri SO non so dirti.\nASP = Come il PHP è un linguaggio di programmazione web ma che stavolta si appoggia (nella sintassi) a Visual Basic.\nLo si può considerare la risposta della Microsoft al PHP.\nInfine (siccome ho visto che è stato menzionato):\nAssembler = Beh è la pura applicazione della mentalità algoritmica, la sintassi è veramente breve e semplice molto \_"basilare\_" ma programmare in Assembler è come fare una partita a scacchi.. non è tanto la scrittura del codice a dare problemi ma il posizionamento dei dati nei registri e il corretto uso dello stack in memoria. (sconsigliato per chi è alle prime armi anche se è molto facile)\nL\_'HTML non è un linguaggio di programmazione e pertanto non lo considero proprio!\nSpero di aver reso l\_'idea.\n« Risposta #20 inserita:: Ottobre 06, 2004, 11:40:14 »\ngrazie Mqaximo del confronto sui vari programmi! mi rendo conto di aver detto una cavolata su quanto tempo ci vuole per imparare un linguaggio dato che nn si può dire quando lo si ha definitivamente appreso. credo che ora tocchi a me e se il caso lo vorrà chi sa che cosa succederà...\n« Risposta #21 inserita:: Ottobre 07, 2004, 10:40:43 »\n[Visual Basic] ... per non parlare della grande potenza del linguaggio (non ai livelli di C ma quasi)).\nSta\_' attento: dal punto di vista del Torquemada dello standard INCITS/ISO/IEC 14882-2003, questa è blasfemia passibile di tortura!\nVB è uno dei linguaggi più limitati e MENO potenti in assoluto. Hai mai provato a fare un engine di IA in VB?\nIo sì: riusciva a dire: \_"E2E4\_". Dopodiché il nulla.\nPerò lo faceva in maniera \_"visuale\_"\nNon è proprio una cretinata, nel senso che - come ti ha detto Memole - c\_'è la tendenza a definire un periodo (o quantomeno una \_"curva\_") di apprendimento.\nOvviamente questo periodo è una pura invenzione dettata dalla necessità dei vari corsi di pseudo-formazione, ma si fonda su basi più o meno ragionevoli.\nAlla fine (non smetterò mai di dirlo) quello che conta è l\_'esperienza di programmazione acquisita su uno dei linguaggi appartenenti allo stesso paradigma.\nIl \_"percorso\_" che indicavo prevede, ad esempio, C (linguaggio procedurale), C++ (multiparadigma) e C# (linguaggio... simil-OOP ).\nSe ti fai un bel \_"piano\_", vedrai che le esperienze accumulate nello studio linguaggi precedenti si riveleranno fondamentali nei successivi.\nOltre ai linguaggi, c\_'è poi la formazione di una \_"mentalità algoritmica\_" (come diceva Mqaximo), ma non solo.\nCi sono anche TUTTI gli algoritmi formali da imparare e su cui perfezionarsi e la relativa marea di applicazioni possibili.\nOltre a questo c\_'è da sviluppare una mentalità \_"ingegneristica\_" alla programmazione (cosa altrettanto e forse anche più importante), per essere capaci di costruire architetture di oggetti logiche, solide, e non-inclini a bugs.\nPoi c\_'è la conoscenza degli elementi, delle possibilità e del funzionamento dei dispositivi, delle reti, e dei Sistemi Operativi.\nE\_' in ragione di tutti questi elementi che è un po\_' impossibile dire QUANDO si smette di imparare un linguaggio, o la programmazione più in generale.\nAnche perché, qualora questo avvenisse, ci si smetterebbe di divertire...\n« Risposta #22 inserita:: Ottobre 07, 2004, 10:55:40 »\nA rileggere le descrizioni dei vari linguaggi e del percorso di apprendimento, mi viene in mente che è qualcosa che è stato già trattato innumerevoli volte, ognuna con interlocutori/contributori diversi e ognuna con almeno un argomento che vale la pena di conservare.\nDato che siamo nel forum \_"suggerimenti/richieste generiche\_", proporrei di raccogliere le informazioni su questi argomenti tanto richiesti, convertirle in forma organica e universalmente condivisibile, e porre il risultato in una sezione \_"FAQ\_" facilmente accessibile.\nQuesto permetterebbe di rispondere, a future richieste, potendo citare un link preciso. Con ovvio sollievo di chi richiede e di chi risponde.\n« Risposta #23 inserita:: Ottobre 07, 2004, 08:21:55 »\nPostato originariamente da visualrob\nE\_' in ragione di tutte questi elementi che è un po\_' impossibile dire QUANDO si smette di imparare un linguaggio, o la programmazione più in generale.\nAnche perché, probabilmente, ci si smetterebbe di divertire...\nQuoti in pieno!\nBeh per VB hai ragione forse ho esagerato un tantino.. (ma lo volevo invogliare a studiarlo dato che gli servirà quest\_'anno a scuola!)in effetti non intendevo dire che il vb e c siano comparabili a livello di sistema!\nInfatti ho detto nella descrizione relativa a C (anche se oggettivamente mi son fermato più si java) che la velocità di esecuzione dei programmi è incomparabile (il che deve far riflettere parecchio e deve far capire che l\_'interoperabilità fornita da C sia Semi-Immensa).\nComunque, secondo Me se deve imparare il C# tanto vale imparare Java! Il C# ha la stessa identica sintassi solo che è un linguaggio proprietario Microsoft e i programmi scritti in C# funzionano (di conseguenza) solo su OS Microsoft.\nPer la seconda parte relativa alla \_"mentalità algoritmica e soprattutto ingegneristica\_" sono più che daccordo con te!\nDa sempre sono stato un sostenitore del \_"problem solving\_" in primo luogo e poi della programmazione vera e propria...\nAll\_'Università mi son reso conto di quale sia la differenza tra Scienze informatiche (programmi in moltissimi linguaggi ma i progetti non sono un gran che... (senza nulla togliere agli Informatici!!!)) e Ingegneria Informatica (progettazione e realizzazione di Applicazioni dalle più disparate utilità!)!\n« Risposta #24 inserita:: Ottobre 08, 2004, 07:36:10 »\nL\_'idea dell\_'Inquisitor non è malvagia, senza una FAQ si rischia di rispondere, con le immancabili flames, n volte alle stesse domande. Propongo di isolare le domande più frequenti, i thread in cui ci sono state risposte valide e di iniziare la stesura della FAQ.\nQualche argomento da trattare:\n- Panoramica dei vari linguaggi di programmazione con punti di forza/debolezza.\n« Risposta #25 inserita:: Ottobre 20, 2004, 12:20:08 »\nPostato originariamente da mgx\nIl mio consiglio, dato che già conosci pascal, è quello di studiarti Delphi che ti permette di realizzare qualunque tipo di programma ed è sicuramente uno dei migliori linguaggi che siano mai stati concepiti.\nCome sicuramente sai Delphi si basa principalmente sul Pascal e il pascal è stato ideato proprio allo scopo di insegnare i principi basilari della programmazione.\nL\_'obbiettivo di chi vuole lavorare come programmatore dovrebbe essere quello di capire come si realizza un programma e non semplicemente di imparare un linguaggio o l\_'altro.\nDelphi ti permette di diventare un programmatore. Fatto questo, nella maggior parte dei casi, non sarai tu a decidere quale linguaggio dovrai imparare, ma saranno le necessità e le aziende per le quali dovrai lavorare.\nDelphi comunque è un linguaggio adottato da moltissime aziende proprio per le sue caratteristiche che lo rendono superiore a molti altri linguaggi.\nSe pensi che già prevede il Framework .Net e che nelle prossime versione ci sono in serbo tantissime novità si può dire che Delphi non solo è un linguaggio al passo con i tempi ma che spesso addirittura li anticipa.\nSu internet c\_'è tanto materiale su Delphi ed lo trovi distribuito gratuitamente. L\_'unica cosa è che il materiale che ti guida per mano nell\_'apprendimento del linguaggio lo trovi o in Inglese o in Spagnolo.\nSe ti interessa però un testo in italiano da comprare e che ti guida veramente per mano partendo dalle cose più elementari l\_'ho appena pubblicato io.\nLo puoi scaricare dal seguente link :\n« Risposta #26 inserita:: Novembre 13, 2004, 12:40:22 »\nSono tornato (quasi) da un lungo periodo di impegni non-stop dei quali sto cominciando a vedere la fine.\nRisultato: ho un po\_' di tempo in più per scrivere qualche post.\nL\_'idea della Faq mi convince sempre di più... anche perché da un\_'occhiata sommaria vedo che le domande frequenti continuano senza tregua!\nSal ha già trovato alcuni dei punti chiave (ovvero quelli che hanno acceso più flames in passato) e delicati:\n- - Panoramica dei vari linguaggi di programmazione con punti di forza/debolezza.\nio, su due piedi, aggiungerei:\n- Libri consigliati per linguaggi/argomenti\n- Strumenti di auto-aiuto (ovvero un post in cui si CONSIGLI chiaramente come fare a cavarsela da soli, elencando le fonti preferenziali, sulla falsariga di \_"Domande Intelligenti\_").\n- (molti) Altri\nLa domanda, però, è: \_"Dove la mettiamo un\_'opera tanto monumentale, delicata e vasta - la quale, per sua stessa natura, abbisogna di una certa rintracciabilità?\_"\n« Risposta #27 inserita:: Novembre 15, 2004, 11:32:07 »\nSì: penso che sarebbe cosa buona e giusta. Tenendola ben pulita e organizzandola bene verrebbe fuori qualcosa di leggibile e facilmente referenziabile. Tipo:\n\_"Quesito già risposto. Vai alla sezione FAQ...\_"\nBeh, appena sarò definitivamente libero inizierò a stendere qualcosa sui linguaggi, cercando di condensare i vecchi post. Visto l\_'argomento direi che la sfida principale è l\_'obiettività. Inizierò col Pascal...\nPS: In questo periodo matto e disperatissimo mi è capitato e mi capita di fare spesso notte inoltrata. Ho potuto così apprezzare il fatto che, verso le tre antimeridiane, la Rai offre le repliche di \_"Space: 1999\_"!\nDiventare un Vero Programmatore...\n« Risposta #28 inserita:: Novembre 17, 2004, 12:36:57 »\nRicordandogli che l'approccio dovrebbe essere UMANO (ovvero orientato a un normale essere umano ), mi piacerebbe vedere a che posto metterebbe Prolog e LISP.\nConsiderando i constraints ambientali e visto che, mi dicono, siamo nel 2004, ritengo che sarà qui necessario consigliare un percorso personalizzato che prescinda dai Sacri Dettami Dogmatici.\n* C# --------------* Prolog\n* C e C++ * Miranda, Haskell, (Moscow) ML\n* java * LISP e CLOS\n* Eiffel (.net) * Perl, AWK & SED, Tcl/Tk\n* P-scripting * J e APL\n* SQL e 4GL * ICON\nQui devo fare violenza alla mia natura consigliando di invertire l'ordine cronologico dei linguaggi OO C-based.\na) L'approdo al .NET, in questo quadro formativo, ha la massima precedenza.\nb) Assaggiare subito C# permette di essere in breve produttivi con un ambiente moderno e largamente diffuso, e poi di passare con facilità a java, e (forse, ma andrebbe dimostrato formalmente) con meno mal di testa a C e C++.\nc) Gli ingredienti ci sono tutti: OOP, .net, componenti, "modernità" e produttività.\nd) Dopo aver giocato con i linguaggi più di moda, si può anche vedere un vero linguaggio OOP come Eiffel, per giunta senza spostarsi dal .NET.\ne) P-scripting sono ovviamente i linguaggini di scripting che iniziano per P: Python e Perl, nonché - per estensione - anche Ruby e Rebol. D'altronde, eccetto forse Perl, sono nati per essere appresi nel giro di poche ore, pardon, giorni.\nf) I paradigmi alternativi, dal dichiarativo al funzionale, possono e devono essere studiati in parallelo. Anche per evitare che poi un domani qualcuno vada a scrivere cose amene, nei forum e sulle riviste, sulla "unicità" o "modernità" della OOP. Gli esoterici unix messi dopo il LISP sono un tocco di raffinatezza da vero gourmet, come le pere al cioccolato.\nFin qui il caso in esame. Adesso però stracciamo il calendario, ignoriamo allegramente il vincolo dell'UMANO, e facciamo le cose a modo mio:\nFASE 1: Full immersion in elettronica digitale e architettura dei calcolatori, con indigestione di algebra booleana e altre teorie del primo ordine, logica digitale combinatoria e sequenziale, a spasso con Boole e De Morgan per mappe di Karnaugh e risolutori di Quine, tableau di Gentzen e Hilbert, BDD e OBDD (importantissimi !), architetture Harvard e Von Neumann, esempi for dummies di reti di Petri, FSM Mealy e Moore, VHDL e Verilog, gite in laboratorio per toccare con mano il software-su-silicio: led che occhieggiano, i flip-flop D e JK che commutano, i contatori che scodinzolano, i latch 3-state e gli shift register che ballano la czarda a ritmi indiavolati, analizzatori logici a 256 canali e 10 Gs/s che cantano la cavatina di Figaro.\nE' fatto obbligo agli studenti di dormire con l'Hennessy-Patterson ed il Tanenbaum al posto del cuscino, giusto per iniziare a sospettare cosa c'è dentro la scatola del PC.\nIn questa fase avviene anche l'iniziazione esoterica all'uso di strumenti demoniaci come MAX-II plus, Mu-PAD, Maple, Mentor con la scusa del supporto agli esercizi, ma con il subdolo intento di far capire subito che i calcolatori servono a RISOLVERE dei problemi, più che a crearne di autoreferenti.\nLinguaggi utilizzati: come naturalissima conseguenza di quanto si va apprendendo, programmazione in assembly su baby CPU a 8 e 16 bit. Interrupt e DMA, device drivers, programmazione di sistema, gestione devices, interfacciamento periferico, protocolli seriali e networking, dump hex e pezzi di BIOS col caffellatte per colazione: e dopo l'I/O bound, la programmazione logica e l'implementazione dei principali algoritmi CPU-intensive, gestione delle rappresentazioni e strutture dati, debugging (Von Neumann, system-level e application-level), emulazione e simulazione, microottimizzazione e sistemi di misura relativi.\nFASE 2: Bombardamento a tappeto con linguaggi formali light e soprattutto semantica operazionale, che è il non plus ultra per intuitività e favorisce la logica della programmazione e la programmazione logica, ricollegandosi a quanto visto in FASE 1 con le giuste astrazioni.\nOgni giorno, secondo l'antica regola monastica tardo medioevale, calzoni corti da boy-scout, temperatura ecclesiale di 15°C, in ginocchio sui ceci, recita a memoria di brani e dimostrazioni dallo Knuth, dal Cormen-Leiserson-Rivest (sì, proprio QUEL Rivest, la "erre" di RSA <genuflessione>), dal Sedgewick, con particolare riguardo alle metriche di complessità.\nLinguaggi utlizzati: ANSI/ISO C'89, iniziando a compilare e ricompilare TUTTI gli esempi del K&R e dei testi sacri sopra menzionati. Programmazione mixed language, interazione spinta con l'assembly, progettazione di semplici librerie (e demoni, VxD, DLL...), implementazione degli algoritmi standard, multitasking e multithreading, misure prestazionali puntuali comparative tra C e Assembly nei domini del tempo di esecuzione e dello spazio in memoria. Guida intensiva allo sviluppo di una sensibilità felina nell'individuazione immediata, a prima vista, di quell'80% del codice che fa il 20% del lavoro, e quindi può essere scritto in C. Ottimizzazione e controllo diretto dell'HW portwise, emulazione di protocolli bitbang, brevi cenni di operations research e scheduling ottimale, compilatori di compilatori e cross compilers, little languages ed altri assaggi di task informatici degni di questo nome...\nFASE 3 o cesura: basta con le dita nella marmellata, si inizia a parlare sul serio di astrazione. Teoria dei linguaggi di programmazione, con studio quotidiano (vedi FASE 2) del Sebesta. Programmazione dichiarativa, funzionale, constrained, OO, retrospettiva sul procedurale imperativo e sulla decomposizione funzionale.\nRecita collettiva (vedi FASE 2) di brani dal Pressman e dal Mandrioli-Ghezzi per l'acquisizione di capacità di engineering. Studio intensivo, alla Alfieri (legati alla sedia), di linguaggi formali hard, come Z e LTL, con pause di relax a base di UML, OCL e asserzioni alla Hoare. Ritorno alle origini con le reti di Petri in tutto il loro splendore, le algebre di processo, le strutture di Kripke.\nEsercitazione alla formalizzazione e verifica dei lavori finora prodotti.\nLinguaggi utilizzati: SmallTalk, Eiffel, Ada(1), C++, Python, Moscow ML, B-Prolog, CLOS, J, Haskell, ICON e UNICON...\nImplementazione di algoritmi dal Russell-Norvig, scheduling a capacità finite, discesa deterministica e simulated annealing, generazione combinatoria e programmazione algebrica hard, calcolo numerico a precisione arbitraria ed altre squisitezze scelte in ragione delle specialità culinarie dei vari linguaggi.\nAl termine della FASE 3, gli allievi che saranno in qualche modo sopravvissuti potranno fregiarsi della definizione di "aspirante programmatore dilettante" e dedicarsi senza troppi problemi allo studio ulteriore di qualsiasi linguaggio di programmazione passato, presente e futuro. La Direzione Monastica, però, dopo gli insegnamenti impartiti, non risponde di eventuali slogature di mandibole causate da eccesso di risa nell'affrontare taluni linguaggi, come VB, java o i nipotini del pascal.\nQuesto per il corso di base. Chi fosse interessato a corsi avanzati, master e PhD può tranquillamente contattarmi...\nPer chi abbisogna dei sottotitoli: sotto le scanzonate sembianze di una simpatica goliardata, questo non è altro che la prima parte del serissimo programma di formazione superiore erogato nei centri di Alta Formazione di alcune multinazionali a neoassunti laureati e addottorati, a cura di progettisti e formatori di grande esperienza, tra i quali, si parva licet, il sottoscritto. Il corso è destinato alla trasformazione di semplici laureati in aspiranti programmatori e progettisti embedded.\n(1): prima o poi anche a qualcuno di questi giovinastri capiterà di scrivere software a specifica MIL-STD-498 o RTCA-DO178... che gli piaccia o meno. E quindi, Ada sia.\n« Risposta #29 inserita:: Novembre 17, 2004, 04:15:11 »\nAl termine della FASE 3, gli allievi che saranno in qualche modo sopravvissuti potranno fregiarsi della definizione di \_"aspirante programmatore dilettante\_"\n...nel frattempo gli allievi avranno conseguito una laurea in matematica, una in informatica, una in ingegneria elettronica ed almeno un paio, con relativi master, in ingegneria informatica... :rolleyes: