it-swarm-eu.dev

Ich kann immer noch nicht herausfinden, wie ich programmieren soll.

Ich habe viele Bücher für verschiedene Programmiersprachen, Java, Python, C usw. gelesen. Ich verstehe und kenne alle Grundlagen der Sprachen und verstehe Algorithmen und Datenstrukturen. (Entspricht beispielsweise zwei Jahren Informatikunterricht)

ABER ich kann immer noch nicht herausfinden, wie man ein Programm schreibt, das irgendetwas Nützliches tut.

Alle Programmierbücher zeigen Ihnen, wie man die Sprache schreibt, aber NICHT wie man sie benutzt! Die Programmierbeispiele sind alle sehr einfach, wie das Erstellen eines Kartenkatalogs für eine Bibliothek oder ein einfaches Spiel oder das Verwenden von Algorithmen usw. Sie zeigen Ihnen nicht, wie Sie komplexe Programme entwickeln, die tatsächlich etwas Nützliches bewirken!

Ich habe mir Open-Source-Programme auf SourceForge angesehen, aber sie machen für mich nicht viel Sinn. Jedes Programm enthält Hunderte von Dateien und Tausende von Codezeilen. Aber wie lerne ich das? In keinem Buch, das ich bei Amazon kaufen kann, gibt es die Werkzeuge, mit denen ich eines dieser Programme schreiben kann.

Wie geht es vom Lesen der Einführung zu Java oder Programmieren von Python oder C-Programmiersprache usw.) bis zur tatsächlichen Aussage, dass ich eine Idee für das X-Programm habe? über die Entwicklung?

Es scheint, dass das Schreiben eines Programms so viel mehr beinhaltet, als Sie in einem Buch oder in einer Klasse lernen können. Ich habe das Gefühl, dass da etwas ist.

Wie kann ich auf den richtigen Weg gebracht werden?

122
Mark K.

Das Erstellen komplexerer Programme erfordert Erfahrung. Als ich das erste Mal programmierte, dachte ich, dass es mir gut geht, wenn es mehr als 25 Zeilen lang ist (und ich musste die Bildlaufleiste verwenden). Jetzt schreibe ich jahrelang Hunderte von Zeilen pro Tag in derselben Projektanwendung.

Diese Seite könnte für Sie interessant sein. "Teach Yourself Programming in Ten Years" http://norvig.com/21-days.html

Übrigens: Es ist sehr schwer, ein Programm zu starten. Ein Schriftsteller könnte es "Schreibblockade" nennen. Stattdessen schlage ich vor, dass Sie anfangen, Code zu schreiben und ihn zu verbessern. Haben Sie keine Angst, große Abschnitte zu löschen, die nicht das tun, was Sie brauchen. Beginnen Sie erneut. Dieses Mal schreiben Sie mit einer besseren Vorstellung davon, was Sie tun. Fangen Sie noch einmal an und Sie werden feststellen, dass Sie nicht die Hälfte der Dinge brauchten, die Sie das letzte Mal geschrieben haben. Wenn ein Autor eine Geschichte schreibt, dauert es lange, viel zu schreiben und neu zu schreiben usw. viele Rezensionen und Rückmeldungen und sie ist erst fertig, wenn sie veröffentlicht (veröffentlicht) werden muss.

93
Peter Lawrey

Ich war auch immer überwältigt von sehr großen Projekten, wie sie auf SourceForge oder GitHub zu finden sind. Ich fragte mich, wie jemand oder sogar ein Team verstehen konnte, was in 10 oder 100 Dateien mit Tausenden und Abertausenden von Codezeilen vor sich ging.

Niemand tut. Zumindest anfangs.

Projekte sind organische Dinge. Was als wirklich einfache Idee beginnt, kann schnell zu einem gewaltigen Stück Arbeit werden. Dies ist meiner Meinung nach der Hauptgrund für die iterative Entwicklung anstelle des klassischen Wasserfallansatzes.

Denken Sie daran, ein Auto zu bauen. Von außen sieht es zwar recht einfach aus, aber wenn Sie nur einen kleinen Einblick in das Thema geben, stellen Sie fest, dass eine Vielzahl von Überlegungen, Kompromissen und unschuldigen Fällen behandelt werden müssen.

Beispiel:

Bei einem halbgroßen Projekt fängt es oft klein an. "Ich möchte einen Cache-Server erstellen". Sie verbringen also ein paar Tage damit, sich zu hacken und zu etwas zu gelangen, das funktioniert, aber dramatisch verbessert werden könnte. Sie fügen also das Konzept des Einfädelns hinzu.

Dann treten aufgrund dieses Threadings Parallelitätsprobleme auf. Sie beheben dies, indem Sie zu gleichzeitigen Datenstrukturen wechseln.

Jetzt hat sich der Prozess verlangsamt. Sie ändern also die gleichzeitigen Datenstrukturen in reguläre, stellen jedoch Sperrmechanismen für die Synchronisation bereit.

Alles scheint gut zu laufen, außer dass Benutzer sich beschweren, dass Vorgänge nicht atomar sind und Daten beschädigt werden.

Sie fügen also einige klassische atomare Operationen wie Inkrementieren und Speichern hinzu. Dies funktioniert und Ihre Benutzer sind zufrieden. Aber jemand öffnet ein Ticket und fragt, ob es möglich ist, Listenoperationen durchzuführen.

Sie verbringen also ein oder zwei Wochen damit, diese Funktion zu erstellen. Ungefähr zu diesem Zeitpunkt beschließt ein Freund, Ihnen zu helfen. Sie arbeiten zusammen daran, vervollständigen und geben es frei.

Zwei Tickets geöffnet. Es gibt einen Fehler in der Listenverarbeitung, und es gibt einige seltene Fälle, die zum Stillstand kommen.

Ihr Freund arbeitet an dem Fehler bei der Listenverarbeitung, während Sie das Deadlocking angehen. Sie erkennen, dass ein ziemlich bedeutendes Umschreiben in atomare Operationen erfolgen muss.

... und so geht es.

Dies scheint ziemlich typisch für das Wachstum eines Projekts zu sein. Etwa 10 Dateien sind in ein paar Wochen auf 20 angewachsen. Es werden neue Funktionen hinzugefügt, die nicht vom ursprünglichen Plan abweichen. Es wurden komplizierte Fehlerkorrekturen hinzugefügt, die den Code unnatürlich vergrößern.

Mein Rat:

Lass dich nicht überwältigen. Wenn Sie eine Idee haben, implementieren Sie Funktionen. Wenn es sich lohnt, danach weiterzumachen, fügen Sie Stück für Stück hinzu. Lassen Sie Ihr Projekt natürlich wachsen.

70
Josh Smeaton

Selbst das größte Programm beginnt mit einer Idee und wird zeilenweise geschrieben.

Der beste (vielleicht einzige) Weg, um zu lernen, wie man reale Programme schreibt, besteht darin, damit zu beginnen. Wenn Sie auf Probleme stoßen, durchsuchen Sie das Internet oder fragen hier nach Lösungen für diese Probleme. Schließlich sammeln Sie Erfahrung und müssen weniger oft fragen.

Es gibt jedoch einige Dinge, die Sie von Anfang an beachten sollten:

  • Kaum eine große Anwendung wird heutzutage komplett von Grund auf neu geschrieben. Sie können in viel kürzerer Zeit viel mehr erledigen, wenn Sie vorhandene hochwertige Bibliotheken und Frameworks verwenden. Der Einstieg in diese Dinge fühlt sich oft ziemlich frustrierend und arbeitsintensiver an, als sie selbst zu erledigen, aber das ist fast nie wirklich wahr.
  • Wenn Ihre Programme größer werden, ist es sehr wichtig, sorgfältig darüber nachzudenken, wie Sie Ihr Programm strukturieren (wie Sie es entwerfen). Verbringen Sie einige Zeit damit und lesen Sie einige Bücher über Design (ich würde besonders "Clean Code" empfehlen) und Software-Engineering sowie über technische Grundlagen.
28

