venerdì 8 novembre 2019

Saper programmare un elaboratore elettronico serve?

Chi ha già letto il mio precedente post dal titolo "Programmare? Un lavoro per il futuro forse, una rottura di coglioni sicuramente" potrebbe arrivare subito alla conclusione che non serva. In verità è lo smodato utilizzo commerciale dei prodotti elettronici spazzatura che fa passare ogni volontà di utilizzarli, ma quando t'imbatti in vecchie glorie come il Pascal, cadute nel dimenticatoio solo perchè non sfruttabili commercialmente come i giganti dell'hardware e del software vorrebbero fare, ti fa tornare la voglia. 

Ma il punto non è nemmeno questo. La domanda è: Saper programmare un elaboratore elettronico serve? E la risposta è inequivocabilmente si. Oggi è come chiedersi se serve saper fare i conti. Non tutti sono geni della matematica, non tutti sono fini dicitori, ma tutti hanno delle nozioni di matematica e di italiano. A volte troppo risicate. Fra le tante nozioni che formano una persona ed aprono la mente, c'è anche l'informatica il cui studio con i suoi algoritmi più noti è utile allo sviluppo della logica, alla comprensione dei problemi e alla ricerca delle soluzioni.

Oggi nelle scuole impazza il coding che significa convertire istruzioni e dati nel codice della macchina. Ma questa non è l'informatica, quanto piuttosto il suo atto conclusivo ossia la trasposizione degli studi alla macchina per vedere l'implementazione di quanto analizzato e ipotizzato. Quindi iniziamo con il chiederci cosa sia l'informatica. La prima cosa che mi viene in mente è la Treccani, per me una fonte di sapere cui rivolgersi sempre in caso di dubbio. Vi troveremo:

Informatica

Tratto dal sito della Treccani. La voce enciclopedica è molto più lunga e qui ne viene riportata l'introduzione generale. Per approfondire vai direttamente sul sito della Treccani. Cliccando la voce Informatica qui sopra.


Scienza che studia l’elaborazione delle informazioni e le sue applicazioni; più precisamente l’i. si occupa della rappresentazione, dell’organizzazione e del trattamento automatico della informazione. Il termine i. deriva dal fr. informatique (composto di INFORMATion e automatIQUE, «informazione automatica») e fu coniato da P. Dreyfus nel 1962.

L’i. è indipendente dal calcolatore che ne è solo uno strumento, ma è chiaro che lo sviluppo dell’i. è stato ed è tuttora strettamente legato all'evoluzione del calcolatore; è proprio per questo stretto legame tra i. e calcolatore che l’i., pur avendo radici storiche antiche, si è sviluppata come disciplina autonoma solo a partire dagli anni 1960, sulla spinta del progresso dei sistemi di elaborazione e della formalizzazione del concetto di procedura di calcolo, che possiamo datare al 1936, allorché A.M. Turing presentò un modello di calcolo, oggi noto come macchina di Turing.

Quindi il coding è solo una parte dell'informatica anche se spesso è ciò che attira di più. Ciò che serve studiare però non è il coding ma piuttosto l'elaborazione dell'informazione e le sue applicazioni.  Quindi l'argomento principe sono dati e algoritmi ossia la ricerca di una soluzione ad un problema che potrà essere risolto con una elaborazione automatica svolta da un elaboratore elettronico.

Invito quindi a dare una lettura sulla sempre eccellente Treccani sul termine algoritmo. Anche interessante è un articolo sul blog della UniCusano.

Quindi se avrai letto almeno uno dei due link precedenti saprai che l'algoritmo è quella sequenza di passi finita(uno schema non ambiguo ed eseguibile dall'esecutore umano o artificiale che sia) che a fronte di dati in ingresso (input) produce dei dati in uscita (output).

Quindi ritornando alla domanda iniziale per cui ci si chiede se è utile studiare l'informatica, ossia  studiare i modi di analizzare un problema, individuare i dati e il dominio del problema e quindi ricercare con proprio sforzo l'algoritmo per poi magari arricchirsi studiando le soluzioni poste in essere da matematici e informatici fino ad arrivare alla prova finale, che consiste nel mettere in funzione l'algoritmo su un elaboratore elettronico ... la risposta è sì, perchè è uno dei tanti modi per mettere in moto il nostro cervello e ci insegnerà per il futuro ad affrontare problemi complessi, individuando quella sequenza di passi semplici che possano condurci ad una soluzione.

Quello che dispiace è la sovrapproduzione di linguaggi commerciali per computer che ovviamente perseguono il fine produttivo e non di apprendimento. Ma è esistito, esiste e forse riuscirà a continuare ad esistere un linguaggio di programmazione con cui cimentarsi nella produzione dei propri algoritmi per calcolatore. E' il Pascal, ancora in uso commercialmente come Delphi, che fa uso dell'Object Pascal e prodotto dalla Embarcadero.

Ai fini dell'apprendimento io però consiglio di utilizzare freepascal, nella sua versione con IDE testuale oppure Lazarus, un IDE in ambiente grafico che permette anche di semplificare lo sviluppo di applicazioni grafiche in stile windows. Ovviamente per chi impara l'ide testuale, che produce il proprio output in una finestra di testo DOS ma che funzioni in Windows 10 (oltre che su tanti altri sistemi) è più che sufficiente.

Perchè il Pascal? Perchè è un linguaggio pensato espressamente per l'insegnamento dall'insigne Prof. Niklaus Wirth (il profilo del Professore sul sito dell'università in cui insegnava - E' possibile scaricare dei libri del Professore su Oberon, l'evoluzione del Pascal e quindi molto simile). Un linguaggio rigoroso, espressivo e fortemente tipizzato. Ma non si sottovaluti il Pascal, che è a tutti gli effetti un linguaggio general purpose con cui si può realizzare dai driver, agli applicativi ai sistemi operativi (come è stato per altro fatto).

Quindi ora che è chiaro che studiare l'informatica serve, iniziate con il piede giusto. Studiate le strutture dati che il linguaggio Pascal offre, quindi mettetevi sotto con gli algoritmi e provateli su un computer con un linguaggio che, per mezzo del suo rigore, dia l'impostazione giusta sul come programmare in modo chiaro e coerente. Consigli per un libro? Ovviamente Algoritgms + Data Structures = Programs del Prof. Nilaus Wirth. Cercando il PDF di questo titolo si trova da scaricare. Quello che serve per il Pascal è la versione del 1976, perchè le successive parlano di Oberon, una evoluzione di Pascal e molto simile a quest'ultimo, ma di cui non ho trovato compilatori per i PC di tutti i giorni. Qualcosa però offre la Oxford University su Oberon.

Per buttarsi nei linguaggi commerciali e nelle loro insidie c'è sempre tempo.