Past If-Anweisungen Arrays, Schleifen ... Was nun?

9

Ich habe vor etwas mehr als einem Jahr das Programmieren aufgegeben, als ich immer wieder gegen diese Wand stieß. Ich besuche das Thema erneut, weil ich eine grundlegende Android-Anwendung erstellen möchte. Aber ich habe das Gefühl, dass mein begrenztes Wissen nicht ausreichen wird.

Hier ist mein Problem.

Ich habe ein paar Bücher gelesen und Video-Tutorials zu C # / Java angesehen, bin Beispielen gefolgt und habe das Buch fertiggestellt. Am Ende scheinen sie mich immer verblüfft zu lassen, was ich als nächstes tun soll.

Was für ein Mittelwert ist, dass sie Sie von Ihrer grundlegenden "Hallo Welt" -Anwendung bis hin zu Ifs und Arrays unterrichten und dann anscheinend erwarten, dass Sie wissen, wie Sie in die Welt des Codierens eintauchen und alles erstellen können.

Vermisse ich hier etwas? Ich weiß, dass dies die Bausteine ​​aller Programme sind, aber Bücher, die ich lese, zeigen mir nie wirklich, was ich als nächstes tun soll.

Ich nehme an, die einfache Antwort wäre, mit dem Codieren zu beginnen, aber wo? Ich habe zum Beispiel "Head First Java" gelesen. Bis zu dem Teil, in dem sie Ihnen sagen, dass Sie alles, was Sie gelernt haben, nehmen und ein Hunderennspiel erstellen ...

"Versuchen Sie nicht zu betrügen und schauen Sie sich den bereitgestellten Quellcode an. Sie sollten dies jetzt tun können." _ Das ist kein genaues Zitat, aber im Grunde wurde mir das gesagt .......

Vor einer halben Stunde haben sie nur erklärt, wie man Arrays macht. Ohne Theorie soll ich dann ein funktionierendes Spiel erstellen?

Der Grund, warum ich das frage, ist, dass ich befürchte, dass dies alles ist, was ich wissen sollte, um zumindest mit dem Codieren zu beginnen, aber es scheint, als hätte ich einen kleinen Werkzeugkasten bekommen und den Auftrag erhalten, einen Wolkenkratzer zu bauen.

Vielen Dank für jeden Rat

user76625
quelle
"Hunderennspiel" könnte viele Dinge bedeuten. Handelt es sich überhaupt um Grafiken? Solange das, was Sie erstellen, keine Grafiken enthält, würde ich denken, dass dies für Anfänger perfekt geeignet ist. Vielleicht machen Sie stattdessen Henker, nur um nicht an Bilder zu denken ...
Jhocking
Es ist durchaus möglich, mit dieser kleinen Toolbox einen Wolkenkratzer zu bauen - große Programme sind nur organisierte Sammlungen einer Menge kleiner Teile. Sie werden jedoch JETZT nicht in der Lage sein - Sie müssen mit dem Bau eines Vogelhauses beginnen und sich nach oben arbeiten. Versuchen Sie, wie jhocking sagte, noch nichts mit Grafiken zu tun - es gibt einen guten Grund, warum das Anfangsmaterial immer auf unformatiertem Text basiert.
Loren Pechtel

Antworten:

10

Was für ein Mittelwert ist, dass sie Sie von Ihrer grundlegenden "Hallo Welt" -App bis hin zu Ifs und Arrays unterrichten und dann anscheinend erwarten, dass Sie wissen, wie Sie in die Welt des Codierens eintauchen und alles erstellen können.

Vermisse ich hier etwas? Ich weiß, dass dies die Bausteine ​​aller Programme sind, aber Bücher, die ich lese, zeigen mir nie wirklich, was ich als nächstes tun soll.

Nicht wirklich. Sie sind nicht. Die Bausteine ​​aller Programme sind Abstraktion und Wiederverwendung. Viele Programmiersprachen nicht einmal haben Arrays oder ifs oder Schleifen.

Es gibt einige großartige Bücher, in denen Sie lernen, wie man programmiert und nicht wie eine bestimmte Programmiersprache funktioniert. Dies scheinen die Bücher zu sein, die Sie gelesen haben.

How to Design Programs aka HtDP ist ein solches Buch. Es zeigt Ihnen, wie Sie Programme entwerfen. Dazu erhalten Sie Rezepte, mit denen Sie Probleme analysieren, lösen, in Algorithmen und weiter in Arbeitsprogramme umwandeln können.

Beachten Sie, dass "Rezept" im Grunde ein anderes Wort für "Programm" ist. Mit anderen Worten, das Buch lehrt Sie Programme, die Menschen in ihren Köpfen ausführen können, um Programme zu generieren, die von Computern ausgeführt werden sollen. Wie cool ist das? :-)