Sie sprechen von mehr Software-Engineering als von Programmierung. Es ist ein bisschen Architektur, ein bisschen "Best Practices" und "Design Patterns", ein bisschen Zusammenarbeit mit anderen. Es gibt zwar Bücher, die helfen können, aber das meiste davon stammt aus Erfahrung. Niemand fängt an Schreiben Sie beispielsweise Microsoft Word.

Denken Sie an ein großes, "echtes" Programm, das Sie schreiben möchten. Denken Sie nun an die verschiedenen Teile, die Sie bauen müssen, damit es so funktioniert, wie Sie es möchten. In einem modernen Ego-Spiel benötigen Sie beispielsweise eine 3D-Grafik-Engine, eine KI ohne Spielercharakter, ein Musik-/Sound-Modul, eine Physik-Engine und ein Top-Level-Modul, das die Spielregeln durchsetzt (weiß die "Karte", wie die verschiedenen Charaktere interagieren usw.). Und dann gibt es das Artwork- und Charakter-Design und die Musik, von denen keiner Code ist, sondern die für das vollständige Spiel notwendig sind.

Nun: Welche davon werden Sie selbst bauen und welche werden Sie woanders bekommen? Die meisten großen Softwareprojekte sind nicht von Grund auf neu programmiert. Vielleicht verwenden Sie eine handelsübliche 3D-Engine und ein Musik-/Soundmodul und programmieren nur die Dinge, die Ihr Spiel einzigartig machen. OK, Sie müssen also herausfinden, welche Module von Drittanbietern Sie verwenden werden, was Faktoren wie Kosten, Sprachen, mit denen sie arbeiten, welche Funktionen sie haben, wie ihre API gestaltet ist (dh wie vollständig sie ist) ist, wie gut es zu Ihrem persönlichen Programmierstil passt usw.). Vielleicht schreiben Sie "Proofs of Concept" oder testen Programme mit einem oder zwei Kandidaten für die verschiedenen Module von Drittanbietern, um sicherzustellen, dass sie alle erforderlichen Aufgaben ausführen und für Sie einfach zu verwenden sind.

Auch der Code, den Sie selbst schreiben möchten, ist möglicherweise zu groß, als dass Sie ihn allein in dem von Ihnen vorgesehenen Zeitrahmen ausführen könnten. Wie viele andere Programmierer benötigen Sie, um an dem Projekt zu arbeiten? Wie werden Sie den Job aufteilen? Wie werden die verschiedenen Module so gestaltet, dass sie alle zusammenpassen, obwohl sie von verschiedenen Personen geschrieben wurden? Wie werden Sie alle am selben Quellcode arbeiten, ohne die Änderungen der anderen zu löschen (Antwort: Versionskontrolle, die äußerst nützlich ist, wenn Sie alleine arbeiten, aber unverzichtbar, wenn Sie mit anderen arbeiten).

Sobald Sie herausgefunden haben, welche Module Sie intern schreiben möchten, führen Sie denselben Vorgang aus. Finden Sie heraus, welche Teile jedes Moduls zusammenpassen sollten, welche Sie selbst schreiben und welche Sie an anderer Stelle erhalten. Zerlegen Sie die Dinge so lange, bis jedes Stück klein genug ist, dass Sie es im Kopf behalten und sagen können: "Ja, das könnte ich schreiben!" Und dann mach es. Während Sie dies tun, werden Sie auf unvorhergesehene Hindernisse stoßen, wie die verschiedenen Teile Ihres Programms zusammenpassen. Diese werden frustrierend sein, aber sie bieten Ihnen die Möglichkeit, mehr über Ihr Handwerk zu erfahren, und sollten so gesehen werden.

Anfänglich können Sie nur sehr kleine Teile Ihres Programms - beispielsweise einzelne Funktionen - im Kopf behalten, und Sie müssen die Dinge viel aufschlüsseln, bevor Sie mit dem Codieren beginnen. Wenn Sie Erfahrung sammeln, werden Sie in Funktionen denken, anstatt über Funktionen nachdenken zu müssen und anfangen zu denken über Objekte. Und dann werden Sie in Objekte und über größere Module denken. Schließlich werden Sie in Modulen und über ganze, große, reale Programme denken.

Und dann werden Sie feststellen, dass Sie noch viel zu lernen haben ... aber so geht es. Wenn Sie als Programmierer jemals aufhören zu lernen, sind Sie veraltet und werden durch ein neueres Modell ersetzt.

Wie auch immer, hab keine Angst und mach dir keine Sorgen, wenn das ... schrecklich oder unmöglich klingt und du doch nicht wirklich Programmierer werden willst. Es ist nicht jedermanns Sache. Ich liebe Musik und Desserts, und ich kann ein wenig Tasten spielen und einige Gerichte kochen, aber ich bin nicht bereit, die Zeit zu investieren, die nötig ist, um ein großartiger Musiker oder Meisterkoch zu werden.

Wenn sich herausstellt, dass Sie kein Programmierer sein möchten, der große, echte Desktop-Anwendungen schreibt, gibt es andere Arten von Programmieraufträgen. Sie könnten beispielsweise ein eingebetteter Programmierer werden. Das Schreiben eingebetteter Programme ist mit bestimmten, interessanten Herausforderungen verbunden, und Sie leisten nützliche Arbeit. In der Regel sind die Programme jedoch eher kleiner als Desktopanwendungen. Oder Sie könnten Webanwendungen schreiben. Im Web ist es einfach, kleine Teile der Funktionalität zusammenzukleben, sodass Sie (z. B.) ein Webkommentarsystem schreiben können, und es wäre nützlich, selbst wenn es sich nicht um eine gesamte Webanwendung handelt. Es ist auch einfach, Inhalte im Web schrittweise zu verbessern, sodass Sie mit (z. B.) einem einfachen Webmail-Client beginnen und ihn im Laufe der Zeit zu etwas wie Google Mail weiterentwickeln können. (Tun Sie das aber nicht, denn dann konkurrieren Sie mit Google Mail.)

Wenn Sie überhaupt kein Programmierer sein möchten, aber dennoch mit Computern arbeiten möchten, können Sie möglicherweise in die IT oder in ein anderes technisches Gebiet einsteigen. In diesen Fällen ist es sehr nützlich, so viel Programmierung zu kennen, wie Sie bereits haben, da Ihre Kollegen möglicherweise nicht einmal so viel haben. Oder, wissen Sie, werden Sie Musiker, wenn das gefällt, denn (wie in den meisten Bereichen) geht es heute um Computer. Schreiben Sie kleine Programme, die Audio- oder MIDI -Dateien auf verschiedene clevere Arten manipulieren und Sie so zu einem besseren Musiker machen. Sie werden feststellen, dass alle Programmierkenntnisse, die Sie haben, in vielen Bereichen angewendet werden können, um Sie zu machen besser in deinem Job.

15
kindall

Sie werden nicht herausfinden, wie man programmiert, wenn Sie nicht vor einer echten Aufgabe stehen. Keine Theorie würde jemals eine einfache reale Aufgabe ersetzen. Bevor ich anfing, an R-W-Szenarien zu arbeiten, las ich naiv viele Bücher mit allen Beispielen, aber als ich vor einem echten Problem stand, konnte ich einfach nicht mein gesamtes theoretisches Wissen sammeln, um die Aufgabe abzuschließen. Wenn Sie Anfänger sind, würde ich Ihnen empfehlen, die Aufgaben von überall zu bekommen, wo Sie können. Denken Sie nicht, dass sie nutzlos sind, es sei denn, Sie haben sie gelöst. Versuchen Sie als ersten Schritt, Datenstrukturprobleme zu lösen, z. B. das Sortieren einer verknüpften Liste, das Durchführen von DFS, BFS für Bäume, Diagramme usw. Dies verbessert nicht nur Ihre Codierungsfähigkeiten, sondern vor allem auch Ihre Analyse- und Algo-Fähigkeiten , die mir vertrauen, ist ein wertvolles Wissen. Wenn Sie dann wissen, dass Sie mit Zeigern, Rekursionen, Referenzen usw. rocken können, versuchen Sie, einen einfachen linearen Gleichungslöser oder ähnliches zu implementieren.

Endeffekt. Es geht nur um Übung. Grabe einfach weiter und codiere, codiere, codiere.

