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



  • Es heißt Kommata. 😃

    und ich bin raus...



  • Moin,

    volkard schrieb:

    Kennst Du denn C/C++?

    Ja, ich lerne es gerade :). Hab mich aber ein bisschen vertan 🙄 .

    Es war auf die Ausgabe bezogen:

    int x = 5;
    std::cout << "x enthält " << x;
    

    Bei cout musst du ja nur alles aneinander hängen, bei Delphi/Pascal explizit umwandeln:

    writeln ("x =" + IntToStr(x))
    


  • In Pascal hat man writeln('x = ', x); geschrieben. Mit strenger Typisierung hat das aber alles so gut wie gar nichts zu tun.



  • Moin,

    ok, ich zieh meine Aussage bezüglich der Typisierung zurück. Sie stammte ja auch nicht von mir, sondern von einem (studierten) Informatiklehrer.



  • Die Aussage ist ja auch richtig (oder zumindest kann man darüber diskutieren), nur das Beispiel nicht 🙂



  • johannes-h schrieb:

    Sie stammte ja auch nicht von mir, sondern von einem (studierten) Informatiklehrer.

    Einem, der noch Dephi lehrt. löl.
    Das mit der Typisierung war vom Lehrer ein typischer Angriff gegen die böse böse böse C++-Sprache. Man findet etwas Ungünstiges in C, hier die Abstürze bei falschen Formatstrings (bei alten Compilern?, wie effektiv sind die Prüfungen heute?), schiebt es einer nicht existierenden Sprache C/C++ unter und beweist damit, daß die eigene Sprache besser als C/C++ ist.
    Das Muster findest Du hier im Forum einmal pro Woche.
    Bei C/C++ mußte ich doch mal nachfragen, denn da zweifle ich automatisch an der Fachkundigkeit. Außerdem ist "strenge Typisierung" ja nicht automatisch ein Vorteil.

    Aufklärung naht von http://docwiki.embarcadero.com/RADStudio/de/Datentypen,_Variablen_und_Konstanten

    Delphi ist eine streng typisierte Sprache. Sie unterscheidet eine Vielzahl unterschiedlicher Datentypen, die nicht immer durch andere Typen ersetzbar sind. Diese Einschränkung ist normalerweise von Vorteil, da sie dem Compiler eine "intelligente" Datenbehandlung und eine gründliche Überprüfung des Quelltextes erlaubt, wodurch sich die Gefahr schwer diagnostizierbarer Laufzeitfehler verringert. Wenn Sie in bestimmten Fällen mehr Flexibilität benötigen, lässt sich diese strenge Typisierung mithilfe besonderer Techniken umgehen. Dazu gehören die Typumwandlung, Zeiger, Varianten, variante Teile in Record-Typen und die absolute Adressierung von Variablen.

    Alles klar? Mir nicht.



  • Umgehen ist sehr leicht:

    program Project3;
    
    {$APPTYPE CONSOLE}
    
    uses
      SysUtils;
    
    type
      range = 0..10;
    
    var
      input : integer;
      x : range;
    
    begin
      try
          Read(input);
          x := input;
          Writeln(x);
          Read(input);
      except
        on E: Exception do
          Writeln(E.ClassName, ': ', E.Message);
      end;
    end.
    

    Kommt nichtmal eine Exception, wenn der Input über 10 ist. *gg*



  • Zeus schrieb:

    program Project3;
    
    {$APPTYPE CONSOLE}
    
    uses
      SysUtils;
    
    type
      range = 0..10;
    
    var
      input : integer;
      x : range;
    
    begin
      try
          Read(input);
          x := input;
          Writeln(x);
          Read(input);
      except
        on E: Exception do
          Writeln(E.ClassName, ': ', E.Message);
      end;
    end.
    

    Was ist denn das für eine hässliche Excel Tabelle?? 😕



  • Alles klar? Mir nicht.

    Was ist Dir denn nicht klar? Es stimmt doch was da steht 😕



  • Sqwan schrieb:

    class Iwas
    {
        public static void main(String args[])
        {
            System.out.println("Hallo Welt");
        }
    }
    

    Also wenn das nicht einfach ist, was dann?

    Naja, zB sowas wie

    println("Hallo Welt");
    

    ?

    Stimmt schon, dass in java viel drumherum ist. Klar kann man nem schüler sagen "akzetpiert das class und das static void main einfach". Irrititionen dürfte dann aber auch das System.out auslösen. Nicht zu vergessen, dass das einlesen nochmal zusätzlichen aufwand bedeutet. Wenn ich in jeder zweiten zeile sagen muss "akzeptiert das einfach so", dann ist das kaum förderlich für den lerneffekt.
    Man darf nicht vergessen, dass in der schule hauptsächlich eben keine angehenden informatiker sitzen. Java, C++ und co sollten wenn dann etwas für den informatik LK sein. Den es aber wohl leider nur an sehr wenigen schulen gibt...



  • Sqwan schrieb:

    Ist eigendlich Zeitverschwendung. Wenn man etwas lehren möchte, sollte man eine sprache richtig machen, und nicht von allem nen bischen, und am ende kann ich dennoch nicht vernünftiges Zaubern.

    ACK

    Beispielsweise haben wir in Java keine vererbung gemacht. Dann kann man sich das auch spaaren. Weil Java ohne OOP ist so gut wie C.

    Eigentlich nicht.
    Java ohne OOP ist schlimmer als C, weil es einem nur Steine in den Weg legt und für die rein funktionale Programmierung in strikter Pascal Manier eher ungeeignet ist.

    Ich denke mal in Java kann man in 3 Jahren Schule einfach das meiste schaffen.
    Und java kann auch SQL nutzen. Dafür brauch man nicht unbedingt PHP.

    Das sehe ich anders.

    In Java kann man z.B. externen Geräte nur bedingt mit großen Einschränkungen ansteuern, wenn du aber C kannst, eine Sprache der Systemprogrammierung, dann kannst du z.B. deine Treiber selber schreiben.

    Das dürfte z.b. an einem technischen Gymnasium von Vorteil sein, denn da kann es durchaus vorkommen, daß man auch Elektrotechnik als Hauptfach hat und nun was Bauen will. Z.B. nen Mikrocontroller ansteuern.
    Was willst du da mit Java?

    Richtig ist lediglich, daß auf der Anwendungsebene Java leichter mehr Möglichkeiten öffnet. Das ist richtig.
    Seine Webpräsenz wird wohl kaum einer mithilfe von C realisieren.

    Und wer kann schon Quallitativ hochwertigen Code in PHP schreiben, besonders in sicherheitskritischen bereichen.

    Ich befüchte das ist unmöglich, dafür ist PHP nicht geeignet.
    Dann schon lieber Python nehmen.



  • Ihr redet hier von sachen wie "sicherheitskritische bereiche" und "treiberprogrammierung". Ich hatte beim ursprungsposting das ganze eigentlich als frage nach der sprache im normalen informatikunterricht verstanden. Und da kommt nichtmal annäherend sowas wie "treiberprogrammierung" dran.
    Man sollte vielleicht auf dem teppich bleiben.



  • Affenzahn schrieb:

    Eigentlich nicht.
    Java ohne OOP ist schlimmer als C, weil es einem nur Steine in den Weg legt und für die rein funktionale Programmierung in strikter Pascal Manier eher ungeeignet ist.

    prozedural
    Eine von den wenigen wirklich wichtigen Unterscheidungen.



  • KörperKlaus schrieb:

    Andere Programmiersprachen, und sei es nur ein bisschen,
    wären mir lieber gewesen, als eben nur eine.

    Aber was will man machen ... 😞

    Nicht in die Schule gehen. Da lernt man eh fast nur unsinniges Zeug. Egal wo. Echt arm.

    (Ausgenommen hochspezialisierte Institute)



  • Hier an der Universität Zürich:

    Im 1. Semester Java, ab 2. Semester dann C++. Wobei dies nur die Grundlagen sind; was nachher kommt hang von dir ab^^



  • Affenzahn schrieb:

    Sqwan schrieb:

    Ist eigendlich Zeitverschwendung. Wenn man etwas lehren möchte, sollte man eine sprache richtig machen, und nicht von allem nen bischen, und am ende kann ich dennoch nicht vernünftiges Zaubern.

    ACK

    Beispielsweise haben wir in Java keine vererbung gemacht. Dann kann man sich das auch spaaren. Weil Java ohne OOP ist so gut wie C.

    Eigentlich nicht.
    Java ohne OOP ist schlimmer als C, weil es einem nur Steine in den Weg legt und für die rein funktionale Programmierung in strikter Pascal Manier eher ungeeignet ist.

    Ich denke mal in Java kann man in 3 Jahren Schule einfach das meiste schaffen.
    Und java kann auch SQL nutzen. Dafür brauch man nicht unbedingt PHP.

    Das sehe ich anders.

    In Java kann man z.B. externen Geräte nur bedingt mit großen Einschränkungen ansteuern, wenn du aber C kannst, eine Sprache der Systemprogrammierung, dann kannst du z.B. deine Treiber selber schreiben.

    Das dürfte z.b. an einem technischen Gymnasium von Vorteil sein, denn da kann es durchaus vorkommen, daß man auch Elektrotechnik als Hauptfach hat und nun was Bauen will. Z.B. nen Mikrocontroller ansteuern.
    Was willst du da mit Java?

    Richtig ist lediglich, daß auf der Anwendungsebene Java leichter mehr Möglichkeiten öffnet. Das ist richtig.
    Seine Webpräsenz wird wohl kaum einer mithilfe von C realisieren.

    Und wer kann schon Quallitativ hochwertigen Code in PHP schreiben, besonders in sicherheitskritischen bereichen.

    Ich befüchte das ist unmöglich, dafür ist PHP nicht geeignet.
    Dann schon lieber Python nehmen.

    Ein normales Gymnasium hat aber keine technischen Geräte.
    Wir brauchten es allerdings für Micro-Controller. Haben mit dem R8C gearbeitet.
    Treiber programmieren kann ich aber glaube ich nicht ^^
    So viel wars dann nicht. Also nichts wirklich Systemnahes im bezug auf den "Computer".

    MasterK schrieb:

    Ihr redet hier von sachen wie "sicherheitskritische bereiche" und "treiberprogrammierung". Ich hatte beim ursprungsposting das ganze eigentlich als frage nach der sprache im normalen informatikunterricht verstanden. Und da kommt nichtmal annäherend sowas wie "treiberprogrammierung" dran.
    Man sollte vielleicht auf dem teppich bleiben.

    Wir haben Micro-Controller Programmiert.
    Ich würde sagen, das ist auf dem Teppich.
    Und wenn man 3 Jahre hat, ist das mehr als ausreichend um Java zu lernen.
    Und zwar mit Vererbung. Und Vererbung ist an für sich was ganz tolles.
    Auch die Interfaces sind ne super sache.
    Parametrisierte Klassen sind eine feine sache.
    Habe ich alles in einem Semester an der FH gelernt.
    Dann wird es doch wohl möglich sein, einem Schüler in 3 Jahren java beizubringen, und auf Sicherheitskritische Sachen hinzuweisen.

    import java.util.Scanner;
    
    public class WtfTopic 
    {	
    	private static Scanner in;
    
    	public static void main(String args[]) 
    	{
    		in = new Scanner(System.in);
    		int i = 0;
    
    		System.out.println("Geben Sie eine Ganze Zahle ein.");
    		i = in.nextInt();
    		System.out.printf("Sie haben %d eingegeben!",i);
    	}
    }
    

    Also wenn das jetzt schwer ist weiß ich auch nicht.
    Java ist ganz Billig.
    Anfangs muss ein anfänger nicht wissen wofür System.out gut ist.
    Versteht ja auch keiner was bei cout<< passiert.
    Und noch weniger was bei cin>> passiert.

    Wenn man so wie oben ein bischen prozedurales lehrt, und dann in OOP einsteigt, versteht man auch schnell was System.out macht.

    C ist vllt für den Anfang nicht schlecht um hintergründe zu kennen zu lernen.
    Weil C ja schon sehr Flach ist.

    C++ ist kacke für Anfänger. Das können ja nicht mal profis vernünftig.

    GUI ist außerdem sowohl in C als auch in C++ ein grauen. Gibts da eigentlich einen Unterschied ob C oder C++? Im endeffekt brauch man doch immer ne API oder so?

    Java hats da leichter.

    class Main extends JFrame
    und schon habe ich quasi ein fenster.
    Diverse Layout-Manager erleichtern einem die arbeitet.

    Ich denke das spricht alles für Java als Anfänger-Sprache in einem Gymnasium.
    Will ja auch nicht jeder Gymnasiast danach was technisches machen.
    Also ist System-Nahe anwendung auch nicht sooo wichtig.

    So... Hoffe mal das stimmt so alles ^^
    Hab die Codes nicht getestet und bin kein Java-Entwickler.



  • Sqwan schrieb:

    import java.util.Scanner;
    public class WtfTopic
    {   
        private static Scanner in;
        public static void main(String args[])
        {
            in = new Scanner(System.in);
            int i = 0;
            System.out.println("Geben Sie eine Ganze Zahle ein.");
            i = in.nextInt();
            System.out.printf("Sie haben %d eingegeben!",i);
        }
    }
    

    Also wenn das jetzt schwer ist weiß ich auch nicht.
    Java ist ganz Billig.

    Das ist zwar nicht kompliziert, aber Java hat relativ viel syntaktisches "line noise", das Anfänger verwirren kann.

    was hältst du von so was ?

    n := FillInTheBlank request: 
        'geben Sie eine Zahl ein'.
    Transcript show: 
        'Sie haben ', n, ' eingegeben.'.
    


  • zum Beispiel schrieb:

    n := FillInTheBlank request: 
        'geben Sie eine Zahl ein'.
    Transcript show: 
        'Sie haben ', n, ' eingegeben.'.
    

    Viel Müll, oder?
    Warum die Rückbesinnung bei 80 stehen lassen, wenns auch leicht bis 64 geht.

    10 input "Geben Sie eine Zahl ein", n
    20 print "Sie haben "; n; " eingegeben."
    


  • Sqwan schrieb:

    GUI ist außerdem sowohl in C als auch in C++ ein grauen. Gibts da eigentlich einen Unterschied ob C oder C++? Im endeffekt brauch man doch immer ne API oder so?

    Java hats da leichter.

    class Main extends JFrame
    und schon habe ich quasi ein fenster.

    Das ist ja wohl mehr als ein unfairer Vergleich.

    Bei JAVA ist einfach das GUI Toolkit in Java reingepackt, stell ich mir ein GUI Toolkit als in C/C++ reingepackt vor, dann mach ich auch nur ein

    foo = new CFRAME
    und schon hab ich quasi mein Fenster.

    Diverse Layout-Manager erleichtern einem die arbeitet.

    Die gibt's bei C/C++ in jedem GUI Toolkit auch.

    Ich denke das spricht alles für Java als Anfänger-Sprache in einem Gymnasium.
    Will ja auch nicht jeder Gymnasiast danach was technisches machen.
    Also ist System-Nahe anwendung auch nicht sooo wichtig.

    Es sollte aber eher um die Grundlagen und das Verständnis des Programmierens gehen und nicht darum, daß man dann am ende eine einfache Endanwendung in Java
    schreiben kann, dafür sind entsprechende Berufsfortbildungen da.

    Ist in Mathematik ja auch so, da lernt man auch die Grundlagen und nicht den Umgang mit z.b. Mathematica.



  • Affenzahn schrieb:

    Ist in Mathematik ja auch so, da lernt man auch die Grundlagen und nicht den Umgang mit z.b. Mathematica.

    Guter Punkt!
    Ich kenne keinen besseren als den historischen Ansatz, um Mathematik zu lernen und zu begreifen.


Anmelden zum Antworten