Menü
Avatar von InDepth
  • InDepth

528 Beiträge seit 12.02.2003

Re: Unsinn.

ddtthh schrieb am 16.06.2019 02:07:

Am Rande bemerkt: Dass es sich dabei nicht nur um Informatiker handelt, kann durchaus auch positiv sein, denn viele Informatiker neigen, wie auch andere Ingenieurswissenschaftler, zu schlechter Allgemeinbildung und Fachidiotentum.

Tun andere Fächer genau so.

Aber mit wenigen Ausnahmen beileibe nicht im gleichen Ausmaß:

https://www.spiegel.de/lebenundlernen/uni/spiegel-aktion-studentenpisa-der-feine-unterschied-a-731207.html

Die Aussage ergibt sich unmittelbar aus der Tatsache, dass die Sprache noch breitflächig erwünscht und vertreten ist, obwohl sie keinerlei Fürsprecher mehr außerhalb des Bildungssektors hat.

Fürsprecher außerhalb des Bildungssektor sind für die Wahl bei dem Wettbewerb ja irrelevant. Also belegt die Wahl nur, dass diese Sprache irgendwo gelehrt wird, nicht warum.

Die einzige von dir bislang angebotene Alternativerklärung ist schlichtweg nicht überzeugend.

Irgendwie scheint Dich das komplett zu überfordern, dass Deine Aussagen Dein einzige Beleg einfach nicht her gibt.

Irgendwie scheint Satz dein einander durch sein zu.

Und wie gesagt werden viele akademische Sprachen an Unis als Lehrsprachen eingesetzt.

Aber nicht in der Einführungsveranstaltung, bitte nicht schon wieder ablenken. DIE Einführungssprache war jahrzehntelang Pascal/Modula, dann Java, und jetzt zunehmend Python. Die funktionalen Fetzen, mit denen man die Studis irritiert, waren und sind immer nur Beiwerk.

An Schulen weniger, weil man da vor Allem an Vorgaben von Ministerien gebunden ist.

Ich höre von dir nach wie vor immer dieselbe Leier: "die nehmen Pascal bestimmt nicht, weil sie es für geeignet halten, sondern aus anderen Gründen, die ich leider nicht nennen kann, also hast du Unrecht, und im Zweifelsfall ist bestimmt Ministerialbürokratie der Grund, weil mir sonst partout keiner einfallen will".

Newsflash: Die Kultusministerien schreiben keine Programmiersprachen vor, die wählt der Lehrkörper der jeweiligen Schule aus.

Du darfst aber gern versuchen, eine alternative Erklärung dafür zu finden.

Habe ich, Du weigerst Dich nur, sie zu akzeptieren.

Ok, wir fassen also zusammen: entweder ist ein Großteil der Lehrenden meiner Ansicht -- oder ein Großteil der Lehrenden ist Opfer veralteteter Lehrpläne (die aber keinesfalls etwas mit Inkompetenz zu tun haben, denn das willst du ja nicht gesagt haben).

Seems legit.

Letzen Endes ging es aber um die Frage, ob man bei einer imperativen Sprache heute erwarten kann, dass es in irgend einer Weise OO gibt, oder ob das etwas besonders ist.

Nein, es ging hier ursprünglich um die Frage, was genau du mit "einfache, imperative Programmiersprache" implizieren wolltest. Geschenkt.

Ein großer Anteil des verfügbaren C++-Codes ist schwerpunktmäßig imperativ; das liegt daran, dass viele Entwickler einfach nur einen C++-Compiler nutzen und simple C++-Konstrukte aus Komfortgründen, aber effektiv 90% ihres Codes reines C ist.

Vielleicht, weiß ich nicht. Ich habe ehrlich gesagt keine Lust mehr, über Punkte zu streiten, die mich nie interessiert haben.
Wenn Du heute einen zufälligen Programmierer fragst, ob es ihn überraschen würde, wenn eine Programmiersprache OO-features hat, wird er vermutlich "nein" sagen.

Stimmt. Das wird er aber auch sagen, wenn du fragst, ob es ihn überraschen würde, dass jenseits von Businesslogik viel Code auch auf OO-Konstrukte verzichtet, obwohl die verwendete Sprache sie bietet. Geschenkt.

