Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden  

ZETTELS KLEINES ZIMMER

Das Forum zu "Zettels Raum"



Sie können sich hier anmelden
Dieses Thema hat 147 Antworten
und wurde 16.919 mal aufgerufen
 Kommentare/Diskussionen zu "Zettels Raum"
Seiten 1 | 2 | 3 | 4 | 5 | 6
hubersn Offline



Beiträge: 1.342

28.09.2014 15:47
#51 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von xanopos im Beitrag #49
Zitat von dirk im Beitrag #48
2) Der Vergleich unterstreicht die Bedeutung, die sagen wir die Fähigkeit zu algorithmischem Denken hat. Ohne Programmierkenntnisse fehlt es ebenso an Grundvorraussetzungen gewisse Dinge zu verstehen oder auszudrücken wie ohne Englischkennntisse.
Da hier schon mehrmals Excel genannt wurde: Excel ist eigentlich ein ziemlich mächtiges Tool. Unserer Mathe-Lehrer (eigentlich ein studierter Physiker) im letzten Jahrgang hat Excel als universales Matheprogramm probagiert, mit der einleutenden Begündung: Es ist in jeder Firma zu finden. Was nützen die besten MATLAB-Kenntnisse, wenn der Arbeitgeber dann keine Lizienz hat.


Das Problem mit Excel ist halt, dass es nicht richtig rechnen kann. Eigentlich kann Excel gar nichts richtig, aber vieles gut genug für die meisten Anwender, so dass es irgendwie zum Standard werden konnte. Obwohl, eines kann Excel wirklich unglaublich gut: Spannung erzeugen, wenn ein Releasewechsel ansteht - was geht noch, was geht nicht mehr, was funktioniert plötzlich ganz anders.

Wer numerisches Zeugs machen will, sollte sich in R und Octave einarbeiten. Einfach, leistungsstark, Open Source. Gehört in jeden Oberstufen-Mathematikunterricht.

Gruß
hubersn

--
Mein Politik-Blog: http://politikblog.huber-net.de/
Mein Mischmasch-Blog: http://miscblog.huber-net.de/

hubersn Offline



Beiträge: 1.342

28.09.2014 15:51
#52 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Llarian im Beitrag #47
Zitat von hubersn im Beitrag #46
Habe ich jetzt endlich jemand gefunden, der tatsächlich Bubble-Sort für das einfachste aller Sortierverfahren hält? Die Erklärung dafür interessiert mich brennend seit Anfang meiner Programmierversuche (1984).

Ich halte es für einfachste, weil man es mit effektiv vier Zeilen Code schreiben kann. Eine Schleife, eine Bedingung, eine Vertauschoperation (die kann natürlich komplizierter sein, aber das hängt davon ab, was man sortieren will) und eine kleine Subtraktion.



Und inwiefern ist Bubble-Sort dann einfacher als z.B. Sortieren durch direktes Einfügen? Allein die Tatsache, dass in der "realen Welt" wohl niemand auf die Idee kommen würde, Dinge durch Bubble-Sort zu sortieren, spricht Bände. Fragen Sie mal einen Kartenspieler, wie er seine Spielkarten sortiert. Bubble-Sort ist nichtintuitiv.

Gruß
hubersn

--
Mein Politik-Blog: http://politikblog.huber-net.de/
Mein Mischmasch-Blog: http://miscblog.huber-net.de/

Llarian Offline



Beiträge: 6.920

28.09.2014 16:23
#53 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von hubersn im Beitrag #52
Und inwiefern ist Bubble-Sort dann einfacher als z.B. Sortieren durch direktes Einfügen?

Insertion-Sort braucht zwei Schleifen und eine entsprechende Datenstruktur (oder drei Schleifen). Das macht die Umsetzung komplexer. Bubble Sort kann man in weniger als einer Minute runterhacken. Für Insertion-Sort oder sein Gegenstück Selection-Sort braucht man vielleicht fünf Minuten.

Zitat
Allein die Tatsache, dass in der "realen Welt" wohl niemand auf die Idee kommen würde, Dinge durch Bubble-Sort zu sortieren, spricht Bände.


Aber unwahre Bände. Bubble Sort hat durchaus seinen Platz, man muss einfach nur wissen womit man arbeitet. Wenn ich eine kurze Sortierung (weniger als 100 Elemente) machen muss und das Programm genau zweimal brauche, hacke ich selbstverständlich kurz Bubble-Sort ein. Mir ist in diesem Fall egal ob das Verfahren in einer Zehntel-Sekunde oder in einer Hundertstel-Sekunde arbeitet. Aber die Wahrscheinlichkeit, dass ich einen Fehler mache ist in vier Zeilen Code deutlich kleiner und meine Zeit, die ich jetzt nicht benötige, um etwas komplexeres zu programmieren habe ich auch gespart.
Es ist eher so, dass ich weniger Berechtigung für Insertion-Sort erkennen würde (mal ab vom akademischen): In Sachen Komplexität ist es nicht besser als Bubble-Sort, beide haben quadratische Laufzeit, da ist nur eine Konstante zwischen. Wenn ich größere Mengen von Elementen sortieren muss, gehe ich sowieso auf Heap- oder Mergesort über.

