È necessario che i programmatori Java apprendano alcuni programmi C / System?

3

Ho letto un blog ( in cinese solo ) in cui l'autore aveva deriso i programmatori Java che conoscono poco la programmazione di sistemi e C.

L'autore ha illustrato come aveva scoperto la profonda ragione di un'eccezione del selettore NIO Java utilizzando la sua conoscenza dell'AP di sistema C e Windows / Linux. L'IOException viene generato con il messaggio "Impossibile stabilire la connessione loopback" quando si chiama java.nio.channels.Selector.open () troppe volte. Quello che aveva scoperto era che per ogni apertura di Selector, una coppia di connessioni TCP sono state create in Windows e un paio di pipe sono state create in Linux. Nel altro blog, ha anche menzionato che il compilatore GNU Java era un'implementazione intelligente di Sun Java.

Ciò che ha detto sembra completamente nuovo e interessante per me. Ma non sono sicuro che la conoscenza di C / sistema sia l'unico modo per capire rapidamente questi problemi. Vale veramente la pena dedicare molto tempo all'apprendimento di queste conoscenze per i programmatori Java?

    
posta wang.chance 29.03.2011 - 17:35
fonte

8 risposte

4

Direi di sì, piuttosto enfaticamente. Vorrei che ci fosse un modo per garantire che chiunque non conoscesse la programmazione di sistema, inclusa almeno una familiare familiarità con l'assemblaggio, non si avvicinasse mai alla fonte per qualsiasi progetto serio.

Perché? Perché non scrivo solo programmi per computer; Li uso anche io, e molti di quelli che uso sono schifo perché sono stati scritti da persone che non sapevano cosa stavano facendo. Ci sono molti problemi importanti nella programmazione del computer che semplicemente non hanno alcun senso senza una conoscenza di come le cose funzionano ai bit -e-byte di livello, e i meno esperti programmatori là fuori che scrivono senza saperlo codice errato, migliore sarà l'esperienza per tutti noi.

    
risposta data 29.03.2011 - 18:30
fonte
6

No , non lo è. Ma sai cosa dicono, più conosci meglio è.

    
risposta data 29.03.2011 - 17:53
fonte
3

La conoscenza di C, o qualsiasi altra lingua, non è un requisito per l'apprendimento di Java. Sì, certamente credo che aiuti a conoscere una varietà di lingue in diversi paradigmi. Ma non conoscere C in particolare non ti impedisce di essere un buon programmatore.

Nota: è necessario comprendere C per eseguire RMI Java. Ma questo è un piccolo sottoinsieme di Java.

    
risposta data 29.03.2011 - 17:45
fonte
1

Una profonda conoscenza del sistema operativo sottostante può essere molto utile nello sviluppo di applicazioni. Ogni grande ingegnere del software che conosco può programmare fino al nudo metallo.

    
risposta data 29.03.2011 - 19:36
fonte
1

Se non sai nulla su come funziona il sistema sottostante, sei limitato a qualunque sia l'ambiente Java. Va bene, per quanto va avanti, ma alla fine qualcosa al di fuori dell'ambiente Java vi colpirà e farà sì che l'ambiente si comporti in modo inaspettato. Quando ciò accade, se non conosci nulla oltre il tuo ambiente, sarai bloccato.

È il problema che Joel Spolsky chiama " Leaky Abstractions " - in questo caso l'ambiente Java è l'astrazione in questione, e quando si perde, allora ti troverai nei guai.

    
risposta data 29.03.2011 - 19:57
fonte
0

I primi due anni di sviluppo che ho fatto sono stati interamente in codice macchina e linguaggio macchina e ho lavorato per un certo numero di produttori di hardware. Puoi sempre imparare un livello inferiore del sistema.

Ciò che è più prezioso, tuttavia, è una buona esperienza commerciale, imparando dai tuoi errori, provando nuove cose per soddisfare un requisito di business che aumenterà ulteriormente la tua carriera.

    
risposta data 29.03.2011 - 17:55
fonte
0

Come accennato in precedenza, non è necessario ma certamente non fa male.

A scuola, ci è stato mostrato C in primo luogo perché ci ha aiutato a capire le basi della codifica. Inoltre, la maggior parte delle lingue sono ispirate a C, quindi ti offre un'ottima base per iniziare ad imparare altre lingue.

    
risposta data 29.03.2011 - 18:27
fonte
0

Non è strettamente necessario, ma l'apprendimento C può essere un'esperienza gratificante. Ti dà la libertà in ogni dettaglio del tuo programma. Per prima cosa, potresti perdere le tue funzioni di alto livello, lo so che l'ho fatto, ma crescerai per goderti la sua estrema semplicità.

    
risposta data 29.03.2011 - 19:46
fonte

Leggi altre domande sui tag