Und damit liegst du nachweislich falsch. Diese "Kosmetik" sorgt nämlich z.B. dafür, dass ohne messbaren Mehraufwand eine der kritischsten Fehlerklassen, nämlich Buffer Overflows, drastisch eingedampft wird.

Habe ich mich vielleicht falsch ausgedrückt. Sicher vermeidet das viele Fehler. Aber es löst das Kernproblem nicht. Manuelle Speicherverwaltung macht Arbeit, und die wird man durch Rangechecks alleine nicht los.

Wie gesagt, es geht ja gerade darum, dass diese Arbeit erwünscht ist. Ohne sie verstehst du die Maschine nicht.

Rust ist ein interessantes Projekt, aber sicher nicht anfängerfreundlich. Die Syntax ist umständlich und das Borrowing-Konzept gut durchdacht, aber, da haben wir es wieder, völlig unintuitiv.

Man muss für das Borrowing-Konzept nichts verstehen, dass man nicht verstehen muss, wenn man mit manueller Speicherverwaltung arbeiten will.

Es ist faszinierend für mich, wie du so überhaupt gar kein Gespür für Intuitivität besitzt. Warum schreibst du nicht gleich "man muss für den Lambda-Kalkül nichts verstehen, was man nicht auch für eine Einführung in Python lernen muss"? :D

Da ich das für vergleichsweise kompliziert halte, würde ich das aber auch nicht als erste Sprache vermitteln. Jedenfalls nicht an Schüler.

Manuelle Speicherverwaltung ist simpel, solange man sie nicht in der verkorksten C/C++-Syntax betreiben muss.

Bei typischen Anfängerprogramme compilieren außerdem auch mit Borrow-Checker erstmal einfach. Das war bis vor Kurzem noch anders, geht nun aber gut.

Ja, ich habe mitbekommen, dass das Problem kürzlich etwas entschärft wurde. Besser intuitiv lesbar wird Rust dadurch aber trotzdem nicht, und intuitive Lesbarkeit ist eine zentrale Forderung an jede Lehrsprache.

Du steigst ja z.B. auch nicht mit Quicksort oder Heapsort ein, sondern mit Bubblesort.

Das ist etwas anderes. Da geht es um das Verständnis von Algorithmen überhaupt. Keiner programmiert später groß Bubblesort. Es geht darum, wie man bestimmte Ziele beim Programmieren erreicht. Und imperatives Manipulieren von Datenstrukturen ist sehr umständlich.

Imperatives Manipulieren von Datenstrukturen ist aber genau das, was der Rechner tatsächlich tut.

Simple Faustregel: wann immer die unter Fachleuten übliche Lösung zu komplex für Anfänger ist, zeigt man diesen zunächst eine einfachere; daran gibt es nichts abzulehnen.

Unsere Meinung unterscheidet sich hier wohl bezüglich "zu komplex".
Man muss hier auch beachten, dass sich Anfänger da in ihren Fähigkeiten und auch in ihrer Weise zu denken, stark unterscheiden.
Die Idee, es gäbe "die Lösung" ist schon absurd.
Imperatives Programmieren ist jedenfalls etwas, was ziemlich schnell sehr kompliziert und undurchschaubar wird. Man sollte nicht den Eindruck entstehen lassen, dass das so sein müsste.

Es spricht ja nichts dagegen, später eine elegantere Lösung zu lehren. Wie in den meisten Professionen lernt man aber erstmal am besten, Dinge "zu Fuß" zu erledigen, selbst wenn man das später wegen mangelnder Effizienz nie wieder tun wird. Hier gilt es natürlich, "Bare Metal" gegen Verdaulichkeit abzuwägen; man fängt logischerweise nicht mit Schaltungslogik an und arbeitet sich von Assembler zu den Hochsprachen vor, sondern vermittelt erstmal pflegeleichte imperative Grundkonzepte und expandiert dann in beide Richtungen, zur Maschine hin und von ihr weg.

