Intramontabile Fortran

Ha settant’anni ma non li dimostra e viene tuttora utilizzato.
Ed è giusto che sia così, perché Fortran è il primo linguaggio di programmazione di alto livello, che usa un linguaggio quasi umano per creare programmi per computer.
E’ nato quando l’unico linguaggio per programmare un computer era il linguaggio Assembly, in mancanza del quale non c’era altro modo di programmare se non quello di scrivere le istruzioni direttamente in linguaggio macchina, cioè con una serie di 0 e 1: ciò che, francamente, non si può nemmeno chiamare linguaggio.
Se qualcuno ha idea di cosa si dovesse scrivere in Assembly per fare una semplice somma capisce la differenza col poterlo scrivere semplicemente ponendo l’operatore + tra due operandi, come si cominciò a fare con il Fortran, con la stessa semplicità di come lo si fa su un pezzo di carta.
Pare che, con la comparsa del Fortran, l’efficienza della programmazione per calcoli scientifici sia aumentata del 500%.
Utilizzarlo ancora oggi penso francamente sia un tantino da nostalgici, anche perché abbiamo ormai altri linguaggi che, per fare cose difficili, sono molto più facili da usare: basti pensare a Python e alle sue librerie.
Ma per fare cose facili, fino alla media difficoltà, è facile anche Fortran e lo dimostro nell’allegato manualetto, come sempre, liberamente scaricabile, stampabile e distribuibile.

fortran

Groovy, Java stenografato

In questo blog ho accennato al linguaggio Java in un articolo dell’aprile 2016 intitolato “Importante riconoscimento per OpenJDK” con allegato il manualetto “java_android” in cui ho presentato gli strumenti che il software libero ci fornisce per programmare con questo potentissimo linguaggio.
Non ho mai fornito manuali per l’apprendimento del linguaggio sia per la facilità con cui si può trovare documentazione anche alla portata di principianti sia perché si tratta comunque di un linguaggio alquanto difficile che ritengo riservi poche soddisfazioni ai dilettanti cui mi rivolgo.
Successivamente, nel luglio 2019 ho ritenuto invece di proporre un manualetto dedicato al linguaggio Kotlin, allegato all’articolo “Kotlin: Java facilitato”, un nuovo linguaggio ispirato a Java e che ne utilizza ampiamente le ricche librerie, con il quale possiamo realizzare progetti di impegno non inferiore a quello dei progetti abbordabili con Java faticando molto meno e utilizzando una sintassi molto più succinta e facile di quella richiesta dal linguaggio Java.
Visto il successo ottenuto da quel manualetto ho ritenuto di arricchirlo nell’aprile 2023 con l’allegato all’articolo “Grafica con Kotlin”, ove indico come sia possibile dotare di interfaccia grafica le applicazioni programmate con Kotlin.
Ora ritengo interessante proporre una modalità di utilizzo del patrimonio di librerie Java con un altro linguaggio, molto più semplificato anche rispetto a Kotlin, che non ci consente di affrontare progetti molto impegnativi ma ci può divertire.
Si tratta del linguaggio Groovy, un modo per programmare con librerie Java con la semplicità di un linguaggio di scripting.
L’allegato manualetto a ciò dedicato è liberamente scaricabile, stampabile e distribuibile.

groovy

Calcolo simbolico con Julia

Nel febbraio 2021 ho presentato su questo blog il linguaggio Julia con l’articolo “Un nuovo linguaggio per la data science”, allegandovi un manualetto sulle basi del linguaggio.
In quel manualetto ho mostrato come creare con il linguaggio Julia programmi di calcolo simbolico grazie alla possibilità di utilizzare in questo linguaggio moduli Python: nel caso specifico utilizzando il modulo SymPy.
Già allora, per la verità, esisteva un package Julia destinato al calcolo simbolico, chiamato Symbolics, ma era appena stato rilasciato ed aveva potenzialità ancora limitatissime e nemmeno lontanamente paragonabili a quelle di SymPy, rilasciato nel 2006 ed ormai perfettamente maturo.
Per questo motivo non ne parlai allora, preferendo illustrare come utilizzare SymPy in Julia.
Ancora oggi Symbolics ha funzioni molto limitate ma si cerca di rimediare con patch di vario tipo e l’ambizione di avere un package per il calcolo simbolico nell’ecosistema Julia non è ancora soddisfatta.
Per una maggiore informazione propongo l’allegato manualetto.
Al solito esso è liberamente scaricabile, stampabile e distribuibile.

