Linguaggi di programmazione

Buogiorno a tutti, sono uno studente all’ultimo anno di magistrale in ingegneria spaziale. Vorrei approcciarmi alla programmazione utilizzando linguaggi che vadano oltre Matlab, il quale ci è stato spiegato a lezione. Quali sono, secondo la vostra esperienza, i linguaggi di programmazione più usati in ambito spaziale?
Grazie in anticipo a tutti!

Benvenuto @Lorenzo10.
Secondo la mia esperienza (operazioni e sistemi di terra per ESA) i linguaggi attualmente più utilizzati sono Java e Python.
Si tratta comunque di un aspetto relativamente marginale: ottimo conoscere questi linguaggi, ma il punto vero, più che conoscere i singoli linguaggi, inevitabilmente destinati a cambiare col tempo, è l’acquisizione di skill più generali:

  • i linguaggi sono solo un mezzo tecnico per implementare la soluzione a un problema logico. Il vero skill è saper analizzare un problema e trovare l’algoritmo più efficace, scriverlo bene e documentare adeguatamente il codice;
  • è indispensabile imparare a testare a dovere il codice che si è scritto;
  • è utile sapersi destreggiare con IDE moderni che consentano di fare debugging come si deve;
  • non si può non avere almeno un’idea di cosa siano le architetture a microservizi, o qualcosina di DevOps, sapersi destreggiare con diversi sistemi operativi con almeno un pochino di scripting di base…
  • è utile costruirsi una visione di sistema, comprendere, senza per forza scendere nei particolari, come componenti eterogenee sono in grado di interagire nell’ambito di sistemi distribuiti, cercando di rimanere aggiornati sullo stato dell’arte delle best practice industriali;

Sono sicuro che ho dimenticato qualcosa, ma questo è uno sguardo onesto in quelle che sono le attività fatte in campo IT nell’ambito spaziale delle operazioni. Sì, è una lista veramente ampia, e sono conoscenze che per la grandissima parte si acquisiscono fuori dalla scuola e nel corso di alcuni anni, ma il punto è farti capire che conoscere N linguaggi di prorgammazione, per quanto necessario in certi ambiti, è solo uno dei punti da cercare di avere nel CV. :exploding_head:

8 Mi Piace

La ringrazio molto, immaginavo l’argomento fosse più ampio del semplice fatto di imparare un linguaggio diverso da quelli utilizzati finora e la sua lista mi ha dato sicuramente degli spunti interessanti da approfondire. Le chiederei un’ultima cosa, data la sua esperienza: per un ingegnere spaziale, l’approfondire la programmazione ed i diversi punti da lei elencati è un requisito fondamentale a prescindere dall’ambito lavorativo o è solamente un plus?

Approfondire questi aspetti è secondo me essenziale se vuoi occuparti professionalmente di progetti software in ambito spaziale.
Per un ingegnere aerospaziale che voglia avere una marcia in più è molto opportuno avere almeno un’idea di base su questi aspetti (oltre che sugli standard di base CCSDS o ECSS per le cose spaziali), ma non strettamente necessario.

3 Mi Piace

La ringrazio nuovamente molto!

1 Mi Piace

All’ottimo commento di Marco, vorrei aggiungere che un altro linguaggio interessante da studiare e’ il C, in particolare perche’ viene utilizzato per il software di bordo.

E sono d’accordissimo con Marco sul fatto che la conoscenza delle pratiche di sviluppo, come l’uso di IDE, le tecniche per testare il software, e tutto quello che riguarda la gestione del progetto (dai repository del codice a la gestione e tracciamento dei bug) sono molto importanti, sia nell’ambito spaziale, sia nel resto dell’industria software. Qualsiasi sia il percorso professionale che seguirai, sono cose assolutamente da imparare.

8 Mi Piace

Ai commenti centratissimi qui sopra aggiungo un aspetto molto importante, soprattutto se vorrai intraprendere un discorso più orientato al mondo dell’automazione o sistemi di bordo: gli aspetti legati alla sicurezza.
Se nel mondo IT ormai l’aspetto è di centrale importanza, sul “campo” si è sempre operato in maniera un po’ più “sportiva” ed oggi si assiste ad una brusca sterzata (finalmente).
Quindi bene linguaggi di alto livello, che ti aiutino a mappare i problemi reali sul codice. Ottimo conoscere linguaggi di più basso livello, perché le risorse non sono infinite e solo capendo l’architettura delle macchine che programmi potrai essere efficace. Il tutto considerando gli aspetti di sicurezza che devono essere integrati ad ogni livello. Quella da sola può diventare una carriera.
In sostanza per quanto possibile pianifica i prossimi 10 anni, non un corso di Python.

3 Mi Piace

Grazie mille! Ho iniziato un corso dove mi viene fatto utilizzare il linguaggio C/Fortran per la fluidodinamica, secondo la vostra esperienza, un eventuale passaggio dallo studiare la dinamica dei flussi ad altre applicazioni di C, come può essere il software di bordo, richiede una pesante rivoluzione delle conoscenze?
Per quanto riguarda l’argomento della pianificazione a lungo termine, ovviamente ho i miei progetti, ma, in questa fase di studio, contestualmente volevo anche aprirmi diverse strade percorribili.

1 Mi Piace

Sì. Dovrai specializzarti nel nuovo ambito, e dovrai adattarti a imparare cose nuove.

Il punto importante che devi tenere a mente è che la “magia” non sta nell’imparare il linguaggio C o C++, o Java, o quant’altro.
Un linguaggio di programmazione è come una pinza per uso specifico. Saper usare tale pinza è sì importante, ma non tutte le pinze sono adatte a tutti i possibili utilizzi. Problema/azienda che hai, linguaggio/soluzione che trovi.

In altre parole, se passi da fluidodinamica con dei tool scritti in C, al software di bordo dove magari si passa a qualcosa di più complesso (ambienti misti C o C++ o addirittura linguaggi specifici (DSL) messi a punto dalle aziende produttrici), il vero skill sarà come dicevo la capacità di analizzare e risolvere problemi di natura totalmente diversa.

Chiaramente poter dire “ho esperienza di sviluppo nel linguaggio X” è importante, ma più per il fatto di aver acquisito tutta la complessa serie di capacità di analisi e sviluppo di un algoritmo, piuttosto che perché sei bravo a gestire i puntatori, ecco.

4 Mi Piace

Tutto chiaro, grazie ancora!

Ti consiglio fortemente di approfondire Rust: il C resterà ancora per un bel pezzo ma è fonte di moltissimi problemi, Rust è stato inventato apposta per superare questi problemi pur avendo almeno la stessa capacità di gestione a basso livello.

Ciao
Francesco Da Riva

2 Mi Piace

Questo argomento è stato automaticamente chiuso 14 giorni dopo l’ultima risposta. Non sono permesse altre risposte.