Nein. Du vermittelst leider den Eindruck völliger Betriebsblindheit und besitzt offenbar keinerlei Gespür dafür, was für Nichtfachleute gut lesbar und verständlich ist. Rust ist für Programmieranfänger nichts als Kauderwelsch.

Ich hab genug mit Programmieranfängern zu tun.

Na, die haben mein Beileid.

Aber Du vermittelst den Eindruck, dass Du meinst, Du hast das didaktische Konzept für Alle gefunden. Das ist vermutlich der einzig sichere Indikator, dass jemand komplett daneben liegt.

Sagt der, der Rust für eine gute Einsteigersprache hält und für den funktionale Sprachelemente total intuitiv sind. Wenigstens hast du Sinn für Humor, wenn auch eher unfreiwillig :)

Du verstehst nicht, wie die Kids ticken, das ist ein Muster, das sich durch deine gesamte Argumentation zieht.

Du erweckst den Eindruck, Kids wären eine homogene Masse. Zunächst einmal hatte ich Deine Aussage für Pascal als Lehrsprache auch für wesentlich pauschaler gehalten. Dass es Dir vor Allem um jüngere Schüler geht, wurde mir erst mit der Zeit klar.

Nein. Mir geht es primär um die Bereiche Oberstufe und Erstsemester, deren Übergang fließend ist. Für die Kleinen reicht eine interpretierte Sprache wie Python zum Reinschnuppern aus.

Allerdings sind "Kids" auch sehr verschieden. Natürlich gibt es da auch welche, die Mathematik stark motiviert, und die ein abstrakter Zugang auch motivieren würde.

Mag es geben, ist aber die absolute Ausnahme.

Es gibt natürlich auch welche, die dann komplett desinteressiert oder überfordert sind, oder für die schnell was blinken muss.
Ändert sich eigentlich auch später nicht so grundsätzlich, nur trennen sich die Leute dann etwas stärker. In der Schule muss man halt jeden irgendwie erreichen.

In der Schule muss man vor allem die Mehrheit erreichen. Die Minderheit am oberen Ende bleibt davon unberührt, denn die kümmert sich ohnehin eigenständig um ihre Interessen; man darf sie nur nicht dabei behindern. Und die Minderheit am unteren Ende hat eh meist die Arschkarte.

Dass an der Uni die Maßstäbe dann höher angelegt werden, wird leider oft als Ausrede dafür missbraucht, didaktisch schlechte Lehre zu betreiben.

Es erreicht genau diejenigen, die 1-2 Jahre später ihr Informatik-Studium beginnen.

Und? Sollte die Schule denen nix bieten?

Tut es doch, eben eine hochwertige Vorbereitung aufs Studium und nicht irgendeinen Pipikram.

Darüber kann man streiten. Fakt ist aber auf jeden Fall, dass man so generell mehr über die Maschine "Computer" lernt, weil die eben durch und durch imperativ funktioniert.

Naja. Wenn man nur Pascal programmiert, so wie ich das auch noch im Informatikunterricht gemacht hat, erfährt man nichts über einen Computer.
Zwar ist eine Registermaschine natürlich imperativ, aber man weiß das ja nicht, wenn es einem keiner vermittelt.

Eine gut lesbare imperative Sprache ist die am einfachsten zu vermittelnde Basis, von der ausgehend man in Richtung Maschine, aber auch in Richtung höherer Abstraktion expandieren kann. Ob man es dann auch tut, hängt natürlich von der Lehrkraft ab.

Speicherverwaltung war da nur Beifang, also wo ist das Problem? Oder möchtest du behaupten, die Kids seien heute einfach dümmer? :)

- Einführung in Algorithmen und Datenstrukturen, von den Basics bis hin zur Rekursion und balancierten Bäumen
- Schaltungslogik und -technik von den Basics bis hin zum JK-Master-Slave-Flipflop und praktischem Aufbau einer ALU
- Einführung in die Assemblerprogrammierung und freie Projekte

Und das haben alle komplett durchdrungen? Aber ein paar funktionale Basics sind dann echt zu viel?