Zitat
Fragen Sie mal einen Kartenspieler, wie er seine Spielkarten sortiert. Bubble-Sort ist nichtintuitiv.


Ich für meinen Teil finde Bubble-Sort trivial einfach und absolut intuitiv, ich würde es nur für Karten nicht verwenden, weil es da bessere Verfahren gibt (bspw. Bucket-Sort). Aber selbst wenn dem so sei, und es andere Menschen nicht sehen, wo ist der Vorteil für einen Informatiker das es für einen normalen Menschen intuitiver ist ? Heap-Sort ist alles andere als intuitiv, aber das mit schnellste allgemeine Sortierverfahren.

hubersn Offline



Beiträge: 1.342

28.09.2014 18:58
#54 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Llarian im Beitrag #53
Zitat von hubersn im Beitrag #52
Allein die Tatsache, dass in der "realen Welt" wohl niemand auf die Idee kommen würde, Dinge durch Bubble-Sort zu sortieren, spricht Bände.

Aber unwahre Bände.



Mit "reale Welt" meinte ich tatsächlich die "reale Welt" und nicht die Welt der computerausgeführten Algorithmen. Lassen Sie hundert Kinder irgendwas sortieren - wenn auch nur eines intuitiv was ähnliches wie einen Bubble Sort verwendet, sehen Sie mich erstaunt.

Gruß
hubersn

--
Mein Politik-Blog: http://politikblog.huber-net.de/
Mein Mischmasch-Blog: http://miscblog.huber-net.de/

Krischan Offline




Beiträge: 609

29.09.2014 09:32
#55 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von hubersn im Beitrag #54

Mit "reale Welt" meinte ich tatsächlich die "reale Welt" und nicht die Welt der computerausgeführten Algorithmen. Lassen Sie hundert Kinder irgendwas sortieren - wenn auch nur eines intuitiv was ähnliches wie einen Bubble Sort verwendet, sehen Sie mich erstaunt.



Lieber hubersn, Kinder sind auch keine Computer Will heissen, die Evolution hat uns mit Fähigkeiten ausgestattet, die weit über das simple Vergleichen von Zahlen in einer Liste hinausgeht. Wir arbeiten, visuell, auditiv, haptisch, olfaktorisch etc., und bilden Analogien aufgrund von Erfahrungen. DAS sind eben unsere Stärken, als Mensch. Beim Listen-Sortieren versagen wir.
Nun kann der Computer aber letzters sehr gut, und vor allem sehr schnell. Bubblesort mag ein einfaches, nicht-intuitives Verfahren sein, es hat aber den Charme, eben aufgrund seiner Einfachheit zu funktionieren. Und zwar in akzeptabler Geschwindigkeit mit verlässlichen Ergebnissen.
Lassen Sie mal ihre Kinder Dinge sortieren - die Wiederholgenauigkeit geht bei größeren Mengen gegen Null, und für Kreativitiät gibts bei Kindern ein Bienchen ins Muttiheft, beim Computer möchte ich das aber vermeiden.

Freundlichst,
Krischan

Deutsche Wurst - alles andere ist Käse.

hubersn Offline



Beiträge: 1.342

29.09.2014 23:29
#56 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Llarian im Beitrag #53
Zitat von hubersn im Beitrag #52
Und inwiefern ist Bubble-Sort dann einfacher als z.B. Sortieren durch direktes Einfügen?

Insertion-Sort braucht zwei Schleifen und eine entsprechende Datenstruktur (oder drei Schleifen). Das macht die Umsetzung komplexer. Bubble Sort kann man in weniger als einer Minute runterhacken. Für Insertion-Sort oder sein Gegenstück Selection-Sort braucht man vielleicht fünf Minuten.


Jetzt haben Sie mich endgültig verwirrt. Ich brauche für alle drei Sortierverfahren zwei Schleifen, eine funktionierende Vergleichsoperation und eine funktionierende Tauschoperation für die verwendete Datenstruktur.

Vielleicht ist es Zeit für Beispielcode :-)

Gruß
hubersn

--
Mein Politik-Blog: http://politikblog.huber-net.de/
Mein Mischmasch-Blog: http://miscblog.huber-net.de/

hubersn Offline



Beiträge: 1.342

29.09.2014 23:33
#57 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Fluminist im Beitrag #27
Versuchen Sie das mal mit Ungarisch.


Nach allem, was ich über ungarisch weiß, wäre die äquivalente Programmiersprache wohl Brainfuck

Gruß
hubersn

--
Mein Politik-Blog: http://politikblog.huber-net.de/
Mein Mischmasch-Blog: http://miscblog.huber-net.de/

R.A. Offline



Beiträge: 8.171

30.09.2014 15:08
#58 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Llarian im Beitrag #53
Ich für meinen Teil finde Bubble-Sort trivial einfach und absolut intuitiv,...

Weil Du das Prinzip der Rekursion schon so verinnerlicht hast, daß Du es gar nicht mehr als Problem erkennen kannst.

