Programmieren lernen in C (aus Python) [geschlossen]

22

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

Honza Pokorny
quelle
4
Es ist schön, auf den Schultern des Genies stehen zu können, nicht wahr? Der Python-Interpreter ist in C geschrieben. Jetzt wissen Sie wirklich zu schätzen, was die Designer wirklich getan haben. Es ist ziemlich erstaunlich, Finger.
Pemdas
@Pemdas C wird normalerweise zum Erstellen von Systemprogrammen verwendet.
Searock
Könnte ich empfehlen, zunächst den Inhalt einer Datei zu lesen und möglicherweise eine grundlegende Umwandlung in eine andere Datei vorzunehmen? Beispiel: Nehmen Sie eine CSV-Datei und analysieren Sie sie in eine durch Tabulatoren getrennte Datei. Alternativ können Sie lernen, wie Sie Header-Informationen aus einer BMP-JPEG-Bilddatei lesen.
Joshua Burns
Ich bin zu spät, um eine Antwort hinzuzufügen, aber es gibt diese Online- C für Python-Programme-Broschüre . Außerdem machen die Macher von "Learn Programming the Hard Way" ein Buch mit dem Titel " Learn C the Hard Way ", das sich an Leute richtet, die bereits ein bisschen Python oder Ähnliches kennen.
Naught101

Antworten:

31

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

JK
quelle
1
Können Sie eine Programmierübung vorschlagen? Etwas Nützliches am liebsten. Vielen Dank.
Honza Pokorny
12

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.

jmort253
quelle
Die C_TutorialVerbindung ist unterbrochen ...
user3768495
11

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 unsafeSchlü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 Meer C nützlich sein könnte .

Mehrdad
quelle
8

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:

  • Lua - Wenn Sie nicht an Programmiersprachen interessiert sind, können Sie diese überspringen. Ansonsten ist es ein wirklich schöner Code und erstaunlich zu sehen, wie viel sie mit so wenig erreichen (etwas, das Sie frustriert zu sein scheinen, seit Sie aus Python kommen).
  • ZeroMQ - Ich liebe dieses Projekt. Es ist eine leichte, superschnelle Nachrichtenwarteschlange. Wieder qualitativ hochwertige Sachen.
  • DarkHttpd - Ein Webserver mit 2700 Zeilen in C. Behandelt einige unterhaltsame Themen wie Socket-Programmierung, Parsen und Arbeiten mit Protokollen.
Scant Roger
quelle
0

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.

hotpaw2
quelle
-3

Was coole Projekte betrifft: Unix-Kernel sind in C geschrieben.

Edward Strange
quelle
Meinten Sie einen Link hinzufügen?
jmort253
-3

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.

Hi 福气 福气
quelle