I programmatori dovrebbero imparare Linux?
Fermami se hai sentito questa: “I programmatori usano solo Linux. PC e Mac sono per i noob!”
Sì, no.
Linux è uno strumento. Windows è uno strumento. Anche MacOS è uno strumento. Ognuno è un sistema operativo (OS) di cui avete bisogno per rendere utile un computer, e ognuno ha i suoi vantaggi e svantaggi. Il problema è che, proprio come molti altri strumenti, questi OS popolari hanno delle tribù. Se Windows è DC Comics e macOS è Marvel, allora Linux è Dark Horse.
Uh, cos’è Linux, comunque?
Partiamo dall’inizio. (È uno dei miei posti preferiti per iniziare.) Se ti stai chiedendo se dovresti imparare Linux, probabilmente potresti usare una rapida introduzione a ciò che è Linux. Mentre Windows e macOS sono sistemi operativi individuali che Microsoft e Apple vendono e supportano, ciò che è (e non è) Linux è un po’ più complicato.
Nel lontano 1991, un programmatore di nome Linus Torvalds ha rilasciato un nuovo kernel che ha chiamato Linux. Un kernel è, grosso modo, un programma per computer che si trova al centro di un sistema operativo e controlla le interazioni tra l’hardware e il software. Si è basato su Unix e su un altro sistema operativo simile a Unix chiamato Minix. Come potete vedere, i moniker che fanno rima con Unix erano già una cosa, quindi il kernel di Torvald si chiamava praticamente da solo.
Il kernel guadagnò rapidamente popolarità, e più programmatori contribuirono al suo progetto. Presto un nuovo sistema operativo, chiamato anche Linux, crebbe intorno al kernel.
Ma l’open source deve essere open source, e non c’è – e non ci sarà mai – una sola versione di Linux. Linux è una famiglia di sistemi operativi, di solito indicati come distribuzioni o distro. Una distribuzione include il kernel Linux e il resto del software necessario per rendere utilizzabile un computer. Il sito DistroWatch elenca 100 distribuzioni, ma si ferma lì solo perché 100 è un bel numero tondo.
Alcune delle distribuzioni più popolari sono Debian, Red Hat, Ubuntu e Fedora. Ubuntu è in realtà basata su Debian, e Fedora è basata su Red Hat. E, naturalmente, c’è CentOS, che è anche basata su Red Hat, e Mint, che è basata su Ubuntu… Come potete vedere, è complicato. La battaglia su quale distro sia la migliore genera tanto calore quanto e meno luce delle battaglie sui sistemi operativi o sui fumetti.
Perciò, torniamo alla domanda originale. Quando si chiede “I programmatori dovrebbero imparare Linux?”, una delle possibili risposte è “Quale?”
Ma questa non è proprio una risposta utile, vero?
Quindi, dovrei imparare Linux?
Beh, dipende. Quali sono i tuoi obiettivi?
Questa è una domanda che dovresti sempre tenere a mente quando ti imbatti in uno strumento o in una raccomandazione per iniziare ad usarne uno. Cosa hai bisogno di imparare, e spendere tempo su questo ti aiuterà a raggiungerlo?
Linux è il sistema operativo più usato per i server. Quasi tutti i siti web che visiti ogni giorno girano con Linux, così come i server che stanno dietro di essi per eseguire applicazioni “back-end” come i database. Per esempio, le banche fanno largo uso di Linux per gestire le transazioni finanziarie. Anche la maggior parte dei server di database eseguono Linux.
Linux è molto popolare sulle piattaforme embedded. Raspbian è una distribuzione popolare per Raspberry Pi. Il sistema operativo Android di Google è un derivato di Linux, e anche molti router e switch di rete lo usano.
Quindi, se il tuo obiettivo è scrivere software per server, codice per l’internet delle cose (IoT), o software per sistemi embedded, prendere confidenza con Linux ti renderà la vita molto più facile.
Se il tuo sogno è quello di scrivere applicazioni per iPhone o belle pagine web, imparare Linux potrebbe non essere il modo migliore per spendere il tuo tempo in questo momento.
Cosa dovrei imparare su Linux?
La prossima domanda è: Cosa significa “imparare Linux”?
Beh, dipende. (Scusa, non potevo resistere.)
Se stai per scrivere software per server che gira su Linux, deve essere distribuito su sistemi che lo eseguono. A seconda di dove lavorate, questo può significare consegnare il vostro codice ad un’organizzazione DevOps, o può significare farlo da soli. In entrambi i casi, puoi rendere la tua vita, per non parlare di quella dei tuoi colleghi, molto più piacevole se riesci a prendere confidenza con la linea di comando e come i file sono organizzati su un sistema Linux.
Queste abilità sono trasferibili indipendentemente dalla distribuzione su cui impari e da quella usata dal tuo futuro datore di lavoro. Anche se ci sono alcune (spesso fastidiose) differenze tra di loro, sviluppare una comprensione di qualsiasi distribuzione principale ti dà un significativo insieme di abilità che puoi trasferire a qualsiasi di esse. Vi darà anche un vantaggio competitivo rispetto agli sviluppatori che sono a loro agio solo nel mondo protetto del loro IDE preferito.
Se siete interessati a sviluppare software per la robotica o sistemi embedded, allora avete bisogno di entrare in intimità con Linux a livello di kernel. Per voi, “imparare Linux” significa imparare il kernel di Linux.
Ancora una volta, la distribuzione che scegliete è meno importante del semplice bagnarsi i piedi. Mentre non tutte le distribuzioni aggiornano le versioni del kernel allo stesso tempo (e alcune sono comicamente lente), il kernel Linux è il kernel Linux. Scegli una distro e inizia a giocare.
Come faccio?
Se sei interessato alla robotica o all’IoT, potresti anche prendere un Raspberry Pi e iniziare subito. Dovrete assicurarvi di avere un mouse USB e un monitor a cui collegarlo. Il resto è abbastanza semplice.
Se sei interessato al software per server, scegli una distribuzione e installala.
Quale distribuzione è davvero una questione di scelta. Alcuni considerano Ubuntu la più adatta ai principianti. Altri considerano Linux Mint un po’ meglio. La buona notizia è che sono gratuite, quindi puoi provarle tutte!
L’opzione meno costosa per installare Linux e dare un calcio alle porte e sbattere le gomme è quella di installare un software per macchine virtuali sul computer che hai già. VirtualBox è gratuito e funziona su Windows e macOS. Ti guiderà anche nell’installazione di Linux dopo averla impostata.
Una volta che hai installato Linux, inizia a giocare! La bellezza di giocare con Raspberry Pi o con una macchina virtuale è che si può sempre ricominciare da zero se si fa saltare qualcosa. Vedrai che è piuttosto difficile rompere un sistema Linux.
Quindi, i programmatori dovrebbero imparare Linux?
C’è una buona probabilità che incontrerai Linux da qualche parte nella tua carriera di programmatore. Prendere confidenza con esso in anticipo può darvi un vantaggio competitivo su altri sviluppatori che non lo fanno. Prendete una copia e iniziate a giocarci ora.
Questo post è stato scritto da Eric Goebelbecker. Eric ha lavorato nei mercati finanziari a New York City per 25 anni, sviluppando infrastrutture per i dati di mercato e le reti del protocollo FIX (Financial Information Exchange). Ama parlare di ciò che rende le squadre efficaci (o non così efficaci!)
.