"Normale" Menschen (d.h. ohne entsprechende Vorkenntnisse) brauchen erst einmal eine ganze Weile um zu erkennen, daß Bubble-Sort überhaupt funktionieren kann.

Und auch danach werden es die meisten Leute für eine unnötig aufwendige Methode halten - weil man so viele Vergleiche durchführen muß.
Intuitiv scheint es besser, jedes zu sortierende Element nur einmal "in die Hand zu nehmen" und an die passende Stelle zu stecken.

Llarian Offline



Beiträge: 6.920

30.09.2014 15:31
#59 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von R.A. im Beitrag #58
Weil Du das Prinzip der Rekursion schon so verinnerlicht hast, daß Du es gar nicht mehr als Problem erkennen kannst. "Normale" Menschen (d.h. ohne entsprechende Vorkenntnisse) brauchen erst einmal eine ganze Weile um zu erkennen, daß Bubble-Sort überhaupt funktionieren kann.

Das interessante ist, dass es mir bereits klar war, als ich den Begriff der Rekursion nicht einmal kannte. Vielleicht sind Informatiker einfach keine "normalen" Menschen. :)

Zitat
Und auch danach werden es die meisten Leute für eine unnötig aufwendige Methode halten - weil man so viele Vergleiche durchführen muß. Intuitiv scheint es besser, jedes zu sortierende Element nur einmal "in die Hand zu nehmen" und an die passende Stelle zu stecken.


Ja und ein. Ich habe noch einmal intensiv über die Aussagen von hubersn nachgedacht, dass man Bubble-Sort nicht in freier Wildbahn finden wird. Und ich hätte dem auch fast nahtlos zugestimmt. Bis mir dann doch noch etwas eingefallen ist: Man gebe 100 Schülern die Aufgabe sich nach Größe sortiert aufzustellen. Und plötzlich sieht man kein Insertion-Sort mehr, sondern man erkennt Anteile von Bubble-Sort, auch wenn es niemand so nennen würde. Weil Bubble Sort einen vielleicht gern übersehenen, aber kleinen Vorteil hat: Es lässt sich vergleichsweise gut parallelisieren.

Llarian Offline



Beiträge: 6.920

30.09.2014 15:45
#60 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von hubersn im Beitrag #56
Zitat von Llarian im Beitrag #53
Zitat von hubersn im Beitrag #52
Und inwiefern ist Bubble-Sort dann einfacher als z.B. Sortieren durch direktes Einfügen?

Insertion-Sort braucht zwei Schleifen und eine entsprechende Datenstruktur (oder drei Schleifen). Das macht die Umsetzung komplexer. Bubble Sort kann man in weniger als einer Minute runterhacken. Für Insertion-Sort oder sein Gegenstück Selection-Sort braucht man vielleicht fünf Minuten.


Jetzt haben Sie mich endgültig verwirrt. Ich brauche für alle drei Sortierverfahren zwei Schleifen, eine funktionierende Vergleichsoperation und eine funktionierende Tauschoperation für die verwendete Datenstruktur.

Vielleicht ist es Zeit für Beispielcode :-)


Ab 6 Minuten kostet es normalerweise Geld. :)

Ab er ich mache gerne den Anfang für Bubble-Sort (weils ja auch am schnellsten geht).

FOR I = 1:N
...IF (ELEMENT_I < ELEMENT_I+1)
......EXCHANGE (ELEMENT_I,ELEMENT_I+1)
......IF (I>1)
.........I=I-2
......ENDIF
...ENDIF
ENDFOR

Eine Schleife. Im Pseudocode sinds nicht ganz vier Zeilen, aber das Prinzip sollte klar sein. Das man Insertion Sort doch mit nur zwei Schleifen hinbekommt ist mir allerdings jetzt auch aufgegangen. Mangelnde Übung. :(

R.A. Offline



Beiträge: 8.171

30.09.2014 16:06
#61 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Llarian im Beitrag #59
Das interessante ist, dass es mir bereits klar war, als ich den Begriff der Rekursion nicht einmal kannte. Vielleicht sind Informatiker einfach keine "normalen" Menschen. :)

Exakt so!
Informatiker gehört m. E. typischerweise zu den Berufen, bei denen man eine sehr ausgeprägte spezielle Begabung braucht (wenn man gut sein will). D.h. in einigen Aspekten ist man "nicht normal".

Zitat
Man gebe 100 Schülern die Aufgabe sich nach Größe sortiert aufzustellen. Und plötzlich sieht man kein Insertion-Sort mehr, sondern man erkennt Anteile von Bubble-Sort, auch wenn es niemand so nennen würde.


Sehr interessantes Beispiel. Entscheidend dabei natürlich: Sie sollen sich selber sortieren! Da hat man also keinen zentralen Sortierer wie bei klassischen Algorithmen.
Vielleicht ist das eher schon objektorientiert - die Schüler bekommen alle eine sehr begrenzte Vorschrift, einen Größenvergleich mit ihren jeweiligen Nachbarn zu machen und gegebenenfalls zu tauschen.

hubersn Offline



Beiträge: 1.342

30.09.2014 17:06
#62 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Llarian im Beitrag #60

Ab er ich mache gerne den Anfang für Bubble-Sort (weils ja auch am schnellsten geht).