Nein, das haben nicht alle durchdrungen, aber es war ein Wahlfach als Grund- oder Prüfungskurs und alle Teilnehmer waren zumindest so fit, dass es keine Unternummern gab. Die Topleute waren die, die am BWInf teilnahmen und von denen später auch die meisten Informatik studiert haben. Und im Studium gab es dann natürlich auch funktionale Inhalte, aber eben nicht als Einführungsveranstaltung, was wie gesagt auch Unsinn wäre.

Sorry, Du erweckst einfach den Eindruck, dass Du meinst, dass man genau das genau so gelernt haben muss, wie Du das gelernt hast. Und dass das genau der einzige Weg und der Beste ist.

Es war auf jeden Fall ein solider, effektiver Weg, das kann man von vielen moderneren Varianten nicht gerade sagen. Wie Eben Upton anmerkt: den Erstsemestern fehlen heute zunehmend Kenntnisse, die man früher voraussetzen konnte. Das wäre wohl kaum der Fall, wenn die heutigen Lehrmethoden durchweg so effektiv wie die früheren wären.

Wer wirklich mit Rekursion klar kommt, versteht auch, was eine Funktion ist, und dass man die als Wert übergeben kann.

Wir reden hier aber nicht von funktionalen Elementen, sondern von Funktionen im programmiertechnischen Sinne, also "Subroutinen mit oder ohne Rückgabewerte", die nicht den Anspruch haben, wirkungsfrei zu sein.

Klar wird das vermittelt und es spricht auch nichts dagegen, es ist nur wenig praxisrelevant. Du weißt doch: funktionale Sprachen sind die Zukunft der Softwareentwicklung, in etwa so, wie die kalte Fusion die Zukunft der Energieversorgung ist. Mit anderen Worten: sie werden auch immer die Zukunft bleiben ^^

Quatsch. Praktisch alle neueren Sprachen haben heute funktionale Elemente und viele wurden um diese erweitert. Von daher ist dieser Spruch mittlerweile überholt.

Was nichts darüber aussagt, wie häufig diese auch tatsächlich genutzt werden.

Weiter unten demonstrierst du zudem, das Upton-Video immer noch nicht aufmerksam gesehen zu haben.

Habe ja um Verständnis gebeten, dass ich zu faul für Deine Arbeitsaufträge bin...

Solange du den Inhalt der Quelle nicht kennst, redest du trivialerweise schlichtweg über Dinge, von denen du keine Ahnung hast.

"Die Ausrichter des IOI/BWInf sind keine Fachleute"

Habe ich nicht gesagt.

Aber sicher hast du das gesagt:

Ein Schülerwettbewerb sehe ich da ansich schon nicht besonders relevant an. [...] Daher würde ich Universitäten nehmen, da entscheiden sich oft gut ausgebildete Personen recht unabhängig für eine Sprache. [...] Und es ist halt ein Schülerwettbewerb, welche Relevanz sollen dessen Kriterien für irgendwas haben? Ist jetzt nicht so, dass der von irgend welche Koriphäen der Informatik oder der Programmiersprachenentwicklung ausgerichtet würde.

Aber nehmen wir mal an, du hättest das alles gar nicht so gemeint, dann wird der folgende Teil um so bizarrer:

"(Schüler-)Wettbewerbe sind unwichtig"

Ist meine Meinung ja. Didaktisch zudem für mich nicht überzeugend.
Sehe nicht, dass es zu dem Punkt eine "Wahrheit" geben kann, aber Du kennst sie vermutlich.

Und dass deine Meinung den Heerscharen von Experten widerspricht, welche diese Wettbewerbe ausrichten, irritiert dich dabei nicht im Mindesten? Ich sehe hier nur einen, der die Wahrheit für sich gepachtet hat, und ich bin's nicht :)

"Lehrsprachen müssen für die Uni geeignet sein, nicht für die Schule"

Habe ich auch nicht gesagt. Deine ursprüngliche Aussage war völlig pauschal.
Lehrer sind in ihrer Entscheidung was sie lehren, aber nicht frei. Deswegen ist die Beobachtung, dass sie etwas tun, allein, nicht sinnvoll.

