Guida Frequently asked questions: da dove si parte?

Ultima modifica:
Salve a tutti, da ignorante mi permettete una domanda?

Quanto possono centrare conoscenze matematiche, o relative all'ambito elettronico etc. con la programmazione?
Dipende molto dal genere di cose che hai intenzione di sviluppare. Se vuoi buttarti sul mondo della programmazione embendded o sulla robotica l'elettronica può servire, ma in generale non la definirei importante. Mentre la matematica torna utile per cose tipo programmazione di videogiochi (engine grafici e fisici, anche se parlerei più di fisica che di matematica) e in alcuni settori dell'intelligenza artificiale.

Nell'informatica in generale sono importanti, soprattutto la matematica, ma nella programmazione non ti serviranno mai amenoché non ti butti in dei settori ben specifici.
 
Per la programmazione di applicazioni scientifiche, videogiochi, e molto altro la matematica serve.
Un creatore di videogiochi deve avere conoscenze in:
  1. Fisica
  2. Statistiche
  3. Aritmetica/Algebra
  4. Algebra lineare
La programmazione certamente usa la matematica e altre discipline tradizionali per risolvere problemi.
Se vuoi essere un programmatore, non hai necessariamente bisogno di diventare bravo (se non lo sei già) in matematica, ti basta avere una buona logica!
 
Secondo me Torvalds ha ragione, il C è molto più snello e semplice; il C++ è una oscenità. Specialmente quando si tratta di scrivere un kernel: l'exception handling di C++ è uno scandalo, e se lo è anche per te e sai che non lo userai, perchè utilizzare un linguaggio che te lo fornisce, quando puoi utilizzare un linguaggio più semplice che te lo priva?

A Microsoft Corporation non piace questo elemento.
Sì, però tieni conto che ho volutamente citato solo un pezzo del suo messaggio.
Lui lascia intendere STL e Boost non sono portable e non sono stabili, ma è oggettivamente falso in un contesto puramente generico. È un'assunzione valida quasi solo se si parla di programmare il kernel di un sistema operativo, ma per qualsiasi altra cosa sia STL che Boost sono veramente lo state of the art. Per git ha scelto il C perché "efficiency was a primary objective" e anche il C++ era troppo high level, ma mercurial (il diretto concorrente di git) è scritto in python. Anche "C++ compilers are not trustworthy" è una frase decisamente azzardata: magari non lo erano nel '92, ma 25 anni dopo mi sembra una frase eccessiva anche se ti metti a programmare un kernel.
Per GCC hanno scelto di passare dal C al C++ (link) e già questo fa riflettere.

Personalmente non sono un fan dell'exception handling, pochi linguaggi hanno questo sistema esposto nel modo in cui piace a me, quindi non sarò io a difendere questo sistema, però "l'exception handling di C++ è uno scandalo" è una frase che va motivata. Sia STL che Boost fanno un uso sensato delle eccezioni e mi fa solo piacere sapere che non sono over-utilizzate come in Java.

Molti dei ragionamenti che fa sono relativi a quello programma lui, ma un kernel non è il tipico progetto che il programmatore medio si mette a scrivere. Quindi buona parte del ragionamento fatto da Torvalds non è rilevante per la domanda fatta da C3n21.