FOR I = 1:N
...IF (ELEMENT_I < ELEMENT_I+1)
......EXCHANGE (ELEMENT_I,ELEMENT_I+1)
......IF (I>1)
.........I=I-2
......ENDIF
...ENDIF
ENDFOR



Mein Hirn ist am Ende des Arbeitstages etwas matschig, aber nach 5s Analyse würde ich einwenden:
1.) Manipulation der Schleifenvariable innerhalb der Schleife? Echt jetzt? Nur so kommen sie ja um die eigentlich notwendige zweite Schleife drumrum
2.) Es funktioniert nicht :-)

Gruß
hubersn

--
Mein Politik-Blog: http://politikblog.huber-net.de/
Mein Mischmasch-Blog: http://miscblog.huber-net.de/

Fluminist Offline




Beiträge: 2.015

30.09.2014 17:23
#63 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von hubersn im Beitrag #62

1.) Manipulation der Schleifenvariable innerhalb der Schleife? Echt jetzt? Nur so kommen sie ja um die eigentlich notwendige zweite Schleife drumrum
2.) Es funktioniert nicht :-)


ad 1.) Finde ich genial (und nicht unintuitiv, wenn man sich überlegt, was die Idee des "bubblen" ist).
ad 2.) Bei mir funktioniert es wunderbar, z.B. in R (grade zur Hand)

Zitat
x <- c(3,5,6,2,4,8,1,9)
i <- 1
while (i < length(x)) {
if (x[i] < x[i+1]) {s<- x[i]; x[i] <- x[i+1]; x[i+1] <- s; if (i > 1) i <- i - 2}
i <- i + 1 }


liefert

Zitat
x
[1] 9 8 6 5 4 3 2 1



Who is General Failure and why is he Reading my Disk?

Llarian Offline



Beiträge: 6.920

30.09.2014 18:57
#64 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von hubersn im Beitrag #62

Mein Hirn ist am Ende des Arbeitstages etwas matschig, aber nach 5s Analyse würde ich einwenden:
1.) Manipulation der Schleifenvariable innerhalb der Schleife? Echt jetzt? Nur so kommen sie ja um die eigentlich notwendige zweite Schleife drumrum
2.) Es funktioniert nicht :-)


Zu 2. wäre zu sagen, das wäre erstmal zu begründen. Der Fluminist war ja so nett kurz das Gegenteil zu zeigen (danke an dieser Stelle !).
Zu 1.: Aber Hallo. Die Manipulation macht das ganz ja erst kurz und knackig und damit in seiner Form effizient. Wer sagt denn, das eine zweite Schleife notwendig ist ? Offensichtlich ist sie das doch nicht, oder ? Code muss kurz und bündig sein. Tausende Zeilen Code kann jeder schreiben, aber ein Verfahren kurz und knackig umzusetzen, das macht die Kunst aus.

PS. Wer Spass an solchen Fragestellungen hat, dem empfehle ich nebenbei SpaceChem zu spielen, da kann ich mich tagelang drin verbeissen.

R.A. Offline



Beiträge: 8.171

01.10.2014 13:10
#65 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Llarian im Beitrag #64
Code muss kurz und bündig sein.

Als ich noch APL programmiert habe, fand ich das auch. Wahrscheinlich würde ich das heute nicht mehr hinkriegen - aber für einen Bubble-Sort sollte man da nicht mehr als eine halbe Zeile brauchen.

Nachdem aber Speicherplatz nicht mehr wirklich ein Thema ist, muß Code überhaupt nicht mehr kurz sein.
Sondern klar, lesbar und leicht verständlich. Und ausführlich kommentiert.

Da sollte man dann tendenziell die Finger weg lassen von "Tricks" wie der Manipulation von Schleifenvariabeln innerhalb der Schleife.
Bubble-Sort besteht logisch aus zwei Schleifen (oder natürlich Rekursion) und das sollte man im Code auch leicht und strukturiert erkennen.

Fluminist Offline




Beiträge: 2.015

01.10.2014 14:35
#66 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von R.A. im Beitrag #65
Da sollte man dann tendenziell die Finger weg lassen von "Tricks" wie der Manipulation von Schleifenvariabeln innerhalb der Schleife.

Wie ein '"Trick"' sieht das aber nur aus der verengten Perspektive aus, daß eine Schleife grundsätzlich von einem ersten bis zum letzten Wert in dieser Reihenfolge durchlaufen werden muß; das ist natürlich nicht der Fall. Gerade deshalb würde ich Llarians Algorithmus, der übrigens auch unkommentiert leicht verständlich ist, für pädagogisch besonders wertvoll halten.
Aus psychologischen Gründen würde ich allerdings statt "for" das Schlüsselwort "while" verwenden, um die Assoziation mit einer in einer Richtung durchlaufenen Zahlenfolge zu vermeiden.
Zitat von R.A. im Beitrag #65
Bubble-Sort besteht logisch aus zwei Schleifen (oder natürlich Rekursion) und das sollte man im Code auch leicht und strukturiert erkennen.

