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



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



  • Noch meine Anmerkung, warum Smalltalk wichtig und gut ist, auch wenn es sich in der Praxis nicht so weit verbreitet hat wie Java/C++/C# etc.

    Smalltalk ist schlicht und ergreifend der Ursprung der objektorientierten Programmierung und der grafischen Benutzeroberflächen.

    Dabei muss man natürlich den Einfluss von LISP und Simula 67 anerkennen. Aber das waren Exoten. Erst Smalltalk-80 hat allgemein großes Interesse an OOP geweckt und dazu geführt, dass Leute wie Cox, Hejlsberg oder Stroustrup mit Objective-C, C mit Klassen/C++, ObjectPascal anfingen, ältere prozedurale Sprachen um hybride OOP-Konstrukte zu erweitern.

    Gosling/Joy et al. haben sich bei Java auch an Smalltalk orientiert (und Objective-C) und haben von Smalltalk z.B. auch das Bytecode-Konzept übernommen (der allerdings auch im Ur-ETH-Pascal schon genutzt wurde, später im UCSD-Pascal). Oder eben Garbage-Collection.

    Auch im Bereich der Design Patterns und der agilen Methoden war Smalltalk massgeblicher Einflussfaktor (MVC gab es Mitte der 70er in Smalltalk), Smalltalk Leute wie Kent Beck haben XP und Patterns, Unit-Tests, etc. im Mainstream propagiert).

    Alan Kay ist mit dem DynaBook, Smalltalk und der GUI einer der wichtigsten Visionäre der Informatik und hat zurecht Turing Award und Kyoto-Preis bekommen.

    Dass Smalltalk sich nicht in der Praxis etablieren konnte, hat eigentlich fast nur historische Gründe, es war seiner Zeit einfach 10-15 Jahre vorraus und hatte eine zu seltsame Syntax, um Leute von prozeduralen, statischen Mainstreamsprachen wie C/Pascal wegzulocken.

    Dabei ist die einfache, klare, flexible und logische Syntax wirklich ein Highlight der Sprache. Und die 100% prozentige Objektorientierung auch.

    Smalltalk war übrigens (wie Logo) für Kinder und Lehrzwecke gedacht und wurde bei Xerox Parc an vielen Schülern ausprobiert. Einige dieser 70er Jahre Smalltalk-Kids sind Anfang der 80er zu Apple um am Mac zu arbeiten. Auch Alan Kay ging später (Mitte 80er -Mitte 90er) zu Apple Research (z.B. Newton Message Pad).

    Dass Smalltalk nicht populärer wurde, lag neben den HW-Anforderungen auch am Preis für Smalltalk Entwicklungssysteme. Noch Anfang/Mitte der 90er wollte ParcPlace so ca. 5000 DM für ein Smalltalk Paket. Nichts für Hobbyuser oder Freelancer...

    Wer mal mit einem Smalltalk spielen will, soll sich Squeak anschauen. Wird von Kay/Ingalls etc. betreut und geht über die Apple/Disney-Linie noch auf das original Smalltalk von Xerox Parc zurück.

    Squeak war auch als Grundsystem für das "One Laptop per Child" Projekt im Gespräch.



  • Tachyon schrieb:

    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.

    Das ist einer der wenigen Posts die mich davon überzeugen könne, das zumindest die Prozedurale Programmierung im Schulwesen Sinn macht. Dann bleibt die Frage offen warum dann heutzutage soviel mit OOP Sprachen gelehrt wird? Naja die Prozeduralen Sachen sind dabei ja gleich. Dummerweise wird man bei Sprachen wie Java und C# gleich in die OOP gezwungen und schaut sich da ggf zuviel sachen ab, die man aus gegeben Anlass noch gar nicht wirklich nutzen soll.

    Ich denke fü solche Zwecke lässt sich sogar was einheitliches/Schültertaugliches finden oder Entwickeln. Der Java Hamster hat dort ja perfekte Ansätze.



  • ohhahahaha schrieb:

    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 😕

    Also ich habe 2002 meinen Abschluss gemacht und wir hatten im Physikunterricht an einem staatlichen allgemeinen Gymnasium Grundlagen zur Digitaltechnik und sogar so ein paar Versuchsbretter um ein paar einfache Schaltungen aufzubauen. Das müsste in der 10. Klasse gewesen sein, vielleicht auch in der 9..

    Darauf aufbauend könnte man den Schülern etwas Grundwissen über Computer vermitteln, das meiner Erfahrung nach sogar vielen erfahrenen Softwareentwicklern fehlt, obwohl genau das eigentlich die Grundlage ist und auch das allgemeine technische Verständnis der Schüler verbessert.



  • Technik schrieb:

    Darauf aufbauend könnte man den Schülern etwas Grundwissen über Computer vermitteln, das meiner Erfahrung nach sogar vielen erfahrenen Softwareentwicklern fehlt, obwohl genau das eigentlich die Grundlage ist und auch das allgemeine technische Verständnis der Schüler verbessert.

    Was ist das? Der erfahrende Softwareentwicklern braucht dieses Wissen nicht, warum sollen wir unsere Schüler damit quällen?



  • Weil die Schule keine berufliche Vorbereitung auf den Beruf Softwareentwickler sein sollte. Warum sollte man primär Dinge lehren, die Softwareentwickler brauchen? Das Verständnis von technischen Geräten ist meiner Meinung nach viel wichtiger. Programmieren sollte man da auch, alleine schon um das gelernte auch in der Praxis anzuwenden, aber zumindest ein bisschen Zeit sollte man auf die technischen Grundlagen verlegen. OOP und ähnliche Konzepte sind zu speziell auf ein Berufsbild ausgelegt, auch wenn es die meisten Leute hier im Forum als "Allgemeinwissen" sehen könnten, weil sie sich in ihrem Beruf täglich damit beschäftigen.



  • Grandios, einmal nachgefragt und total widersprochen. 😃



  • Huch? Habe ich da was übersehen? Ich habe mir meine Beiträge noch ein paar mal angeschaut und kann keine Widersprüche erkennen. Vielleicht haben wir uns da irgendwo missverstanden. 😕



  • Wie wäre es mit Assembler... Auf nem 8080?
    Iwie ohne Mnemonic! Da hat man dann techniche Grundlagen und "Programmierung"



  • Beim Thema technische Grundlagen sollte man wohl erklären was Grundlagen sind. Es ist nicht verkehrt zumindest zu wissen was im PC der Ram/Prozessor etc ist, was Serielle, Paralelle Datenübertragung ist, wozu eine Graka gut ist etc. Es wäre nicht ganz verkehrt zu wissen wie Speicher aufgebaut ist, und wie er Adressiert wird. Warum an mittlerweile auf 64 Bit Systeme umsteigt etc. Funktionsweise HD/DvD etc. Nichts detailiertes halt. In einer Welt in der ein PC's eine Zentrale rolle Spielen, wäre so ein Wissen nicht verkehrt.

    Bei uns im Studium hatten wir ein Fach "Microprozessorarchitektur". Dort gings dann schon richtig in Details. Dort wurde uns wirklich näher gebracht wie ein Prozessor aufgebaut ist. Wir hätten Prinzipiell einen simplen 8 Bit Prozessor basteln können. Dazu kamen details wie Pipelining, wie funktionieren Caches etc.... nichts was jetzt für mich absolut relevant wäre. Aber ein Blick über den Tellerand schadet nichts. Zusätzlich haben wir dort auch mal Assembler programmiert.



  • Ich stell mir die Gesichter der Schüler vor, wenn sie in einer algemeinbildenden Schule plötzlich Assembler programmieren müssten 😃 Das wär dann doch wohl etwas übers Ziel hinausgeschossen.

    Ich bin nach der Diskussion auf den Schluss gekommen, dass es kein "Rezept" gibt, was man zum Thema Programmierung unterrichten sollte. Es gibt mehrere Ansätze, die Sinn machen. Es hat alles seine Vor- und Nachteile. Was ich am Wichtigsten fände, sind Computergrundkenntnisse: Aufbau, Betriebssysteme, grundsätzliche Funktionsweisen von Hard- und Software, Fehlerbehebung,... Wer sich hier vertiefen will, sollte die Möglichkeit dazu haben. Wer in einer Computerklasse arbeitet kann auch tiefer in die Materie einsteigen.



  • Fedaykin schrieb:

    Bei uns im Studium hatten wir ein Fach "Microprozessorarchitektur". Dort gings dann schon richtig in Details. Dort wurde uns wirklich näher gebracht wie ein Prozessor aufgebaut ist. Wir hätten Prinzipiell einen simplen 8 Bit Prozessor basteln können. Dazu kamen details wie Pipelining, wie funktionieren Caches etc.... nichts was jetzt für mich absolut relevant wäre. Aber ein Blick über den Tellerand schadet nichts. Zusätzlich haben wir dort auch mal Assembler programmiert.

    Ich vermute das ist üblich in den Grundstudiumsvorlesungen (bzw. Bachelor) zu "Technische Informatik" (neben den Betriebssystem-Themen).

    Wir haben im TI Praktikum mit TTL Schaltungen angefangen und Abschlussprüfung waren kleinere 6809 Assemblerroutinen auf einem Einplatinen-Dings (keine Hilfsmittel, Zeitlimit, ...)

    Aber was mir am meisten gebracht hat, war die microprogrammierbare 4-Bit CPU, die der Praktikumsleiter gebaut hatte. Ziel war es, auf der 12MHz 4-Bit CPU einen 1MHz 6502 in Microcode zu emulieren. Alle Praktikumsgruppen bekamen einige 6502 Opcodes zugeteilt und ein Limit an Microcode-Zeilen. Ziel war eine möglichst optimierte Emulation. Durch die 4-Bit war man gezwungen, alle 8Bit Ops des 6502 sequentiell zu zerlegen. Die Zugriffe auf 6502 Register waren aufwendige RAM Zugriffe der Micromaschine. Es war nicht leicht, das Limit zu unterbieten - man musste auf möglichst viel Parallelität im horizontalen Microcode achten.

    Das Ding war mit TTLs, GALs und PALs realisiert (heute würde sicher ein CPLD reichen) - allerdings nur einmal, wir Studis haben mit der Software-Emulation der Micromaschine getestet.

    Keine Ahnung, ob es der Praktikumsleiter wirklich geschafft hat, das irgendwann mal in einen C64 einzustöpseln (war sein Ziel). Heutzutage ist ein kompletter C64 im FPGA ja ein Klacks, selbst ein Amiga500 mit Custom Chips und MC68k passt in einen fetten FPGA...

    Fedaykin schrieb:

    Dazu kamen details wie Pipelining, wie funktionieren Caches etc.... nichts was jetzt für mich absolut relevant wäre. Aber ein Blick über den Tellerand schadet nichts.

    Pipelining, ILP, Branchprediction, Register Renaming, Reorder Buffer, Caching etc. ist auch für Softwareentwickler sehr relevant, wenn man HPC Code entwickeln muss. Ohne die TI-Grundlagen und Rechnerarchitektur-Vorlesungen im Hauptstudium würde ich gar nicht verstehen, was Intels Vtune alles ausspuckt, oder wozu man PTLsim nutzen kann (oder AMDs Codeanalyzer...).

    OK, für >95% aller Software ist diese Art der Performance-Optimierung völlig egal. Sonst hätten ja Java und .Net-Sprachen oder gar die vielen Skriptsprachen gar keine Anwendungsfelder.


Anmelden zum Antworten