9
Sorantis

Beginnen Sie mit Computerspielen, wie alle anderen auch. Ein gutes Spiel ist sowohl eine Programmier- als auch eine Designherausforderung, erfordert sorgfältiges Nachdenken über die interne Struktur und verwendet Systembibliotheken auf eine Weise, die viel lehrt, aber nicht dazu neigt, Dinge zu brechen und keinen "guten Grund mit gutem Ergebnis" zu erfordern. wie die eigentliche "nützliche" Software.

Die allgemeine Regel ist, dass nach dem Schreiben von genügend Sachen unvermeidlich eine Art Aufklärung stattfinden wird.

Ein guter Ausgangspunkt (wenn Sie Lust auf C haben) ist http://gamedev.net/ , insbesondere http://nehe.gamedev.net/ . Es gibt noch viele andere gute Punkte zu beginnen: D.

7

Genau wie beim Fahren oder Kochen lernen Sie, wie man programmiert. Übung ist unersetzlich.

Wenn Ihnen die Lehrbuchbeispiele bereits zu grundlegend sind, ist das großartig! Zeit, sich für etwas Komplexeres zu bewegen - und Sie können bereits einige herausfordernde Übungen für sich selbst herausfinden.

Oder, wenn Sie eine bestimmte Idee haben, brechen Sie sie in Stücke. Lösen Sie zuerst eine kleine Teilmenge des Problems. Dann erweitern. Wenn die Integration des neuen Codes in Ihren vorhandenen Code schwierig wird, gestalten Sie alles neu.

6

Sie sehen sich das ganze riesige Programm an und es scheint unmöglich. Aber das Ganze besteht aus kleinen dummen Programmen wie denen, die Sie sagen: "Tun Sie nichts Nützliches."

Was Sie brauchen, ist Erfahrung darin, große komplexe Aufgaben in kleine einfache Aufgaben zu zerlegen. Das ist die Wurzel aller Programmierung. Der Rest ist nur Semantik.

6
Satanicpuppy

Schreiben Sie ein Skript mit 200 Zeilen. Dann fang an, es zu verbessern.

Mit Featuritis haben Sie in kürzester Zeit 100 Quelldateien und mehrere hundert KLOC :)

5
richo

"Sie zeigen dir nicht, wie man komplexe Programme entwickelt, die tatsächlich etwas Nützliches bewirken!"

Ohne die Definition von "nützlich" können wir wirklich nicht viel tun, um Sie auf den "richtigen" Weg zu bringen.

Wir wissen nicht, wie Sie versagen oder was falsch läuft. Wir können nicht sagen, auf welcher Strecke du bist.

Irgendwie haben Sie eine Vorstellung im Kopf, dass Sie nicht kommunizieren.

Bei Software - Programmierung - geht es darum, eine Vorstellung von einer Sprache (Python, Java, Englisch, was auch immer) aus dem Kopf zu bekommen.

Ein wichtiger Schritt beim Programmieren (und Stellen von Fragen) ist das Definieren Ihrer Begriffe. Was meinst du mit "irgendetwas Nützliches tun"? Sei sehr klar, sehr vollständig und sehr präzise.

5
S.Lott

Diese Frage wird mir ständig gestellt, z. wie man anfängt. Es ist wirklich einfach. Hier ist eine Schritt für Schritt.

  1. Sich etwas einfallen lassen. Klingt so, als hättest du das schon.
  2. Vereinfachen Sie Ihre Idee bis ins Mark - etwas, von dem Sie glauben, dass Sie es in Angriff nehmen können
  3. Layouten Sie die Benutzeroberfläche auf einem Stück Papier oder einer Serviette.
  4. Versuchen Sie, die Benutzeroberfläche in Ihrer Entwicklungsumgebung zu gestalten.
  5. Wenn Sie auf Schwierigkeiten stoßen, Google, Google, Google, Fragen zum Stackoverflow stellen, verwenden Sie den lebenden Mist aus den Internetressourcen, um Hilfe zu erhalten. Bitten Sie Freunde und Mitarbeiter, die Programmierer sind, Ihnen in bestimmten Situationen zu helfen. Gehen Sie zurück zu Schritt 4.
  6. Schreiben Sie die Logik Ihrer Anwendung. Wenn Sie auf Schwierigkeiten stoßen, fahren Sie mit dem vorherigen Schritt fort und versuchen Sie es erneut.
  7. Bald genug wird bald etwas funktionieren.
5
AngryHacker

Erstellen Sie etwas Kleines. Es macht nichts, dass Ihr Programm das 1000. sein wird, das das tut.

Einige Ideen:

  • eine Uhr (zuerst digital, dann analog),
  • automatischer labirynth Schöpfer,
  • verzeichnisstrukturanzeige,
  • mp3 album lister,
  • usw.

Bei der Auswahl der Plattform sind Tools Teil der Aufgabe.

4
ern0

Ok, fangen wir mit Ihrer Idee für Programm X an, das etwas Nützliches tut, und lassen Sie es uns aufschlüsseln:

  • Verwenden Sie Papier-, Mind-Mapping- oder Diagrammsoftware, um den/die logischen Ablauf (e) des Programms zu gestalten.

  • Da Sie gerade erst anfangen, wählen Sie EINEN dieser Gegenstände (vorzugsweise am Anfang) und zerlegen Sie ihn noch weiter.

  • Schreiben Sie zuerst Ihren Code dafür und bauen Sie darauf auf

Muss Programm X eine Datei öffnen, bearbeiten und eine Ausgabedatei erstellen? Überprüfen Sie, ob Sie die Datei als ersten Schritt öffnen und wiedergeben können. Möchten Sie eine schöne Benutzeroberfläche? Erstellen Sie eines, mit dem Sie Ihr Dateiecho-Programm usw. ausführen können. Sie erstellen nicht nur Schritt für Schritt Code, den Sie in Ihrem komplexen Programm verwenden können, sondern bauen auch Ihre Sprachkenntnisse auf, da Sie Informationen suchen und nachschlagen müssen.

Wie das Sprichwort sagt - Gnome wurde nicht an einem Tag gebaut :-)

3
DKnight

(oben bereits in den Kommentaren beantwortet. Es wurde vorgeschlagen, dies als Antwort einzureichen, nachdem die Frage erneut geöffnet wurde.)

Sie beginnen mit einem Problem - etwas, das Sie lösen möchten - egal wie komplex Sie es finden. Dann nehmen Sie dieses Problem und schreiben es auf und beginnen, es in kleinere Probleme aufzuteilen. Sie brechen dann diese kleineren Probleme usw. auf, bis Sie etwas Primitives haben, das Sie bereits zu lösen wissen oder mit etwas Aufwand tun können. Sie beginnen, jedes dieser Teile zu codieren und organisieren sie in verschiedene Funktionen oder verschiedene Klassen usw.

Dann arbeiten Sie am nächsten Unterproblem. Während Sie an jedem Problem arbeiten, können Sie kleine Testfälle schreiben und sehen, wie Sie Fortschritte erzielen. Es wird immer Herausforderungen auf dem Weg geben, aber zu keinem Zeitpunkt wird es als etwas zu Kolossales angesehen, um es überhaupt anzugehen (womit es sich derzeit zu befassen scheint). Dies gilt für die Programmierung und viele Herausforderungen des Lebens. Der Schlüssel ist, es aufzubrechen.

Was zu tun ist - die Idee. Sie können versuchen, etwas Neues zu erfinden, aber Sie können auch etwas nehmen, für das Sie vielleicht eine Leidenschaft haben und das es bereits gibt, aber es einfach besser oder sogar anders machen. Ich schreibe gerade eine Gitarrentuner-App für Android in meiner Freizeit. Ich weiß, dass es bereits viele andere Gitarrentuner-Apps gibt, aber ich dachte, dies wäre ein lustiges und herausforderndes Projekt, also habe ich es genommen Anfangs schien es fast unmöglich, aber nachdem ich das Problem in kleinere Schritte unterteilt hatte, passt es tatsächlich gut zusammen. Teilen und erobern Sie und halten Sie an Ihren Zielen fest.

3
jeffp

