Autor Beitrag
Novelist
Hält's aus hier
Beiträge: 2
Erhaltene Danke: 1



BeitragVerfasst: Mo 11.03.19 10:42 
Hi,

ich hätte eine etwas andere Frage: Ich schreibe gerade an einem Buch und habe eine Nebenfigur, die Entwickler ist und gerade an einem neuen Algorithmus bastelt.
Ich bin total branchenfremd, habe also bis auf mein Filmwissen keine Ahnung, wie sich Entwickler tatsächlich unterhalten, wenn sie über die Entwicklung eines neuen Algorithmus sprechen.
Gibt es hier jemanden, der meinen Dialog oder meine Sätze lesen würde und mir sagt, ob das authentisch ist? Oder ein Forum, wo ich das erfragen kann?

Vielen Dank im Voraus!

Sinem


Moderiert von user profile iconChristian S.: Topic aus Algorithmen, Optimierung und Assembler verschoben am Mo 11.03.2019 um 10:03
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8410
Erhaltene Danke: 431

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.2 CE
BeitragVerfasst: Mo 11.03.19 12:23 
Das ist eine wirklich interessante Frage. :lol:

Das Problem fängt vielleicht sogar schon bei der Fragestellung an - es ist (finde ich) durchaus fraglich, ob Entwickler wirklich an einem "neuen Algorithmus basteln", oder ob sie nicht vielmehr "nur" einen bestehenden Algorithmus implementieren.

Bei der Entwicklung neuer Algorithmen (blöd, dass das wie "Entwickler" klingt), sind oft Dinge wie formale Korrektheit oder asymptotische Laufzeitabschätzung interessant, bei der Implementierung (das, was dann die Programmierer oder Software-Entwickler dann tun) sind dann eher Klassendesign, Variablenverwaltung und tatsächliche Laufzeit wichtig (d.h. nicht mehr in O-Notation, sondern mit Berücksichtigung der konstanten Faktoren durch z.B. Overhead durch einen objektorientierten Ansatz oder Kapselung in Frameworks...).

Natürlich ist das nicht klar voneinander zu trennen, und es gibt große Schnittmengen. Sofern die Textpassagen nicht zu lang sind, kann ich da aber gerne mal einen Blick drauf werfen und etwas Feedback geben. :les: :lupe:

So als wissenschaftlicher Mitarbeiter an der Uni im Bereich "Algorithmen und Datenstrukturen" kann ich erstmal nur sagen: Fast immer, wenn in den Medien von Algorithmen die Rede ist, rollen sich mir die Fußnägel hoch. Der Begriff wird sehr oft in einen mysteriös-negativen Kontext gesetzt ("Algorithmen bestimmen mehr und mehr unser Leben, und man muss was dagegen tun"), so dass ich mich jedes Mal frage, wie die Autoren dieser Texte sich ein Leben ohne Algorithmen vorstellen. Z.B. beim Kaffee kochen oder bei der korrekten Abfolge von Aufstehen, Duschen und Anziehen ...

In Filmen oder fiktionalen Texten muss man da natürlich immer Kompromisse eingehen, völlig klar. Selbst als Entwickler versteht man nicht die Diskussion zweier anderer Entwickler, die an einem anderen Projekt arbeiten - da fehlt dann sehr oft der Kontext, wenn es z.B. um eine Frage geht wie "woher kommt denn das -1 dort, und ist das da richtig?". :D

_________________
Oel ngati kameie.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1565
Erhaltene Danke: 270


