Non conosco C. E perché dovrei impararlo? [chiuso]


58

Il mio primo linguaggio di programmazione era PHP ( gasp ). Successivamente ho iniziato a lavorare con JavaScript. Di recente ho lavorato in C #.

Non ho mai visto lingue di livello medio o basso come C.

Il consenso generale nella comunità di programmazione in generale è che "un programmatore che non ha imparato qualcosa come C, francamente, non può gestire concetti di programmazione come puntatori, tipi di dati, passaggio di valori per riferimento, ecc."

Non sono d'accordo. Io sostengo che:

  1. Poiché le lingue di alto livello sono facilmente accessibili, più "non programmatori" si tuffano e fanno casino
  2. Per fare davvero qualsiasi cosa in un linguaggio di alto livello, è necessario comprendere gli stessi concetti simili che evangelizzano la maggior parte dei sostenitori di "impara-basso livello-prima".

Alcune persone hanno bisogno di conoscere C; quelle persone hanno lavori che richiedono loro di scrivere un codice da basso a medio livello. Sono sicuro che C sia fantastico, e sono sicuro che ci sono alcuni programmatori cattivi che conoscono C.

Perché il pregiudizio? Come programmatore bravo, onesto e affamato, se dovessi imparare la C (per qualche motivo imprevisto), imparerei C. Considerando la moltitudine di lingue là fuori, i bravi programmatori non dovrebbero concentrarsi sull'apprendimento di ciò che ci fa avanzare? Non dovremmo imparare ciò che ci interessa? Non dovremmo utilizzare il nostro tempo finito per andare avanti ? Perché alcuni programmatori non sono d'accordo con questo?

Credo che la ricerca dell'eccellenza in ciò che fai sia il tratto deterministico fondamentale tra buoni programmatori e cattivi.

Qualcuno ha qualche esempio nel mondo reale di come qualcosa scritto in un linguaggio di alto livello, come Java, Pascal, PHP o JavaScript, abbia davvero beneficiato di una precedente conoscenza di C? Gli esempi sarebbero più apprezzati.


@Stephen Oh, scusa ... ho capito male. (ma capisci perché hai bisogno di imparare c / c ++ giusto?)
ApprenticeHacker

1
@burningprodigy Sì, nel caso in cui ho bisogno di fare qualcosa dove è richiesto C / C ++, o ha più senso, ovviamente imparerei C. Il mio manzo è con le persone che dicono che devi imparare C per essere in grado di essere efficace sviluppare in lingue di alto livello. E questo è assurdo.
Stephen,


puoi darci qualche contesto (url) da cui "non è possibile gestire concetti di programmazione come il puntatore ..." viene?
k3b,

Se ci fosse una lingua che vorrei poter imparare, sarebbe Common Lisp, non C. Essendo principalmente uno sviluppatore di C #, sono piuttosto certo che ne trarrebbero maggiori benefici. Abbiamo già dei puntatori in C #. Principalmente, preferirei imparare più modi per affrontare un problema piuttosto che provare a implementare la mia stessa soluzione in un modo più difficile. (Proprio come una nota, sto mentendo a metà. Ho fatto un po 'di C, e so che ha i suoi vantaggi. Volevo solo dare credito a un linguaggio incredibilmente potente ed espressivo che ha preceduto C di un decennio.)
Magus

Risposte:


113

Il vantaggio di sapere C è che hai un'ottima idea di come funziona un computer. Non solo come funziona il tuo modello di programmazione, ma come è disposta la memoria e simili.

L'unico livello sotto C è l'assemblaggio parlato da una CPU particolare.

(Aggiungo che la conoscenza di C ti consente anche di apprezzare quanto meno lavoro devi fare in una lingua di livello superiore. E, si spera, un apprezzamento dei costi associati al lavoro in quella lingua di livello superiore.)