Als Anfänger ist es am schwierigsten, realistische Ziele für das zu setzen, was eine Übung "Wie kann ich mich verbessern?" Auf Ihrem aktuellen Niveau enthalten sollte.

Daher würde ich vorschlagen, dass Sie das Lösen kleiner, vorgegebener Übungen üben, da die Fähigkeit, ein Programm nach einer bestimmten Spezifikation zu beenden, für jeden, der seinen Lebensunterhalt programmiert, eine sehr wertvolle Sache ist.

Ich würde vorschlagen, dass Sie sich http://projecteuler.net/ genauer ansehen, das viele Übungen und ein automatisiertes "Check Answer" -System enthält, mit dem Sie in Ihrem eigenen Tempo arbeiten können. Die Übungen sind gut formuliert, erfordern aber möglicherweise Nachdenken. Einige verlangen vielleicht sogar, dass Sie viel nachdenken, aber selbst wenn Sie diese nicht lösen, lernen Sie etwas Nützliches.

Der vollständige Wortlaut von Problem 1 lautet:

Wenn wir alle natürlichen Zahlen unter 10 auflisten, die Vielfache von 3 oder 5 sind, erhalten wir 3, 5, 6 und 9. Die Summe dieser Vielfachen beträgt 23.

Finden Sie die Summe aller Vielfachen von 3 oder 5 unter 1000.

Glaubst du, du könntest das lösen? Dann tu es!

3
user1249

Du brauchst reale Erfahrung !!. Kein Buch kann dir das beibringen!

Sie müssen lernen, wie man anderen Code liest, wie man ihn pflegt, wie man sie hasst (sowohl den Code als auch den Codierer), wie man ihn verbessert, wie man denkt, dass man es besser machen kann und einige Monate später laut schreit Ich werde töten, wer jemals diesen Code geschrieben hat !!! Nur um in der Quellversionskontrolle herauszufinden, dass du es warst!

Sie müssen verstehen, dass Bücher sehr spezifisch sind und manchmal für Leute, die bereits wissen, wie man Software entwickelt.

Daher würde ich Ihnen vorschlagen, einen Programmierjob zu finden. Bewerben Sie sich bei Bedarf für das grundlegendste Einstiegsniveau. Wahrscheinlich werden Sie nicht so viel verdienen, wie Sie denken, aber verdienen Sie ein paar Monate, um zu lernen, wie Software in der realen Welt entwickelt wird (und es ist nicht immer so perfekt und mit all den schönen Best Practices, die wir im Web lesen Oft ist die Codequalität sehr niedrig, je nachdem, wo Sie arbeiten, aber das ist Teil der Erfahrung.

Lesen Sie Ihre Bücher weiter, Sie werden feststellen, dass Sie jedes Jahr ein bisschen mehr (oder anders) das gleiche Thema verstehen, weil Sie es mit dem Glas Erfahrung sehen können.

Wenn Sie es schaffen, einen Job bei talentierten Entwicklern zu bekommen, ist das viel besser. Lernen Sie von ihnen, haben Sie keine Angst, Fehler zu machen.

Bis Sie Ihren ersten dringenden Live-Produktionsfehler beheben müssen, wissen Sie nicht, was ein Softwarefehler ist!

:) :)

3
OscarRyz

Erstens erfüllen Sie bereits die Voraussetzungen, indem Sie Unterricht nehmen, Referenzmaterial lesen, Open Source-Projekte betrachten und neugierig auf Fragen bleiben. Ich betone dies, weil ich persönlich auf ähnliche Fragen gestoßen bin, bevor die Person ihrerseits Beinarbeit geleistet hat (insbesondere Personen, die den Unterricht umgehen und hoffen, Abkürzungen zu nehmen). Jetzt denke ich an die Zeit zurück, als wir Labore über Turing-Maschinen hatten und wie ich damals das Gefühl hatte, dass es keine echte Programmierung war. Dies sind die Erfahrungen, die Sie machen werden, wenn jemand, der Abkürzungen nimmt, überspringt.

  • Melden Sie sich für studentische Projekte an. Ich habe mich mit (CSUA) einer Gruppe gleichgesinnter Studenten zusammengetan, um ein Spiel für den Karnevalsstand in meinem letzten Jahr zu bauen. Wenn Sie weiterhin Spaß daran haben und der Meinung sind, dass Sie Ihr Engagement ausweiten möchten, nutzen Sie die Ressourcen wirklich. Informieren Sie sich über Projekte, sprechen Sie mit Ihren Klassenkameraden, Ihren Professoren und machen Sie ein Praktikum.

  • Setzen Sie sich mit einem erfahrenen Programmierer zusammen. Es gab ungefähr drei Male in meiner Geschichte, als ich ein anderes Personenprogramm sah, das wirklich inspirierend war. Für sie schrieben sie nur Code und dachten laut nach. Keine Übertreibung, ich hatte das Gefühl, dass ich mehr davon hörte, ihnen zuzuhören, als ich es Jahre allein tun würde. Wenn Sie mehr begegnen, sind Sie so viel reicher. Wir haben das Glück, in einer Zeit zu sein, in der wir Videos ansehen, komplette Quell-Repositories einsehen und sofort in einem riesigen Online-Wissensspeicher suchen können. Es ist kein Ersatz für die persönliche Erfahrung, aber in Abwesenheit eines Mentors ist es eine dramatische Verbesserung gegenüber herkömmlichem Material. Das Betrachten von Rohcode durch andere allein führt jedoch möglicherweise zu nichts. Sie sollten etwas im Sinn haben und einen guten Debugger, um in die Logik einzusteigen. Einer meiner schönsten Momente war es, einen Quake-Mod zu machen, und es war nicht der Mod selbst, der etwas Denkwürdiges hatte. Es war Carmacks Logik im Spiel. Der Mod war nur ein Grund für mich einzutauchen.

  • Üben Sie das Erklären und Beantworten von Fragen Ihres Laborpartners. Helfen Sie freiwillig beim Unterrichten. Bilden Sie vielleicht eine Lerngruppe und fordern Sie jedes Mitglied auf, Experte für ein Klassenthema zu werden. Dann grillen Sie diese Person und lassen Sie sich von ihnen grillen. Wenn Sie gezwungen sind, Fragen zu beantworten, müssen Sie die Antworten selbst lernen. Wenn Sie anderen Konzepte klar erklären können, haben Sie Ihr eigenes Verständnis so weit bereichert, dass Sie es außerhalb eines Buches und Ihrer Gedanken vermitteln können.

  • Zuletzt haben Sie keine Angst davor, den harten Weg zu lernen, machen Sie sich die Hände schmutzig, machen Sie Fehler. Dies kann auch als Erfahrung bezeichnet werden. Führen Sie diese Übung als praktischeres Beispiel für Ihre Frage zu Projekten mit unhandlicher Codebasis und großer Anzahl von Dateien aus: Verwenden Sie eine einzelne Datei für Ihre Arbeit. Wirklich, ich scherze nicht. Diese Frage stellte sich auch bei meiner derzeitigen und früheren Firma. Hier bemerkte ein anderer Entwickler, dass ich es vorziehe, eine Datei für jede Klasse zu behalten. Dies schien ihm fremd zu sein, und in einer verwandten Angelegenheit mochte er auch keine Teilklassen. Eine Möglichkeit, um ein Gefühl dafür zu bekommen, wann oder wo es angebracht ist, Logik in separate Dateien aufzuteilen, besteht darin, mit nur einer einzigen Datei zu beginnen. Nachdem Sie die Ein-Datei-Regel in mehreren Projekten geübt haben, die hoffentlich immer komplexer werden, stoßen Sie möglicherweise auf ein Projekt, in dem Sie so viele Klassen in einer Datei haben, dass Sie Schwierigkeiten beim Lesen haben oder aufgrund der Versionskontrolle nur schwer zusammenarbeiten können. Zu diesem Zeitpunkt möchten Sie separate Dateien erstellen, um verschiedene Klassen zu gruppieren. Je nach Wunsch können Sie frühzeitig entscheiden, dass Ihnen alle Datenklassen in einer Datei gefallen. Andererseits können Sie später entscheiden, dass Sie separate Dateien auch zwischen Datenklassen als Gruppe mögen.