Delphi 10 Seattle Prof.
BeitragVerfasst: Mo 11.03.19 12:35 
Das "Problem" werden wohl alle Branchen haben. Ich glaube nicht, dass jemand sich jeden Abend als Vorabendserie anschauen wird, wie ein Krankenhausarzt ne 24-Stunden-Schicht schiebt und dann völlig fertig zuhause ins Bett fällt. :D
Genauso wird sich niemand anschauen wollen, wie wir Entwickler uns über unsere Arbeit unterhalten. Da muss der Autor halt seine Phantasie spielen lassen, damit das ne spannende Sache wird. Und ich kann sehr gut mit dem Hacker leben, der mit dicker Nickelbrille in einem abdunkelten Raum grün leuchtende Buchstabenkombinationen auf den Bildschirm zaubert und trotzdem mit einem "Trööt-trööt" in roten Lettern auf dem Bildschirm "ZUGRIFF VERWEIGERT!!!11elf" blinkt. :lol: Es ist halt Fiktion.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8410
Erhaltene Danke: 431

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.2 CE
BeitragVerfasst: Mo 11.03.19 13:05 
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Und ich kann sehr gut mit dem Hacker leben, der mit dicker Nickelbrille in einem abdunkelten Raum grün leuchtende Buchstabenkombinationen auf den Bildschirm zaubert und trotzdem mit einem "Trööt-trööt" in roten Lettern auf dem Bildschirm "ZUGRIFF VERWEIGERT!!!11elf" blinkt. :lol: Es ist halt Fiktion.

Klar, deswegen finde ich ja auch den Film "Hackers" so klasse, wenn da der Admin auf seiner Spielzeug-Tastatur rumkloppt, während der Hacker in einer 3D-Animation durch die Verzeichnisse spaziert Link. :lol:

Aber man kann ja trotz aller dramaturgisch notwendigen Anpassungen ein klein wenig darauf achten, dass nicht totaler Unsinn erzählt wird, und zumindest einige Fachbegriffe einigermaßen korrekt eingesetzt werden. Also dass man sowas wie "if-Schleife" vermeidet oder "das Programm ist jetzt NP-Complete, es kann also compiliert werden." :D

_________________
Oel ngati kameie.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1178
Erhaltene Danke: 95

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: Mo 11.03.19 21:39 
Auch wenn ich mir vermutlich nen Watschn einfange, es muss trotzdem raus:
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Das ist eine wirklich interessante Frage. :lol:

Das Problem fängt vielleicht sogar schon bei der Fragestellung an - es ist (finde ich) durchaus fraglich, ob Entwickler wirklich an einem "neuen Algorithmus basteln", oder ob sie nicht vielmehr "nur" einen bestehenden Algorithmus implementieren.

Nich jeder Entwickler arbeitet an einer Uni und muss sich von nem Bücherwurm sagen lassen welchen Algorithmus er Heute implementieren soll. Es gibt auch Entwickler, dann dürfen sie sich auch so nennen, die Lösungen für neue Probleme finden müssen. Was nicht selten mit einer Suche nach bestehenden Lösungen beginnt und eben manchmal in einem Produkt endet das die Welt verändert. Oder eben nur das Leben einiger Menschen deutlich einfacher macht.

Es ist (finde ich) durchaus Arrogant sich hinzustellen und zu behaupten dass es fraglich ist ob ein Entwickler an einem "neuen Algorithmus bastelt" oder nicht. Es ist Teil der Story. Punkt.

Das einzige was hier zählt, ist als Experte eines Fachgebiets den Autor bei der Formulierung zu unterstützen, nicht seine kreative Leistung zu beeinflussen.

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8410
Erhaltene Danke: 431

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.2 CE
BeitragVerfasst: Mo 11.03.19 23:24 
Ne, du hast da ja auch völlig recht. Ich schrieb ja auch, dass es da große Schnittmengen gibt. Natürlich kann der Entwurf von neuen Algorithmen (also Strategien zur Lösung eines Problems) auch von denjenigen stammen, die das dann direkt implementieren. Aber ebenso häufig passiert das getrennt, weil dafür dann doch teilweise unterschiedliche Fähigkeiten gefragt sind - völlig wertfrei gemeint übrigens. Ich sehe das bei mir ja auch immer wieder, z.B. beim Adventsgewinnspiel hier. Meine Implementierungen für einige Aufgaben orientieren sich oft sehr stark an dem "Pseudocode" aus der Theorie. Einige andere Codestücke von Leuten, die näher bei den Programmierern sind, sehen imho deutlich "schöner" oder eleganter aus, und sind vermutlich auch effizienter (also nicht asymptotisch gesehen, sondern praktisch). :D