12
Frank: Hai colpito l'unghia sulla testa. Comprendere come funziona un computer, la gestione della memoria e l'allocazione insieme all'idea che è possibile apprezzare ulteriormente le lingue di livello superiore è la ragione per imparare C. Sono fortunato che abbiamo dovuto imparare C per implementare progetti di classe come l'implementazione di un livello TCP di base su UDP .
Chris,

12
Sono d'accordo con questo, anche se: C ti avvicina solo di qualche passo alle radici dell'erba, non fino al suolo. Ok, c'è una cosa chiamata layout di memoria. Ma cosa significa fisicamente? Capisci come funziona il computer se non capisci l'elettronica? Meccanica quantistica? E così via. Non sono sicuro che esista un'unica mente al mondo che comprenda profondamente l'intera catena alimentare da un linguaggio di alto livello, via C, fino alla meccanica quantistica.
Joonas Pulakka,

14
La mia domanda è: come puoi trarre vantaggio dal sapere come funziona un computer internamente? Cosa stai guadagnando? L'apprezzamento di ciò che hai ora non è un ottimo motivo per imparare una lingua di livello molto basso come C. È come dire che dovrei imparare Fortran ad apprezzare quello che ho ora
TheLQ

18
@TheLQ Sono senza parole. Come puoi trarre vantaggio dal sapere come funziona un computer internamente? Stai acquisendo una comprensione più chiara di ciò che stai facendo, è ciò che stai guadagnando. Piuttosto: stai imparando cosa stai effettivamente facendo alla macchina in primo luogo.
Frank Shearar,

15
Lo segnerò come corretto, in quanto sembra essere la risposta preferita. Detto questo, non mi interessa davvero "come funziona un computer" a un livello fondamentale, in quanto non mi aiuta davvero a sviluppare la prossima fantastica funzione della mia applicazione. È come guidare un'auto: sono molto bravo a farlo, ma potrebbe fregarmene di meno di come funziona la pressione del fluido di rottura. Si ferma solo quando premo il freno. Inoltre, sono sicuro che apprezzerei guidare di più una macchina se dovessi prima andare in giro in carrozza per cinque anni. Ciò non significa che non sia in grado di postulare quanto sono migliori le cose con l'auto piuttosto che con il passeggino.
Stephen,

72

Non credo che nessuna delle risposte qui sia proprio ciò che l'OP stava cercando, quindi darò la mia opinione.

Senti, sono uno snob C non dispiaciuto. Il mio atteggiamento è che se non conosci C, in una certa misura non sai davvero cosa stai facendo come programmatore. Quindi, penso di essere il tipo di persona "di parte" di cui stai parlando qui.

Tuttavia, in pratica, il fatto che tu sappia davvero cosa stai facendo come programmatore non ti impedisce necessariamente di sviluppare software davvero fantastico e utile utilizzando strumenti di alto livello. Voglio dire, il creatore di Stack Overflow, Jeff Atwood, a quanto pare non conosce nemmeno C, eppure direi che Stack Overflow è un'applicazione dannatamente buona.

Il fatto che tu decida o meno di imparare C (o C ++ o assembly) dipende dal tipo di programmatore che desideri essere. Se vuoi solo sviluppare fantastiche app Web o app aziendali, va bene - non c'è davvero bisogno di imparare C. Ma se vuoi davvero eccellere in quello che fai - se vuoi lavorare su progetti davvero fantastici che spingono lo stato del arte, allora devi davvero prenderti abbastanza sul serio come programmatore per capire davvero come funzionano i computer. Poiché C è essenzialmente la lingua franca del sistema operativo, così come il linguaggio che alimenta quasi tutto il resto (dal kernel Linux alla maggior parte delle macchine virtuali Java, agli interpreti Python e Ruby, database SQL, server Web e praticamente tutti i driver di dispositivo) , una comprensione intima della lingua fa molta strada.