2
patterns

Teilen und erobern.

Es ist so einfach oder so schwer.

2
ocodo

Probieren Sie ein Open-Source-Projekt aus und prüfen Sie, ob Sie dazu passen. Laden Sie zunächst die Quelle herunter und prüfen Sie, ob Sie einige Tickets abholen können

2
Martijn

Wenn ich eine neue Sprache lernen möchte, versuche ich normalerweise, ein fraktales Diagramm zu implementieren. Auf diese Weise erhalten Sie sofort ein Feedback, ob es funktioniert und es ist sehr lohnend. Und es gibt viele Möglichkeiten, ein Fraktal zu verbessern. Die naive Implementierung von Mandelbrot ist höllisch langsam.

Es ist nicht sehr nützlich, aber man lernt viel und es ist schön anzusehen.

2
onemasse

Als ich anfing zu programmieren, liebte ich Computerspiele. Also fing ich an, meine eigenen Spiele zu schreiben, sobald ich irgendwelche Werkzeuge zur Hand hatte.

Natürlich war mein erstes Spiel ein Textabenteuer. Ebenso könnten Sie mit einem Quiz oder etwas anderem oder einer Art Ratespiel beginnen.

Sie könnten auch mit etwas beginnen, wie einem Spielautomaten (Sie brauchen die Animationen oder sogar Bilder nicht wirklich. Verwenden Sie einfach A = Apfel, L = Zitrone, S = Start, P = Pflaume usw.).

Auf diese Weise lernen Sie die Grundlagen des Umgangs mit Benutzereingaben, der Aufrechterhaltung des Spielstatus und der entsprechenden Generierung von Ausgaben.

Ich ging diese Straße ziemlich weit hinunter. Ich lernte nach und nach, wie man den Tastaturstatus oder die Maus ausliest und wie man Grafikcode verwendet. Ich habe mehr über die Sprache selbst gelernt (ich habe mit Pascal angefangen) und diese verwendet, um meine vorhandenen Spiele zu verbessern oder einfach etwas Neues zu starten.

Ich denke, Spiele sind wirklich großartig, um Programmieren zu lernen. Selbst mit wenig Erfahrung können Sie kleine Dinge erschaffen, die Ihnen kleine Momente des Stolzes geben. Weil du etwas erschaffst, macht das Spaß. Das Erstellen tatsächlicher Anwendungen ist ziemlich sinnlos, da es viel Arbeit erfordert, etwas zu erstellen, das tatsächlich nützlich ist, während es überraschend einfach ist, ein kleines Spiel zu erstellen, das süchtig macht.

Vielleicht möchten Sie tatsächlich eine Lernsprache verwenden (in meinem Fall war dies Pascal und im Nachhinein denke ich, dass es sich als ziemlich gute Wahl erwiesen hat). Viele von ihnen zielen speziell darauf ab, Spiele und dergleichen zu entwickeln.

Das Erstellen von Anwendungen ist mehr als nur das Erstellen von Algorithmen. Sie müssen Features entwerfen, Sie müssen Ihren Code in verschiedenen Ebenen und Modulen organisieren und strukturieren. Im Gegensatz zu den eher "atomaren" Problemen, die Sie an der Universität haben, lassen sich Anwendungen manchmal am besten schrittweise entwickeln. Sie beginnen mit etwas und fügen Dinge hinzu. Wenn Sie also bereits etwas zu Beginn haben (wie Sie es in einigen der im Wikipedia-Artikel aufgeführten Sprachen tun würden), sparen Sie sich viel Frust und beginnen sofort, etwas zu erstellen. (Ein Kollege von mir begann mit dem Programmieren, indem er Quake 2 Mods schrieb). Irgendwann werden Sie die Einschränkungen dieser benutzerfreundlichen Tools entdecken, aber bis dahin werden Sie viel mehr Einsicht und Verständnis haben. Wahrscheinlich genug, um die Funktionalität, die sie Ihnen gegeben haben, neu zu implementieren, um mit sich selbst zu beginnen.

2
back2dos

Beim Programmieren geht es um Problemlösung und Kommunikation, nicht darum, viel Code zu schreiben. Code ist nur eine Notwendigkeit, Sie sollten normalerweise versuchen, weniger Code zu schreiben, nicht mehr.

Wenn Sie nicht wissen, wo Sie anfangen sollen, haben Sie vielleicht einfach keine Probleme!

Schauen Sie sich Linux und andere Unix-ähnliche Systeme an: Sie bestehen alle aus vielen kleinen Anwendungen, die nur eines tun, aber gut machen .

Als ich ein Skript brauchte, um die 10 größten Dateien in einem Ordner auf meinem Computer zu finden, las ich keine Bücher. Ich habe nur gegoogelt und eine der vorhandenen Lösungen verwendet. Habe ich Code geschrieben? - Nein. Ist das Problem gelöst? - Ja. Ist dieses einzeilige Programm nützlich? - Oh Ja.

Programme mit Tausenden von Codezeilen werden normalerweise von mehr als einem Programmierer geschrieben. Sie können nicht ganze Betriebssysteme alleine schreiben und müssen es auch nicht. Sie verwenden auch oft Cheats wie Versionskontrolle und nit-Test .

2
kolobos

Im College gab es eine Klasse namens Programmierpraktikum, die diese Rampe im Grunde lehrte. Schon früh erhielten Sie eine Benutzeroberfläche für eine grundlegende Einkaufsanwendung und mussten das Backend codieren. Der letzte Monat war Tetris von Grund auf neu. Ich denke, dass ungefähr 50% der neuen Schüler (die die Klasse nicht zurückerobern) gescheitert sind, weil es unglaublich schwierig ist, von klein nach groß zu wechseln.

Ich würde eine oder mehrere der folgenden Vorschläge machen:

  • Laden Sie ein Open Source-Projekt herunter und fügen Sie etwas hinzu. Es muss nicht nützlich oder gut sein, aber Sie müssen sich die Struktur ansehen, die Ihnen ein Gefühl dafür gibt, wie groß das Projekt ist.

  • Entwerfen Sie einfach Ihr Endprojekt auf Papier mit Pfeilen für Abhängigkeiten. Wenn Sie eine Schlange herstellen, haben Sie möglicherweise Schlangenkopf, Schlangenschwanz, Futter, leeren Raum, Wand, Brett, aktuelle Richtung usw. Könnte Ihnen helfen, zu erkennen, ob Ihr Projekt viel größer ist als Sie denken.

  • Nehmen Sie ein Basisprojekt und machen Sie es größer und größer. Sie werden wahrscheinlich viel umgestalten und hoffentlich lernen Sie, wie Sie kleinere Projekte erstellen, die einfach hinzugefügt werden können.

  • Wenn Sie jemanden kennen, der Erfahrung hat, teilen Sie ihm Ihre Idee für ein Projekt mit und lassen Sie ihn Ihre Klassen + einige wichtige Methoden schreiben. Dies würde wahrscheinlich eine Stunde oder so dauern. Auf diese Weise können Sie einfach die Methoden ausfüllen und immer wissen, was Sie als Nächstes tun müssen.

Was auch immer Sie tun, Sie sollten wahrscheinlich ein grundlegendes MVC-Entwurfsmuster (Modell, Ansicht, Controller) verwenden. Ohne auf Details einzugehen, ordnen Sie Ihre Ansicht (UI) in 1+ Klassen, Ihren Controller (Eingabe, Ausgabe usw.) in 1+ Klassen und Ihr Modell (Logik, Daten, im Grunde alles andere) in mehrere Klassen ein. Es ist ein einfacher Weg, um eine grundlegende Organisation zu erreichen.

Denken Sie daran, dieser Schritt ist schwer. Es ist wahr, dass einige Leute einfach nicht programmieren können, aber Sie stecken wahrscheinlich gerade in dieser Phase fest. Viel Glück!

2
Mark

Überlegen Sie sich das kleinste gewünschte Programm und codieren Sie es. Erst neulich habe ich Code geschrieben, der automatisch jede Datei aus einer Liste von Dateien herunterlädt. Das war eigentlich der einfache Teil. Die Stunde wurde hauptsächlich damit verbracht, die GUI zu erstellen, Einstellungen und kleine einfache Dinge wie diese zu laden und zu speichern. Die GUI ist ein Zeitvakuum.