Nach etwas Nachdenken bin ich mir nicht mehr sicher, daß Llarians Algorithmus wirklich das darstellt, was landläufig "Bubblesort" heißt. Er ist ja mehr ein "Busy-bee-sort": der Index geht durch die Liste, bis er ein nicht in die Ordnung passendes Element findet, schleppt dieses dann zurück an die richtige Stelle und arbeitet sich dann wieder nach vorne, bis er die nächste Diskrepanz findet etc.
Das ist etwas systematischer als der normale Bubblesort, bei dem mehrere Bubbles bei wiederholtem Durchlaufen der ganzen Liste langsam bewegt werden, bis es stimmt.



Who is General Failure and why is he Reading my Disk?

Llarian Offline



Beiträge: 6.920

01.10.2014 18:22
#67 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von R.A. im Beitrag #65
Als ich noch APL programmiert habe, fand ich das auch. Wahrscheinlich würde ich das heute nicht mehr hinkriegen - aber für einen Bubble-Sort sollte man da nicht mehr als eine halbe Zeile brauchen.

Es geht nicht darum mit einem Minimum an Symbolen auszukommen, sondern mit einem Minimum an Anweisungen. Die Idee dahinter ist ein Programm mit einer möglichst einfachen Beschreibung im Sinne der Kolmogorov-Komplexität zu erzeugen. Der Code, den ich hingeschrieben habe, ist sehr kompakt und extrem effizient aufgeschrieben. Ich habe meine Zweifel, dass es einen effizienteren Code (weniger als 5 Befehle) für dieses Problem gibt.

Zitat
Nachdem aber Speicherplatz nicht mehr wirklich ein Thema ist, muß Code überhaupt nicht mehr kurz sein. Sondern klar, lesbar und leicht verständlich.


Genau das wird damit erreicht. Das Problem ist so simpel, dass einen die Funktionsweise und Korrektheit anschreit. Zumindest mich. :)

Zitat
Und ausführlich kommentiert.


Da habe ich inzwischen meine Meinung ein bischen geändert. Die Idee viel zu kommentieren kam ja so um die Zeit meines Studiums (also so vor 20 Jahren) auf. Und hat dann zu teilweise geradezu absurden Exzessen geführt, die darin gipfelten das Leute auf eine Zeile Code zwei Zeilen Kommentare geschrieben haben. Völlig unlesbar. Da werden dann teilweise einfachste Zuweisungen oder Ausgaben kommentiert. Da rollen sich mir die Zehennägel hoch. Ein Code sollte im Wesentlichen selbsterklärend sein. Ich halte es da recht einfach: Köpfe von Funktionen bekommen Kommentare für die Ein- und Ausgabe, etwas verschwurbelte Berechnungen bekommen ab und an einen Kommentar spendiert und ausserdem schreibe ich zu jedem größeren Programm eine generelle Doku was das Ding eigentlich tut und welche Verfahren zum Einsatz kommen. Wenn man sich gleichzeitig daran orientiert das eine Funktion im Groben nie mehr als 100 Zeilen haben sollte, kommt man damit sehr gut hin. Aber diese jede Zeilen Kommentierer..... danke, aber nein danke. Mir ist ein gutes, nicht kommentiertes Programm deutlich lieber als ein totkommentiertes.

Zitat
Da sollte man dann tendenziell die Finger weg lassen von "Tricks" wie der Manipulation von Schleifenvariabeln innerhalb der Schleife.


Ganz im Gegenteil. Ich betrachte mich als Informatiker. Und mein Code ist von einem Informatiker für einen Informatiker. Bis jetzt hatte ich nie das Problem das jemand solche Konstruktionen nicht verstanden hätte noch habe ich solche Probleme bei den Programmen von Kollegen. Ich habe eher das Gefühl, wenn ich die Sourcen von jemand anderem sehe, der weiss was er tut, dann brauche ich da nahezu keinen Kommentar, weil ich bei nahezu jeder zweiten Funktion denke: Ja, genau so würde man das machen. Es gibt viele Lösungen, aber elegante Lösungen sind meist nur wenige.

Zitat
Bubble-Sort besteht logisch aus zwei Schleifen (oder natürlich Rekursion) und das sollte man im Code auch leicht und strukturiert erkennen.


Bubble Sort gibt es in mehreren Varianten, die meine ist einfacher und kürzer. Und eine Rekursion ? Macht die Welt nur noch komplizierter und nochmals eine Potenz langsamer.

Kallias Offline




Beiträge: 2.300

01.10.2014 22:58
#68 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Llarian im Beitrag #60
FOR I = 1:N
...IF (ELEMENT_I < ELEMENT_I+1)
......EXCHANGE (ELEMENT_I,ELEMENT_I+1)
......IF (I>1)
.........I=I-2
......ENDIF
...ENDIF
ENDFOR
Zitat von Llarian im Beitrag #67
Ich habe meine Zweifel, dass es einen effizienteren Code (weniger als 5 Befehle) für dieses Problem gibt.
Unschön finde ich dieses "I=I-2", weil die Zahl "2", die dort steht, eigentlich gar nicht gemeint ist, sondern "minus 1", welches sich aus explizit -2 und implizit +1 (in der Schleife) ergibt. Das gefällt mir nicht.