Per non parlare del fatto che conoscere C (o C ++) offre un'enorme opportunità per contribuire a grandi progetti open source che incidono su milioni (o centinaia di milioni) di persone. Vuoi lavorare sul miglioramento dell'interprete Python o del browser Web Chromium? Bene, devi conoscere C per il primo e C ++ per il secondo.

Ecco perché confrontare C con linguaggi naturali morti come il latino o tecnologie obsolete come il cavallo e la carrozza è completamente sbagliato. Una gran parte della nostra infrastruttura software del 21 ° secolo è alimentata dal codice C, motivo per cui C rimane oggi rilevante come non mai.

Quindi, se dovresti imparare o meno C dipende davvero da cosa vuoi dalla tua carriera di programmatore.


5
Non sembri così snob. Va bene forse un po '. :)
Stephen,

7
Risposta eccellente. Ho programmato con successo per dieci anni senza imparare C e C ++ e avrei potuto passare il resto della mia carriera senza mai impararlo. Ma da quando l'ho imparato l'anno scorso, ho scritto un software migliore , non solo in C ++, ma anche nelle mie altre lingue.
John M Gant,


3
Perché sarebbe "completamente sbagliato" confrontare C in latino? Penso che sia un'analogia eccellente. Il latino è ovunque intorno a noi. Il 58% del vocabolario inglese è influenzato dal latino (direttamente o attraverso altre lingue romanze). Il latino è anche la chiave per comprendere la nostra cultura. Legge, democrazia, religione, infrastrutture, pianificazione urbana e una serie di altre aree risalgono all'Impero romano. Puoi scegliere di ignorare C nello stesso modo in cui puoi ignorare il latino, ma non puoi mai evitarli. "Il latino e il greco non sono lingue morte. Hanno semplicemente smesso di essere mortali." (JW McKail)
Anders Sjöqvist,

2
@ AndersSjöqvist, sarebbe sbagliato perché nessuno parla più il latino, anche se ha influenzato profondamente lo sviluppo delle lingue moderne. Considerando che C è attivamente utilizzato e in uso ovunque - praticamente in ogni sistema operativo, VM, database o interprete. Diciamo che il latino è più simile, diciamo ... Simula - una lingua per lo più morta che ha profondamente influenzato le lingue viventi, ma non è usata al di fuori del mondo accademico.
Charles Salvia,

12

Una pratica regola pratica è che devi capire almeno un livello di astrazione al di sotto di quello in cui lavori abitualmente. Considera che il tuo interprete PHP o JavaScript potrebbe essere effettivamente implementato in C o C ++. Alla fine hai intenzione di colpire un bug nell'interprete o anche un errore di runtime C. Se non capisci C, ti limiterai a inviare una segnalazione di bug al manutentore, sperando che possano riprodurlo e prendersene cura, quindi agitare i pollici. Se conosci C puoi dire loro esattamente dove si trova il problema e qual è.

Questo significa anche che se lavori in C / C ++ dovresti almeno essere in grado di leggere assembly sulla tua piattaforma.

Per quanto riguarda l'apprendimento di C quando ne hai bisogno: la mia osservazione è che la maggior parte dei programmatori può imparare Perl / Python / Javascript su richiesta, ma assemblatore / C / Lisp sembrano richiedere molto più tempo, quindi vale la pena imparare almeno alcune nozioni di base prima della necessità sorge.


9
Ok, "C / C ++" Con cui posso convivere (gli avvocati linguisti sono dannati). E "Perl / Python / Javascript" è perfettamente ragionevole. Ma per amore di Dio, perché "assembler / C / Lisp"? È come dire "mela / arancia / Barrack Obama". Queste tre lingue non hanno nulla a che fare l'una con l'altra.
Jason Baker,

@Jason, l'unica cosa in comune che stavo suggerendo è che la maggior parte delle persone trova che il trio di lingue sia più difficile da imparare al volo, e quindi potrebbe valere la pena di passare un po 'di tempo con loro prima che sorga la necessità immediata di usarle. La programmazione aritmetica e funzionale del puntatore non ha molto in comune, tranne per il fatto che le persone sembrano fissarle più a lungo prima che abbiano un senso.
Charles E. Grant,

