Wenn dies der falsche Ort ist, um diese Frage zu stellen, lassen Sie es mich bitte wissen.
Ich bin ein Python-Programmierer von Beruf. Ich würde gerne C lernen. Ich habe es schon oft versucht, aber ich werde immer entmutigt. In Python schreiben Sie ein paar Zeilen und das Programm wirkt Wunder. In C kann ich anscheinend nichts Nützliches tun.
Es scheint sehr kompliziert zu sein, sich überhaupt mit dem Internet zu verbinden.
Haben Sie Vorschläge, was ich tun kann, um C zu lernen? Gibt es gute Websites? Irgendwelche coolen Projekte?
Vielen Dank
Antworten:
Lass dich nicht entmutigen.
Python ist eine Programmiersprache auf hohem Niveau. Im Vergleich zu C kann es in einer kleinen Menge Code Wunder bewirken . Versuchen Sie zunächst nicht, Python-Ergebnisse in C nachzuahmen - Sie werden sofort entmutigt sein. Das Programmieren in einem C erfordert einen anderen Denk- und Verstehensstil, da Sie auf einer intimeren Ebene mit dem Computer interagieren. Hier ist ein guter Ausgangspunkt, um C zu lernen:
Bücher
Online-Material
quelle
Wenn Sie C lernen möchten, beginnen Sie nicht mit dem Herstellen einer Verbindung zum Internet. Sie können das in jeder anderen Sprache tun. Das ist nicht das Wichtigste in C.
Schauen Sie sich stattdessen Zeiger, Arrays, Referenzen und Strukturen in diesem C-Tutorial an . Dies wird Ihnen helfen, die Speicherverwaltung und viele der Funktionen zu verstehen, die "Sie näher an den Computer bringen".
Wenn Sie dieses Material lernen und verstehen können, sollten Sie sich überlegen, in ein mögliches Projekt zu expandieren. Diese Konzepte sind für jede echte professionelle C-Programmierung von grundlegender Bedeutung.
Dieses Zeiger-Tutorial sieht ebenfalls hilfreich aus.
quelle
C_Tutorial
Verbindung ist unterbrochen ...Es ist sehr kompliziert, sich mit dem Internet zu verbinden! Denk darüber nach:
Ihr Computer verfügt möglicherweise über mehrere Verbindungsmöglichkeiten - WLAN, Bluetooth, Ethernet usw. Jede dieser Möglichkeiten hat ihre eigenen Einstellungen, die Sie festlegen müssen. Sie haben Glück, dass es bereits Standards und Treiber für diese gibt. Die Verwendung dieser könnte sehr viel schwieriger sein, als es derzeit bereits der Fall ist.
IP-Adressen können IPv4 oder IPv6 sein, und Sie müssen beide verarbeiten können.
Möglicherweise sind für das System Proxys konfiguriert oder nicht.
Sie müssen FTP, HTTP oder ein anderes Protokoll unterstützen.
Möglicherweise müssen Sie eine DFÜ-Verbindung verwenden, sodass Sie ein Telefonbuch mit Kennwörtern und Telefonnummern angeben müssen, wenn Sie nicht bereits verbunden sind. Das Gleiche gilt für WLAN-Benutzernamen / -Kennwörter.
Möglicherweise müssen Sie mit Cookies arbeiten.
Das System speichert möglicherweise einige Daten im Cache. Möchten Sie den Cache also verwenden oder nicht?
und die Liste geht weiter und weiter.
Die Tatsache, dass es mit Python einfach ist, bedeutet zwangsläufig, dass viele davon vor Ihnen verborgen sind (oder schwer einzustellen sind), sodass Sie Einfachheit gegen Macht eintauschen. Die C - Bibliothek ist das Gegenteil: es die ganze Energie , die Sie brauchen (Sie leicht Systemaufrufe ausführen können), aber hat keine Ausfälle (oder in der Tat alle Funktionen für eine Verbindung zum Internet).
Anstatt zu denken, dass C langweilig ist, denken Sie, dass es mächtig ist. Aber in jedem Fall nicht versuchen , mit ihm zu dem Internet verbinden - das ist eine verdammt harte Sache zu tun ist . Statt zu lernen, beginnen , wie die Bibliothek nutzen , um weitere grundlegende Aufgaben (zB Datei - I / O), zu erfahren , wie Zeiger und Arrays wirklich arbeiten, und wenn man alle diejenigen lernen, dann versuchen große Projekte angehen. Sie werden Python auch auf diese Weise mehr zu schätzen wissen. :)
Bearbeiten :
Ich persönlich schlage vor, dass Sie in Ihrer Freizeit zuerst C # lernen. Sobald Sie sich damit vertraut gemacht haben, lernen Sie das
unsafe
Schlüsselwort und die Verwendung von Zeigern kennen und führen das Marshalling in C # durch. Sie haben immer noch eine sehr große Bibliothek, mit der Sie arbeiten können, wie mit Python, aber Sie können eine Menge Dinge tun, die Sie in C tun können. Wechseln Sie dann zum manuellen Aufrufen von System-APIs (wie InternetOpen ), und lernen Sie wie man sie zum Arbeiten bringt. Sie werden immer noch viel Flexibilität haben, aber Sie werden eine großartige Einführung in Konzepte auf niedrigerer Ebene erhalten. Nachdem Sie dies getan haben, dann Fangen Sie an, C zu lernen - dann werden Sie feststellen, dass es ein Kinderspiel ist, und Sie werden die Vor- und Nachteile von Hoch- und Niedrigsprachen erkennen und in der Lage sein um die zu finden, die Ihren Bedürfnissen entspricht.Trotzdem denke ich, dass ein Crashkurs in C als Ausgangspunkt für einen Sprung ins
MeerC nützlich sein könnte .quelle
Lies keinen Kernel-Code, wenn du C lernst. Es steckt voller Tricks, um jede noch so kleine Leistung herauszuholen. Einige davon sind sehr unüblich. Es wird dich verrückt machen.
Schauen Sie sich stattdessen einige kleinere Projekte mit hoher Codequalität an:
quelle
Ein Zweck einer höheren Sprache ist es, komplizierte Dinge zu verbergen. Wenn Sie eine "niedrigere" Sprache lernen möchten und nicht mit wirklich komplizierten Dingen beginnen möchten (die früher meistens vor Ihnen verborgen waren); Beginnen Sie mit einfacheren Lernprojekten, sortieren Sie eine Reihe von Zahlen oder kehren Sie eine Zeichenfolge um, oder ähnliches ...
Es ist einfacher, mit kleinen Schritten einen steilen Hügel hinaufzugehen.
quelle
Was coole Projekte betrifft: Unix-Kernel sind in C geschrieben.
quelle
Lernen Sie zuerst die C-Grammatik und verwenden Sie sie dann, um Datenstruktur und Algorithmus zu schreiben. Natürlich können Sie den Linux-Kernel als Experten-Sprache lesen.
quelle