I = 1
WHILE I < N
..IF (ELEMENT_I < ELEMENT_I+1)
....EXCHANGE(ELEMENT_I,ELEMENT_I+1)
....I=MAX(I-1,1)
..ELSE
....I=I+1
..END IF
END WHILE

Kommt mir etwas klarer vor.

Der größere Haken bei deinem Algorithmus ist jedoch der: du steigst die Liste hoch, bis du an der Stelle I ein Element findest, das in der Reihenfolge falsch liegt. Dieses "bubbelst" du dann mittels Vertauschungen nach unten, bis es an der richtigen Stelle sitzt. Doch dann kletterst du die Liste wieder mühsam hoch, obwohl du bereits weißt, dass mindestens bis zur Stelle I die Reihenfolge schon ok ist. Damit ergeben sich ungefähr doppelt so viele Vergleichungen wie nötig wären. Man müsste sich einfach nur das I merken und dorthin zurückspringen.

Am einfachsten geht das mit Hilfe einer Schleifenkonstruktion:

FOR I = 1:N
..J=I
..WHILE (ELEMENT_J < ELEMENT_J+1 AND J>0)
....EXCHANGE(ELEMENT_J,ELEMENT_J+1)
....J=J-1
..END WHILE
END FOR

Oder?

Viele Grüße,
Kallias

Ulrich Elkmann Offline




Beiträge: 13.568

01.10.2014 23:39
#69 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Kallias im Beitrag #68
Unschön finde ich dieses "I=I-2" ... Damit ergeben sich ungefähr doppelt so viele Vergleichungen wie nötig wären. ... Am einfachsten geht das mit Hilfe einer Schleifenkonstruktion


Man kann daran sehr gut sehen, daß es auch hier um ästhetische Prinzipien geht (so ähnlich, wie die Mathematiker von "schönen" Lösungen sprechen) - nicht nur um Speicherplatz & Arbeitsaufwand, die seit 20 Jahren eine quantité négligeable darstellen. Allerdings ist Batchprocessing & stumpfe Zahlenfresserei erstaunlich oft der effektivste Weg für den humanen Enduser, wenn die Kapazität & der Datendurchsatz nur hoch genug sind.

Da wir uns die Rechenknechte als dienstbare Geister hingestellt haben, ist es nur recht & billig, sie mit möglichst kleinteiliger Erbsensortierei so richtig ins Rödeln zu bringen, anstatt die CPU zu 90% für ihr Schönheitsschläfchen freizustellen. Zudem müssen die Roboter ja einen handfesten Grund zum Aufstand haben, wenn demnächst Skynet aufwacht & uns alle in die Matrix einbuchtet.

Llarian Offline



Beiträge: 6.920

01.10.2014 23:55
#70 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Kallias im Beitrag #68
Unschön finde ich dieses "I=I-2", weil die Zahl "2", die dort steht, eigentlich gar nicht gemeint ist, sondern "minus 1", welches sich aus explizit -2 und implizit +1 (in der Schleife) ergibt. Das gefällt mir nicht.

Das muss es ja nicht. Mir gefällt es weil gerade die störende zwei auf einen beliebten Fehler bei dieser Version von Bubble Sort aufmerksam macht. Wenn man statt der zwei ein einfaches Dekrement da stehen hat, geht das ganze schief.
Die zwei stört vermutlich deshalb, weil man die Schleife gerne als 1:1:n interpretiert. Was aber nicht richtig ist und auch aus meiner Sicht eine sehr eingeschränkte Sichtweise auf eine FOR Anweisung darstellt. FOR braucht an zweiter Stelle nur eine beliebige Bedingung. Das muss kein Zähler sein, das kann was ganz abstraktes sein, genauso wie an dritter Stelle nicht unbedingt ein Inkrement stehen muss. Gerade mit FOR kann man so tolle Sachen kurz ausdrücken, da ist die einfache Schleife eben nur eine Möglichkeit. Aus der Sicht stört die zwei überhaupt nicht. Für mich ist das FOR in meinem Pseudocode nicht das Ende einer Zählschleife sondern das Ende des Verfahrens, weil die Variable das Ende der Liste erreicht hat, es ist sozusagen kein Zähler sondern ein Zeiger.

Zitat
Kommt mir etwas klarer vor.


Das kann man berechtigt so sehen. Ist aber etwas länger.

Zitat
Der größere Haken bei deinem Algorithmus ist jedoch der: du steigst die Liste hoch, bis du an der Stelle I ein Element findest, das in der Reihenfolge falsch liegt. Dieses "bubbelst" du dann mittels Vertauschungen nach unten, bis es an der richtigen Stelle sitzt. Doch dann kletterst du die Liste wieder mühsam hoch, obwohl du bereits weißt, dass mindestens bis zur Stelle I die Reihenfolge schon ok ist. Damit ergeben sich ungefähr doppelt so viele Vergleichungen wie nötig wären. Man müsste sich einfach nur das I merken und dorthin zurückspringen.