Außerdem schlage ich vor, eine Sprache mit einer riesigen Bibliothek zu verwenden (es spielt keine Rolle, ob sie portabel ist oder nicht). Und eine statisch kompilierte Sprache, wenn Sie anfangen (was bedeutet, dass kein Ruby , Python oder JavaScript). Ich mag .NET mit der Sprache C # . Sie können Boo mit SharpDevelop versuchen oder C # oder VB.NET mit verwenden Visual Studio Express . Ich mag Visual Studio, weil ich ein Power-User bin und Dinge wie Strg + -, Strg + [ Strg + ',' verwende. Aber alles mit Haltepunkten und dem Callstack ist gut. Der einzige Grund, warum ich das Debuggen von JavaScript-Code ertragen kann, ist, dass Firebug diese hat (zusammen mit einem sofortigen Fenster und einer Uhr).

1
user2528

Ich bin in einem ZX Spectrum Spiel zu viel gestorben, also war der einzige Weg, mehr Leben hinzuzufügen. Ich hatte ein Buch, in dem beschrieben wurde, welchen Code und wo ich ändern muss, also war es ziemlich einfach. Dann habe ich herausgefunden, wie man Munition hinzufügt (leider wird das Spiel danach sinnlos).

Aus meiner Sicht ist der beste Weg zu lernen, kleinere und einfache Ziele zu erreichen. Für mich war es die Änderung des vorhandenen Codes. Wenn Sie mit jedem Programm, das Sie treffen, zufrieden sind, ist das Programmieren vielleicht nichts für Sie?

Ich denke, Ihr Problem kommt von: 1. dem Konflikt zwischen Theorie und Praxis und auch, dass ... 2. ... Sie erkennen müssen, dass Ihr Code vom Code anderer ausgeführt wird. 3. Sie können nichts codieren, wenn Sie keine Ahnung haben, was Sie machen könnten. 4. Sie kennen die Hälfte der Schwierigkeit

  1. Eine Sprache theoretisch zu kennen bedeutet nicht, dass Sie sie "sprechen": Das ist der Unterschied zwischen Englisch lesen und sprechen. Auch die große Anzahl verschiedener Tools zum Kompilieren, Verknüpfen und Bearbeiten eines Quellcodes wird Ihnen den Kopf verdrehen.

  2. wenn Sie lernen, wie man programmiert, meistens, wenn ein Terminal zum Eingeben/Ausgeben von Text verwendet wird, da dies die einfachste Art ist, mit dem Programmieren umzugehen. Tatsächlich verwenden Programmierer Bibliotheken (wie Qt), Frameworks (Django, denke ich) und anderen Verknüpfungscode, um produktiv zu sein. Wenn Sie der Meinung sind, dass Sie Ihr eigenes Rad schreiben können, erfinden Sie es nicht neu und lesen Sie Bücher über Compiler-Design und Kernel-Design. Darin gibt es viel zu lernen: Vielleicht finden Sie es dumm, Apps zu entwickeln, die nicht viel erfordern der Technik.

  3. Erfinde etwas ! Natürlich können Sie einen Texteditor, ein Spiel usw. erstellen. Die Sache ist, dass Sie diese nicht ausführen, wenn Sie keinen Grund dafür sehen: Dieses Programm ist für Sie nutzlos, wenn alles, woran Sie denken, bereits erstellt wurde . Persönlich träume ich immer noch davon, ein Facebook-ähnliches dezentrales P2P-Protokoll mit Chat, Offline-Nachrichten usw. in einem Code codieren zu können, damit es mit drahtlos eingebetteten Geräten verwendet werden kann. Das Internet bietet viele Möglichkeiten, vergessen Sie nicht, darüber nachzudenken.

  4. Tatsächlich ist die Theorie zum Üben notwendig, aber das ist noch nicht alles: Algorithmen und Techniken sind nicht Teil der Programmiertheorie, es gibt viele Paradigmen und andere "Standard" -Methoden, um Ihren Code zu erstellen: Entwurfsmuster, verknüpfte Listen, etc etc. etc.

1
jokoon

"Out of Box Denken"

Hey, ich habe mir vor fünf Jahren die gleichen Fragen gestellt (zu diesem Zeitpunkt hatte ich noch nichts von Stack Exchange gehört). Jedes Mal Programmieren zu studieren macht keinen Sinn, Sie müssen etwas entwickeln.

Bestimmen Sie, was entwickelt werden soll

1) Kleine Ziele machen kleine und erfolgreiche erste Projekte

2) Planen Sie so, dass Sie kleine Teile haben, die klar funktionieren und Ihnen Fortschritte zeigen

3) Finden Sie etwas, das Sie leidenschaftlich mögen, das aber noch klein genug ist, um erreichbar zu sein

  • Ich baue persönliche Alben - die ich in Flash erworben habe, Photoshop
  • Ich baue meine eigenen persönlichen Blogs - habe etwas PHP Wissen) gewonnen
  • Gekaufte Internet-Domains - einige Serverkenntnisse erworben

  • Ich finde viele freiberufliche Projekte - ich habe ihre Anforderungen gelesen und versucht, meine eigenen Anwendungen zu erstellen, ich habe viel Wissen über Programmierung, Dokumentation usw. erworben.

1
RSK

ABER ich kann immer noch nicht herausfinden, wie man ein Programm schreibt, das irgendetwas Nützliches tut.

Ja wirklich?? Nun, ich nehme an, wenn Sie nur die Bücher gelesen haben und keine Beispielprogramme usw. gemacht haben, dann ist das möglich, scheint aber etwas übertrieben.

Wie auch immer, der beste Rat ist, einfach an einer Idee zu arbeiten, an der Sie interessiert sind. Wenn Sie ein echtes Interesse haben, kann sie klein anfangen und wachsen und wachsen. Das passiert normalerweise bei mir. Ich könnte ein Projekt nur zum Spaß starten und denke, es wird nur ein kleines Testprojekt sein. Dann füge ich hinzu und füge hinzu ....

1
user11432

Ich denke, ein Teil des Problems ist, dass Sie beim Lesen von Programmierbüchern nur die Sprache lernen. Sie erwähnen nicht, dass Sie zum Programmieren von fast allem Zugriff auf Programmierbibliotheken und SDKS usw. benötigen. Es reicht leider nicht aus, nur die Sprache zu kennen.

1
David-S

Ein weiteres Problem ist, dass Sie eine andere Programmiersprache benötigen, je nachdem, was Sie programmieren möchten.

Wenn Sie eine Windows-Anwendung programmieren möchten, die ein Microsoft-Produkt erweitert, müssen Sie .NET C # oder VB.NET oder VBScript verwenden. Wenn Sie ein iPhone programmieren möchten, müssen Sie Objective-C verwenden, Java für Android, Silverlight für Windows Mobile, möglicherweise Java für Finanzanwendungen usw.).

Es ist nicht so, dass Sie eine Sprache lernen und dann alles programmieren können, was Sie wollen ...

1
David-S

Sie müssen keine gute Idee haben, um etwas zu programmieren. Ich würde mit dem einfachen Teil beginnen. Wie ein Programm, das Sie bereits verwenden. Versuchen Sie, etwas zu machen, von dem Sie bereits wissen, wie es funktioniert. Stellt sich Ihren Problemen, damit Sie es schneller lernen. Sobald Sie mehr Erfahrung haben, werden Sie einige gute Ideen für Programme haben, die Ihnen das Leben beim Programmieren erleichtern, oder einfach ein gutes Programm, um etwas zu tun, woran Sie noch nie gedacht haben. Ich programmiere seit fast einem Jahr Java und seit ein paar Jahren in anderen Sprachen. Es hat einige Zeit gedauert, bis ich anfing, das zu tun, was ich wirklich wollte. Ich habe gerade angefangen, meine eigenen Sachen zu machen. Dank StackOverflow wusste ich vorher nichts davon.

1
pringlesinn

