Programmiersprache für Anfängerkurs
Michael Bieri
- programmiertechnik
Hallo
Nachstes Jahr werde ich zusammen mit einem Freund an unserer Schule im Freifach Informatik ein bisschen Lehrer spielen, da unsere "richtigen" Lehrer leider aktuelle Programmiersprachen nicht so drauf haben...
Mit welcher Programmiersprache bzw. welchem Themengebiet würdet ihr da anfangen? Wir sind ca 8 Leute mit teilweise wenig Java-Kenntnissen. Pro Woche haben wir 1 Stunde Zeit. Es ist aber ein Freifach und die Leute sollten daher motiviert sein und auch in der Freizeit bereit etwas zu machen.
Gruss
Michael
Hi!
Ich selbst habe mit Turbo Pascal in der Schule angefangen.
An eurer Stelle würde ich mit eine Programmiersprache anfangen, wo die Datentypen noch explizit angegeben werden müssen (also z.B. Java, C, Turbo Pascal).
Eine Erklärung zu den Datentypen ist unbedingt notwendig.
Später würde ich dann zu den Programmiersprachen überspringen, die die Datentypen intern verwalten (also z.B. JavaScript, PHP, ActionScript (in Flash) usw.).
Wenn ihr nicht unbedingt mit Datentypen anfangen wollt, würde ich mit JavaScript anfangen.
cu, Viel Spaß damit, ich hätte so etwas auch sehr gerne gemacht! :-D
Marc Reichelt || http://www.step2identity.com/
Moin!
Mit welcher Programmiersprache bzw. welchem Themengebiet würdet ihr da anfangen? Wir sind ca 8 Leute mit teilweise wenig Java-Kenntnissen. Pro Woche haben wir 1 Stunde Zeit. Es ist aber ein Freifach und die Leute sollten daher motiviert sein und auch in der Freizeit bereit etwas zu machen.
Python.
Wenn man den Ausführungen von "How to think like a computer scientist" (http://www.ibiblio.org/obp/thinkCSpy/) in Vorwort (http://www.ibiblio.org/obp/thinkCSpy/foreword.htm) und Einleitung (http://www.ibiblio.org/obp/thinkCSpy/preface.htm) glaubt, dann sind C++ und Java absolut ungeeignet, um Programmieren zu lernen, weil sie den Anfänger zuerst mit wahnsinnig vielen Formalismen belasten, die alle für ein simples "Hello World"-Programm notwendig sind, und außerdem ohnehin nicht so einfach zu erlernen sind. In Python kann man sich erst einmal auf die Programmierung an sich stürzen. Dinge wie Datentypen können später eingeführt werden - für den Anfang reicht, dass Variablen Werte haben können. Das kennt man aus der Mathematik, das ist einleuchtend. Und es ist in ganz vielen Hochsprachen auch nicht anders gelöst: Javascript, PHP... alle haben nur Variablennamen, die Typen werden implizit gewandelt, wenn es notwendig ist.
Ich muß aber dazu sagen, dass ich Python selbst noch nicht benutzt habe.
- Sven Rautenberg
Hallo,
ich würde lieber eine "richtige" Programmiersprache als eine Scriptsprache verwenden. Man sollte am Anfang Grundkonzepte wie Datentypen kapiert haben, sonst wird das später Probleme geben.
Ich würde mit einer der "klassischen Programmierkurssprachen" anfangen, und da Basic fürs Leben schädigt (Zitat meines ersten Informatikprofs.), Turbo Pascal mittlerweile etwas Staub angesetzt hat, bleiben Java und C.
Für C spricht, dass es von der Syntax her die Grundlage fast aller modernen Sprachen bildet, dafür ist es am Anfang vielleicht etwas trocken (Pointerarithmetik mit den üblichen Abstürzen, schöne Oberflächen bauen ist auch net so einfach).
Für Java spricht, dass man recht schnell an die GUI Programmierung kommt, und darauf sind am Anfang erstmal alle geil, allerdings stimmt es, dass beim prozeduralen Programmieren in Java die Objektorientiertheit der Sprache stört, und man fängt halt normalerweise prozedural an. Wenn Spaß im Vordergrund stehen soll, würde ich wahrscheinlich Java nehmen, und darauf achten, dass eine einfache IDE eingesetzt wird, die Pfad und Aufrufprobleme, die es am Anfang mit dem JDK geben kann erledigt (z.B. Kawa oder JCreator, JBuilder oder Eclipse wären schon wieder zu komplex). Ganz wichtig am Anfang ist noch, dass eine ordentliche Quelltextformatierung erlernt wird.
Gruss
Marko
Hallo Marko
Oder in Richtung Web, also HTML, später evtl. JavaScript? Die Leute möchten etwas lernen, was sie auch brauchen können bzw. was Spass macht, es ist ein Freifach, ohne Noten, ohne "höhere" Ziele.
Gruss
Michael
Hi
Oder in Richtung Web, also HTML, später evtl. JavaScript? Die Leute möchten etwas lernen, was sie auch brauchen können bzw. was Spass macht, es ist ein Freifach, ohne Noten, ohne "höhere" Ziele.
Aha. Wie erklärst du es dir dann, dass bei mir Informatik benotet wird, und die Notenspanne von 0 bis 14 Punkten geht?
Grüße aus Barsinghausen,
Fabian
Hallo Fabian
Aha. Wie erklärst du es dir dann, dass bei mir Informatik benotet wird, und die Notenspanne von 0 bis 14 Punkten geht?
Ja, und Michael benotet die Schüler dann ;-)
Schöne Grüße
Johannes
Hallo Michael
Oder in Richtung Web, also HTML, später evtl. JavaScript? Die Leute möchten etwas lernen, was sie auch brauchen können bzw. was Spass macht, es ist ein Freifach, ohne Noten, ohne "höhere" Ziele.
Ich denke, du solltest erst mal in Erfahrung bringen, welches Vorwissen deine "Schüler" mitbringen bzw. weshalb sie Programmieren lernen wollen.
Wenn die Mitglieder des Kurses schon alle HTML können und ihre Seiten dynamisch machen wollen sind JavaScript und PHP vielleicht eine gute Idee. Diese Scriptsprachen haben natürlich die Nachteile, dass es u.a. keine expliziten Typangaben für Variablen gibt und dass der Kompilationsprozess wegfällt.
IMHO ist es am wichtigsten die Grundlagen von Programmiersprachen, natürlich an einer Beispielssprache, zu vermitteln, da man mit diesem Vorwissen leichter andere Programmiersprachen erlernen kann.
Ich habe mit C angefangen zu programmieren und hab danach Java gelernt. C hat IMHO jedoch den Nachteil, dass man nicht so leicht grafische Benutzeroberflächen erstellen kann und es relativ komplexe Konstrukte gibt. Pointer-Arithmetik ist IMHO eher etwas für fortgeschrittene. Bei Java muss man natürlich Objektorientiert arbeiten was einige vielleicht am Anfang etwas durcheinander bringt. Da du jedoch sagst, dass ein paar Vorkenntnisse in Java haben wäre das vielleicht doch besser.
Sinnvoll ist es natürlich, eine Sprache zu nehmen, die du gut kannst.
Schöne Grüße
Johannes
Hallo!
ich würde lieber eine "richtige" Programmiersprache als eine Scriptsprache verwenden. Man sollte am Anfang Grundkonzepte wie Datentypen kapiert haben, sonst wird das später Probleme geben.
Das sehe ich überhaupt nicht so. In PHP bekommt auch auch was von Datentypen mit und wenn ich mal ein wenig was mit Java oder C++ mache sind das wirklich di geringsten Probleme, bzw. gar keine.
Ich sehe es auch genau wie Sven, das drum-herum bei Java und C++ ist gerade am Anfang extrem verwirrend, und ich wage zu behaupten wenn man eine Scriptsprache wie PHP, Python oder PERL gut kann dann versteht man dieses drum-herum viel eher da man Konzepte wie Funktionen, OOP schon kennengelernt hat.
Nur finde ich persönlich die Syntax von Python schrecklich, mag ich gar nicht, ich kenne die Syntax von PHP, PERL, Pytron, C, C++, Java, Javascript und VB, und ich muss sagen ich mag hier PHP am liebsten, vor allem für einfache Dinge.
Grüße
Andreas
Liebe (Mit-)Freizeit Pädagogen,
ich finde die Idee mit Python eigentlich ganz gut, denn
Wenn es unbedingt eine richtige Programmiersprache sein muß, würde ich persönlich zu C tendieren (bitte nicht Java, den dann kann man auch direkt C++ nehmen und hat nebenbei etwas anständiges gelernt).
Grüße,
Peter
Halli hallo,
völlige Zustimmung. Das betrifft zwar nicht Python, aber das Grundsätzliche Deiner Aussage.
Datentypen und Deklarationen können m. E. später immer noch behandelt werden, wie auch Klassen und Objekte. Wichtig ist erstmal beizubringen, was Entwickeln überhaupt heißt. Da geht es los mit einem Editor und dessen Zusammenhängen/dessen Aufbau, was die einzelnen Bestandteile bewirken, etc.
Gute Erfahrungen habe ich auch damit gemacht, mit Variablen (ohne Deklaration) und Schleifen einzusteigen, ohne die Teilnehmer zu überfordern.
Wichtig ist, daß die Teilnehmer greifbare Ergebnisse haben. Eine Schleife mit einer Message reicht da noch nicht aus. Da muß man schon ein einfach gestricktes Progrämmchen schreiben lassen, das (für die Teilnehmer) ein nachvollziehbares Ergebnis haben.
Ich kann deshalb erstmal nur VBA empfehlen - Excel haben viele Anwender auf dem Rechner und man kann damit viel erreichen.
Meine Standardaufgabenstellung für den allerersten Anfang ist: "Stellen Sie sich mal vor, Sie müssen mit einem Kollegen eine Excel-Tabelle verwalten. Sie kennen sich damit aus, aber Ihr Kollege hat es drauf, ständig irgendwelche Formeln zu löschen. Nun sorgen wir mal mit VBA dafür, daß relevante Inhalte bei jedem beliebigen Klick auf die Tabelle immer neu eingetragen werden."
Diese Aufgabenstellung hat viele Vorteile:
Viele Grüße
Jörg
Hallo Sven,
Wenn man den Ausführungen von "How to think like a
computer scientist"
(http://www.ibiblio.org/obp/thinkCSpy/) in Vorwort
(http://www.ibiblio.org/obp/thinkCSpy/foreword.htm)
und Einleitung
(http://www.ibiblio.org/obp/thinkCSpy/preface.htm)
glaubt, dann sind C++ und Java absolut ungeeignet, um
Programmieren zu lernen,
ACK.
weil sie den Anfänger zuerst mit wahnsinnig vielen
Formalismen belasten,
Das sehe ich etwas anders. Diese Formalismen sind absolut
notwendig, und ein Anfaenger hat nicht genug Wissen und
Disziplin, um diese Formalismen einzuhalten. Deshab halte ich
Wirthsche Sprachen fuer sehr sinnvoll.
Gruesse,
CK
Hallo Forum,
Das sehe ich etwas anders. Diese Formalismen sind absolut
notwendig, und ein Anfaenger hat nicht genug Wissen und
Disziplin, um diese Formalismen einzuhalten. Deshab halte ich
Wirthsche Sprachen fuer sehr sinnvoll.
Wenn Wirth, dann Oberon. [1] Diese Sprache kann in die Pascal-Familie eingeordnet werden und wurde speziell für den Lernprozess eines Anfängers optimiert.
Und das schöne ist, ein Betriebsystem wird auch gleich mitgeliefert ;-)
Die Einarbeitung mit Unix- u./o. Programmierkenntnissen dauert ca eine Woche.
Viel Spass
[1] http://www.oberon.ethz.ch/
Grüsse
Siramon,
ja der Penner aus Nr. 14
Hi,
Nachstes Jahr werde ich zusammen mit einem Freund an unserer Schule im Freifach Informatik ein bisschen Lehrer spielen, da unsere "richtigen" Lehrer leider aktuelle Programmiersprachen nicht so drauf haben...
Mit welcher Programmiersprache bzw. welchem Themengebiet würdet ihr da anfangen? Wir sind ca 8 Leute mit teilweise wenig Java-Kenntnissen. Pro Woche haben wir 1 Stunde Zeit. Es ist aber ein Freifach und die Leute sollten daher motiviert sein und auch in der Freizeit bereit etwas zu machen.
Ich würde Java empfehlen, weil:
1. Einige besitzen schon Vorkenntnisse, und können den anderen im Notfall helfen.
2. Java is eine moderne Programmiersprache.
3. Anhand von Java kann man den Umgang mit Datentypen lernen. In C z. B. sind Typumwandlungen möglich, die Programme fehlerhaft machen.
4. Objektorientierte Programmierung (OOP)
5. Leichte Implementierung der graphischen Schnittschtelle (GUI)
Ich würde erst einmal mit einem kleinen Programm anfangen, dann was zur Java-Philosophie sagen (aber nur kurz), dann erst mit der richtigen Programmierung beginnen. Natürlich nicht gleich die OOP.
class Zickenalarm
{
public static void main(String[] args)
{
// und hier kann man den Umgang mit Datentypen, Schleifen, etc. lernen ...
}
}
Achte auf saubren Code und (das ist jetzt einfach mal so meine Meinung), benutze _keine_ IDE, bei solch kleinen Programmen erweist sie sich eher als störend.
Mit freundlichen Grüßen
Dimitri Rettig
Moin!
Ich würde Java empfehlen, weil:
Bedenke: Es geht hier um _Anfänger_. Wenn ich mal von mir ausgehe, dann sehe ich folgende Probleme:
- Einige besitzen schon Vorkenntnisse, und können den anderen im Notfall helfen.
Es geht hier ohnehin um einen Kurs "Schüler mit guten Kenntnissen lehren Schülern mit wenig bis keinen Kenntnissen eine Programmiersprache - es gibt keinen 'echten Lehrer'."
- Java is eine moderne Programmiersprache.
Ob modern oder nicht ist für das Erlernen des Programmierens irrelevant. Auch alte Programmiersprachen sind Programmiersprachen.
- Anhand von Java kann man den Umgang mit Datentypen lernen. In C z. B. sind Typumwandlungen möglich, die Programme fehlerhaft machen.
Typenumwandlungen und Datentypen interessieren für die ersten Programmierschritte einfach Null. Das ist Wissen, was man später aneignen kann, wenn es die ersten Erfolgserlebnisse gegeben hat.
- Objektorientierte Programmierung (OOP)
Das ist mit der komplizierteste Programmieransatz, den man sich denken kann. Und den willst du gleich einem Anfänger vorsetzen?
- Leichte Implementierung der graphischen Schnittschtelle (GUI)
GUI ist auch eine Sache, die die Sache kompliziert macht. Zumal mit "GUI" und "Web" zwei Ansätze aufeinanderprallen, die man einem Anfänger nur schwer erklären kann. Bei GUI werden selbst erstellte Programmteile nur dann aktiv, wenn irgendeine User-Aktion stattfindet. Bei "Web" (nehmen wir mal PHP) muß man sich von vorne bis hinten komplett um den Programmablauf kümmern. Man kann nicht "onclick" etwas PHP-Code einbetten.
Allerdings: Auch der Web-Kontext ist für Anfänger erstmal nicht sonderlich geeignet. Es geht schließlich erstmal um Grundlagen: Verzweigungen mit IF, Schleifen mit FOR, WHILE, UNTIL etc., und natürlich der ganz grundsätzliche Ansatz, ein Problem in so kleine Schritte zu zerlegen, dass man überhaupt ein Programm schreiben kann.
All diese Dinge sind noch meilenweit von GUI oder WEB oder OOP oder sonstetwas entfernt - die würde ich deshalb nicht im entferntesten in einem Anfängerkurs erwähnen.
Was noch wichtig ist: Wenn einmal die Woche eine Stunde der Kurs ist, will man in der Zwischenzeit sicherlich mal selbst zuhause was ausprobieren. Also benötigt man eine frei erhältliche Programmierumgebung. Zwar kriegt man bei Java bei Sun das Riesenpaket für umsonst, aber dann brauchts, wenn ich meine kurzen Erlebnisse damit richtig erinnere, immer noch die Beherrschung der Kommandozeile. Das ist auch anfänger-abschreckend.
Ich würde erst einmal mit einem kleinen Programm anfangen, dann was zur Java-Philosophie sagen (aber nur kurz), dann erst mit der richtigen Programmierung beginnen. Natürlich nicht gleich die OOP.
Aha... sage ich ja.
- Sven Rautenberg
Halli hallo,
wenn man das erste Mal unterrichtet, hat man noch riesige Erwartungshaltungen - bevor dann die Ernüchterung eintritt. Es geht ja doch nicht so schnell, man, begreifen die miserabel, usw.
Nun erklärt mir doch mal als EDV-Neuling: Was ist eine Datei?
Dann erklärt mir als Fortgeschrittenem doch mal: Was ist eine Variable? Was ist eine Schleife? Wo muß ich dazu was schreiben?
Dann gleich mit Objektorientierung anfangen? ...
Wenn ich EDV-Neulinge habe, behandle ich die Hilfe nicht. Warum wohl?
1995 oder 1996 mußte ich mal bei einem neuen Kollegen hospitieren. Er stieg bei Anfängern ein, indem er Begriffe wie Terminal, HD, Floppy verwendete. Die Teilnehmer haben fast den Aufstand geprobt - warum wohl?
Viele Grüße
Jörg
Hi Michael,
Nachstes Jahr werde ich zusammen mit einem Freund an unserer Schule im Freifach Informatik ein bisschen Lehrer spielen, da unsere "richtigen" Lehrer leider aktuelle Programmiersprachen nicht so drauf haben...
Mit welcher Programmiersprache bzw. welchem Themengebiet würdet ihr da anfangen?
Was ist das Ziel der Aktion?
Möchtest Du den Leuten beibringen, was ein Programm ist? Dann: Je wirth'scher, desto besser.
Möchtest Du den Leuten etwas geben, das sie in ihre Bewerbungen schreiben können? Dann: C++ oder Java.
Pro Woche haben wir 1 Stunde Zeit. Es ist aber ein Freifach und die Leute sollten daher motiviert sein und auch in der Freizeit bereit etwas zu machen.
Wieviel Informatik-Wissen haben Deine Leute? Wissen die überhaupt, was ein Algorithmus ist? Haben sie eine Vorstellung, _warum_ Daten überhaupt gespeichert werden müssen?
Nimm Dir mal das typische Verständnisproblem hier im Forum, Client und Server nicht auseinanderhalten zu können ... so etwas zu vermitteln, halte ich für "Informatik".
"Programmieren" dagegen ist ein völlig anderes Thema. Damit würde ich allerdings so ganz ohne Informatik-Wissen gar nicht anfangen wollen, weil dann einfach die Grundlagen fehlen.
Um ein Programm selbst schreiben zu können - und sei es ein noch so primitives! - braucht der Programmierer _vorher_ erstens eine klar definierte Zielsetzung (woran es bei den typischen Forums-Fragen oft genug fehlt ...) und zweitens ein methodisches Vorgehen, beispielsweise bei der Abbildung der Realität in (ggf. einfache) Datentypen und Algorithmen.
Ich finde übrigens nicht, daß es die Anfänger stören sollte, wenn man zum Schreiben von "Hello, World" mehr als fünf Zeilen braucht.
Im Gegenteil: Ganz am Anfang sollte die Information vermittelt werden, daß beim Programmieren sehr wenig 'von allein' geht und fast alles vom Programmierer zumindest bedacht, wenn nicht gar selbst umgesetzt werden muß (sei es als eigener Code oder als Beachten einer Schnittstellenkonvention).
Insofern finde ich PASCAL mit seinen vielen verschiedenen, sprechenden reservierten Worten und einer klaren Trennung zwischen Konstanten, Typen und Variablen sowie den englischen Worten (statt kryptischer Klammern) für Blöcke und Kontrollanweisungen als Lehrsprache immer noch ausgezeichnet: Ein PASCAL-Programm kann jeder lesen, ohne dazu sonderlich viel PASCAL lernen zu müssen.
Aber ich vermute, ich würde an Deiner Stelle ein komplettes Semester Informatik lehren wollen, in dem keine einzige Zeile einer real existierenden Programmiersprache vorkommt.
Als ich Programmieren gelernt habe, bestanden die ersten Schritte erst mal daraus, in natürlicher Sprache "Wunsch-Befehle" zu verwenden (vorgegeben waren lediglich "Vergleiche" und "Schleifen", so ähnlich wie das "foreach" in Perl), um den Algorithmus-Begriff intensiv zu üben. Denn das ist die Art und Weise, wie man einen schönen Programmierstil entwickelt: Man wünscht sich die Funktionen so, daß man die Zuständigkeiten für verschiedene Aufgabengebiete logisch voneinander trennt, und anschließend implementiert man diese Funktionen dann eben (Top-Down-Entwurf).
Man darf dabei allerdings auch nichts Unmögliches verlangen - die einmal 'erfundenen' Funktionen müssen irgendwann zumindest als Machbarkeitsstudie tatsächlich implementiert und dann zu einem sinnvollen Ganzen zusammengesetzt werden (Bottom-Up-Entwurf).
Die Wahrheit liegt irgendwo dazwischen ... äh, Du siehst, ich brauche überhaupt keine Programmiersprache, um Informatik zu vermitteln. ;-)
Viele Grüße
Michael