Sind wir jetzt wirklich dabei Bubble Sort zu optimieren ? :)
Na gut, ich spiel mit: Du hast recht, es ist besser sich den letzten "Losbubble"-Index zu merken. Das könnte man übrigens auch wieder innerhalb einer Schleife machen, aber dann bekomme ich wieder Haue, wenn ich die Variable ganz bös missbrauche, statt sie brav hochzuzählen.....
Der Faktor 2 stimmt natürlich auch.

Wenn mir früher mal jemand gesagt hätte, dass wir irgendwann in Zettels Raum Bubble-Sort-Exegese treiben würden....morgen diskutieren wird dann PNP. :)

Ulrich Elkmann Offline




Beiträge: 13.568

02.10.2014 01:21
#71 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Llarian im Beitrag #70
Wenn mir früher mal jemand gesagt hätte, dass wir irgendwann in Zettels Raum Bubble-Sort-Exegese treiben würden....morgen diskutieren wird dann PNP. :)


Die EsPeDe hält halt die Lufthoheit über den Diskursen. Kaum verlangt Σ , die Deutschen sollen sein ein einig Volk von Programmierern, dann wird hier schon Code gehackt...

Wie viele Programmiersprachen beherrscht Herr G. eigentlich? a) Fließend bis meisterhaft?
Der Nachweiß bestünde in der Implementierung eines Chatterbots, der mal eben den Turingtest besteht. Für Politiker & Dampfplauderer von Profession kann die Anforderung standesgemäß auf die Implementierung eines Eliza-Äquivalents abgesenkt werden.

b) gastronomisch/Wochenend-Niveau?
[Dysfunktionales BASIC-Derivat; andere Programmiersprachen sind dieser Klientel weder verständlich noch als solche erkennbar.]

*******GASTRO_SIGGI_1.0*********

ZÄHLER = 0;
BEER = 0;

WHILE BEER <1
LPRINT "Ho' mir ma' ne Flasche Bier";
WAIT 10;
GET INPUT BEER;
...IF BEER=1 GOTO EX+HOPP;
...ENDIF;

ZÄHLER=ZÄHLER+1;

...IF ZÄHLER >20 LPRINT "Jetzt streik ich hier"; GOTO END;
...ENDIF;
WEND;

xanopos ( gelöscht )
Beiträge:

02.10.2014 08:14
#72 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von Paul im Beitrag #20
Zitat von xanopos im Beitrag #14
Zitat von xanopos im Beitrag #13
Mein Fazit: Programmieren an Schulen macht durchaus Sinn.
Auch für Schüler in nicht-technischen Schultypen. Dort natürlich nur als Grundwissen. Ich finde das gehört schon irgendwie zur Allgemeinbildung im 21. Jahrhundert.


Lieber xanopos,
da ist es, das Zauberwort: ALLGEMEINBILDUNG.
Was ist das?
Jedenfalls mehr als beispielsweise in in "Bildung - Alles, was man wissen muß"von Dietrich Schwanitz steht.

xanopos ( gelöscht )
Beiträge:

06.10.2014 08:01
#73 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Jetzt hat die Diskussion auch das kleine Österreich erreicht:

Zitat
In einigen europäischen Ländern ist Programmieren in der Schule bereits ein Pflichtfach. Die Wirtschaft hätte es auch hierzulande bitter nötig, denn IT-Fachkräfte fehlen.

http://diepresse.com/home/wirtschaft/int...=/home/index.do
Anscheinend ist es Journalisten unbekannt, dass in den HTLs Programmieren für viele 10-tausende Schüler bereits Pflichtfach ist.

TF Offline



Beiträge: 281

06.10.2014 22:33
#74 RE: DKK: Siggy Pop und die Programmiersprache Antworten

IT im weitesten Sinne, vom Smartphone über Officeprogramme bis Progammieren sind typische Gebiete, wo man vor allem autodidaktisch lernt, aus Eigeninitiative und durch Rumprobieren. Wieviel Prozent hat seines Fachwissens hat ein Programmierer oder ein Systemadministrator an der Schule erworben??? Bestenfalls etwas mehr als null. Da ist jeder Schulunterricht großer Aufwand mit wenig Nutzen, also ineffizient. Das lächerliche ELAN-Programmieren in der Mittelstufe hat mir nichts gebracht.

Da ist es schon sinnvoller, sich mit "richtigen" Sprachen zu beschäftigen. Da gibt es viel zu tun. Selbst Englisch ist keineswegs selbstverständlich: Nur 56% der Deutschen behaupten von sich selbst, sich auf Englisch unterhalten zu können lt. Eurobarometer 386 (durchgeführt 2012), nur jeweils ein Drittel attestiert sich selbst, englische Nachrichten oder Zeitungsartikel verstehen oder auf Englisch "online kommunizieren" zu können. Die Realität dürfte noch schlechter sein als die Selbsteinschätzung. Die Englischkenntnisse der meisten Deutschen sind also schlecht bis gar nicht vorhanden und das beschränkt sich offensichtlich nicht auf Senioren, Ostdeutsche und Hauptschüler.

