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



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



  • zum Beispiel schrieb:

    was hältst du von so was ?

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

    Mal abgesehen davon das ich damit nichts neues machen kann, weil ichs nicht verstehe, finde ichs extrem unübersichtlich.
    Wenn ich das sehe, kann ich haar genau das noch mal machen. Aber nichts neues.
    Da finde ichs in Java offensichtlicher.
    Jedenfalls leuchtet mir nicht ein wieso das leichter sein sollte.
    Es ist einfach anders. Und vllt weniger tipparbeit.

    Affenzahn schrieb:

    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.

    Ich wills mir aber nicht vorstellen. Ich wills benutzen.
    Und jeder schüler ist begeistert wenn er mehr als ne Konsole sieht.
    Iwas, was er auch benutzt. Bedenke, es geht hier um leute die das lernen MÜSSEN. Die meisten haben keinen Bock auf nen Schwarzen kasten.
    Programmieren in der Schule ist nicht das was wir hier kennen.
    Die meisten sind extrem unmotiviert wenn sie ne konsole sehen.

    Wenns hier nicht um den durchschnittsschüler geht, ists vollkommen egal welche Sprache man nimmt. Dann gehts drum effektiv zu sein. In der regel sogar nur um einen algorithmus. Dabei ist den meisten egal ob der nun in der Konsole läuft oder eben nicht. In der uni arbeiten wir auch viel mit Putty, heißt nur ne Konsole.

    Aber ein student ist anders. Er hat sich dafür entschieden, und will die Programmierung lernen und Tiefgehend verstehen. Ein schüler hat häufig nicht mal interesse überhaupt dahin zu gehen.

    Ein schüler sieht einfach keinen sinn, irgend einen scheiß zu schreiben der am ende in der Konsole läuft. Das benutzt er nicht, das hat er seinen lebtag nicht gesehen, es ist für ihn einfach überflüssig.

    Dagegen einen einarmigen Banditen zu programmieren, getränke-automaten, Mathematische sachen umzusetzen (Beispielsweise ein programm das Funktionen plottet)ist interessant. Und das Motiviert.

    Und jetzt soll mir mal einer sagen, das ist in C/C++ genau so leicht wie in Java.
    Ich möchte Java hier nicht als die Ultimative sprache Darstellen. Aber für Anfänger halte ich sie am einfachsten. Und es hält sie auf Grund simpelster Grafik bei der Stange.

    Ginge es hier um Studenten oder so würde es sicher anders aussehen.
    Da würde ich den Unterricht aber auch Algorithmik oder so nennen.

    PS:

    volkard schrieb:

    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.

    Wenn ich ein Fach "Umgang mit Matheprogs (z.B. Maple, Mathematica kenn ich nicht, nehme aber mal an es ist auch eins)" habe, dann suche ich mir auch das für die Schüler beste raus. Und lehre auch genau den umgang damit.

    Will ich den Schülern Mathe beibringen, dann nenne ich es Mathe und nicht "Umgang mit Matheprogs". Will ich den Schülern Algorithmisches denken aneignen und tiefgehend fördern, nenne ich es Algorithmik. Nenne ichs Programmieren, hat das nur mit der umsetzung zu tun.

    Entwickelt man einen Algorithmus, ist die Sprache in der er realisiert wird egal. Gleiches gilt für Mathe. Komme ich da zu einer lösung, ist das programm zu umsetzung egal.

    Davon Abgesehen sind wir weit ab vom Thema. Auch wenn das aktuell behandelte weit interessanter als die Frage ist.

    Was wird also meist verwendet? LEIDER VB und Delphi. Und kaum ist die graphische oberfläche weg, kann keiner mehr ein prog schreiben.



  • Faszinierend... wir hatten in der Mittelschule im Fach Informatik noch so tolle dinge wie Dos und Geos 2.0 (kennt das irgendwer?) gelehrt bekommen, wie man mit Excel umgeht und natürlich Grundlagen der Informatik (Was ist ein Bit/Byte, Umrechnungen int/hex/oct, Ram-Rom wie funktionieren Mouse, was ist ein Betriebssystem etc).

    Eigentlich sollte es doch darum gehen Grundlagen zu verstehen, und nicht mit um mit den Wissen: Ich kann JCCPearl#++ fließend Programmieren. Also man sollte dann schon mal sowas wie die allgemeinen Strukturen der Programmierung (Verzweigung, Schleifen, Bedingungen) gehört haben und Grundlegende Konzepte der OOP kennen. Ob das unbedingt mit einer Programmiersprache einher geht, ist egal. Ich glaube für die OOP gibts schon mittlerweile reine Lehrprogramme ohne das man direkt eine Programmiersprache lernen muss, es geht ja hier eher um die OOP Denkweise.



  • Fedaykin schrieb:

    Faszinierend... wir hatten in der Mittelschule im Fach Informatik noch so tolle dinge wie Dos und Geos 2.0 (kennt das irgendwer?) gelehrt bekommen, wie man mit Excel umgeht und natürlich Grundlagen der Informatik (Was ist ein Bit/Byte, Umrechnungen int/hex/oct, Ram-Rom wie funktionieren Mouse, was ist ein Betriebssystem etc).

    es ging hier explizit um die Programmiersprachen. GeOS und DOS kenn ich, war aber vor meiner Schulzeit. Der Rest sind Grundlagen, den jeder irgendwie verklickert bekam.

    Wir haben eine zeitlang auch mit Mediator gearbeitet. Eine Art programmierbares Powerpoint



  • volkard schrieb:

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

    da wird aber kein Fenster für die Zahleneingabe geöffnet - mein Zweizeiler hat GUI 🙂



  • Sqwan schrieb:

    zum Beispiel schrieb:

    was hältst du von so was ?

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

    Mal abgesehen davon das ich damit nichts neues machen kann, weil ichs nicht verstehe, finde ichs extrem unübersichtlich.
    Wenn ich das sehe, kann ich haar genau das noch mal machen. Aber nichts neues.
    Da finde ichs in Java offensichtlicher.

    Für einen Anfänger IST es leichter als Java. Kein public static void main, keine Umrechnung mit %d, keine Args und kein System.dies.das ...



  • Dafür gibts nen Haufen anderer Fragen. Was Transcript? Warum soviele Doppelpunkte?



  • Es unterliegt hoffentlich keiner der Ansicht, ein Anfänger müsste alles sofort ohne jede Erklärung verstehen. Das Smalltalk-Beispiel enthält nur Konstrukte, die man ohnehin ständig braucht: Objekte, Variablen und Nachrichten. Hat man die einmal erklärt bekommen, kann man sich die Bedeutung jedes Doppelpunktes erschließen.

    In Java muss man am Anfang einmal mal glauben, dass man 90% des Programmes so hinzuschreiben hat. Zu wissen was zum Beispiel static bedeutet, ist für das Verständnis von Hello World nicht erforderlich. Im Gegenteil, man wird sich einige Zeit mit Java beschäftigen, bevor man static versteht.

    Und zu dem Basic-Beispiel muss ich auch noch was sagen. INPUT und PRINT sind Schlüsselwörter, also magisch. Nach PRINT wird beispielsweise ein Newline ausgegeben, es sei denn, man hängt ein Semikolon an. Das Verständnis von PRINT oder INPUT hilft einem kein bisschen beim Verstehen der restlichen Sprache. Gut für schnelle Ergebnisse, immerhin.



  • Fedaykin schrieb:

    Faszinierend... wir hatten in der Mittelschule im Fach Informatik noch so tolle dinge wie Dos und Geos 2.0 (kennt das irgendwer?) gelehrt bekommen, wie man mit Excel umgeht und natürlich Grundlagen der Informatik (Was ist ein Bit/Byte, Umrechnungen int/hex/oct, Ram-Rom wie funktionieren Mouse, was ist ein Betriebssystem etc).

    Wir auch, mit ausnahme von geos.
    Die 10 Zeilen die Java für einen anfänger zu viel hat.
    Dafür kann man dann (irgend wann) eine aktuelle sprache.

    Wenn man sich Bewirbt und sagt: "Ich kann Smaltalk"
    Und ein zweiter "Ich Java"
    Und beide sind bis dahin gleich gut, wird man wohl den nehmen der Java kann.

    Zumal heut zu tage viele Abteilungen die für Azubis zuständig sind nicht mal wissen das Smaltalk ne sprache ist. Java ist aber jedem ein begriff.



  • @Sqwan: Das von dir Geschilderte ist aber eher das Problem an dem Konkreten "Wir unterrichten echte Programmiersprachen"
    Viel wichtiger wären sachen wie: Ich weiss was Programmiersprachen ausmachen und kann mich daher sehr schnell in neue Einarbeiten. Wirkliche Grundlagen halt.

    Das sowas idealerweise am Beispiel gelehrt wird ist ok. Aber was nützt es wenn jemand die gesamte Library Landschaft von Java runterbeten kann, wenn er nicht weiss, dass es Speichersparender ist eine const Variable zu nehmen, anstatt ein member zu definieren der nie geändert wird.

    Er muss wissen das ein Zeiger auch platz belegt, aber nicht soviel wie das Objekt selbst auf das er zeigt. Er muss wissen was Zeiger/Referenzen sind etc... womit man das übt ist mir egal. Die Grundlagen müssen stimmen.

    Sowas sind essentielle sachen. Die leider nicht immer gelehrt werden. Manche Lehrer halten ihre Programmiersprache für das nonplusultra und lassen die Leute diese Sprache runterbeten ohne die Grundlagen zu unterrichten. Solche leute haben massiv probleme wenn sie auf einmal eine neue Sprache lernen sollen. Es fällt mir ja schon schwer mich von Garbage Collected Sprachen wieder mal auf C++ um zu steigen. Aber man kommt nach einer weile recht schnell rein, wenn man weiss worauf man achten muss.



  • Fedaykin schrieb:

    @Sqwan: Das von dir Geschilderte ist aber eher das Problem an dem Konkreten "Wir unterrichten echte Programmiersprachen"
    Viel wichtiger wären sachen wie: Ich weiss was Programmiersprachen ausmachen und kann mich daher sehr schnell in neue Einarbeiten. Wirkliche Grundlagen halt.

    Das sowas idealerweise am Beispiel gelehrt wird ist ok. Aber was nützt es wenn jemand die gesamte Library Landschaft von Java runterbeten kann, wenn er nicht weiss, dass es Speichersparender ist eine const Variable zu nehmen, anstatt ein member zu definieren der nie geändert wird.

    Er muss wissen das ein Zeiger auch platz belegt, aber nicht soviel wie das Objekt selbst auf das er zeigt. Er muss wissen was Zeiger/Referenzen sind etc... womit man das übt ist mir egal. Die Grundlagen müssen stimmen.

    Sowas sind essentielle sachen. Die leider nicht immer gelehrt werden. Manche Lehrer halten ihre Programmiersprache für das nonplusultra und lassen die Leute diese Sprache runterbeten ohne die Grundlagen zu unterrichten. Solche leute haben massiv probleme wenn sie auf einmal eine neue Sprache lernen sollen. Es fällt mir ja schon schwer mich von Garbage Collected Sprachen wieder mal auf C++ um zu steigen. Aber man kommt nach einer weile recht schnell rein, wenn man weiss worauf man achten muss.

    Da gebe ich dir ja recht. Das Problem ist, das man dafür Informatik-Interessiert sein muss. Sonnst ist es langweilig, und man lernt garnicht mehr.
    Mitlerweile ist mir die Sprache auch recht egal. Wobei mir Smaltalk doch ein wenig speziell scheint von der Syntax her. Also die ist Extrem anders als bei Moderneren sprachen. Jedenfalls das was ich da gesehen habe.

    Das problem ist, das man schüler einer 8-9 klasse extrem schwer für Abstracte sachen begeistern kann. Alles was nicht bunt ist und Strahlt, ist doof.
    Natürlich ist die Library-Landschaft von Java für die Programmierung uninteressant, dafür gibts ja die Doku.
    Natürlich dürfen Refferenzen etc nicht zu kurz kommen. Auch MUSS klar sein wofür abstract, final, static, private und und und gut ist. Das kommt ja dann mit und mit. Wie gesagt Java ohne OOP kann man sich so wie so schenken. Und OOP ohne OOP zu verstehen funktioniert einfach nicht.

    Und auch OOP finde ich in Java leichter zu lernen als in C++.
    Ich finde in C++ sehen die klassen schon sehr "Komisch" aus.
    Und einfach alle Klassen in einen Ordner und die Klasse mit der Main Kompilieren und alles klappt is in C++ ja auch nicht.

    Das Package system ist eine Stärke von Java. Jedenfalls für Java-Anfänger.
    Spart jedenfalls komplizierte Make-Files.

    Es ist jedenfalls leicht zu sagen das Java nicht das richtige ist.
    Ich habe versucht die Stärken zu zeigen und zu begründen warum es für anfänger gut ist. Zu begründen warum es das nicht ist, ist sicher einfacher.
    Aber was macht C++ denn besonders gut für Anfänger die kaum oder garnicht motiviert sind überhaupt zu programmieren?!?!?!
    Gleiches für Smaltalk oder Basic oder oder oder.



  • Sqwan schrieb:

    Wenn man sich Bewirbt und sagt: "Ich kann Smaltalk"
    Und ein zweiter "Ich Java"
    Und beide sind bis dahin gleich gut, wird man wohl den nehmen der Java kann.

    Ich würde wohl den nehmen, der Smalltalk kann.

    Auch wenn ich kein Smalltalk verwende.


Anmelden zum Antworten