Buon 2021!
Tornando a noi mi sono chiesto: “Serve conoscere diversi linguaggi di programmazione?“, anche se poi al lato pratico si usano sempre i soliti.

TL;DR

Sì, vai a studiare! ?

Vediamo perché

Conoscere diversi linguaggi, anche solo le basi della sintassi, può essere davvero utile; anche se poi al lato pratico non lo si utilizza per alcun lavoro in concreto o non si conoscono tutti gli aspetti, può comunque essere utile, vediamo un esempio reale…

Sviluppando il nostro OpenLapTimer, progetto di Lap Timer GPS, spesso mi capita di affrontare tematiche a livello “Bare Metal” che significa lavorare con processi, byte e bit. In un paio di occasioni mi è tornato comodo conoscere 2 linguaggi di programmazione che non utilizzo quotidianamente: Python e C++.

Se non conosci il progetto OpenLapTimer, dai uno sguardo a questo articolo:

ble-Java

Obiettivo: implementare una comunicazione Bluetooth 4.0 (BLE) per OpenLapTimer sviluppato in Java. Non esistevano librerie BLE Java su standard unix (sistema operativo di RaspberryPi), ne esisteva solamente una in Python. Quindi conoscendo le caratteristiche del Python, tra cui il fatto che l’indentazione del codice è fondamentale per racchiudere i costrutti if ed i cicli, sono andato a creare una mia libreria Java “traducendo” la maggior parte del codice da Python a Java. Ovviamente ci sono delle differenze date dai 2 differenti linguaggi, ma il punto è che conoscendo le basi del Python sono riuscito a capire cosa facessero le varie classi / funzioni e replicarle in un altro linguaggio.

BlueZero (Libreria Python): https://github.com/ukBaz/python-bluezero

ble-Java (mia Libreria Java): https://github.com/tongo/ble-java

TouchScreen LCD

Un altro esempio fresco fresco di questi giorni: per gestire il touchscreen di uno schermo GLCD collegato al Raspberry è necessario uno specifico controller collegato all’interfaccia i2c. Bene, l’unica traccia da poter seguire è una libreria C++ per Arduino fornita dal fabbricante!

In questo caso le cose cono un po’ più complicate perché si va a lavorare con bit, byte e registri del controller ed entrano in gioco le rappresentazioni dei tipi base nei 2 diversi linguaggi ? (C++ rappresenta gli interi senza segno: 0,255, Java invece con il segno -128, +127), ma il concetto non cambia: conoscere il C++ mi permette di capire cosa fa la libreria originale per poter sviluppare la mia parte in Java (ancora work in progress).

RxJs – RxJava

Altro vantaggio nel conoscere altri linguaggi, ed in questo caso sopratutto anche utilizzarli, è che ti apre la mente.

Conoscere altri linguaggi ti fornisce altre prospettive, altri possibili punti di vista per risolvere un problema utilizzando metodologie e strumenti che altrimenti non avresti nemmeno preso in considerazione.

L’esempio concreto lo abbiamo raccontato qui:

Come detto nell’articolo il fatto di usare RxJs abitualmente in ambiente web mi ha portato a provare la stessa tecnologia in Java (RxJava) in un contesto completamente diverso, ma con ottimi risultati.

Conclusione

Alla fine della candela conoscere qualcosa in più è sempre utile!
Nel campo dello sviluppo software è molto utile, sia per comprendere il lavoro di altri, sia per prendere in considerazione approcci ai problemi che altrimenti non avremmo mai esplorato.

A te è mai servito conoscere un linguaggio diverso dal tuo abituale? Scrivilo nei commenti e condividilo con noi!