Ich habe kürzlich C gelernt und möchte ein Projekt starten, um mein Wissen zu festigen. Ich habe mich für einen sehr einfachen Texteditor entschieden, so etwas wie vim. Das Problem ist, dass ich wirklich keine Ahnung habe, wie ein Texteditor überhaupt funktioniert, und ich weiß nicht, wonach ich googeln soll, um mehr darüber zu erfahren.
Das Googeln führte zu Vims GitHub-Repo, das für mich nutzlos ist, weil die Codebasis riesig ist und mich der Code verwirrt. Ich habe auch Tutorials gefunden, um einen Texteditor in C zu erstellen, der ähnlich wie vim funktioniert.
Obwohl ich darüber nachgedacht habe, den Tutorials zu folgen, fühlt es sich an, als würde ich schummeln. Wie haben die VIM-Entwickler herausgefunden, wie man VIM ohne spezielle Tutorials codiert? Oder sind sie von einfacheren Texteditoren ausgegangen? Wie haben sie das nur aus Sprachkenntnissen und ihrer Dokumentation herausgefunden?
Was genau brauche ich, um mit dem Schreiben dieses Texteditors zu beginnen, ohne direkt einem Tutorial zu folgen? Ein anderes Beispiel, an das ich gerne denke, ist: Wie haben Dennis Ritchie und Ken Thompson Unix codiert? Ich habe eine Vorstellung davon, wie das Betriebssystem funktioniert, aber ich habe keine Ahnung, wie ich es in Code umsetzen soll. Was fehlt mir? Wie übertrage ich diese Sprachkenntnisse in die Praxis?
Antworten:
Wenn dies Ihr erstes Programmierprojekt ist, kann sogar ein einfacher Texteditor zu kompliziert sein. So etwas wie vim oder ein OS kommt überhaupt nicht in Frage.
Annäherung an das Problem
Im Allgemeinen ist der Einstieg für die meisten Projekte in etwa ähnlich:
Beispiel
Nehmen wir das Beispiel eines Texteditors.
Sie möchten einen Teil einer Textdatei auf dem Bildschirm anzeigen, Zeichen einfügen und entfernen und die aktuelle Version speichern.
Beginnen Sie einfach mit dem Lesen einer Datei und dem Anzeigen ihres Inhalts.
Sie werden (unter anderem) die folgenden Unterprobleme identifizieren:
Sobald Sie einen Punkt erreicht haben, an dem Ihre Anforderung (Laden und Anzeigen der Datei) abgeschlossen ist, können Sie überlegen, wie Sie nur einen Teil anzeigen, der auf den Bildschirm passt, in Ihrer Datei navigieren usw.
Der nächste Schritt
Mit der Zeit werden Sie feststellen, dass es immer schwieriger wird, geeignete Wege zu finden, um Ihre Probleme zu lösen, wenn Sie sich immer komplexeren Problemen stellen. Sie werden auch feststellen, dass das Ändern von Code mit der Zeit langwierig werden kann.
An diesem Punkt ist es Zeit, einige grundlegende Architektur- und Designkonzepte zu erlernen.
quelle
Das tust du nicht.
Wenn Sie nicht einmal eine vage Vorstellung davon haben, wie Sie etwas tun sollen, ist dies ein Zeichen dafür, dass es Ihre derzeitigen Fähigkeiten übersteigt. Denn wenn Sie keine Ahnung haben, wie Sie überhaupt anfangen sollen, werden Sie sicherlich keine Ahnung haben, was den schwierigsten Teil der App betrifft.
quelle
less
,more
oderview
Programme. Sie haben einige Aspekte der Editoren gemeinsam, ohne die Komplexität von veränderlichen Bearbeitungspuffern.Sie müssen entscheiden , wie Sie wollen Ihren Texteditor an die Arbeit.
Dies ist eine der erschwerendsten und lohnendsten Erfahrungen bei der Entwicklung eigener Projekte von Anfang bis Ende. Niemand sendet Ihnen Anforderungen, aus denen Sie erstellen können. Sie müssen Ihre eigenen Anforderungen entwickeln.
Dies bedeutet, dass Sie eine Menge Designarbeit erledigen müssen, bevor Sie jemals Ihre erste Codezeile schreiben. Sie müssen entscheiden, wie die Benutzeroberfläche aussieht. Sie müssen entscheiden, welche Funktionen enthalten sein sollen. Beide Fragen richten sich danach, wozu Sie sich in der Lage fühlen. Wenn Sie an die "ideale" Situation denken (wie soll die Benutzeroberfläche funktionieren? ), Sich aber nicht in der Lage fühlen, sie zu codieren, müssen Sie nach alternativen Ansätzen suchen: Wie kann ich dafür sorgen, dass sie funktioniert? Dies hilft Ihnen, sich auf die Codierungsansätze zu konzentrieren, über die Sie möglicherweise mehr erfahren möchten.
Wie andere bereits gesagt haben, ist der Versuch, vim zu kopieren, möglicherweise nicht der beste Ansatz, da es sich um eine große und komplizierte Codebasis handelt. Sie verweigern sich auch die Designarbeit, die meiner bescheidenen Meinung nach dazu beiträgt, Ihre Arbeit als Entwickler abzurunden.
Dies bedeutet nicht, dass Sie die gesamte Anwendung von Anfang bis Ende entwerfen müssen, bevor Sie Ihre erste Codezeile schreiben. Es ist in Ordnung, dass sich die Anforderungen im Laufe der Zeit ändern, wenn Sie mehr lernen. Es ist in Ordnung, neue Funktionen hinzuzufügen, an die Sie erst denken, wenn Sie Ihre eigene Anwendung testen / verwenden und denken: "Wäre es nicht schön, wenn ...". Es ist in Ordnung, einfach anzufangen.
quelle
Es ist töricht, einen Texteditor mit vollem Funktionsumfang von Grund auf ohne Programmiererfahrung zu schreiben: Sie werden entmutigt sein und ihn aufgeben, bevor Sie viel lernen.
Mehrere Alternativen kommen in den Sinn:
vim
, schauen Sie sich das an und versuchen Sie, etwas Kleines und Isoliertes zu verstehen, wie es die Daten darstellt, oder suchen Sie nach einem einzelnen Zeichen (demf
Befehl).cat
befehlen Sie dannwc
danngrep
dannsed
zum Beispiel.quelle