Vielleicht könnten Sie eine Skriptsprache auswählen, um zu beginnen. Ich begann mit der C-Sprache zu programmieren. Meiner Meinung nach ist die C-Sprache leicht zu erlernen, aber es wird viel mehr Zeit benötigt, um den Algorithmus und etwas über das Betriebssystem zu kennen. Und jedes Mal, wenn ich einfach mit einer DOS-GUI trainiere, bin ich depressiv.

Und später habe ich eine Skriptsprache namens ActionScript ausgewählt, um zu beginnen. Die Skriptsprache ist eine objektorientierte Sprache und kann das Verhalten eines Flash-Films steuern. Die Skriptsprache ist einfach für Arbeiten, die sich in der Nähe der Problemdomäne befinden., genau wie trace("HelloWorld") in ActionScript, um eine Zeichenfolge auszugeben. Und es hat eine leistungsstarke IDE, mit der Sie überprüfen können, ob Ihr Programm gut läuft.

In einem Wort kann eine Skriptsprache eine gute Wahl sein, wenn Sie mit dem Programmieren auf schnelle Weise beginnen möchten :-)

1
Tomyail

Haben Sie Code Complete 2 und The Pragmatic Programmer gelesen?

Diese beiden Bücher haben mir viel mehr beigebracht als jeder Kurs, jedes Tutorial, jedes Buch oder Video.

Beim Programmieren geht es darum zu lernen, wie man mit einem bestimmten Satz von Werkzeugen etwas von Grund auf neu erstellt. Aber wenn Sie die Grundlagen nicht kennen, können Sie nichts tun.

1
Pablo

Es gibt also eine Menge Antworten, also vergib mir, wenn ich viel von dem wiederhole, was bereits gesagt wurde, aber hier sind meine 2 Cent.

Wählen Sie zuerst eine Idee aus. Jede Idee wird in Ordnung sein, etwas Einfaches wäre wahrscheinlich besser als groß. Projekte haben die Tendenz, in ihrem Umfang sehr schnell zu wachsen (manche nennen es Feature Creep).

Als nächstes machen Sie ein Skelett für das Projekt. Dies erfordert ein wenig Architektur- und Designwissen und Sie werden es wahrscheinlich falsch verstehen, wenn Sie es die ersten zehn Male versuchen - ich habe es getan. Legen Sie einfach eine anständige Dateistruktur und möglicherweise ein kleines Code-Skelett an, das die wichtigen Teile des Systems zeigt.

Speichern Sie das Skelett in Ihrem VCS (wählen Sie Ihr Gift mit diesem und halten Sie es fest, wenn es zu einem heiligen Krieg führt). Sobald Sie mit der Verwendung von VCS begonnen haben, ist es selbstverständlich, es ständig für kleine Änderungen zu verwenden. Starten Sie jedoch unbedingt.

Wählen Sie nun eine kleine, aber wichtige Funktion für das System aus und erstellen Sie sie. Machen Sie sich keine Sorgen, dass Sie sicherstellen, dass alles perfekt gekapselt ist und dass es das "beste" Design hat (das sich mit dem System weiterentwickelt). Holen Sie sich einfach etwas, das funktionieren wird. Wenn Sie die Tests regelmäßig durchführen, können Sie auch sicherstellen, dass Sie wissen, was passiert ist, wenn etwas kaputt geht.

Bauen Sie Ihr System auf. Dies wäre auch ein guter Zeitpunkt, um ein automatisiertes Build-System und eine kontinuierliche Integration zu erhalten. Wenn Sie nicht wissen, was sie sind, lernen Sie es entweder und versuchen Sie es oder fahren Sie einfach auf eigenes Risiko fort. so oder so weiterarbeiten.

Wählen Sie nun eine andere Funktion und wiederholen und wiederholen und wiederholen.

Wenn Sie denken, dass es gut funktioniert, zeigen Sie es einem Freund. Der Freund muss nicht wissen, wie man programmiert oder was das Programm tut. Zum einen fühlen Sie sich gut, wenn Sie es jemandem zeigen, und zum anderen wissen Sie genau, was das System tut.

Wenn Sie an einem Punkt angelangt sind, an dem Sie mit dem, was Sie gemacht haben, sehr sicher sind, veröffentlichen Sie es online und versuchen Sie, Feedback zu erhalten. Ein Repository-Hub oder das Sub-Reditt des Programmierers könnten Sie konstruktiv kritisieren. Versuchen Sie, einen CS/SE-Professor zu finden, und lassen Sie ihn sich das ansehen. Fragen Sie vielleicht einen professionellen Programmierer. Holen Sie sich einfach die Meinung eines anderen Programmierers.

Sobald Sie fertig sind (oder wahrscheinlich schon vorher), werden Sie feststellen, dass der Code, den Sie ursprünglich geschrieben haben, viel schlechter ist als der, den Sie kürzlich erstellt haben. Das ist ganz natürlich und passiert uns allen. Sie müssen jetzt ein neues Projekt finden und etwas Neues lernen - vielleicht eine neue Teststrategie oder die Verwendung der serviceorientierten Architektur.

1
Jonathan

Etwas, das helfen kann, ist, an ein einfaches Problem zu denken, das Sie täglich haben und bei dem etwas, das Sie mit Bleistift und Papier tun könnten, durch ein Programm ersetzt werden könnte.

Dies gibt Ihnen ein relativ einfaches Problem mit einer ziemlich bekannten Lösung, die nur einen Automatisierungsgrad benötigt. Beachten Sie, dass dies nicht das nächste MS Word/WordPad/NotePad sein muss. Nur etwas, das Ihr (einfaches) Problem löst.

Ein Problem, das ich bei der Arbeit mit einer neuen Sprache immer wieder neu implementiere, ist beispielsweise eine einfache Zeitnehmer-App. Die App wird verwendet, um abrechnungsfähige Stunden für verschiedene Projekte während eines Tages zu verfolgen. Ein ziemlich einfaches Programm mit vielen kleinen Fallstricken, z. B. wie Sie mitten am Tag mit Neustarts umgehen oder wie Sie Elemente zu Ihrer Liste hinzufügen/daraus entfernen.

1
Ken Henderson

Schreiben Sie eine Spezifikation. Was soll Ihr Programm tun? Die Bildschirme (wenn es sich um ein UI-basiertes Programm handelt), die Logik, die Eingabe/Ausgabe usw. Beschränken Sie den Umfang auf das, was Sie in angemessener Zeit (eine Woche? Einen Monat?) Tun können.

Dann baue es. Halten Sie sich an die Spezifikation und lassen Sie sie entsprechend den Anforderungen der Spezifikation funktionieren. Sicher, Sie werden auf Ablenkungen stoßen, sicher müssen Sie einige Nachforschungen anstellen, weil Sie noch nie zuvor mit einem bestimmten Problem konfrontiert waren, aber Sie werden etwas bauen, das Sie bauen wollten. Dies unterscheidet sich davon, etwas zu bauen, das man einfach bauen kann.

Wenn Sie fertig sind, überarbeiten Sie Ihren Code und versuchen Sie, ihn effizienter zu gestalten. Wenn Sie dann der Meinung sind, dass Ihr Programm noch nicht fertig ist, beginnen Sie von vorne, verbessern Sie die Spezifikation, verbessern Sie den Code und machen Sie weiter.

Denken Sie daran, dass die meisten kommerziellen Softwareprodukte einen Bedarf lösen. Es ist sehr wichtig, den Bedarf und die Lösung zur Erfüllung dieses Bedarfs zu definieren, bevor das Problem tatsächlich gelöst wird. Und wenn der Bedarf immer größer wird, wird auch Ihre Software im Laufe der Zeit wachsen!

1
Roopesh Shenoy

Ich habe Programmieren gelernt, weil ich weiß, was ich programmieren möchte.

Das Programmieren erfordert Fähigkeiten zur Problemlösung, die schwer zu erlernen sind. Versuchen Sie, etwas "Alltägliches" zu reproduzieren, wie ein Automatenprogramm, das Änderungen in Münzen berechnet, und auch eine Aufzugssimulation.

0
Ming-Tang

Die größte Herausforderung beim Erlernen des Programmierens besteht darin, etwas zu finden, das jemand für nützlich hält.