Die Autoren arbeiten derzeit an einem Entwurf für eine zweite Ausgabe von HtDP , den Sie möglicherweise anstelle der ersten Ausgabe lesen möchten. Das Material zur imperativen Programmierung wurde entfernt und wird im noch ungeschriebenen zweiten Band How to Design Components behandelt . Sie können jedoch die fehlenden Kapitel aus der ersten Ausgabe lesen.

Beachten Sie, dass HtDP keine Programmierkenntnisse voraussetzt und sich an Schüler richtet. Aber lassen Sie sich davon nicht aufhalten: Es bedeutet nur, dass Sie wahrscheinlich einige frühe Kapitel schneller beenden können, aber ich glaube nicht, dass Sie sich langweilen werden.

Concrete Abstractions ist auch eine gute Lektüre entlang ähnlicher Adern. Wie bei HtDP werden keine Programmierkenntnisse vorausgesetzt.

Ein weiteres Buch, das Sie vielleicht erwähnt hören, ist Struktur und Interpretation von Computerprogrammen, auch bekannt als SICP. Es ist eines der größten Programmierbücher, die jemals geschrieben wurden, und es setzt wiederum keine Programmierkenntnisse voraus.

Es ist jedoch darauf ausgerichtet, Neulinge zu vervollständigen, die am MIT studieren . Und so, während es keine Programmierkenntnisse übernimmt, ist es nicht übernehmen ziemlich viel Domain Wissen, zB in den Bereichen Elektrotechnik, Physik und Mathematik. Hinweis: Diese haben nichts mit den gelehrten Konzepten zu tun. Sie werden nur benötigt, um die Übungen und Beispiele zu verstehen . Daher ist es möglicherweise besser, zuerst HtDP oder Concrete Abstractions und dann SICP zu lesen.