Auf der anderen Seite komme ich aber (im negativen Sinne) manchmal nicht aus dem Staunen heraus, wie einige Web-Entwickler (hier Anwesende natürlich ausgeschlossen!) an Problemstellungen herangehen. Da wird dann anscheinend oft einfach noch ein Framework mehr drumherumgekapselt, so dass ein an und für sich effizient lösbares Problem zwar in wenigen eigenen Codezeilen implementiert ist, dann aber O(2^n) viel Speicher und Zeit benötigt, weil innerhalb des Frameworks in der Methode BreadthWidthSearch für die Breitensuche durch einen Graphen nebenbei noch eine TSP-Instanz gelöst wird (mal überspitzt formuliert(*)). :P

Ich muss auch gestehen, dass ich da etwas dünnhäutig bin und bei dem Begriff sehr leicht getriggert werde, eben weil der in den Medien oft verzerrt dargestellt wird - so als wären Algorithmen nur dieses komische Computerzeug, das Facebook nutzt, um uns besser mit Werbung zu beglücken. ;-)

(*) Aber nicht viel überspitzt. Ich ärgere mich z.B. seit einiger Zeit mit einem CMS rum, das in der neuen Version bei der Installation einer kleinen Erweiterung bzw. eines Plugins (auch ohne neue Abhängigkeiten) einen SAT-Solver anschmeißt (ja, das NP-vollständige SAT), was dann bei der Installation eines Mini-Plugins von ein paarhundert Zeilen Code eine Minute lang die CPU auslastet und dabei locker über 1GB RAM schluckt. Lösung für kleine Webserverchen mit Limits bzgl. RAM für den PHP-Prozess ist dann, das ganze in die Cloud auszulagern ... kannste dir gar nicht vorstellen, sowas. Und das beste ist, dass die Konfliktauflösung, die dadurch eigentlich gesichert werden sollte, nicht einmal zuverlässig funktioniert, weil in diesem Framework-Ökosystem sich nicht alle Coder an die semantische Versionierung halten und in Bugfix-Updates auch mal ne API-Änderung einbauen, was dir als Anwender dann beim Update das ganze Backend der Webseite zerschießt.

_________________
Oel ngati kameie.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6325
Erhaltene Danke: 128

Windows 7 + Windows 10
Tokyo Prof + CE
BeitragVerfasst: Di 12.03.19 08:09 
Leute, es geht um eine Nebenfigur, für die es vermutlich nur ein paar Absätze gibt und ihr macht daraus eine Grundsatzdiskussion :roll: :mrgreen:

Es geht der Autorin doch nur darum, dass Sie keinen Müll schreibt und es für den Normalleser trotzdem verständlich bleibt.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8410
Erhaltene Danke: 431

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.2 CE
BeitragVerfasst: Di 12.03.19 09:19 
Vielleicht hat sie ja auch noch gar keinen Text dazu, und der Thread hier ist nur ein Experiment, um ein paar Entwickler in ihrer natürlichen Umgebung zu beobachten. :mrgreen:

Wie gesagt, mein Angebot, da mal drüber zu schauen, steht, um mal eine Meinung dazu zu bekommen. Vielleicht finden sich auch noch ein oder zwei weitere mit einem anderen Blickwinkel. :D

_________________
Oel ngati kameie.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6325
Erhaltene Danke: 128

Windows 7 + Windows 10
Tokyo Prof + CE
BeitragVerfasst: Di 12.03.19 09:42 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Vielleicht hat sie ja auch noch gar keinen Text dazu, und der Thread hier ist nur ein Experiment, um ein paar Entwickler in ihrer natürlichen Umgebung zu beobachten. :mrgreen:

Der Native-Developer-Zoo "Entwickler-Ecke" :mrgreen:
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1565
Erhaltene Danke: 270


Delphi 10 Seattle Prof.
BeitragVerfasst: Di 12.03.19 11:14 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Vielleicht finden sich auch noch ein oder zwei weitere mit einem anderen Blickwinkel. :D