Mein größtes Problem beim Programmieren für mich war immer, Probleme zu erfinden, die gelöst werden müssen.

Ich begann Mitte der 1980er Jahre mit dem Programmieren, indem ich einen Kurs absolvierte und dann für eine Firma arbeitete, die mir sagte, was ich lösen sollte. Ihre Alternative besteht darin, das zu tun, was ich in den 1990er Jahren getan habe, als ich JavaScript lernen wollte - ich bin Communitys beigetreten (eine davon war der Start der Site Stack Overflow die Site mit Bindestrich - start das Downvoting ...), bei dem Leute Fragen stellten und mit meinen Vorschlägen zur Lösung des Problems kommentierten. Eine bestimmte Aufgabe mit einer bekannten Eingabe und Ausgabe zu haben, hat mir wirklich geholfen, mich darauf zu konzentrieren, die Antwort oder ähnliche Antworten zu finden und diese auf das vorliegende Problem anzuwenden. Nachdem ich einige Jahre lang Fragen beantwortet hatte, sprach ich fließend.

Ich mache jetzt das gleiche mit jQuery. Es würde mir schwer fallen, die jQuery-Syntax ohne spezifische Probleme zu lernen, die mit diesem Framework gelöst werden können.

0
mplungjan

"Das Geheimnis ist, dass es keine Geheimnisse gibt" - Kung Fu Panda. Keine Panik, wählen Sie eine Sprache und schreiben Sie etwas wie ein Tic Tac Toe-Spiel und fügen Sie immer wieder neue Funktionen hinzu. Sie haben erwähnt, dass Sie zu viele Bücher gelesen haben, aber haben Sie umgesetzt, was Sie lernen? Versuchen Sie, sich umzuschauen und herauszufinden, welches manuelle System Sie in die Automatisierung konvertieren können oder welches vorhandene Programm Sie überarbeiten können. Geduld und Vorstellungskraft sind der Schlüssel zum Erfolg beim Programmieren, obwohl ich kein großartiger Programmierer bin, aber ich versuche, was ich geteilt habe und wie es funktioniert. :) :)

0
CodeCracker

Denken Sie an etwas, das Sie nützlich finden würden, und versuchen Sie es zu machen. Ich meine etwas Vernünftiges, nicht Photoshop :-)

0
nih

Die einzige Möglichkeit, das Programmieren zu lernen, besteht darin, ... Programme zu schreiben.

0
user12062

Der Hauptunterschied zwischen erfolgreichen großen Anwendungen und akademischen Übungen besteht typischerweise darin, dass erstere entworfen gegen eine Reihe von Anforderungen sind. Wenn Sie einfach mit einer vagen Idee in Ihrem Kopf beginnen und anfangen, Code zu schreiben, ist es unwahrscheinlich, dass Sie weit kommen.

Also Programmierfähigkeit ist hier wahrscheinlich nicht das Problem; Was Sie wirklich brauchen, um weiterzukommen, ist Software-Engineering Fähigkeiten; d.h. die Fähigkeit, Projektanforderungen zu erfassen und zu spezifizieren und dann eine Softwarearchitektur und ein detailliertes Design zu entwerfen, um diese Anforderungen zu erfüllen - dies ist die Roadmap, die Sie während der gesamten Entwicklung auf dem richtigen Weg hält. Das heißt nicht, dass die Anforderungen und das Design vollständig sein müssen, bevor Sie mit dem Codieren beginnen (der Wasserfallmethode). Die inkrementelle Entwicklung ist ein flexiblerer Ansatz. Sie sollten jedoch eine Art Framework und eine Vorstellung davon haben, wie die Anwendungselemente interagieren und kommunizieren.

Darüber hinaus ist eine Anforderungsspezifikation und ein Anforderungsdesign mehr oder weniger wichtig, wenn die Projektentwicklung von mehr als einem einzelnen Entwickler implementiert werden soll (ein weiteres gemeinsames Merkmal großer Projekte).

Ein weiteres Merkmal erfolgreicher Großanwendungen ist eine starke Motivation zum Abschluss. Was Sie dazu motivieren würde, kann ich nicht sagen, aber in meinem Fall, in dem ich dafür bezahlt werde, schreibe ich selten mehr Software zum Spaß, aber dafür bezahlt zu werden, was Sie sonst auf jeden Fall kostenlos tun könnten, ist eine großartige Möglichkeit seinen Unterhalt verdienen.

0
Clifford

Einfach, versuchen Sie es besser zu machen als in Ihrem Buch geschrieben.

0
user12069

Ich habe festgestellt, dass etwas, das mir in diesem Bereich sehr zugute kam, sich mit Code befasste, den andere Leute geschrieben haben. Ich meine Code, den sie außerhalb der Schule geschrieben haben, da Schulaufgaben normalerweise nicht auf die reale Welt anwendbar sind.

0
THE DOCTOR

Hier finden Sie viele gute Antworten, aber lassen Sie uns dies noch hinzufügen.

Zunächst einmal keine Panik. Viele Leute haben das Programmieren in unterschiedlichem Maße gelernt. Sie werden sicher das Niveau finden, das zu Ihnen passt. Arbeite hart daran, ein ziemlich hohes Niveau zu erreichen, Schritt für Schritt.

Fangen Sie klein an. Ich erinnere mich an eine meiner ersten Anwendungen, es war im Grunde ein Frontend für einen MP3-Encoder. Nichts Besonderes, es wurde nur eine Befehlszeilen-App mit verschiedenen Parametern gestartet. Aber ich habe es genossen!

PS: Eine der nützlichsten Fähigkeiten ist, dass Sie die ganze Zeit üben sollten: wie man besser fragt. Wenn Sie wirklich gut fragen können, werden Sie die Antwort in kürzester Zeit finden.

0
Scorchio

Hast du das Schachspiel gespielt? Man kann Ihnen die Bewegungen beibringen, aber es ist Ihr eigenes Anliegen, sie nützlich zu machen. Sie können nicht aus einem Schachspiel lernen, das zwischen zwei Personen gespielt wird, anstatt sich selbst zu spielen. Ebenso hilft es nicht, aus einem einzelnen NÜTZLICHEN Projekt zu lernen, wie Sie sagten. Sie müssen sich mit Ihren eigenen Anforderungen befassen und daraus ein Projekt machen.

Jedes Projekt hat seine eigenen Anforderungen. Selten finden Sie ein Projekt, das alle Funktionen der Sprache verwendet. Daher konzentrieren sich die Bücher auf die Grundfunktionen, anstatt ein Projekt aufzunehmen und vorzulesen.

Um ehrlich zu sein, habe auch ich nach einem funktionierenden Beispiel für eine WPF-Anwendung gesucht, als ich es vor ein paar Monaten machen musste. Fand nichts und las dann aus den Büchern und dem Internet und brachte die Dinge ins Rollen.

Und das Letzte ist, dass diese bereits erstellten Anwendungen oder Projekte Sie verwirrter machen als je zuvor, da sie von Fachleuten erstellt werden, die ihre eigenen Stile und Optimierungen haben. Um dieses Level zu erreichen, müssen Sie alles andere vergessen und einfach mit dem Codieren beginnen. Später ist StackOverflow immer da, um Ihnen zu helfen.

0
Pankaj Upadhyay

Ja, es ist erstaunlich, wie viele "bewegliche Teile" an der Ausführung unserer Software/Hardware beteiligt sind. Dies liegt zum Teil daran, dass Probleme unglaublich komplex sind und in überschaubare Teile unterteilt werden müssen. Teilweise liegt es daran, dass Probleme unglaublich komplex sind und niemand weiß, was sie tun. :) Wir haben Dutzende von Programmiersprachen und Hunderte von Programmierframeworks und Bibliotheken. Alles ist schwarz und geschichtet. Sie können nichts Nützliches in nur einer Schicht dieses Chaos tun. Sie müssen die Einschränkungen und Macken mehrerer Ebenen kennen und beherrschen. Und alles selbst zu schreiben ist nahezu unmöglich. Einfache Dinge werden mit zunehmender Codebasis unvorstellbar schwierig.

0
AareP