2010-12-12 2 views
10

Im Stil von Where should a veteran C programmer start in order to master Java?, frage ich Sie die umgekehrte Frage. Ich habe viel Erfahrung in Java und Programmierung im Allgemeinen, aber ich würde gerne etwas C aufgreifen (für einige Projekte interessiere ich mich für Hacking). Gibt es einen "schnellen und schmutzigen" Leitfaden für Personen mit einem früheren CS-Hintergrund? Ich würde kostenlose Online-Ressourcen bevorzugen, aber alle Vorschläge zu schätzen wissen.Wo sollte ein erfahrener Java-Programmierer starten, um C zu beherrschen?

+0

Wollen Sie wirklich C? Nicht C++? Ich verlasse das hier trotzdem: http://www.horstmann.com/ccj2/ccjapp3.html http://en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B –

Antwort

6

Vor einiger Zeit erklärte Joel Spolsky, dass C-Programmierung für all software developers kritisch sei. In diesem Artikel bezieht er sich auf das Buch Kernighan and Ritchie, das das allzeit klassische C-Buch ist. Wenn man jedoch C-Programmierung mit diesem Buch gelehrt hat, ist das für den Gelegenheitsschüler etwas Besonderes.

Das heißt, wenn Sie bereits in Java sind, das bist du nicht.

Trotzdem ist es ein lesenswertes Buch. Wenn nichts anderes, würde ich in der Bibliothek danach suchen.

This tutorial ist ein bisschen veraltet (besonders im Vergleich zu ANSI C), aber wenn Sie nach der schnellsten Auffrischung der Syntax suchen, ist es nicht schrecklich.

Angesichts einer kleinen grundlegenden Syntax (die Ihnen sehr vertraut sein wird), sollten Sie in der Lage sein, direkt auf die C libraries zu gehen. Das ist, wo die meisten der tatsächlichen Funktionalität, die Sie benötigen, sowieso sein werden. Ich denke, dass Sie feststellen werden, dass das meiste Material, das benötigt wird, um C zu "meistern", tatsächlich in den unterstützenden Bibliotheken sein wird.

Für Vollständigkeit, falls Sie einen tatsächlichen Compiler benötigt:

In meinem Job ist meine Entwicklungsumgebung gespalten zwischen Linux (Fedora 14) und Windows 7. In beiden Fällen verwende ich gcc auf der Anlass, wenn ich C-Code schreiben muss. Während gcc ein akzeptierter Standard in der Fedora-Installation ist, werden Sie auf der Windows-Seite entweder MinGW oder Cygwin wollen, von denen Ihnen beide gcc geben können.

Wenn ich immer noch C-Programmierung lehrte, würde ich eine Kombination der oben genannten für die fortgeschrittenen selbstgesteuerten Studenten empfehlen.

+1

"... für den Gelegenheitsschüler": I don Ich denke, C ist die richtige Sprache für den Gelegenheitsschüler, Gelegenheitsprogrammierer oder Gelegenheitsspieler.C hält nicht deine Hand, du musst ständig am Ball sein. –

+2

@mu, ich werde nicht argumentieren, dass C hält Ihre Hand mehr oder weniger als jede andere Sprache. Ich weiß, dass mein geistiges Bild von C-Programmierung (dh Zeigerverwaltung) gegenüber Java-Nebenläufigkeitsproblemen ist, dass mindestens C dir das Messer zeigt, das es hält und sagt: "Verwechsle den Zeiger nicht, sonst werde ich dich erstechen . " Java tendiert dazu, Zeitbomben für sich selbst zu setzen, so dass, wenn Sie Wochen, Monate oder Jahre später den Deadlock verursachen, eine aufregende * Überraschung ist. * ;-) –

+0

Ich würde kaum Java nennen, oder Deadlocks aufregend. –

0

Während wahrscheinlich ein wenig auf der Grundseite für einen erfahrenen Entwickler, fand ich "C Programming - A Modern Approach" von K.N. König, um ganz gut zu sein. Es ist eine sanfte, aber gründliche Einführung in die Sprache und einige der wichtigsten Bibliotheken, die Sie benötigen. Ich lese die erste Ausgabe des Buches; Der angegebene Link ist für die zweite Ausgabe.

0

Obwohl es zuerst sehr einleitend sein wird, lesen Sie die K&R und machen Sie die Beispielübungen. Sie werden nach einer Weile sehr herausfordernd und geben Ihnen ein gutes Verständnis von Zeigern, Strukturen und anderen Aspekten von C, die sich von Java unterscheiden. Lösungen für jede Übung finden Sie online.

Überprüfen Sie auch die Stanford Youtube-Vorlesungen für ihre Klasse CS107, Programmierung Paradigmen. Alle Vorträge sind verfügbar online, sowie Aufgaben und andere Kursmaterialien.

Verwandte Themen