Als jemand, der vermutlich näher an der Praxis als Gausi ist, würde ich ich mich bereit erklären, meinen Senf dazu zu geben, wenn es den zeitlichen Rahmen nicht sprengt.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Novelist Threadstarter
Hält's aus hier
Beiträge: 2
Erhaltene Danke: 1



BeitragVerfasst: Di 12.03.19 22:22 
Hallo in die Runde!

Ich sehe, ein paar Gemüter sind bereits etwas erhitzt! Nun, ich habe mich durchgelesen und schon mit Erschrecken festgestellt, dass ich inhaltlich einfach wirklich keine Ahnung habe...also hier ganz richtig bin, wenn es um etwas Unterstützung mit den wenigen Sätzen geht, die ich der Nebenfigur in den Mund legen werde.
An der Grundsatzdiskussion, wie authentisch dies sein muss oder kann, wage ich mich gar nicht zu beteiligen. Mein Anspruch ist eher folgender: Sollte ein Leser selbst Ahnung von dieser Branche haben, wäre ich froh, wenn die Nebenfigur so natürlich wie möglich ist (weder übertrieben wie in gewissen Hackerfilmen) noch zu realistisch, so dass man evtl. nichts mehr versteht. Also eine Balance sozusagen! Er erklärt in dieser Szene ja nur seinem ahnungslosen Mitbewohner, woran er gerade arbeitet.
Ich habe bereits zwei sehr nette Nachrichten bekommen, ich denke, ich kann mich demnächst an die beiden Herren wenden und ihr Feedback zu der Szene einholen...

Vielen Dank im Voraus!

Liebe Grüße


P.S. Dieser Thread ist kein Experiment:):)

Für diesen Beitrag haben gedankt: jasocul
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6325
Erhaltene Danke: 128

Windows 7 + Windows 10
Tokyo Prof + CE
BeitragVerfasst: Mi 13.03.19 08:15 
user profile iconNovelist hat folgendes geschrieben Zum zitierten Posting springen:
Hallo in die Runde!

Ich sehe, ein paar Gemüter sind bereits etwas erhitzt!

Nöö, ich halte das für relativ normal.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8410
Erhaltene Danke: 431

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.2 CE
BeitragVerfasst: Mi 13.03.19 12:15 
user profile iconNovelist hat folgendes geschrieben Zum zitierten Posting springen:
Also eine Balance sozusagen! Er erklärt in dieser Szene ja nur seinem ahnungslosen Mitbewohner, woran er gerade arbeitet.

Ah, es geht also nicht um einen Dialog zwischen zwei Entwicklern, sondern zwischen einem Entwickler und einem Nicht-Entwickler. Dann sieht die Sache natürlich ganz anders aus, und dann kann man natürlich auch wirklich authentisch sein. Denn ein guter Entwickler (gilt aber imho so für jeden Beruf!) kann seine Tätigkeit auch in einfachen Worten beschreiben, so dass es jeder versteht - zumindest so weit, dass das Gegenüber eine gewisse Ahnung davon bekommt. :zustimm:

Und für den ahnungslosen, aber interessierten Mitbewohner kann man dann ja ein paar Fachbegriffe einstreuen, damit es komplizierter klingt. :mrgreen:

Mein Lieblingsbeispiel dafür aus der Theorie ist das P-NP-Problem. Das kann man formal über Komplexitätsklassen, (nicht-)deterministische Turingmaschinen und Polynomialzeit erklären, und spätestens wenn man die Turingmaschine als Tupel M=(\Sigma, Q, \Gamma, \delta, q_0, #, F) definiert, hat man jeden Nicht-Informatiker in die Flucht geschlagen. :lol:

Man kann aber auch einfach fragen: "Wenn man zu einem Problem eine existierende Lösung leicht auf Korrektheit überprüfen kann - kann man dann auch leicht eine korrekte Lösung finden?". Das ist nicht so formal, aber es trifft den Kern des Problem und dürfte für fast jeden leicht verständlich sein. Und so erstaunlich es klingt, das ist eine der größten und bisher ungelösten Fragen in der Informatik. :lupe:

_________________
Oel ngati kameie.

Für diesen Beitrag haben gedankt: Narses
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1565
Erhaltene Danke: 270


Delphi 10 Seattle Prof.
BeitragVerfasst: Mi 13.03.19 12:24 
Und meine Tätigkeitsbeschreibung würde ganz anders aussehen.
Einem Laien würde ich sagen: "Ich analysiere Geschäftsabläufe, optimiere sie und bilde sie in Software ab, um den entsprechenden Mitarbeiter in seiner Tätigkeit bestmöglich zu unterstützen."

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Karen
Hält's aus hier
Beiträge: 11

Win 10

BeitragVerfasst: Fr 29.03.19 15:28 
Hallo! Hast du jemanden gefunden?
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1583
Erhaltene Danke: 230


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: So 31.03.19 21:44 
user profile iconNovelist hat folgendes geschrieben Zum zitierten Posting springen:
ich hätte eine etwas andere Frage: Ich schreibe gerade an einem Buch und habe eine Nebenfigur, die Entwickler ist und gerade an einem neuen Algorithmus bastelt.
[...}
Gibt es hier jemanden, der meinen Dialog oder meine Sätze lesen würde und mir sagt, ob das authentisch ist?


Geht schon mit dem (un-)passenden Terminus los.

Ein neuer Algorithmus wird weder "gebastelt" (wie salopp ist das denn?) noch "geschrieben" (las ich auch schon).

Nach meinem Sprachempfinden wird ein neuer Algorithmus am ehesten entwickelt, erschaffen, meinetwegen auch noch gefunden oder erfunden.

_________________
Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.
Glowhollow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 77



BeitragVerfasst: Mo 01.04.19 09:48 
Hallo Novelist,

ich muß zu meiner Person sagen, ich bin zwar auch Anwendungsentwickler, finde aber auch, das sich viele Menschen unter einem Algorithmus nicht viel verstehen können, mal ganz abgesehen, von den Beispielen die hier aufgeführt werden.

Ich hatte für meine Projektarbeit ein Tool erstellt, was z.Bsp. eine Baumstruktur (in diesem fall war es XML), analysiert (wobei das das falsche wort ist, aber für den laien besser verständlich), und eben aus dieser Struktur Elemente hinzufügt, bzw. entfernt.

An sich programmiertechnisch nichts schlimmes. Vielleicht solltest du deinen Charakter so darstellen, das derjenige, um es effektiv zu gestalten, sich mit dieser "relativ" leichten Aufgabe (in unserem Beispiel) auseinandersetzt, überlegt, wie er am besten, die Datenstruktur so aufarbeitet, das er dies programmatisch umsetzen kann. Da mußt du auch garnicht so sehr ins Detail gehen, ich denke, das ist auch nicht deine Aufgabe. Inspiration, bzw. Erklärungen zu diversen Problemen, programmiertechnischer Art, bist du in diesem Forum natürlich richtig. Verzeih aber, das viele Entwickler in ihrem Umfeld so eingebunden sind, das auch deren Denkweise in einem Fachjargon bewegen, der für außenstehende nicht nachvollziehbar ist.

Deswegen solltest du z.bsp. solche "Algorithmusprobleme", für den Leser einfach runterbrechen, ohne zusehr aufs Detail zu gehen. Viele Algorithmusansätze, alter bzw. neuerer Art, kann man anders formulieren und manchmal ist auch deren Formulierung schon eine Optimierung in sich selbst.

Als Beispiel will ich mein o.g. Beispiel angeben. Ein sehr gutes Beispiel hierfür wär z.bsp. die Turing Maschine. Die Turing Maschine beschreibt einen theoretischen Ansatz, in dem grob gesagt, ein Problem maschinell gelöst werden kann. In unserem Beispiel, arbeiten wir mit einem Lese und einem Schreibkopf. Gerade hier könntest du z.bsp. etwas genauer ins Detail gehen. Schließlich ist das Prinzip eines Computers, eine lineare abarbeitung von Befehlen. Diese sind zwar im Arbeitspeicher verteilt, springen im Ablauf des Programms im Speicherbereich hin und her, sind aber im Prinzip linear aufgebaut.

Ein Computerprogramm ist natürlich eine Abarbeitung von Befehlen, deren Konstruktion aber so designt werden muß, das es mit den limitierten Möglichkeiten der Programmiersprache, so angepasst werden muß, das ein Ablauf des Programms in sich schlüssig ist.

Kehren wir zurück zum Thema Algorithmusproblem zurück.

Bei meinem Beispiel, hatte ich z.bsp. das Problem, das ich mich durch die Baumstruktur der Daten durchhangeln mußte. Da ich hier aber immer nur auf einem bestimmten Bereich verweisen konnte, in unserem Fall die Ebene in der ich mich in dem Baum bewege, was dazu führt, das man nicht eben mal, hier und da - Elemente auschneidet, und irgendwo anders hinzufügt, da das ganze Konzept der Datenstruktur gewissen Regeln folgt, die eingehalten werden müssen, da ansonsten das ganze Dokument nicht "wellformed" ist, was bedeutet, das der vorgegebene Aufbau nicht korrekt erzeugt wird, was dazu führt das der Computer, die Daten nicht lesen kann.

Schließlich ist der Computer kein selbst denkendes Wesen und kann entscheidungen selber treffen (mal das ganze deeplearning mal außen vor gelassen). Also muß der Entwickler hier, Möglichkeiten finden, das eben, das Ergebnis, der Vorlage entspricht.

Und hier gibt es bestimmt Tonnen an Algorithmus Ansätzen, die hier teilweise sehr viel Hirnschmalz benötigen, um überhaupt zu verstehen, was denn die paar Zeilen Code letztendlich machen.

Wiegesagt Turing Maschine ist ein sehr schönes Beispiel finde ich, da es das Grundprinzip der Datenverarbeitung darstellt, und auf fast alle Probleme anwendbar ist.

Wenn du weitere Fragen hast, kann ich da auch gerne genauer ins Detail gehen. Ich persönlich finde jedoch, das du nicht einen zu komplizierten Algorithmus wählen solltest, denn für viele Leser, ist das abstrakte Denken in dieser Form schon anstrengend genug. Und wenn du da mit einem superkomplizierten Algorithmus womöglich noch mit Rekursion kommst, da sind die meisten dann raus, weil die das nicht nachvollziehen können. (ich rede von den Lesern, nicht von Entwicklern).

Ich denke, man kann das ganze hier gerne noch weiter ausdiskutieren. Freue mich auf Meinugen dazu.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8410
Erhaltene Danke: 431

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.2 CE
BeitragVerfasst: Mo 01.04.19 10:53 
Da muss ich jetzt nochmal reingrätschen, wenn hier die Turingmaschine derart mit dem Algorithmenbegriff verknüpft wird.

Dazu folgende Anekdote:

Ich arbeite, wie schon durchgesickert, an der Uni im Bereich theoretischer Informatik, Lehrstuhl "Algorithmen und Datenstrukturen". Eine Doktorandin bei uns ist mit einem anderen Doktor (auch von uns) verheiratet, der jetzt im Bereich Software-Entwicklung arbeitet, und gelegentlich bei Vorstellungsgesprächen mit dabei ist. Bei einem dieser Vorstellungsgespräche kam die Frage "Was ist eigentlich ein Algorithmus?". Der Kandidat antwortete dann mit "Da muss ich direkt an Turingmaschinen denken ..." - was letztlich dazu geführt hat, dass der Kandidat (frisch von der Uni) die Stelle nicht bekommen hat. Das war nicht der einzige Fail in dem Gespräch, aber danach war es wohl komplett vorbei.

Was ich damit sagen will: "Algorithmus" ist ein "Verfahren". Nichts weiter. Jeden Morgen beim Kaffeekochen führt man einen Algorithmus aus. Bei vielen Erste-Hilfe-Kursen werden die Vorgehensweisen bei der Herz-Lungen-Wiederbelebung oder generell Hilfe bei einem Unfall auch explizit als "Algorithmus" bezeichnet, und das völlig zu recht. Man kann das ein wenig ausschmücken mit Eingabe, Verarbeitung, Ausgabe und/oder Erläuterungen wie Anweisungen, Fallunterscheidung, Schleifen, aber das war es dann auch schon.

Die Turingmaschine ist ein hochtheoretisierendes Konstrukt, dass in der Komplexitätstheorie eine sehr wichtige Rolle spielt (z.B. basieren alle Beweise zur NP-Vollständigkeit letztlich auf dem einen ganz furchtbaren Beweis, dass SAT NP-vollständig ist, wozu tatsächlich die Konfigurationen einer TM benutzt werden). Sobald man aber die reine Theorie verlässt, sollte man Turingmaschinen soweit wie möglich außen vor lassen. Man kann Algorithmen über Turingmaschinen erläutern. Aber dann kann man auch die Funktionsweise eines Verbrennungsmotors über Quanteneffekte erläutern.

Sie eignen sich dann allenfalls für kleine Scherze bei Praktikanten, die man ins Rechenzentrum schicken kann, um ein neues Turingband für die Maschine zu besorgen, weil das alte voll (oder leer) ist. :lol:

user profile iconGlowhollow hat folgendes geschrieben Zum zitierten Posting springen:
Ein Computerprogramm ist natürlich eine Abarbeitung von Befehlen, deren Konstruktion aber so designt werden muß, das es mit den limitierten Möglichkeiten der Programmiersprache, so angepasst werden muß, das ein Ablauf des Programms in sich schlüssig ist.
Mir fällt auf Anhieb keine in der Praxis relevante Programmiersprache ein (und das schließt Brainfuck mit ein!), die nicht "turing-vollständig" ist. Wenn also bei der Implementierung eines Algorithmus die Programmiersprache an ihre Grenzen kommt und die Implementierung prinzipiell verhindert, dann sollte man schleunigst die Sprache wechseln. Es ist richtig, dass gewisse Dinge mit gewissen Sprachen leichter umsetzbar sind. Das sind dann aber meistens Sprachfeatures, die im Wesentlichen Schreibarbeit sparen bzw. den Code übersichtlicher machen. (Auf Dinge wie Treiber mit Javascript und PHP will ich jetzt nicht eingehen. :mrgreen: )

_________________
Oel ngati kameie.
Glowhollow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 77



BeitragVerfasst: Mo 01.04.19 15:31 
hey gausi,

ich wollte jetzt nicht so genau ins detail gehen, zum thema lese und schreibkopf und dem imaginären datenband. Aber ich finde das stellt gut den Ablauf eines Computerprogramms dar, natürlich bin ich da nicht so in der Materie drin wie du, wollte aber diesbezüglich mein Feedback geben, das eben dies bei einem Algorithmus Anwendung findet (unter anderem).

Natürlich ist das nur eine "abstrakte" methode das darzustellen, macht es aber dem Unwissenden dann doch etwas leichter, das prinzip dahinter zu verstehen.

Zu meinem zitierten Satz mit dem Computerprogramm. Natürlich ist jede relevante Programmiersprache "turing-vollständig". Das meinte ich auch nicht damit. Ich wollte einen Vergleich ziehen, zu dem Thema das der programmatische Ablauf in sich schlüssig ist. Alles andere würde ja zu einer Exception bzw. zum Absturz führen. Mal ganz abgesehen von einer null-referenz.

Und mit schlüssig meinte ich auch, das z.bsp. sämtliche mathematischen Berechnungen, so komplex sie auch sein mögen, im prinzip nur mit den 4 Grundrechenarten stattfindet. Boolsche Algebra mal außen vorgelassen. Gerade hier wollte ich ausleuchten, das eine Abweichung von der von der Programmiersprache zur Verfügung gestellten Mittel, zu einem nicht funktionieren des programms führt.

vielleicht falsch ausgedrückt, ich hoffe meine idee kam an.