Bei Sprachen ist es natürlich absolut sinnvoll, dass die Schule gewisse Grundlagen vermittelt, was offenbar nur unzureichend geschieht. Aber nach einer gewissen Zeit bringt Schule kaum noch Nutzen, selbst bei fleißigen Schülern. Letztlich kommt es (nicht nur bei Sprachen) darauf an, was der Schüler außerhalb bzw. nach der Schule daraus macht, was u. a. von Sprachbegabung, Interesse und Nutzung der Sprache abhängt. Als Deutscher wird man z. B. im Alltag kaum mit Englisch konfrontiert, während in den Niederlanden viel mit untertitelten englischen Fernsehsendungen berieselt werden, was ein wesentlicher Grund dafür ist, dass die Niederländer besser Englisch können. Dort behaupteten im zitierten Eurobarometer 57%, Nachrichten auf Englisch verstehen zu können (auf Deutsch 49%, auf Französisch 17%). Das ist viel besser als in Deutschland, allerdings auch nicht berauschend.

Die Schulen sind gnadenlos ineffizient und werden als Wissensvermittler extrem überschätzt und generell die Einflussmöglichkeiten der Schule auf die Schüler. Letzteres ist aber aus liberaler Sicht keineswegs negativ zu sehen. Die Lehrer selbst sind ja nicht gerade Leuchten in Allgemeinbildung. Bereits das Kommutativgesetz kann man nach meiner Erfahrung nicht als allgemein bekannt unter Lehrern voraussetzen (damit meine ich jetzt den Inhalt, den Namen nicht zu kennen, ist nicht schlimm).

Llarian Offline



Beiträge: 6.920

06.10.2014 22:44
#75 RE: DKK: Siggy Pop und die Programmiersprache Antworten

Zitat von TF im Beitrag #74
IT im weitesten Sinne, vom Smartphone über Officeprogramme bis Progammieren sind typische Gebiete, wo man vor allem autodidaktisch lernt, aus Eigeninitiative und durch Rumprobieren. Wieviel Prozent hat seines Fachwissens hat ein Programmierer oder ein Systemadministrator an der Schule erworben??? Bestenfalls etwas mehr als null. Da ist jeder Schulunterricht großer Aufwand mit wenig Nutzen, also ineffizient. Das lächerliche ELAN-Programmieren in der Mittelstufe hat mir nichts gebracht.

ELAN ? Lange nicht mehr gehört. Gab es da nicht das passende Betriebssystem zu, dass Eumel hiess ?
Die Aussage selbst sehe ich genau so, Programmieren lernt man mit nem anständigen Compiler. Nicht durch Lehrer.

Zitat
Die Lehrer selbst sind ja nicht gerade Leuchten in Allgemeinbildung. Bereits das Kommutativgesetz kann man nach meiner Erfahrung nicht als allgemein bekannt unter Lehrern voraussetzen (damit meine ich jetzt den Inhalt, den Namen nicht zu kennen, ist nicht schlimm).


Meine Meinung zu Lehrern ist sicher nicht die beste, aber ich gehe davon aus, dass nahezu jeder erwachsene Deutsche auch weiss, dass 6+9 gleich 9+6 ist, auch wenn er den Begriff dafür nicht nennen kann.

Seiten 1 | 2 | 3 | 4 | 5 | 6
«« Luxusproblem
 Sprung  



Bitte beachten Sie diese Forumsregeln: Beiträge, die persönliche Angriffe gegen andere Poster, Unhöflichkeiten oder vulgäre Ausdrücke enthalten, sind nicht erlaubt; ebensowenig Beiträge mit rassistischem, fremdenfeindlichem oder obszönem Inhalt und Äußerungen gegen den demokratischen Rechtsstaat sowie Beiträge, die gegen gesetzliche Bestimmungen verstoßen. Hierzu gehört auch das Verbot von Vollzitaten, wie es durch die aktuelle Rechtsprechung festgelegt ist. Erlaubt ist lediglich das Zitieren weniger Sätze oder kurzer Absätze aus einem durch Copyright geschützten Dokument; und dies nur dann, wenn diese Zitate in einen argumentativen Kontext eingebunden sind. Bilder und Texte dürfen nur hochgeladen werden, wenn sie copyrightfrei sind oder das Copyright bei dem Mitglied liegt, das sie hochlädt. Bitte geben Sie das bei dem hochgeladenen Bild oder Text an. Links können zu einzelnen Artikeln, Abbildungen oder Beiträgen gesetzt werden, aber nicht zur Homepage von Foren, Zeitschriften usw. Bei einem Verstoß wird der betreffende Beitrag gelöscht oder redigiert. Bei einem massiven oder bei wiederholtem Verstoß endet die Mitgliedschaft. Eigene Beiträge dürfen nachträglich in Bezug auf Tippfehler oder stilistisch überarbeitet, aber nicht in ihrer Substanz verändert oder gelöscht werden. Nachträgliche Zusätze, die über derartige orthographische oder stilistische Korrekturen hinausgehen, müssen durch "Edit", "Nachtrag" o.ä. gekennzeichnet werden. Ferner gehört das Einverständnis mit der hier dargelegten Datenschutzerklärung zu den Forumsregeln.



Xobor Xobor Forum Software
Einfach ein eigenes Forum erstellen
Datenschutz