Welche Progammiersprache wird denn heutzutage in der Schule im Fach Informatik verwendet?
-
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.
-
Warum wird dann überhaupt ein Fach unterrichtet wenns keinen Praktischen nutzen hat
Ob ein Fach praktischen Nutzen hat entscheidet sich ja erst bei der Berufswahl. Musik und Kunst waren für mich völlig bedeutungslos, für Andere nicht. Kann ja die Schule nicht vorher wissen ob man Musiker oder SW-Entwickler wird. Das Ganze hilft aber um zu entscheiden, was ich denn werden will.
-
Fedaykin schrieb:
...alles was bisher so kam...
Was bringt es so tief ins Detail zu gehen? Pointer? Wozu?
Grundlagen der Programmierung und die grundlegenden Konstrukte wie Variablen, Bedingungen und Schleifen braucht man nicht nur als Programmierer.
Viele Leute die ein z.B. informatikfremdes Studium wissenschaftliches Studium anfangen kommen z.B. mit Matlab in Verbindung. Da ist etwas Grundwissen durchaus nützlich. Pointer oder sonst welches Zeugs, das Anfänger typischerweise verwirrt braucht man nicht.
Leute die mit CAD Anwendungen arbeiten können Grundkenntnisse ebenfalls gebrauchen, da CAD Anwendungen häufig mit Skriptsprachen erweitert oder automatisiert werden können. Auch da bedarf es keiner komplizierten oder hardwarenahen Konstrukte. Ähnliches gilt für Officeprogramme und Makros.
Weitere Beispiele gibt es inzwischen für alles Mögliche.
Wozu mit OOP rumhampeln? Wozu mit Pointern rumhampeln? Bringt nichts. Das Grundwissen über Grundkonstrukte hingegen sehr wohl. Und das ist auch durchaus etwas, das allgemeinbildende Schulen lehren können.
-
Der Original Poster wollte wissen, welche Programmiersprachen an Schulen konkret verwendet werden. Er wollte nicht wissen, wer was an welcher Uni oder FH macht, und er wollte auch kein pädagogisches Konzept/Lehrplan für den Informatikunterricht an den Schulen (Schultyp/Stufe???).
Ich habe ihm deshalb geantwortet, was meine Frau als Lehrerin in einer freiwilligen Info-AG für Mittelstufe (6.-8. Klasse) machte:
- Java-Hamster (vereinfachtes Java)
- Processing (vereinfachtes Java)
- Asuro Roboter (einfachstes C)
Und was ich in meiner Schulzeit 1990-93 im Oberstufen Grundkurs Info gemacht habe:
- (Turbo-)Pascal
- etwas x86 Assembler
Wer an didaktischen Konzepten und Lehrplan-Konzeption interessiert ist, der soll sich mal anschauen, was z.B. Prof. Hubwieser von der TU München sich so ausgedacht hat (und was mit dem Pflichtfach Info in Bayern nun realisiert wurde)!
Solche Leute haben sich schon einige Gedanken gemacht, wie Informatik in den Allgemeinbildungsauftrag der div. Schultypen passt, was für welche Jahrgangsstufen inhaltlich und didaktisch sinnvoll ist, warum man heute überhaupt jedem informatische Grundkenntnisse beibringen sollte, die über reine Bedienkonzepte von Standardanwendungen hinausgehen, und warum man dafür Stunden in Mathe/Naturwissenschaften oder sonstwo streichen darf und muss.