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



  • 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.



  • @Fedaykin Was hat das denn mit Schul-IT zu tun? Schule soll weder Spreu vom Weizen trennen noch fertig ausgebildete Softwareentwickler hervorbringen.



  • Was soll deiner Meinung nach die Schule tun?

    Meine Meinung ist dazu, dass die Schule Grundlagen schaffen soll. Für eine mögliche Berufswahl bzw spätere Ausbildung.

    Entweder behandelt sie wirklich Grundlagen der Programmierung. Oder eben nicht. Wenn schon im Unterricht Programmiersprachen beigebracht werden, dann richtig. Und soviel gehört nun auch nicht dazu zu wissen was Referenz,Pointer etc ist. Es geht ja nicht da drum das sie jegliche Pointerarithmetik verstehen. Es geht darum das den Schülern meist was beigebracht wird, ohne zu wissen was es für Konsequenzen hat.

    Point p1 = new Point(1,0);
    MyRectangle myRectangle = new MyRectangle(pl,10,10);
    pl.Y = 5;
    

    Der Code ist nicht wirklich kompliziert. Kann aber unterschiedliche folgen haben, je nach implementation von MyRectangle.
    myRectangle könnte urplötzlich auf einer anderen Position stehen. Und der "neuling" der nichts von Referenzen weiss sucht sich nen wolf warum das denn so ist.
    Daher würde ich Programmierung entweder aus den Lehrplan herausnehmen und lieber Grundlagen der Informatik schaffen. Und Pogrammierung als eine art Wahlfach lehren, für die leute die sich dafür interessieren. Aber dann müssen sie damit rechnen das es dort nicht nur darum geht "Hammergeile Games" zu proggen. Informatik ist nun manchmal trocken.



  • zum Beispiel schrieb:

    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 ... ?

    Genau! Und gerade deswegen ist es viel wichtiger, dass die Schüler lernen, wie ein Computer funktioniert, anstatt eine praktisch in der Wirtschaft häufig verwendete Programmiersprache zu lernen. Mit Computern muss sich der Schüler nämlich sein Leben lang auseinandersetzen und ein grundlegendes technisches Verständnis könnte ihm da sehr gut weiterhelfen.

    Je nach der Ausstattung der Labore würde ich erstmal möglichst anschaulich erklären, was überhaupt Bits und Bytes sind, wie man Zahlen im binären System darstellt und mit ihnen rechnet und ganz grob das Prinzip eines Prozessors. Und zwar nicht von einer mathematischen Sichtweise wie sie oft im Informatikstudium gelehrt wird, sondern von einer technischen Sichtweise. Das heißt man setzt praktisch auf den Digitaltechnik-Unterricht in Physik auf. Um den Schülern weiter zu lehren, wie ein Computerprogramm funktioniert, ist jetzt, meiner Meinung nach, zwingend eine prozedurale Vorgehensweise zu erklären. Denn das ist das Prinzip, dem ein Computer folgt: Es führt nacheinander eine Liste von Befehlen durch. Pointer und Speicherverwaltung gehören für mich dazu, man sollte es aber auch nicht übertreiben, da die Themen sehr trocken, langweilig und auch schwerer zu verstehen sind. Zumindest würden mir da keine Möglichkeiten einfallen, an denen man diese Konzepte effizient und interessant lehren könnte.

    Ich finde Pascal einfacher zu lernen als C oder C++ und es ist in den meisten Bundesländern sogar als Prüfungsfach anerkannt. Daher bietet sich Pascal auch an. Soll es weiter in die Programmierung von echten, brauchbaren Anwendungen gehen, springt man eben auf Delphi/FreePascal um. Soll es tatsächlich nur ums Programmieren gehen, dann kann man auch mit Java um sich werfen. Das ist, glaube ich, auch häufig anerkannt.



  • @Fedaykin
    Tuh mir doch mal hier den gefallen und erkläre das was Langi da gemacht hat.
    Ich kopier beides einer Freundin ins ICQ und werd mal gucken ob sies versteht.
    Würd mich echt mal interessieren ob einer bei sowas simplem schon das hantuch werfen muss, weils eben doch nicht so einfach ist.

    Also wirklich erklären wofür die << sind und wieso da cout steht und wieso man damit auch ints ausgeben kann. warum es << ist und nicht <;
    warum man bei cin >> diese richtung braucht... Sollte ja nicht all zu lange dauern bei den 3 zeilen code da 😉



  • Fedaykin schrieb:

    Meine Meinung ist dazu, dass die Schule Grundlagen schaffen soll. Für eine mögliche Berufswahl bzw spätere Ausbildung.

    Das ist auch meine Meinung, aber Pointer und Speichermanagement sind m.M.n. keine Grundlagen für Anfänger mehr, sondern spezielle Themen für Fortgeschrittene, wie C++ eigentlich überhaupt. Bedenke, daß ein Schüler nicht einmal wissen muß, was eine CPU ist, geschweige was indirekte Adressierung ist.

    Fedaykin schrieb:

    Point p1 = new Point(1,0);
    MyRectangle myRectangle = new MyRectangle(pl,10,10);
    pl.Y = 5;
    

    Der Code ist nicht wirklich kompliziert.

    Aber auch nicht wirklich einfach.

    Ich würde mir als Schüler so etwas wünschen:

    myPoint := 1 @ 0.
    myRectangle := Rectangle origin: myPoint extent: 10 @ 10.
    

    oder noch einfacher so etwas wie

    myPoint := 1 @ 0.
    myRectangle := myPoint extent: 10 @ 10.
    

    - für jeden auf Anhieb verständlich.



  • zum beispiel schrieb:

    Ich würde mir als Schüler so etwas wünschen:

    myPoint := 1 @ 0.
    myRectangle := Rectangle origin: myPoint extent: 10 @ 10.
    

    oder noch einfacher so etwas wie

    myPoint := 1 @ 0.
    myRectangle := myPoint extent: 10 @ 10.
    

    - für jeden auf Anhieb verständlich.

    Würdest du mir bitte erklären was das bedeutet?



  • wie "erklären" ? - was verstehst du denn nicht ?



  • verständlich und logisch ist nur eins...

    new point(x,y)
    new rect(x,y,w,h)
    

    :hoppschwiiz: 1 spanien 0

    @edit: wenn man schon sowas anfängt dann auch richtig

    new rect(new point(x,y),new dimension/*size*/(w,h))
    


  • zum beispiel schrieb:

    Fedaykin schrieb:

    Meine Meinung ist dazu, dass die Schule Grundlagen schaffen soll. Für eine mögliche Berufswahl bzw spätere Ausbildung.

    Das ist auch meine Meinung, aber Pointer und Speichermanagement sind m.M.n. keine Grundlagen für Anfänger mehr, sondern spezielle Themen für Fortgeschrittene, wie C++ eigentlich überhaupt. Bedenke, daß ein Schüler nicht einmal wissen muß, was eine CPU ist, geschweige was indirekte Adressierung ist.

    Fedaykin schrieb:

    Point p1 = new Point(1,0);
    MyRectangle myRectangle = new MyRectangle(pl,10,10);
    pl.Y = 5;
    

    Der Code ist nicht wirklich kompliziert.

    Aber auch nicht wirklich einfach.

    Ich würde mir als Schüler so etwas wünschen:

    myPoint := 1 @ 0.
    myRectangle := Rectangle origin: myPoint extent: 10 @ 10.
    

    oder noch einfacher so etwas wie

    myPoint := 1 @ 0.
    myRectangle := myPoint extent: 10 @ 10.
    

    - für jeden auf Anhieb verständlich.

    Supi. 🤡

    set myPoint = new Point(x=1,y=0)
    set myRectangle = new Rectangle(topLeft=myPoint,width=10,heighth=10)
    


  • volkard schrieb:

    set myPoint = new Point(x=1,y=0)
    set myRectangle = new Rectangle(topLeft=myPoint,width=10,heighth=10)
    

    das gefällt 😋



  • volkard schrieb:

    set myPoint = new Point(x=1,y=0)
    set myRectangle = new Rectangle(topLeft=myPoint,width=10,heighth=10)
    

    Praktisch quadratisch Gut - 😋

    C# bietet fast so eine Syntax.

    var myPoint = new Point() { X = 1, Y = 0 };
    var myRectangle = new Rectangle() { TopLeft = myPoint, Width=10, Heighth=10 };
    


  • ich würde sagen das volk hat entschieden 😃



  • Fein.
    Aber ist es noch gut, wenn ich verrate, daß es Basic und nicht Smalltalk ist? hihi.



  • an der FH wo ich studiere:

    1. Semester: C (gründlich). Bash (nur einführung)
    2. Semester: Java (grundlagen), Assembler x86 (grundlagen)
    3. Semester: Java (design pattern)



  • volkard schrieb:

    Fein.
    Aber ist es noch gut, wenn ich verrate, daß es Basic und nicht Smalltalk ist? hihi.

    Das hättest du ja garnicht sagen brauchen :p
    Aber selbst verständlich wirds nicht schlechter nur weil das Kind jetzt einen Namen hat.



  • giowck schrieb:

    an der FH wo ich studiere:

    1. Semester: C (gründlich). Bash (nur einführung)
    2. Semester: Java (grundlagen), Assembler x86 (grundlagen)
    3. Semester: Java (design pattern)

    Was welten über dem ist, was man in der 11ten klasse in der schule lernen sollte.
    Meiner meinung nach reicht für einen grundkurs informatik ein programmierbarer virtueller roboter aus. Man kann da diverse grundlegende konzepte (schleifen, bedinungen etc) an einem interessanten beispiel lehren. Es "passiert" eben was auf dem bildschirm, das weckt das interesse. Solche sachen wie pointer, addressierung, vererbung oder ähnliches ist in der schule im GK info vollkommen fehl am platz. Das kann man im LK in den lehrplan aufnehmen, sofern es einen LK gibt.
    90% der schüler interessiert das nämlich nicht bzw das ist zu hoch für sie. Dann lieber beim virtuellen roboter bleiben und tatsächlich was lernen. Auch wenns keinen praktischen nutzen für später hat, so lernt man zumindest logisches denken.



  • Das heißt man setzt praktisch auf den Digitaltechnik-Unterricht in Physik auf.

    was für ein Ding? Sowas ist mir weder auf Real noch Gym nie begegnet, nichtmal als Wahlfach 😕



  • MasterK schrieb:

    Auch wenns keinen praktischen nutzen für später hat.

    Genau das sehe ich als Verschenkte Zeit an. Da bin ich einfach zu Pragmatisch eingestellt. Warum wird dann überhaupt ein Fach unterrichtet wenns keinen Praktischen nutzen hat, die leute die daraus Praktischen nutzen ziehen wollen, können so einen Kurs ja freiwillig belegen oder eben einen Leistungskurs etc. Es geht hier nicht um allgemeinwissen oder ähnliches sondern Spezialwissen. Man sollte die Schwerpunkte des Info unterrichts einfach überdenken und je nach Bedarf verlagern.

    Und irgendwie ist mein Beispiel missverstanden worden, oder? Mir gings nicht um die Ästhetik des Codes, sondern das beim ändern der X-Koord des Punktes ggf auch die X-Koord des Rechteckes verschoben werden kann. Je nach Implementation des Rechteckes. Gerade sowas

    var myPoint = new Point() { X = 1, Y = 0 };
    var myRectangle = new Rectangle() { TopLeft = myPoint, Width=10, Heighth=10 };
    

    Mir persönlicht reicht es nun zu wissen als was myPoint übergeben wird. Als Referenz oder ByValue. Dann weiss ich auch was passiert wenn ich myPoint.X ändere. Aber dazu muss ich die Grundlagn beherrschen.
    Und ggf wäre es nicht schlecht wenn ich weiss das TopLeft (sofern es Ref-Type ist) ggf weniger Speicher belegt als myPoint. Und weil das halt mit unter schwer verständlich ist, gehört es natürlich nicht unbedingt in einen Grundkurs, wie die ganze Programmiererei.

    Achso mal zu mir (Mein Mittelschulinfo mit GeOS und sowas (Wir hatten wenigstens Windows 95 in der 10 Klasse 🤡 ) ist ja schon bekannt:

    In der HS hatten wir im zweiten Semester ein Fach das nannte sich "Grundlagen der Programmierung" das war ein Java Kurs, wobei wir halt auf OOP gesetzt haben. Der Prof hat so gut es in java geht versucht die Programmiersprache auszublenden und auf OOP ein zu gehen. Aber da wurden richtig viele Sachen verlangt, die Klausur war viel Theorie (Virtuelle Vererbung, virtuelle Funktionen, welche Klasse erbt was von wem und welcher Wert wird verdeckt etc....) Dort sind die meisten echt nicht gut weggekomme da Sie bisher nur Prozedural Programmiert haben. Und meiner Meinung nach kann man in der OOP nicht in 1/2 Jahr so tief drinstecken das man das alles ohne weiteres versteht.
    Naja ansonsten hatten wir C unter dem Fach "Betriebssystem nahes Programmieren." Als Wahlkurse gabs so tolle sachen wie C#, C++. Aber irgendwie waren mir das alles zu sehr die Basics, richtig Tiefgründiges war nicht dabei. Bei C# war ich ca 30 % der Zeit anwesend und hab eine 1 Geschafft. Irgendwie hätte ich mir das ganze etwas Straffer und Aufschlussreicher vorgestellt. Und dann hatten wir noch solche sachen wie Prolog (ist zumindest interessant mal ein ganz anderes Konzept der Programmierung kennen zu lernen. Die Sprache hat mir bisher nicht weiter geholfen. Verschiedene Prinzipien die dort angewandt werden jedoch schon).



  • Und warum dreht sich der grösste teil deines posts um die hochschule, wenns hier doch um das fach informatik an der normalen schule geht? Hier schwenken einige immer sehr schnell richtung uni ab, und wollen dann natürlich die "grundlagen" an der schule gelehrt sehen. Das ist aber quatsch. In einem _grundkurs_ (in einem LK siehts wie schon mehrmals gesagt dann wieder anders aus) kommt man eh nicht über grundlagen der prozeduralen programmierung hinaus. Und das reicht auch aus.


Anmelden zum Antworten