Code-Grundlagen: Kostenlose praktische Lektionen für Anfänger

Published on June 27, 2018

Code-Grundlagen: Kostenlose praktische Lektionen für Anfänger

    Hallo Habr! Wir bei Hexlet haben dieses Jahr ein offenes und kostenloses Projekt für Neulinge ins Leben gerufen: code-basics.ru . Hierbei handelt es sich um interaktive Kurse mit praktischen Übungen für diejenigen, die noch nie programmiert haben. Wir vermitteln die Grundlagen der Programmierung und erläutern die Grundausstattung von Computern.


    Der vollständige PHP-Kurs und das erste JavaScript-Modul sind jetzt verfügbar. Auf die Annäherung von Racket und Python. Der gesamte Quellcode der Plattform und die Lektionen selbst - in Open Source.


    Heute möchte ich ein wenig über das Wesentliche von Code Basics, dessen Inneres und den technologischen Stack sprechen.



    Warum ist es überhaupt


    Die Hauptfrage lautet: "Warum noch die nächsten Grundkurse, ihre Million?" Leider sind die meisten verfügbaren Materialien eher Nachschlagewerke oder die nächsten Tutorials im Stil von „Schau mal, arbeit, cool, was?“.


    Während der Arbeit an den Grundausbildungsprogrammen von Hexlet stehen wir vor einem Problem: Wenn eine Person völlig von vorne anfängt und nicht weiß, welche Variablen und Funktionen dies sind, kann ein typischer Grundkurs oder ein typisches Tutorial ihr nicht nur helfen, sondern sogar schaden. Ein Anfänger wird sich leicht an die „Magie“ gewöhnen, an nicht die besten Codierungsstandards, an den Ansatz, sich an die Spezifität zu erinnern, anstatt Systeme zu verstehen.


    Auf den ersten Blick erinnert das Projekt vielleicht an die Codecademy, aber es gibt drei wichtige Unterschiede:


    1. Unterricht in russischer Sprache. Wir haben mit PHP angefangen, auch aus diesem Grund - es gab keine hochwertigen, interaktiven und kostenlosen Lektionen in Russisch, und die Sprache ist nach wie vor beliebt und wichtig in der Branche.


    2. Wir unterrichten nicht oberflächlich. Dies ist ein ewiges Dilemma - auf der einen Seite müssen wir eine Menge Dinge abdecken und uns für die Breite (und die „populären Wörter“) interessieren. Auf der anderen Seite folgen wir in Hekslet weiterhin unseren Grundsätzen, wie wichtig es ist, Systeme zu gründen und zu verstehen, und nicht Eigenschaften. An Beispielen ist es leichter zu verstehen:


    a) Wir betrachten Nebenwirkungen und Variabilität - dies ist unglaublich wichtig, aber fast niemand geht in Grundkursen auf diese Themen ein.


    b) Bei Strings ist es wichtig, über das eigentliche Codierungskonzept zu sprechen . Damit die Arbeit mit Symbolen nicht zu "Zauber und Zauberei" wird.


    c) Wenn klar wird, dass die Sprache es Ihnen erlaubt, seltsame Dinge zu tun 1 + ‘7’, ist es wichtig, den Schüler mit dem Tippen und insbesondere mit dem schwachen Tippen vertraut zu machen .


    d) Wenn die Basis fertiggestellt ist und mehrere verschiedene Teile gleichzeitig in derselben Codezeile erscheinen, ist es sehr wichtig, dass die Person sofort versteht, was ein Ausdruck ist und wie er sich von der Anweisung unterscheidet. Und wie Ausdrücke in Definitionen enthalten sein können .


    e) Wenn mit der Arbeit mit Funktionen begonnen wird, ist es sinnvoll, Ausdrücke weiterhin zu berücksichtigen, jedoch bereits im Kontext von Aufrufen, Rückgaben und Argumenten.


    Ich denke, Sie verstehen den Punkt. Wir Programmierer denken nicht viel über solche Dinge nach wie foo(a+b)oder return foo(x), aber für Anfänger sind solche Konstruktionen sehr oft um eine Größenordnung komplizierter als "Standard" foo(a)oder "Standard" return x. Und hier können Sie alle Einzelfälle für eine lange Zeit betrachten, aber es ist besser, das Wesentliche , das System der Grundregeln der Programmiersprachen, zu erklären .


    Der Inhalt wird nacheinander granuliert und zugeführt, wobei die Tiefe allmählich erhöht wird. Beispielsweise werden dieselben Funktionen und Ausdrücke in mehrere Lektionen unterteilt, in denen verschiedene Aspekte betrachtet und schrittweise in das Gesamtbild eingebunden werden.


    3. Kostenlos und online. Wir haben unter anderem Code-Basics gemacht, weil es keinen Platz gab, um Neulinge für unser Hauptprogramm „Profession PHP Developer“ vorzubereiten. Es gibt einfach keinen kostenlosen Online-Kurs! Genauer gesagt, jetzt gibt es :)



    Andere wichtige Merkmale:


    • Wir lernen, Funktionen richtig zu benennen und Kodierungsstandards zu befolgen.
    • Wir teilen unsere Erfahrungen und Best Practices.
    • In jeder Übung gibt es eine Lehrerentscheidung, die nach einer unabhängigen Entscheidung oder nach einer halben Stunde von Versuchen verfügbar ist :) Gleichzeitig können Sie Ihre Entscheidung mit der Entscheidung des Lehrers auf einer Seite vergleichen.
    • Jede Lektion kann mit anderen Schülern besprochen werden. Wir versuchen die Diskussion von den "Spoilern" zu säubern
    • Aufgaben sind rund um das Game of Thrones aufgebaut :) (siehe Bildschirm oben, zum Beispiel)

    Autorisierung, Zugriff auf die Übungen und Speicherung des Unterrichtsfortschritts, bisher nur über Github. Bei der Gelegenheit provozieren wir so schnell wie möglich Neulinge, um ein Konto bei Gietgab zu erstellen :)


    Unter der Haube


    Hekslet ist auf Schienen geschrieben. Wir haben vor drei Jahren (OMG, drei Jahre!) In dem Artikel " Unter der Haube des Hekslet-Bildungsprojekts " über Hexlets Eingeweide geschrieben und seitdem hat sich vieles geändert, aber im Grunde ist alles gleich: Rails, PostgreSQL, alles dreht sich auf AWS und teilweise auf Azure , wird von Docker aktiv genutzt, bereitgestellt und über Ansible orchestriert. Unter jeder Übung eines Benutzers wird ein Container angehoben, mit dem Sie Übungen mit nahezu beliebiger Komplexität ausführen können: mit Frameworks, Servern und Webzugriff.


    Code-Basics entschied sich zunächst für etwas Neues und Leichteres als Rails. Zum Beispiel nodejs + typescript + irgendeine Art von Microfreemvork. Aber vorzugsweise nicht weniger ausdrucksstark als Rails. Angesichts unserer Liebe zu Erlang fiel die Wahl natürlich auf Phoenix , zumal es lange Zeit juckte, Elixir auszuprobieren.


    Der Rahmen überraschte unerwartet. Trotz der deutlich geringeren Anzahl von Features ist es sehr solide gemacht. JavaScript-Integration, entwickelte Testinfrastruktur, exzellentes ORM (aber ungewöhnlich, daran muss man sich erst gewöhnen), viele Rail-Analoga (zum Beispiel Unterstützung für Slim oder Gon).


    Es gab sogar eine Sache, die deutlich besser gemacht wurde als in anderen Frameworks: die Erstellung einer Reihe von Middleware für bestimmte Routen oder eine Gruppe von Routen. Auch wenn Sie nicht mit Phoenix arbeiten, empfehlen wir Ihnen, sich mit der Pipeline vertraut zu machen .


    Und angesichts der Anwesenheit von Schauspielern (und beendeten Sendern in Phoenix) können wir definitiv sagen, dass Elixir Node JS in fast allen Situationen besiegt. Und wenn alle Dinge gleich sind, werden wir uns dafür entscheiden, den Phönix zu entwickeln.



    Verwenden Sie auf der Vorderseite React + Redux. Das Layout basiert wie alle unsere Sites (hexlet.io, guides.hexlet.io) auf Bootstrap 4. Als Editor für interaktive Übungen mit Monaco dient der zugrunde liegende VS-Code. Wir sind auch nach Monaco in Hexlet gewechselt.


    Infrastruktur und Bereitstellung sind Terraform, Ansible und eine Reihe von Makefiles mit Verknüpfungen für die beliebtesten Teams. Code Basics-Quellen sind auf Github verfügbar und wir akzeptieren Pull-Anfragen.


    Sami Unterricht und praktische Übungen - zu . Einschließlich akzeptieren wir Pull-Requests für die Übersetzung des Unterrichts ins Englische. Während eine begrenzte Anzahl von Englischunterricht ist verfügbar hier .


    Für wen ist Code Basics gedacht?


    • Anfänger ohne Erfahrung.
    • Anfänger, die in Grundlagenthemen „ein bisschen schwimmen“ und nicht ganz verstehen, wie Dinge funktionieren, die über einfache Beispiele aus Lehrbüchern hinausgehen.
    • Lehrer arbeiten mit Neulingen.

    Pläne


    Die folgenden Code-Basics-Kurse sind JavaScript, Racket und Python. Jetzt gibt es 63 Lektionen zu PHP und einige weitere werden in Kürze veröffentlicht: zu Bibliotheksfunktionen, zum Arbeiten mit Datum und Uhrzeit und Unicode. JavaScript hat das erste Modul und der Inhalt wird größtenteils PHP ähneln: alles von der Arithmetik bis zu Funktionen.


    Weitere Pläne zur Übersetzung ins Englische. Sie können dabei helfen :) Alle diese Code Basics-Kurse sind auch völlig kostenlos.


    Gerne beantworten wir Ihre Fragen in den Kommentaren. Danke!