symbolics

GAMBAS, il visual BASIC di Linux

Nei primi anni ’80 del secolo scorso ho fatto la conoscenza con il linguaggio BASIC con cui si programmava il Commodore VIC20 che avevo acquistato per avviare all’informatica i miei figli e devo dire che mi ci sono appassionato, abituato come ero a lavorare su main fraim utilizzando programmi fatti da altri, su console o su postazioni di lavoro in time sharing.
Per cui devo dire che, più che per i mei figli, che, in realtà sul VIC20 ci giocavano soltanto, il BASIC è stato il primo linguaggio di programmazione per me.
Da lì è nata una mia particolare simpatia per questo linguaggio e, prima che Linux e il software libero mi conquistassero, devo dire che ne ho conosciuto tutte le evoluzioni in casa Microsoft, dal BASICA al GWBASIC al QBASIC al VISUAL BASIC.
Ovviamente, una volta convertito a Linux e al software libero, ho apprezzato la comparsa in questo mondo di GAMBAS, un software con cui si poteva fare tutto ciò che si poteva fare con VISUAL BASIC nel mondo Microsoft.
Dal momento che in questo blog ho parlato di tanti linguaggi e mai di questo, ho deciso di rimediare proponendo l’allegato manualetto.

gambas

Dart: un linguaggio per tutte le stagioni

Nato in casa Google per sostituire Javascript è diventato un linguaggio con il quale si può fare di tutto, persino programmare app che possono girare sia su smartphone euipaggiati Android sia su iPhone equipaggiati iOS.
Per capire di che cosa si tratta e per fare qualche sperimentazione facile facile propongo l’allegato manualetto, contenente anche indicazioni utili per chi voglia approfondire e fare cose più difficili.
Il documento è liberamente scaricabile, stampabile e distribuibile.

dart

Un pep che esclude pip

Con tutto il parlare che ho fatto in questo blog di Python non ho mai accennato all’esistenza dei PEP, ritenendo che i dilettanti cui rivolgo i miei scritti potessero fare a meno di queste complicazioni.
Ho invece incoraggiato i miei lettori che avessero bisogno di arricchire l’installazione di Python di base con pacchetti aggiuntivi ad utilizzare l’installatore pip, che, dalla versione 3.4 di Python faceva parte della dotazione di default.
Oggi le distro Linux con preinstallato Python3 che adottano la PEP identificata dal numero 668 non preinstallano più pip e non consentono più di usare questo installatore e, purtroppo, ormai molte distro, tra cui le popolari Ubuntu e derivate, compreso Mint e MX, fanno questo.
PEP sta per Python Enhancement Proposal ed è un documento di progettazione destinato alla comunità di sviluppatori Python riguardante nuove funzionalità del linguaggio, i suoi processi o il suo ambiente.
La PEP 668 riguarda i conflitti che possono insorgere tra i gestori di pacchetti del sistema operativo (nelle derivate da Debian, come Ubuntu, apt) e gli strumenti di gestione dei pacchetti specifici di Python (come pip) e, per evitare l’insorgere di questi conflitti, dichiara EXTERNALLY-MANAGED le installazioni che possono essere gestite con mezzi esterni a Python, come il gestore di pacchetti del sistema operativo, consentendone l’installazione solo con il gestore dei pacchetti e rendendo inutilizzabile l’installatore pip (salvo complicazioni come la creazione di un ambiente virtuale).
Fortunatamente le distro che hanno adottato la PEP 668 hanno nel proprio repository quasi tutti i pacchetti di cui ho parlato in questo blog (da numpy a scipy, da sympy a pandas, da matplotlib a sklearn).
Vorrà dire che, per installare, per esempio, scipy non possiamo più fare
pip install scipy
ma, se lavoriamo con una distro che ha adottato la PEP 668, come Ubuntu e le sue derivate, dobbiamo fare
apt install python3-scipy.
Purtroppo vi sono però pacchetti che si trovano nel repository di Python ma non in quello della distro e, se vogliamo evitare, da dilettanti, le complicazioni di Conda e Anaconda, abbiamo proprio bisogno di usare pip.
A questo punto, se non abbiamo disponbile pip lo installiamo con il comando a terminale
apt install python3-pip
ed eludiamo la PEP 668 con il comando
sudo rm -rf /usr/lib/python3.xx/EXTERNALLY-MANAGED
Da qui in poi, sapendo che per i pacchetti che troviamo nel repository della distro è meglio che usiamo l’installatore della distro, per gli altri possiamo usare pip.