Jörg W Mittag
quelle
1
Ich habe noch nie von einer Programmiersprache ohne ifAussage oder irgendeine Art von gehört loop: Ohne sie wäre es nicht vollständig .
Monica wieder herstellen - M. Schröder
@ Martin Schröder: Es gibt Programmiersprachen ohne loopAnweisungen und sie sind vollständig.
Giorgio
@Giorgio: Zum Beispiel? AFAIK du brauchst eine Art Loop / goto.
Monica wieder herstellen - M. Schröder
2
@ MartinSchröder: Lambda Calculus ist Turing-vollständig (tatsächlich ist es die Sprache, für die dieser Begriff erfunden wurde) und hat nur Funktionsabstraktion und Funktionsanwendung. Es gibt nicht einmal eine Rekursion, die Sie mit einem Fixpunktkombinator codieren müssen! Auf der anderen Seite: Es gibt viele Programmiersprachen, die nicht Turing-vollständig sind, wie SQL (vor 2003) oder subtiler C (Turing-Vollständigkeit erfordert unendlichen Speicherplatz, aber C garantiert, dass Sie die Adresse von allem und jedem übernehmen können Speichern Sie es in einer Variablen mit endlicher Größe.
Jörg W Mittag
2
@ MartinSchröder: Oder ein anderer Ansatz: Es gibt Programmiersprachen, in denen das Kompilieren des Programms den Compiler zwingen kann, schwierige Probleme zu lösen. In C # können Sie 3-SAT-Probleme als Überlastungsauflösungsprobleme codieren und vom Compiler lösen lassen, und in Haskell können Sie tatsächlich Probleme, die dem Halteproblem entsprechen, in das Typsystem codieren und vom Compiler lösen lassen. Sie scheinen sich "Programmiersprachen" als imperative Sprachen vorzustellen , aber es gibt viele nicht imperative Sprachen, die komplexe Berechnungen darstellen können.
Eric Lippert
5

Nun, Sie befinden sich nicht in einer einzigartigen Situation. Die meisten Bücher der Anfängerbücher in Programmiersprache konzentrieren sich eher auf die Grundbausteine ​​der Sprache, und das ist gut so. Wie auch immer, am Ende befinden wir uns in einer Situation, in der wir jedes einzelne Konstrukt gelernt haben, das die Sprache zu bieten hat, dies aber nicht anwenden können, um einige praktische Probleme zu lösen. Kurz gesagt, die Lücke zwischen Textbeispielen und praktischen Programmen kann nur geschlossen werden, wenn Sie versuchen, mit dem Code zu spielen (wie Telastyn sagte). Hier ist, was ich im Allgemeinen mache, während ich einige neue Dinge lerne:

  1. Versuchen Sie beim Lernen aus dem Buch, einige reale Szenarien zu finden, in denen ein Codebeispiel / eine Code-Technik im Buch angewendet werden kann.
  2. Versuchen Sie, die im Buch angegebenen Beispielprogramme zu mischen, um etwas Größeres und Komplizierteres zu erstellen. Versuchen Sie danach, den Code zu minimieren und einen anderen Code zu schreiben, der das gleiche Ergebnis liefert.
  3. Google für praktische Projekte für die betreffende Sprache.
  4. Wenn Sie sicher sind, dass Sie das grundlegende Sprachelement gelernt haben, experimentieren Sie mit einem Framework Ihrer Wahl. Wählen Sie zum ersten Mal etwas, das eine einfachere Lernkurve hat.
  5. Achten Sie auf ein bestehendes Projekt und versuchen Sie, dessen Design zu studieren.
  6. Suchen Sie nach fortgeschrittenen Büchern, in denen Sie mehr über fortgeschrittenes Anwendungsdesign wie Anwendungsmuster, OO-Design und -Implementierung usw. erfahren.

Am Ende dreht sich alles um Praxis und Forschung, die Ihnen helfen, Ihre Programmierkenntnisse zu verbessern und Sie letztendlich zu einem Architekten vieler Wolkenkratzer zu machen.

mlakhara
quelle
2

Siehe dies für C #. Es ist sehr vollständig: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf Ich habe das vor einem halben Jahr selbst benutzt. Ich benutze den # Developer Compiler damit für die Beispiele. Ich kann Ihnen mit Java nicht viel helfen, weil ich es kaum jemals benutzt habe.

Wenn es um das Programmieren geht, merken viele Leute nicht, dass Sie normalerweise ein zusätzliches SDK oder Framework für das, was Sie entwerfen, verwenden. Erwarten Sie also nicht, sofort von Java oder C # zur Telefonprogrammierung zu wechseln, da Sie wahrscheinlich ein gutes Zwischenframework benötigen und die Lernkurven für diese genauso lästig sein können wie die Lernkurven für die Programmiersprachen selbst. Obwohl das von mir veröffentlichte C # -Tutorial nur C # behandelt, werden viele der darin enthaltenen Konzepte in anderen objektorientierten Sprachen wie Java angezeigt.

Bearbeiten: Das von Ihnen beschriebene Szenario ist leider der Weg, dem viele Tutorials folgen. Sie müssen einem solchen Tutorial nicht folgen, und wenn es gegen Ihre Lernmethoden funktioniert, ist es wahrscheinlich am besten, ein anderes zu versuchen (ich kenne keines, aber Google tut es wahrscheinlich). Um sicherzugehen, überprüfen Sie, ob der Autor des von Ihnen beschriebenen Buches den Code zeilenweise erklärt hat. Mach dir keine Sorgen darüber, wie schlau du bist, nur ein Wunderkind kann direkt von einem Buch zu einem funktionierenden Spiel wechseln. Denken Sie daran, Tutorials sind keineswegs das Standardmaß für Ihre Fähigkeiten. Entscheiden Sie sich also für das, was Sie am besten lehren, und lassen Sie sich nicht entmutigen!

person27
quelle
Tolle Antwort, und ich möchte hinzufügen, dass Sie sich für ein Projekt entscheiden sollten, das Sie durchführen möchten. Google Möglichkeiten zur Lösung der Probleme, die das Projekt darstellt. Sie werden viel lernen, indem Sie nach besseren Möglichkeiten suchen, um die Probleme zu lösen, mit denen Sie konfrontiert sind.
Mortalapeman
1

Ja, das sollte ausreichen, um super einfache Programme zu erstellen. An diesem Punkt versuchen Sie, ein etwas komplexeres Programm zu erstellen, als Sie es in den Büchern getan haben. Wenn Sie etwas Bestimmtes tun müssen und selbst bei einigen Arbeiten nicht wissen, wie es geht, suchen Sie im Internet oder fragen einen Lehrer / Mentor. Dies führt zu erweiterten Funktionen (und ziemlich oft zu einer Sackgasse, da Sie unwissentlich etwas ausgewählt haben, das viel komplexer ist als das, was Sie tun können).

Kein Buch wird Ihnen beibringen, wie man Probleme löst.

Kein Buch wird erklären, wie man Programme entwirft - das geht mit Übung einher. Kein Buch wird Ihnen beibringen, wie man eine nicht triviale Anwendung macht - es gibt einfach zu viele Nuancen; Sie würden lernen, wie man diese Implementierung erstellt, nicht solche Dinge.

Der beste Weg, um an diesem Punkt zu lernen, ist zu versuchen. Mit dem Code herumspielen, um etwas zu erstellen. So wie Künstler oft anfangen, kleine Leckerbissen zu kritzeln, die immer raffinierter werden und gut aussehen, brauchen auch Programmierer diesen explorativen Fortschritt.

Telastyn
quelle
1
"Kein Buch wird erklären, wie man Programme entwirft" - Die Autoren von " Wie man Programme entwirft" könnten anderer Meinung sein :-)
Jörg W Mittag
1
@ JörgWMittag: Sie werden einige gängige Techniken und Demonstrationen typischer Programme haben, aber alles, was nicht trivial ist, erfordert ein hohes Maß an erlerntem menschlichem Urteilsvermögen, das ab 2013 immer noch nicht mechanisiert werden kann.
Whatsisname
1