Non potrei essere più d'accordo. Andando dall'altra parte, a livelli più alti di astrazione, il "ragazzo / ragazza dell'ufficio IT" che può fare almeno un po 'di programmazione di solito sarà migliore di quello che non può.
Emmet,

7

Non sono d'accordo che è necessario imparare il C prima , ma credo che si dovrebbe imparare C alla fine . Tutte le astrazioni perdono e la comprensione di C semplifica la comprensione di ciò che sta realmente accadendo quando si utilizza un'astrazione di alto livello. Detto questo, penso anche che tutti i programmatori seri dovrebbero eventualmente imparare a leggere almeno l'assemblatore, per lo stesso motivo.

Imparare questi concetti di basso livello offre una sorprendente capacità di ragionare su cose di alto livello. Ad esempio, in C ++ e D, gli argomenti predefiniti alle funzioni virtuali sono determinati dal tipo statico (tempo di compilazione) dell'oggetto, non dal tipo dinamico (runtime). Ciò non ha senso se non si capisce come funzionano le convenzioni di chiamata e chiamate e perché è estremamente difficile implementare le funzioni virtuali in modo opposto.


2
Forse impari a leggere il linguaggio AN Assembly. Il problema è che ho 10 diverse famiglie di processori che utilizzo e che apprendo tutte le varianti molto diverse sono una ricetta per confusione e caos. Prova a confrontare AMD SHARC con Atmel AVR32 e TI MSP430.
uɐɪ

@Ian: giusto. Idealmente, dovresti imparare il linguaggio assembly di qualunque arco tu sviluppi di più. Per la maggior parte delle persone immagino che questo sarà x86 o ARM.
dsimcha,

3
"Tutti i programmatori seri alla fine dovrebbero imparare a leggere almeno l'assemblatore" Sono i commenti come questi che mi hanno fatto iniziare con questa domanda. Penso che tu sia semplicemente di parte, signore. Tuttavia, mi piace quello che hai detto sulle astrazioni che perdono. Questo ha senso. D'altra parte, queste cose non fanno molta differenza nel "mondo reale" nella mia arena. Sto ancora usando l'astrazione di alto livello, che perde o no.
Stephen,

1
@Stephen, dovresti provare a scrivere un po 'di linguaggio assembler. Le CPU a 8 bit non sono difficili e provare a implementare la stessa piccola cosa sia in 6502 (come il C64) che in Z80 (come le macchine aziendali CP / M) è in realtà molto educativo esperienza dovuta ad alcune differenze di progettazione molto basilari (pagina dell'indice rispetto ai registri).

+1 nonostante l' All abstractions are leakyaffermazione palesemente falsa .
Thomas Eding,

7

