Con quale linguaggio di programmazione dovrei iniziare ad imparare?

Quando si cerca su Google questa risposta, si vedrà sempre "Iniziare con Python perché è più facile", ma non sono d'accordo con questo. La prima risposta che ho visto a questa domanda diceva di evitare di imparare il C. Sono fortemente in disaccordo anche con questo. Potrei avere una visione contraria alla norma, ma sto per suggerire che è meglio imparare prima il C, e spiegherò il perché.

Ma prima, togliamo di mezzo l'avvertimento più ovvio e diciamo che dipende sempre da cosa si vuole fare. Se tutto quello che state facendo è lo sviluppo web front-end, allora ovviamente la vostra attenzione dovrebbe essere su HTML, javascript, CSS e su quali CMS vi è comodo imparare. O se volete solo costruire applicazioni per IOS, allora imparate Swift, ecc

Anche se "essere facile" è un fattore per voi, allora forse imparate Python, ma sto scrivendo questo per persone che si spera siano un po' intelligenti e non siano intimidite da un po' di duro lavoro. Il mondo che dice "impara prima Python" spesso presuppone che tu sia un idiota, ma non ho intenzione di fare questa supposizione. Eliminerò il "facile" e assumerò che tu voglia sapere quale linguaggio ti darà le migliori fondamenta nell'informatica.

Quindi se ti stai ponendo la domanda "con quale linguaggio di programmazione dovrei iniziare ad imparare" presumo che sia perché vuoi ottenere una comprensione generale dell'informatica ed essere in grado di espandersi in molte aree imparando più linguaggi, e vuoi una solida base su cui imparare una vita intera di abilità informatiche. Se questo sei tu, allora più facile non significa migliore, quindi imparare Python per primo non è meglio, nonostante quello che ti dirà la tua ricerca su Google. Certo, potrebbe portarvi ad essere operativi più velocemente, e a creare programmi più velocemente, e forse avete bisogno di questa ispirazione per rimanere motivati e continuare. Ma questa zona di comfort potrebbe non essere una buona cosa a lungo termine, quando scoprirete che avete bisogno di passare ad un altro linguaggio, e avrete il brusco risveglio di, "oh, i computer sono più difficili di quanto pensassi". Inoltre, dato che Python è un linguaggio di alto livello, si è davvero lontani dalla meccanica di come funziona un computer. Se mai decideste di voler entrare nell'hardware o nei sistemi embedded lungo la strada, questo sarà un aggiustamento più difficile che se aveste ottenuto prima le competenze di base del computer.

Ci sono diverse buone ragioni per cui raccomando C come primo linguaggio, ma la mia ragione principale è che in termini di livello di astrazione dal basso livello alla programmazione di alto livello, è situato perfettamente per imparare entrambi. Cioè, se si impara il C, ci si può muovere in entrambe le direzioni. Non è così difficile scendere di un livello e imparare il linguaggio assembly, e non è così difficile salire di un livello e imparare il C++. Quindi credo che il C sia il miglior linguaggio da imparare prima per costruire una solida base generale nella programmazione. Il C++ è più difficile di altri linguaggi orientati agli oggetti, ma si dice che una volta imparato il C++, passare ad altri linguaggi orientati agli oggetti come Java o Python è un gioco da ragazzi. Mentre, se avessi imparato prima Python, potresti perdere interesse nel passare al C, e tornare alla tua zona di comfort. Se vuoi imparare solo una lingua, bene, impara Python. Ma se hai intenzione di imparare più linguaggi, il C si dirama bene in C++ e il C++ ti prepara bene per imparare gli altri. E se vuoi davvero armeggiare con robot e hardware e sistemi embedded, probabilmente vorrai imparare alcuni linguaggi assembly, e il C si relaziona molto meglio con questi, per non parlare del fatto che molta di quella roba può essere fatta solo in C.

Avrai molta più personalizzazione quanto più ti avvicini al metallo, che è uno dei vantaggi di imparare linguaggi di livello inferiore, e ti permette di scrivere solo il codice di cui hai bisogno.

Ma per quanto riguarda le basi della programmazione, non puoi mai davvero sfuggire alla storia. Molto di ciò che i computer si sono evoluti oggi inizia davvero con il C. (non è il più antico, è solo la direzione che hanno preso i computer) Il sistema operativo linux è scritto interamente in C, il C++ si è evoluto dal C, e lo stesso si può dire per Python e Ruby e tutti gli altri linguaggi comuni oggi. Quindi se si imparano prima questi altri è un po' come iniziare la propria istruzione alla quinta elementare, per mancanza di un'analogia migliore. Come risultato di questo, gran parte del mondo è radicato nel C. I sistemi embedded sono ovunque. Il C è ovunque. Ma anche i linguaggi su cui il C è costruito sono ovunque.

Hai bisogno del C per essere un programmatore? Niente affatto.

Ma penso che dobbiate chiedervi: "voglio una fetta di torta, o voglio tutta la torta?"

Se volete solo fare alcune cose con i computer, per esempio web design, o sviluppo di app, allora trovate il linguaggio che fa quello che volete fare meglio.

Ma se vuoi fare dei computer la tua vita, e non sei intimidito dalla difficoltà e vuoi costruire una solida base in generale per imparare più linguaggi, allora io sceglierei l'intera torta, e imparerei prima il C.

Poi passerei all'assembly e al C++, e ad altri linguaggi secondo necessità.