Ich kann mich nicht wirklich erinnern, ob ich ein Buch verwendet habe, um in die Programmierung einzusteigen, aber ich denke, damals war es eher ein Syntax-Referenzhandbuch als ein Tutorial-Buch. Es brachte mir bei, was die Programmiersprache kann, aber nicht, wie man damit eine echte Anwendung erstellt.

Zum Glück gab es einige Beispiele in dem Buch, die ich eingegeben habe (ja, damals keine herunterladbaren Quellcode-Beispiele) und dann versucht habe, herauszufinden, wie es funktioniert. Das ist nicht der optimale Weg, um Programmieren zu lernen, aber für mich hat es damals Spaß gemacht.

Was ich empfehlen würde, ist, dass Sie sich ein Ziel wie " Ich möchte eine Javascript-Anwendung erstellen, die einen Sprungkreis zeichnet " setzen und dann Ihr bereits erworbenes Wissen verwenden, um alles andere in der Sprache SDKs / Dokumentation und / oder hier zu starten und nachzuschlagen auf SO.

Das ist der Ansatz, den ich verwende, wenn ich versuche, in eine neue Sprache zu springen und meine ersten Schritte zu lernen. Die meisten Bücher, die ich in den letzten Tagen gelesen habe, waren nicht zufrieden, weil ich das gleiche Gefühl hatte , etwas Wichtiges zu verpassen . Glücklicherweise haben wir jetzt das Internet. Unabhängig davon, welche Sprache Sie lernen möchten, können Sie im Internet einen Beispielquellcode finden und diesen verwenden, um Ihr Lernen fortzusetzen.

Bearbeiten Natürlich sind einige allgemeinere Bücher, in denen Sie lernen, wie Sie eine Anwendung entwerfen oder welcher Prozess (SCRUM, XP, V-Modell) zu befolgen ist, eine gute Ergänzung zu den reinen Sprachkenntnissen.

zusammenzucken
quelle
1

Ich stimme Jörg zu, dass Sie auch einige allgemeine Bücher über die Konzepte der Programmierung lesen sollten, anstatt zu diesem Zeitpunkt zu viele Details über eine bestimmte Sprache zu lernen. Das Buch Wie man Programme entwirft , wird in diesem Kurs als Referenz verwendet , was für Sie von Interesse sein könnte.

Andernfalls spricht ein anderes Tool, das andere nicht erwähnt haben , viel mit anderen Entwicklern . Ich erinnere mich, dass für mich eine der effektivsten Möglichkeiten zum Erlernen des Programmierens darin bestand, viele Stunden mit Kollegen oder anderen Programmierern über Aspekte der Programmierung, Programmiersprachen, Techniken oder konkrete Probleme zu diskutieren, mit denen ich in diesem bestimmten Moment konfrontiert war. Die mündliche Weitergabe von Wissen kann immer noch eines der effektivsten Mittel sein, um neue Fähigkeiten zu erlernen.

Giorgio
quelle
+1. Ich kenne Leute, die zu Konferenzen gehen, ohne ein einziges Gespräch zu führen. Sie gehen einfach dorthin, um auf den Fluren abzuhängen und Probleme mit völlig Fremden zu besprechen, nur um eine andere Sichtweise zu bekommen.
Jörg W Mittag
0

Ich würde vorschlagen, Open Source-Projekte zu finden und diese in persönliche Sandboxen umzuwandeln. Ändern Sie vorhandene Verhaltensweisen, fügen Sie neue Verhaltensweisen hinzu und löschen Sie auch einige. Spielen Sie herum, setzen Sie Ihre eigenen Ideen um und "Was wäre, wenn ich das versuchen würde".

Ich befürworte nicht, dass Sie ein anderes Open-Source-Projekt konvertieren und es für sich beanspruchen.

Ich sage, schauen Sie sich andere Arbeitsprojekte an, um sich selbst beizubringen, wie Sie zu den nächsten Schritten gelangen. Es stehen viele Websites mit OpenSource-Code zum Herunterladen zur Verfügung. Hier sind einige, die mir in den Sinn kommen: CodePlex CodeProject

Matt Raffel
quelle
-5

Das ist das Leben der Programmierer. Sie kennen keine Technologie, entwickeln aber eine „Hallo Welt“ und werden zum Experten. In Unternehmen (im wirklichen Leben) funktioniert es so. Viel Glück

user76655
quelle
2
Das ist keine sehr nützliche Antwort.
Svick