Il pregiudizio è di status quo. Ai vecchi tempi (anni '80 e precedenti), C / C ++ era praticamente un requisito per le applicazioni prestazionali. Questo è cambiato, ma gli sviluppatori senior generalmente provengono da quel background vecchio stile e vedono le cose in quel contesto.

Per lo sviluppo reale vengono utilizzati altri linguaggi : C # è popolare, come Java, mentre PHP e Python sono popolari per progetti interni ed è sempre utile avere qualcuno a portata di mano con almeno le conoscenze di base in quell'area nel caso in cui si scelga un open progetto PHP di origine, diciamo, per il tuo sistema di tracciamento dei bug. Tuttavia, le specifiche del lavoro sembrano ancora provenire da quel modello standard che è stato scritto 25 anni fa.


6
"Le specifiche del lavoro sembrano ancora provenire da quel modello standard che è stato scritto 25 anni fa." Non potresti essere più corretto.
Stephen,

Congratulazioni, John!
Marco C

6

Per quanto odio pubblicare il post obbligatorio sul blog di Joel, sono d'accordo con lui qui . C è la lingua franca della programmazione. Non riesco a pensare a nessun linguaggio di alto livello che non possa in qualche modo interfacciarsi con esso. Per questo motivo, C è ancora una scelta popolare per roba di tipo di programmazione di sistemi. Semplicemente non puoi interfacciarti con alcune cose a livello di sistema operativo senza C.

Oltre a ciò, cosa pensi di fare quando la tua lingua di alto livello non è abbastanza veloce? Sapere come scrivere C è particolarmente importante quando si utilizza un linguaggio di alto livello e digitato in modo dinamico come Ruby, Python o PHP. Ma anche i programmatori Java e C # devono passare di tanto in tanto a C.


lol. I consigli di Joels nella colonna collegata: "Faresti meglio a ignorare quello che sto dicendo qui e invece a costruire una sorta di software online che consenta agli altri studenti di trovare persone con cui uscire."
Stephen,

3
@Stephen: se vuoi che le persone ti notino davvero, allora falli posare o pagare.
Fred Nurk,

@Fred Ottimo consiglio, lol.
Stephen,

6

Che grande festa delle lumache! (Come presumibilmente dicono: è una lotta privata o qualcuno può unirsi?)

Ero un professore, e quello che ho scoperto (dopo alcuni tentativi ed errori) è stato che era molto più facile condurre gli studenti attraverso gli intricati concetti di programmazione se avessero capito, a livello di base, cosa stesse facendo un computer. Non in tutti i dettagli, ma il principio di base, come la memoria, le istruzioni, ecc. Quello che mi piace di C è che è vicino alla macchina.

Questo non vuol dire che altri insegnanti siano venuti nello stesso posto. Hanno iniziato con il linguaggio di alto livello (BASIC :-) e sono andati avanti da lì, senza evidenti effetti negativi.

Quindi, in conclusione, Stephen, potresti avere ragione. Non la penso così, ma ho sbagliato prima.


4

Immagino che questo sia progresso.

Venti anni fa, la saggezza convenzionale era che dovevi imparare l'assemblatore per capire cosa stavi guadagnando da linguaggi di livello superiore come C (motivo per cui dovevo prendere una classe di assemblatore al college usando VAX Macro; indovina quanto utile si è rivelato essere dopo la laurea).

C'è una superstizione che, poiché C è alquanto difficile da imparare e non fornisce quasi nessuna astrazione (i puntatori e i flussi di byte lo sono praticamente), apprenderlo ti renderà in qualche modo un programmatore migliore o ti darà una visione più ampia di come funzionano le cose sull'hardware livello.

Questo non è (necessariamente) vero. Lo standard C non ti avvicina al metal più di qualsiasi altro 3GL (Pascal, Fortran, ecc.). Alcune implementazioni C possono fornire hook che ti danno un maggiore accesso ad alcune aree, ma in generale i puntatori nudi sono più vicini che puoi, il che non è affatto vicino. Ad esempio, non è possibile accedere direttamente ai registri o alle parole di stato.

Alla fine, tutto si riduce ai codici operativi e alle modalità di indirizzamento, quindi se sei veramente interessato a come funzionano le cose al livello inferiore, ti servirebbe meglio apprendere assemblatore su C.

Di per sé, l'apprendimento del C non ti renderà (necessariamente) un programmatore migliore. Ti darà sicuramente un apprezzamento per i tipi di stringa effettivi e le librerie contenitore standardizzate.


Immagino che "l'apprezzamento" sia un modo per dirlo. Nel mio corso di programmazione al liceo, si trattava principalmente di "Devo usare questa funzione. Come posso convertire un LOLOMGCHAR * in un WTFBBQCHAR *?"
Katana314,

penso che C sia stato facile da imparare. almeno è stato per me dal solo leggere Kernighan e Ritchie.
robert bristow-johnson il

2

Una lingua è uno strumento. Se devi solo scrivere pagine Web e simili, sono sicuro che puoi cavartela senza dover imparare C, nello stesso modo in cui se fai solo kit di modelli in plastica hai solo bisogno di un coltello affilato e una colla, un la chiave non è normalmente richiesta.

Scrivo codice per sistemi embedded con risorse di memoria altamente limitate (il più grande che ho fatto di recente è 16kbyte e che era ENORME) In questo mercato quindi C o assemblatore sono le uniche opzioni e tutti i linguaggi di livello più alto non funzionano.


1
È fantastico ... Ma non tutti lo fanno. L'implicazione sembra essere che le persone che non scrivono per i sistemi embedded stiano solo giocando e non stiano sviluppando seriamente, almeno prendendo l'analogia del modello nel contesto dei sistemi embedded. Chiaramente non è così ed è possibile scrivere applicazioni di produzione su larga scala senza mai toccare C.
JohnL

Ovviamente è possibile scrivere applicazioni di produzione su larga scala senza avvicinarsi a C. Ho scritto codice per 10 anni prima di usare C. Ho usato PL / M, Pascal, ADA e assemblatore. Questi erano facilmente validi come C per l'apprendimento della meccanica di base della macchina e spesso migliori per la produzione di codice privo di errori.
uɐɪ

Fantastico - anche se la tua risposta sopra non mi ha dato l'impressione che tu pensassi in quel modo, quindi la mia risposta ...
JohnL

Hai qualche esperienza con i motori Java destinati all'utilizzo incorporato?

2

Nella mia esperienza, per un certo periodo C / C ++ è stato un buon buffer che ha separato i buoni programmatori dai programmatori VB6. Dopo aver fatto cinque anni dispari di C / C ++, ho ottenuto un lavoro lavorando in VB6. Sono rimasto sorpreso dalla qualità (o dalla mancanza di ciò) dei programmatori. Avevano scarso interesse per il coraggio della lingua, per il design o per le prestazioni. Sfortunatamente, quando la società passò a .Net, i codificatori C / C ++ e i codificatori .Net stavano usando gli stessi strumenti. I programmatori VB erano anche peggiori programmatori VB.Net. La situazione è peggiorata quando tutto lo sviluppo è andato su ASP.NET. Improvvisamente chiunque fosse in grado di trascinare e rilasciare un controllo era un programmatore.

Nel mercato del lavoro, tuttavia, non c'era molto da differenziare i programmatori hard-core (ex C / C ++) e i turisti.

Pertanto, avere C o C ++ sul tuo curriculum può aiutarti a differenziarti dal riff-raff.


2

In modo proattivo chiesto: stai chiedendo la conferma che non devi imparare C? Se impari puro C (non necessariamente il C ++) otterrai una comprensione approfondita del modello di esecuzione di un computer. Soprattutto su memoria e allocazione. Questo è importante anche per le persone che programmano in lingue di livello superiore.

Per un programmatore PHP è solo meno trasparente il modo in cui il codice viene eseguito su una determinata macchina. Potrebbe non essere importante per il programmatore PHP poiché il trasferimento di rete è il collo di bottiglia nell'applicazione, ecc.

Il semplice PHP / Python / C # ha molti livelli di astrazione tra il linguaggio e la CPU. questi strati sono così spessi che non ti permettono di guardarli. Quando impari C, c'è un foglio sottile tra te, la CPU e il sistema operativo. Ciò non semplifica la programmazione (e potrebbe anche non essere migliore). Ma in realtà sei in grado di imparare come funziona la CPU. Una volta che conosci la C "intermedia", puoi effettivamente iniziare a collegare tale conoscenza verso l'alto al linguaggio di livello superiore. Questo è il vantaggio immediato che otterrai.

Secondo me un programmatore dovrebbe sempre dedicare del tempo all'apprendimento di concetti di programmazione diversi. Vale sicuramente la pena dare un'occhiata a C, ma anche dare un'occhiata a linguaggi di programmazione di livello ancora più elevato come Clojure, Haskell, Prolog.

Non devi diventare un maestro in questi, ti insegneranno semplicemente la lezione che i "livelli" dei linguaggi di programmazione non sono binari ma ci sono molti livelli. Conoscerli dall'alto verso il basso (assemblatore). Ti renderà un programmatore migliore.


2

Devi conoscere abbastanza C per leggere il codice scritto in C, a causa della grande quantità di codice molto importante scritto nella lingua. Questo è tutto ciò che trarrete dall'andare bene attraverso un manuale approfondito sull'argomento (ho usato la "programmazione in C" di Kochan) senza in realtà dover scrivere codice nella lingua. Se dovessi mai ritrovarti in una situazione in cui ti viene richiesto di usare ampiamente la lingua, avrai una buona base su cui basare. Probabilmente vorresti studiare qualcosa come il libro dell'Assemblea di Duntemann se la macchina è una scatola nera distrutta per te. Consiglio anche il "Codice" di Petzold.

Al di fuori di questo - l'alfabetizzazione di base in C e la familiarità di base con la macchina sottostante - saresti meglio servito spendendo il tuo tempo di studio su cose reali, come SICP, TCP / IP Illustrated o libri su matematica concreta, algoritmi o struttura dati . Le cose vere.

Trascorrere molto tempo a studiare C durante la programmazione in PHP semplicemente non vale il costo opportunità. Ci sono cose più utili da imparare. C è davvero solo un'altra lingua che puoi imparare bene solo studiando e usando, ma che puoi imparare quando è necessario.

Sudare le cose difficili.


1

C è la lingua utilizzata per scrivere altre lingue. Ti permette di entrare in intimità con la CPU e altri hardware come preferisci.

Se non conosci C, non sai come altre lingue ottengono i risultati che ottengono.

L'astrazione è un concetto importante, ovviamente, e non tutti hanno bisogno di sapere come il loro quadro di scelta sta raggiungendo i risultati che promette. Non hai bisogno di passare 20 anni a scrivere C, o davvero a pensare a cosa succede ai tuoi vtables quando usi l'ereditarietà multipla, per scrivere un buon codice.

Ora, puoi guidare un'auto senza capire come funziona un motore a 4 tempi o addirittura senza poter utilizzare una leva del cambio (cambio manuale).

Tuttavia, se capisci cosa sta succedendo sotto il cofano, di volta in volta sarai in grado di ottenere risultati eccezionali che qualcuno senza quella conoscenza fatica a replicare.


1

C (e possibilmente C ++) è il mare in cui stai nuotando. Il sistema operativo che eseguirà il tuo codice è probabilmente codificato in C (e C ++). Quindi la tua API nativa per accedere ai servizi del SO sarà in C.

Se riesci a fare a meno di sapere cosa c'è di seguito, non è necessario conoscere C. Tuttavia, la maggior parte dei programmatori deve immergersi a livelli inferiori in qualche momento della propria vita.

Si basa anche sulla tua specializzazione delle aree di sviluppo. Ad esempio, uno sviluppatore web che scrive HTML, Javascript e alcuni script lato server potrebbe non aver mai bisogno di sapere nulla di C, ma lo farà un sistema distribuito o uno sviluppatore di giochi.

Non fa mai male passare qualche settimana a imparare qualcosa di così fondamentale per la tua professione.


1

C ha molti vantaggi:

  1. C è un linguaggio di basso livello. Puoi usare c per sviluppare kernel e driver.
  2. C è la lingua più veloce. Molti software di potenza possono essere sviluppati da c. Ad esempio: memcached, redis, nginx, apache, mysql ecc.
  3. C è un linguaggio multipiattaforma. Il programma sviluppato da c può essere eseguito su ogni piattaforma. Altre lingue multipiattaforma non possono farlo. Java, python, php ecc. Non possono essere eseguiti sulla piattaforma iOS.
  4. Il C ++ non può essere eseguito su molti sistemi embedded.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.