Che linguaggio di programmazione si usa per scrivere software di stampa 3D?

Tutto dipende da cosa intendi per software 3D. Normalmente, darei per scontato che tu intendessi un software che fa grafica 3D, come i videogiochi e il software di modellazione/design 3D. Ma hai anche aggiunto "stampa 3D" come argomento. Quella è una categoria di applicazioni completamente diversa. Ma prendiamoli uno alla volta.

Il software di grafica è speciale in quanto non viene, di solito, eseguito sulla CPU generale del vostro computer. Porzioni considerevoli del calcolo sono scaricate sulla GPU o unità di elaborazione grafica, che fa parte della vostra scheda video. Se il vostro computer sembra non avere una scheda video, è perché è integrata nella scheda "principale" o "madre", quella che ha la CPU e la RAM, ma questo in realtà conta molto poco per l'architettura generale delle cose.

Ci sono due interfacce principali che i programmatori usano per guidare una GPU: OpenGL e DirectX. DirectX è favorita da Microsoft e OpenGL da tutti gli altri, fondamentalmente. A volte le persone useranno librerie di livello superiore, ma se quello che state facendo è grafica e non un qualche tipo di tentativo di fare un'elaborazione di numeri non grafica su una GPU, avrete OpenGL o DirectX a qualche livello nel vostro stack.

In generale, se state cercando di imparare l'una o l'altra, vi raccomanderei OpenGL, dal momento che è più ampiamente supportata, ma io non ho molta familiarità con entrambe, quindi dovrete aspettare che persone più esperte rispondano a questa domanda, o fare domande più specifiche per stabilire quale libreria si adatti meglio alle vostre esigenze.

Una volta scelta la libreria, in linea di principio potete usare qualsiasi linguaggio per il quale esistano binding OpenGL (o DirectX). Poiché il software 3D è spesso computazionalmente intenso e le persone vogliono essere in grado di spremere ogni bit di performance dall'hardware senza avere un modello di calcolo troppo astratto tra loro e i chip, spesso scelgono di usare un linguaggio come il C o il C++ che ha un modello astratto di macchina che corrisponde da vicino all'effettiva macchina fisica sottostante e quindi dà un controllo a grana più fine su ciò che sta effettivamente accadendo.

Ho visto software di grafica 3D perfettamente buono scritto in linguaggi di livello superiore, però. In realtà, una delle prime piattaforme a supportare una buona grafica 3D accelerata dall'hardware è stata la macchina Lisp, che era interamente programmata in un dialetto Lisp molto simile al Common Lisp; e questo è un linguaggio di livello piuttosto alto! A differenza della grafica 3D, dove bisogna renderizzare un fotogramma abbastanza volte al secondo per fornire all'occhio umano l'illusione del movimento continuo, le stampanti 3D vanno piuttosto lentamente. Guidarle non è un compito molto impegnativo in tempo reale. Ci può essere un'elaborazione più intensa dal punto di vista computazionale nel tradurre modelli 3D di livello superiore in istruzioni di stampa strato per strato, ma anche questo non è niente di paragonabile al rendering di un moderno videogioco, perché non deve accadere in tempo reale.

Il software per guidare le stampanti 3D può essere scritto in una grande varietà di linguaggi. Ne sceglierei uno con cui mi trovo bene, che abbia un buon supporto di libreria per qualsiasi funzionalità di cui prevedo di aver bisogno, e che fornisca un livello di astrazione abbastanza alto da mantenere una grande base di codice ben organizzata. Ma questo è più o meno un consiglio generico per qualsiasi progetto software.