Code::Blocks, ingiustamente dimenticato

Ho un nipote che ha recentemente avviato un corso universitario di informatica durante il quale verrà utilizzato il linguaggio C++.
L’insegnante ha consigliato gli allievi di dotarsi di un sistema operativo Linux e, per quanto riguarda il linguaggio C++, dell’editor Visual Studio Code.
Mentre trovo lodevole il primo consiglio non riesco a comprendere la logica del secondo.
Non mi pare infatti giusto mischiare il più bel sistema operativo del mondo con un software Microsoft, che sarebbe ormai meglio chiamare Macrosoft, visto che tutto quello che esce da questa azienda è inutilmente gigantesco e richiede sempre più risorse (da qui, ovviamente, la preinstallazione di Windows su tutti i personal computer: dopo due/tre anni di sistema operativo Windows o sei un mago o cambi il computer).
Anche perché, nel caso specifico, c’è un’ottima alternativa che si chiama Code::Blocks.
Rispetto a Visual Studio Code, che, già pesante per sé stesso, per darci la code completion deve essere ulteriormente arricchito dell’estensione C/C++, occupa meno di un decimo dello spazio su disco, richiede metà RAM, fa la code completion senza bisogno di estensioni e, con qualche estensione, può fare molte cose di più di ciò che fa Visual Studio Code.
A questo gioiello dedico l’allegato manualetto, liberamente scaricabile, stampabile e distribuibile.

code_blocks

Grafica con Red

Lo scorso mese di ottobre ho proposto un manualetto che illustra le basi del nuovo linguaggio di programmazione Red, limitandomi a come si possano produrre con questo linguaggio programmi console, cioè eseguibili avendo come interfaccia il terminale.
Ma con Red possiamo fare molto anche, e probabilmente molto di più, in campo grafico, sia per arricchire i nostri programmi di interfaccia utente grafica (GUI) sia per disegnare.
A questo dedico l’allegato manualetto, liberamente scaricabile, stampabile e distribuibile.

grafica_red

Red: un linguaggio rivoluzionario

Lo scorso mese di settembre ho parlato di uno dei più vecchi linguaggi di programmazione, il linguaggio LISP.
Oggi parlo dell’ultimo nato, anzi di un linguaggio che, nonostante il suo creatore ci lavori da oltre un decennio, è tuttora in gestazione e non ha ancora avuto un rilascio definitivo stabile: il linguaggio Red.
Dal momento che pare siamo alla vigilia di questo rilascio e che quanto è già disponibile ci consente di capire che cosa ci aspetta e di divertirci a fare qualche programmino, dedico l’allegato manualetto al funzionamento di base di questo rivoluzionario linguaggio.
Come sempre il manualetto è liberamente scaricabile, stampabile e distribuibile.

red

Ancora Lisp

In questo blog ho parlato di Lisp in un paio di occasioni.
La prima, nel maggio 2015, con il post dal titolo “Lisp sempreverde”, nel quale ho presentato una versione abbastanza recente del Lisp, Newlisp, in maniera molto sommaria.
A questa superficialità ho cercato di rimediare nell’ottobre 2019 con il post dal titolo “Newlisp”, con allegato un manualetto in cui si spiega meglio questa bellissima e facile versione del Lisp, che rende meno faticoso avvalersi di uno dei più vecchi e originali linguaggi di programmazione.
Visto che si tratta del linguaggio che, concepito per l’intelligenza artificiale, ancora non ha rivali degni di nota in questo campo sempre più in fermento, sento il dovere di proporre nel manualetto allegato una descrizione del funzionamento di una delle più diffuse e utilizzate versioni del Lisp, il Common Lisp, che è il più legittimato erede del Lisp originario.
Come sempre il manualetto è liberamente scaricabile, stampabile e distribuibile.

common_lisp