Noch mal: Die Kultusministerien schreiben keine Programmiersprachen vor, die wählt der Lehrkörper der jeweiligen Schule aus. Inwiefern ist das anders als an der Uni?

Abgesehen davon beschäftigen sich natürlich auch Wissenschaftler an Unis mit der Frage, wie man Schülern etwas beibringt. Solche Leute wären sicher auch gute Quellen.

Und das sind genau die Leute, bei denen die Lehrer an der Uni studiert haben, wie man Schülern am besten etwas beibringt.

"Anspruchsvoller Informatik-Unterricht ist in der Schule nicht notwendig/möglich"

Habe ich nicht gesagt. Ich habe gesagt, dass der Umfang, der im Vergleich zu Mathematik gering ist, dem erzielbaren Verständnis in der Breite grenzen setzt. Und de facto weiß ja kaum der Schulabgänger, der nicht besonders interessiert ist, irgendetwas über Informatik.

Der Schulabgänger, der nicht besonders interessiert ist, weiß auch nichts über Mathematik. Und wie gesagt: für diese Klientel, vor allem in der Mittelstufe, reichen "Medienkunde" und "Hello World" in Python völlig aus; da lohnt sich keine Diskussion, vermutlich tut es da sogar Visual Basic. Mir geht es hier um die technisch interessierten Oberstufenschüler/Erstsemester, darum dreht sich die Diskussion.

"Rust ist eine geeignete Einsteigersprache"

Ich habe gesagt, dass ich sie besser finde um manuelle Speicherkontrolle zu unterrichten, als andere Sprachen.
Ich habe auch gesagt, dass das mein Gefühl ist, nicht, dass ich das für einen stehenden Fakt halte.
Solche Fakten behauptest nur Du. Deswegen kann man mit Dir ja auch nicht vernünftig diskutieren.

Pascal wurde von Wirth als Lehrsprache entwickelt, der dafür den Turingpreis erhielt. Es hat sich weit über 25 Jahren lang als dominante Lehrsprache an Schulen und Unis bewährt und 10 davon auch als populäre Industriesprache.

Rust hat was? Dich, der "fühlt", dass es besser geeignet für die Lehre ist.

Danke, dass du dein Gefühlsleben so offenherzig mit mir teilst, aber ich halte mich dann doch lieber an Fakten :)

Soll ich weitermachen oder möchtest du erstmal in dich gehen?

Aus diesem Satz spricht schon wieder ein Level von Arroganz.
Bist Du eigentlich Lehrer? Denn ich hoffe schwer, dass nicht.

Nein danke, ich habe "richtige" Informatik studiert, bin aber anderweitig didaktisch qualifiziert.

Mehrgleisigkeit ja, z.B. ist Python in der Mittelstufe oder bei den Kleinen vermutlich eine gute Lösung, quasi als moderne BASIC-Variante. Aber in der Oberstufe und bei den Undergraduates bietet Python wie gesagt einfach zuviel Abstraktion und zu wenig Maschinennähe.

Wenn jemand mal die Grundlagen kennt, kann man ihm auch deutlich mehr zumuten. Da braucht es dann auch kein Pascal mehr. Es kommt da weniger aufs absolute Alter an, sondern auf die Vorbildung. Wenn die Konzepte in Python gut verstanden sind, habe ich auch kein Problem mehr mit beispielsweise Rust.

Es geht nicht darum, was man lernen kann, sondern darum, welche Methodik am besten geeignet ist. Du kannst auch in Veranstaltungen mit horrender Didaktik dasselbe lernen wie in gut durchgeführten, es bedeutet nur eine massive Verschwendung von Zeit und Energie. Das war einer der Hauptgründe, weshalb ich mir bspw. im Studium einen Großteil der Vorlesungen geschenkt habe; pure Zeitverschwendung aufgrund miserabler Didaktik, inkl. der verwendeten Materialien.

Du hast irgendwie wahnsinnig Angst davor, Leuten zu viel zuvermuten, oder etwas zuzumuten, dass Du erst später oder anders gelernt hast.

Nö. Wenn jemand nachweislich demonstrieren kann, dass neuere Ansätze effektiver in der Wissensvermittlung sind, bin ich sofort dabei. Bisher sehe ich aber überwiegend aufgeblasene ideologische Hypes, und die Studienanfänger haben immer weniger Vorkenntnisse.

