Welche Progammiersprache wird denn heutzutage in der Schule im Fach Informatik verwendet?



  • Das ist der Grund warum mir die Beschränkung auf Programmiersprachen im Informatikunterricht nicht so recht schmeckt. Meist lehren die Lehrer den umgang mit dieser Programmiersprache ohne wirklich auf Basics einzugehen. D.H. die Leute wissen z.B. wie man Klassen in Java anlegt, wie man auf Klassenfunktionen zugreift, aber nicht was das wirklich für Sinn macht, warum man dies macht und was es für Vor-/Nachteile mit sich bringt. Solche Leute können stur eine Programmiersprache "runterbeten" ohne die Konzepte dahinter verstanden zu haben.

    breiter kleiner höher schrieb:

    Ob der einzelne Schüler da etwas von hat, naja.

    Naja das ist bei Schulfächern immer so. Aktuell hab ich auch nicht viel vom Biologie und Chemiunterricht meiner Mittelschule. Das ist Wissen was man mit aufnimmt. Nett zu wissen, für mich nicht Relevant, für andere dennoch wichtig. Daher ist es ja eine allgemeine Ausbildung. Genau deswegen sollten eher Basics als konkrete Programmiersprachen geschult werden. Hier ist es aber wieder das Problem das der Schüler Basics "Langweilig" findet. Lieber was konkretes machen will. Daher wird eine Programmiersprache gelehrt. Was wieder Spannend ist. Aber da nur das Programmieren der Sprache spannend ist, werden die Basics getrost ignoriert.. naja da beißt sich die Katze das Genick mitten ins Gesicht (Oder so ähnlich)



  • Solche Leute können stur eine Programmiersprache "runterbeten" ohne die Konzepte dahinter verstanden zu haben.

    Ja, ich versteh was du meinst. Aber um die Konzepte dahinter zu verstehen muss erstmal ein gewisser "Runterbet-Level" erreicht sein. Klar, die Schüler können auch einfach auswendig lernen "Unter Vererbung versteht man in der Informatik eine Modelierung die blablabla" aber das hängt dann irgendwie in der Luft...



  • breiter kleiner höher schrieb:

    Solche Leute können stur eine Programmiersprache "runterbeten" ohne die Konzepte dahinter verstanden zu haben.

    Ja, ich versteh was du meinst. Aber um die Konzepte dahinter zu verstehen muss erstmal ein gewisser "Runterbet-Level" erreicht sein. Klar, die Schüler können auch einfach auswendig lernen "Unter Vererbung versteht man in der Informatik eine Modelierung die blablabla" aber das hängt dann irgendwie in der Luft...

    Ja das sind dann die Basics, der Basics. Irgendwann muss den nutzer auch mal Beigebracht werden einen PC ein zu schalten und eine IDE zu starten 😉



  • Erst mal ein Praxisbericht von der "anderen Seite" (sprich Lehrersicht). Ich bin nicht der Lehrer (sondern Dipl.Inf. und Entwickler), sondern meine Frau (Mathe, Chemie, Physik Gymnasium - kein Info, sie hatte aber einige Info-Grundlagen-Vorlesungen und Prüfungen an der Uni belegt (Prakt.Info 1-4 für "Naturfreunde")).

    Es geht hier auch nicht um den offiziellen Informatik-Unterricht nach Lehrplan, sondern um eine AG für Mittelstufenschüler (7.-9. Klasse).

    Ziel war ein spielerischer Einstieg in die Programmierung. Wir haben uns dazu drei Plattformen ausgesucht:

    Der Hamster steht in der Tradition von der Logo Turtle, Karol dem Roboter, Alice, etc.

    Es wurde nur einfachste prozedurale Steuerungen realisiert (der Hamster kann in weiterführenden Projekten auch Nebenläufigkeit und OOP).

    Fazit: der Hamster macht die meisten Kinder neugierig und sie entwerfen erste primitive Algorithmen (Treppe, Körner suchen, Labyrinth erkunden, "Schreiben und Rechnen" mit Körnern...).

    Man lernt die grundlegenden, prozeduralen Programmstrukturen: Sequenz, Selektion, Iteration, Variablen, Prozeduren,...

    Allerdings hatten die Schüler immer wieder kleinere Probleme wegen syntaktischer Mängel. Auch finde ich z.B. die von C geerbe for-Schleife syntaktisch wenig gelungen. Pascal wäre sicher didaktisch besser geeignet.

    Die Hamster IDE ist recht einfach zu nutzen, da überschaubar. Es gibt einen kleinen Debugger. Allerdings kein Syntax-Highlighting. Ein Notepad++ mit angepasstem Highlighting sollte dann helfen, hat aber in der Praxis mehr Verwirrung gestiftet (Handhabung der Dateien, Workflow Editor->Hamster-IDE).

    -----------------------------------------

    Der Asuro Roboter ist dem Hamster funktional nicht unähnlich, aber halt echte Hardware. Der Atmal Microcontroler wird allerdings in C programmiert (GCC). Eine Library versteckt erstmal die Hardware-Details.

    Es hat sich rausgestellt, dass der Umgang mit C und Asuro, Programmers Notepad 2 und Notepad++ plus GCC Einbindung die Schüler, die gut mit dem Hamster klar kamen auch nicht sonderlich mehr gefordert hat.

    Was wirklich fehlte, waren mehr Asuros. Das einzige Exemplar hatte meine Frau selbst (privat) gekauft. Nur am Lehrer PC war der IR-Sender, um den Binärcode auf den Asuro zu übertragen.

    Schön wäre eine Asuro pro Schüler PC. Oder wenigsten ein Asuro Simulator mit Debugging Möglichkeit (ähnlich dem c't-Bot).

    --------------------------------------------

    Wer mit Java-Hamster und Asuro klar kam, für den waren auch grafische Spielereien in dem vereinfachten Java von Processing dann kein großes Problem.

    Man muss aber sagen, dass 90min pro Woche sehr wenig Zeit waren. Die Schüler waren auch wenig an theoretischen Grundlagen interessiert und wollten immer sofort loslegen. Einige wollten nebenbei immer im Web surfen und waren sauer, als meine Frau das unterbunden hat.

    Es sind einige Treffen ausgefallen oder waren wenig frequentiert, teils weil meine Frau arbeitsmäßig mit ihren Unterricht in drei "richtigen" Fächern überlastet war, teils weil die Schüler Stress wegen wichtigen Klassenarbeiten hatten.

    -------------------------------------------------

    Meine Frau hat dies während dem zweiten Referendariats-Jahr und dem ersten Jahr als "echte" Lehrerin ehrenamtlich gemacht. Von der Schulleitung wurde es weder unterstützt noch anerkannt. Mit Theater, Tanz und Musik AGs scheint man auf mehr Wohlwollen bei den Kollegen zu stossen.

    So musste sich meine Frau teilweise Kommentare anhören, dass solche "Technik-Spielereien" doch eher was "für kleine Chinesen" seien.

    Das ältere Kollegium und die "humanistisch orientierten" Kollegen tragen demonstrativ die Technik-Phobie vor sich her, auf die sie noch stolz sind (Philologen!).

    Ich glaube: Informatik die Spass macht, ist an den Gymnasien gar nicht gewollt. Die Kinder sollen schließlich alle später "schöngeistige" Dinge studieren und den Literatur-Nobel-Preis anstreben... Roboter programmieren hält sie davon ab und das braucht man bald nur noch in China...



  • Das Java Hamster Modell, wirkt meines Erachtens für Lehrinhalte Ideal. Dort wird Java einfach nur als Mittel zum Zweck eingesetzt, ohne das der Schüler direkt mit details zu überhäufen. Damit kann man gut eine gewisse Algorithmik lehren. Leider sind gehen bei solchen sachen dann Pointer, Speicherreservierungen, Referenzen etc unter. Das sind wieder Details, welche viele Programmiersprachen gemeinsam haben und gerade für das verstehen des, "Programmierens" für Prozeduralen/OOP Sprachen, sehr wichtig sind. Zusätzlich müssen Grundlagen geklärt werden was Speicherverwaltung und ähnliches angeht (Warum belegt zum Beispiel ein Zeiger auch Speicher, was ist das genau...) Aber gerade hier wird sich die Spreu vom Weizen trennen. Ggf sind solche sachen schon zu hoch gegriffen. Algoritmik ist ja leider nur ein kleiner Teil der Informatik.

    Aber die Ansätze die du geschrieben hast, sind weitaus besser als das was ich so kenne.



  • Ich selbst habe wie so viele Jungs meiner Generation das Programmieren als Autodidakt begonnen.

    Mitte/Ende der Achtziger mit 8Bit Homecomputer, bester Spaghetti Code im Basic-Interpreter (IF X GOTO 3540), etwas Assembler (Z80) bzw. Maschinencode (als Hex reingehackt im Maschinen-Monitor)...

    Dann kam der Amiga mit MS Amiga Basic (immerhin schon etwas strukturiert), GFA Basic (nicht so buggy wie MS AmiBasic, 10x schneller, mehr Befehle, Syntax-Erkennung und Code-Folding im Editor...). 68K Assembler, Systemprogrammierung, direkte HW-Programmierung (viele,viele bunte Copper-Listen, flitzende Blitter Objects, etc.), ...

    Aber wir wollen ja hier von der Schule und dem Informatik-Unterricht reden:

    In der Mittelstufe (9.Klasse?) war erstmal ITG angesagt (Informationstechnische Grundbildung). "Was ist ein Computer?" Gähn! "Wie bedient man MS-DOS?" Schnarch., "Was kann man mit Framemaker machen?" Schreiben, Tabellen, Textfenster per Cursortasten verschieben (hielt der Lehrer für gaaaaz toll).

    Die Freaks hatten alle Amiga, Atari ST, 286er mit GEM, C128 mit GEOS, manche noch Schneider CPC mit CP/M, etc. und haben sich nur gelangweilt.

    Die nicht Home-Computer-Freaks (also die meisten Mädels), hatten keinerlei Interesse und haben sich auch gelangweilt.

    Wirklich interressant fand ich nur die letzten Stunden: Einführung in die Programmierung mit Turbo-Pascal (V.3.x ???)

    War leider zu kurz, aber ich fand Pascal ok und die TP IDE super - um ehrlich zu sein: besser als GFA Basic.

    Ich habe mir dann immer wieder den Schlüssel zum PC Raum im Sekretariat ausgeliehen und etwas mit TP rumexperientiert.

    Zwar war die die Hardware öde (auf C= PC10-III (XT)) im Vergleich zum Amiga, aber trotzdem interessant genug.

    Mein Mathelehrer hat das mitbekommen und hat mir immer mal wieder einfache Programmieraufgaben aus dem Mathe-Bereich gegeben (Parabeln plotten, etc.)

    In der Oberstufe habe ich dann Informatik Grundkurs gewählt (Info LK gab es nicht) und der Info-Lehrer war auch mein neuer Mathe-LK Lehrer. Der alte Mathe-Lehrer wurde der Physik-LK Lehrer.

    Das ganze war dann erstmal ein etwas systematischerer Einstieg in die strukturierte Programmierung mit Pascal, etwas x86 Assembler und dann erste OOP Versuche mit TP 5.5 oder 6. Sowohl Info/Mathe Lehrer als auch mein alter Mathe und neuer Physik-LK Lehrer haben selbst hobbymäßig programmiert, vor allem halt Sachen für den Unterricht und die besseren Schüler (die Freaks) dazu angetrieben, auch Spielereien aus dem Mathe/Physik - Bereich zu versuchen (freiwillig).

    Am Ende hatte ich so Sachen wie Schwingungs-Interferenzen, Magnetfelder visualisieren, Digitalschaltungen editieren/simulieren (allerdings in GFA auf dem Amiga), eine VGA-Grafik-Unit für TP mit viel Inline-Assembler und ein Formelparser mit Funktionsplotter geschrieben.

    Klar war der offizielle Info-Unterricht nach Lehrplan manchmal öde. Ich habe immer nebenbei an privaten Projekten rumgehackt - was allerdings die Mitarbeitsnote etwas gedrückt hat, aber ich wollte ja auch nicht 90% des Kurses permanent die Schau stehlen - die sollten und mussten ja noch etwas lernen.

    Ich bin kein Streber und keine Hermione, und musste nicht permanent beweisen, dass ich es schon kann und ob der Lehrer mir nun 15P oder 12P mündlich gab, war mir egal. Er wusste ja auch, dass ich es kann und die Klausuren waren auch entsprechend.

    Also alles in allem: es hat mich, der ich vorher reiner Autodidakt war, doch etwas voran gebracht und die Anregungen und Projekte der Lehrer haben mich motiviert, mich an etwas interessanteren/technischeren Probleme zu wagen (statt nur dilettantische Amiga Ballerspiele und Grafikdemos zu machen).

    Nachdem ich erst überlegt hatte, in dem Film/Video und neu entstehenden 3D Animationsbereich zu gehen (diverse Praktika in der Medienbranche haben mich dann ernüchtert) habe ich dann doch Informatik an der Uni studiert.

    Keine Ahnung, ob ich das ohne die Schul-Informatik gemacht hätte und ob es dann leichter oder schwerer gewesen wäre...



  • Fedaykin schrieb:

    Leider sind gehen bei solchen sachen dann Pointer, Speicherreservierungen, Referenzen etc unter.

    Das sind wieder Details, welche viele Programmiersprachen gemeinsam haben und gerade für das verstehen des, "Programmierens" für Prozeduralen/OOP Sprachen, sehr wichtig sind.

    sorry, wenn ich da anderer Meinung bin.

    Pointer, Speicherreversierungen und Referenzen sind für das Verständnis der OOP vollkommen unwichtige Details.

    Was hat das überhaupt mit OOP zu tun ? Das hat eher was mit System-Programmierung und Low-Level zu tun.

    Reine OOP-Sprachen haben typischerweise eine automatische Speicherverwaltung und gar keine Syntax für Zeiger.



  • ... und noch eins:

    Warum lernt man in der Schulphysik, wie man ein Drehmoment berechnet, aber nicht, wie man einen Schiffsdiesel schmiert?

    Warum lernt man im Sprachunterricht in der Schule Latein und nicht einen gängigen Dialekt, mit dem man sich in der Disko viel besser verständigen könnte ?

    Eben. Es geht darum, Konzepte zu vermitteln. Abstrakte Konzepte, die man verstanden haben sollte, um später die praxisnäheren Details verstehen zu können, die man im Beruf braucht.

    Wie man eine Speicherverwaltung implementiert oder wie man mit Zeigerarithmetik im Speicher spazieren geht und daß ASCII 64 = "@" ist, gehört meiner Meinung nach nicht zu dem, was ein Neuling unbedingt über OOP wissen müssen sollte.



  • zum beispiel schrieb:

    Es geht darum, Konzepte zu vermitteln. Abstrakte Konzepte, die man verstanden haben sollte, um später die praxisnäheren Details verstehen zu können, die man im Beruf braucht.

    Kinder (die meisten) interessieren sich nicht für abstrakte Konzepte. Das endet dann nur im so übel gescholtenen, "langweiligen" Lehrstil der angeblich an allem Schuld ist. 🙄
    Bei mir schlagen da auch zwei Herzen in der Brust. Es erscheint "richtig" den Weg vom Abstrakten zum Prakischen zu gehen, aber um Interesse bei jemandem zu wecken muss man es meist andersherum angehen.

    Als ich angefangen habe zu programmieren (mit ca. 12) wollte ich einfach lustige Textadventures in BASIC machen und nicht lernen was ein Pointer ist.

    Ich hatte z.b. in der Mittelstufe einen Physiklehrer der äußerst beliebt war weil er z.b. eben nicht so abstrakt angefangen hat sondern ein Thema immer interessanten praktischen Fragen eingeleitet hat. Die physikalische Gesetzmäßigkeit die eigentlich Thema ist stand dann eher am Ende einer Kette vom Beobachtungen, Überlegungen und Experimenten und wurde so hergeleitet.
    Beispiel: Wird die Küche kälter wenn man die Kühlschranktür offenlässt? - zum Thema Energieerhaltung. Nachdem er verlautete dass 90% der Klasse sich irrt waren eigentlich alle an einer ausführlichen Erklärung interessiert.

    Bei Studenten kann man dann von etwas anderen Voraussetzungen ausgehen, aber auch bei "fachfremden" hilft es bestimmt wenn man ein Thema erst mal interessant macht bevor man sich ins Abstrakte stürzt.



  • illuminator schrieb:

    Kinder (die meisten) interessieren sich nicht für abstrakte Konzepte. Das endet dann nur im so übel gescholtenen, "langweiligen" Lehrstil der angeblich an allem Schuld ist. 🙄

    Kinder interessieren sich auch selten für das kleine Einmaleins oder Druckbuchstaben. Soll man es deshalb weglassen ?

    Man muß und kann abstrakte Konzepte vermitteln, wenn man die Lehrinhalte richtig darstellt. Darstellung ist eminent wichtig.

    D.h. vor allem mit Beispielen - wohl mit das wichtigste Verständnismittel überhaupt -, und zwar mit Beispielen, an denen genau das Prinzip erkannt werden kann, ohne von weiteren Details verwirrt zu werden.

    illuminator schrieb:

    und nicht lernen was ein Pointer ist.

    sage ich doch: Pointer sind nicht gut, um OOP für Neulinge zu erklären.

    illuminator schrieb:

    aber auch bei "fachfremden" hilft es bestimmt wenn man ein Thema erst mal interessant macht bevor man sich ins Abstrakte stürzt.

    Absolut richtig.

    Also das OOP-Konzept anschaulich erklären mit bekannten Strukturen wie "Tier - Säugetier - Affe - Meerkatze" oder "Fortbewegungsmittel - Fahrzeug - motorisiertes Fahrzeug - Auto", aber nicht mit Pointerarithmetik und Speicherklassen. Zumindest nicht für Kinder, die sich vielleicht nicht einmal dafür interessieren und später Archäologe oder Forstwirt werden.



  • Kinder interessieren sich auch selten für das kleine Einmaleins oder Druckbuchstaben. Soll man es deshalb weglassen ?
    

    Nein, aber vernünftig am Beispiel erklären, so wie das Kühlschrankbeispiel oben.



  • zum beispiel schrieb:

    Fedaykin schrieb:

    Leider sind gehen bei solchen sachen dann Pointer, Speicherreservierungen, Referenzen etc unter.

    Das sind wieder Details, welche viele Programmiersprachen gemeinsam haben und gerade für das verstehen des, "Programmierens" für Prozeduralen/OOP Sprachen, sehr wichtig sind.

    sorry, wenn ich da anderer Meinung bin.

    Pointer, Speicherreversierungen und Referenzen sind für das Verständnis der OOP vollkommen unwichtige Details.

    Was hat das überhaupt mit OOP zu tun ? Das hat eher was mit System-Programmierung und Low-Level zu tun.

    Reine OOP-Sprachen haben typischerweise eine automatische Speicherverwaltung und gar keine Syntax für Zeiger.

    Und nun programmiere mir ein Programm was möglichst wenig Speicher verbraucht in Java. Du hast in Java keinen direkten zugriff auf Ponter, Speicherreservierungen etc. , das stimmt. Aber man muss wissen, was das ist um effektiv programmieren zu können. Es ist schön das man bei GC Programmiersprachen nicht so sehr auf das Speicherhandling achten muss, aber wenn man das zu sehr schlauchen lässt. Kommt man spätestens dann, wenn man auf Speicher achten muss, in teufels Küche.

    Wenn ich also Weiß wo und Wie Java sein Speicher reserviert. Und wie es die übergaben von Klassen realisiert wird, weiss ich wie ich dort "Sparmaßnamen" umsetzen kann. Aber dazu brauch ich die Basics.



  • Fedaykin schrieb:

    Und nun programmiere mir ein Programm was möglichst wenig Speicher verbraucht in Java.

    mission impossible



  • Fedaykin schrieb:

    Und nun programmiere mir ein Programm was möglichst wenig Speicher verbraucht in Java.

    Wo wir wieder bei den Anforderungen wären: Es ist für stinknormale Schüler, die müssen keine Programme mit möglichst wenig Speicherverbrauch schreiben.



  • Fedaykin schrieb:

    Und nun programmiere mir ein Programm was möglichst wenig Speicher verbraucht in Java. Du hast in Java keinen direkten zugriff auf Ponter, Speicherreservierungen etc. , das stimmt.

    warum sollte ein Schüler das wissen müssen?

    Von den Schülern des Informatik-Unterrichts an allgemeinbildenden Schulen wird ein geringer Prozentsatz beruflich programmieren, und von denen wird wiederum nur ein gewisser Prozentsatz System- oder Anwendungsprogrammierer und muß dann Speichermanagement und Pointer kennen. Das wird er dann aber sowieso lernen.

    Und deshalb sollen die restlichen 90+x% Schüler mit solchen Details belastet werden ... ?



  • Ein Schüler muss auch nicht Integrieren oder Differentieren können. Aber er sollte die Grundrechenarten können wenn er das Später mal lernen will.



  • Genau hier sollte man nun differenzieren, was Schulinformatik bieten sollte. Soll es Grundlagen liefern. Dann reicht zu wenn man Betriebssystembedienung lernt. Ein Bissl Word, Excel, Was sind Bits Bytes, wie funktioniert grundlegendes in einen PC. Das sollte reichen. Oder soll man Programmieren lernen im Informatik unterricht, dazu gehören nunmal die Dinge die ich Angesprochen habe.



  • Fedaykin schrieb:

    Ein Schüler muss auch nicht Integrieren oder Differentieren können. Aber er sollte die Grundrechenarten können wenn er das Später mal lernen will.

    Welch ein Vergleich. Ich kann nicht mal erkennen, ob du nun Integrieren oder doch die Grundrechenarten mit Pointern vergleichst.

    Fedaykin schrieb:

    Oder soll man Programmieren lernen im Informatik unterricht, dazu gehören nunmal die Dinge die ich Angesprochen habe.

    Tun sie eben nicht. Man kann wunderbar Programme schreiben, ohne jemals etwas von Pointern gehört zu haben (inkl. Pointerarithmetik etc.).



  • Bei den Pointern gebe ich dir recht, muss man in Programmiersprachen die keinen direkten Pointerzugriff haben nicht unbedingt kennen. Aber es wäre dennoch Sinnvoll.

    Für einen Schnupperkurs, ob Informatik was für mich ist, reichen auch solche sachen. Aber meiner Meinung nach ist das wie Informatik heutzutage vielmals gelehert wird, nichts halbes und nichts ganzes.

    Für Grundlagen fehlen geht es schon zu tief in die Konkrete Programmierung.
    Für Konkrete Programmierung fehlen zu viele Grundlagen (der Programmierung).

    Daher finde ich es nicht unbedingt so toll das man den leuten irgendeine Programmiersprache beibringt (ohne Basics), dann doch lieber nur Grundlagen.



  • Naja, Schulinformatik ist sowieso oft eine reine Frickelei.
    Unser erster Programm in Pseudo-C++ sah in etwa so aus (nein, wir haben nicht mit Hello World begonnen):

    #include <iostream.h>
    
    void main()
    {
        int z1,z2 /*,...,...*/ ;
        cout<<"Zahl 1 eingeben: ";
        cin>>z1;
    
        //...
    }
    

    Dazu muss ich wohl nicht viel sagen. Funktioniert hats, mehr aber auch nicht.

    Welche Sprache man lernt, kommt auf die jeweilige Vertiefung an würd ich sagen. Manche legen mehr Wert drauf, manche weniger. Im Prinzip finde ich Programmierung in allgemeinen Schulen sowieso umsonst.


Anmelden zum Antworten