https://cscircles.cemc.uwaterloo.ca/de/

OK, gibt auch Leute, die es anders versucht haben, hier beschreiben zum Beispiel Wissenschaftler ihre Erfahrung mit funktionaler Programmierung für Erstsemester: https://www.researchgate.net/publication/2345572_Teaching_Functional_Programming_to_First-Year_Students
Man findet auch immer wieder einzelne Vorlesungen, die funktionale Programmierung für Erstsemester einfügen, hier einer, der es wohl mit Scala macht (http://www.programmingusingscala.net/ für CS1/2). Scala wäre mir persönlich vermutlich zu komplex und die Komplexität zeigt sich evtl. zu leicht.

Das sind alles Einzelbeispiele, eine systematische Untersuchung dazu kenne ich nicht.
Aber ich glaube, dass man Anfängern einmal etwas zutrauen sollte, eine gewisse Bereitschaft zum Experimentieren haben sollte, und dass vieles an der Didaktik im Detail hängt.
Du scheinst Dich schon längst darauf festgelegt zu haben, dass Du genau weißt, wie es geht und wie es muss, und dass alle, die mal was Anderes versuchen würden, ganz sicher keine Ahnung haben können.

Es wird im Elfenbeinturm seit mindestens 40 Jahren immer wieder versucht, dem tumben Volk die Eleganz und immensen Vorteile funktionaler Programmiersprachen zu vermitteln; Erstsemester können sich am wenigsten wehren und sind daher beliebte Ziele. Seit mindestens 40 Jahren nehmen aber 99% der so Bespaßten bei erstbester Gelegenheit Reißaus und wechseln zu imperativen Sprachen. Ich lege hier gar nichts fest, sondern die Informatiker stimmen mit den Füßen ab :)

Hättest du das Video aufmerksam gesehen, wüsstest du sogar, was die genauen Auswirkungen sind, wenn man erst an der Uni anfängt zu Programmieren, die werden dort nämlich genannt :)

Ok, dann hast Du mir also nie verraten, was Du aussagen willst.
Auf diese Spielchen mit "rat aus Videos was ich meine", habe ich keine Lust.

Du musst mir bei Gelegenheit mal erklären, was für dich der Unterschied zwischen "ich lese diese Quelle in 7 Minuten und diskutiere dann über den Inhalt" und "ich höre diesen 7-minütigen Videovortrag und diskutiere dann über den Inhalt" ist. Ersteres scheint für dich ja ok zu sein, letzteres aber eine unerhörte Zumutung.

Ich habe auch schon mindestens in einem füheren Beitrag gesagt, dass Du einfach sagen sollst, was Du sagen willst.
Von daher ist der Punkt jetzt wahrscheinlich auch durch. Wenn Du es mir sagen wolltest, hättest Du es ja vermutlich mittlerweile getan.

Es bewerben sich immer weniger qualifizierte Erstsemester für das Informatik-Studium in Cambridge, und diejenigen, die es tun, bringen durchweg weniger einschlägige Vorkenntnisse mit als früher. Unter anderem besitzen sie kein grundlegendes Verständnis von Computern und keine Programmiergrundlagen mehr; anders als früher muss man somit im Studium diese Grundlagen erst vermitteln, was Zeit kostet, die woanders fehlt.

Und das ist, worum es hier geht: die moderne Didaktik ist nachweislich weniger effektiv als die alte. Das heißt nicht, dass die alte der Weisheit letzter Schluss wäre, aber es heißt, dass die neue bislang schlechter ist.

Das kann man übrigens auch in anderen Fachbereichen beobachten, wie der Mathematik: Es werden CAS-Rechner eingeführt, damit die Schüler von der Fron der Handarbeit befreit werden und angeregt über die tieferen mathematischen Aspekte der betrachteten Funktionen und Gleichungssysteme diskutieren können. An der Uni schlagen dann massenweise Leute auf, die schon Probleme mit dem Bruchrechnen haben.

Bewerten
- +
Anzeige