Unterschied zwischen mappen - parsen - einlesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
dor_neue
User
Beiträge: 74
Registriert: Montag 16. Juni 2008, 18:51

Was ist eigentlich der Unterschied zwischen:
- mappen
- parsen
- einlesen

einlesen:
Zeichen oder Byteweises Streaming bis der Vorgang abgeschlossen ist. Z.B. einlesen einer Textdatei oder einlesen von Tastatureingben

parsen:
Eingelesene Daten für Weiterverarbeitung nutzbar machen. Z.B. XML-Datei wird zeichenweise eingelesen und dann geparst. dabei wird die Struktur und Hirachie der XML-Datei auf ein Objekt bzw. eine Variable übertragen und ist dann in der Weiterverarbeitung der Daten abrufbar. So kann man dann gezielt sagen welchen Knoten man bei der XML-Datei auslesen möcht. (DOM)

mappen:
soll das gleiche wie parsen sein und genauso funktionieren - nur anders und mit anderem Ergebniss...


Genau deswegen frag ich jetzt mal hier nach. Kennt jemand den genauen Unterschied zwischen den einzelnen Vorgängen? Google is bei der Suche leider keine wirklich sehr große Hilfe - so gibt es zwar einen Stamm namens Parsen und es gibt Bewerbungsmappen - aber das hilft mir nicht beim beantworten meiner Frage...
BlackJack

Ich weiss nicht ob es soviel Sinn macht "Unterschiede" zwischen den drei Begriffen zu suchen, weil es drei orthogonale Begriffe sind, die ausserdem, ausser bei "parsen", gar nicht so klar definiert sind. Unter "XML einlesen" kann man durchaus auch verstehen, dass da das Parsen mit enthalten ist.

Und "mappen" ist ein *sehr allgemeiner* Begriff, der zu deutsch "abbilden" heisst, und definitiv nicht das gleiche wie "Parsen" ist. Also einen Wert auf einen anderen abbilden, das erfüllt jede (mathematische) Funktion oder auch Dictionaries und Listen.
sea-live
User
Beiträge: 440
Registriert: Montag 18. Februar 2008, 12:24
Wohnort: RP

Hast du denn ein aktuelles problem mit den 3 funktionen
in python gibt es für exel bereits fertige module csv reader zB die das alles für dich in einem satz erledigen
BlackJack

@sea-live: Du kennst das Problem nicht, weisst aber das es mit Excel oder dem `csv`-Modul gelöst werden kann!? :shock:
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

BlackJack hat geschrieben:@sea-live: Du kennst das Problem nicht, weisst aber das es mit Excel oder dem `csv`-Modul gelöst werden kann!? :shock:
Muss eine neue Implementierung von /dev/glaskugel sein :-D
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Hyperion hat geschrieben:Muss eine neue Implementierung von /dev/glaskugel sein :-D
Gibts da jetzt auch ne USB-Variante davon? Oder ist das nur wieder nen Emulator ? :O

Ich muss mich da BJ anschliessen, dass Definitionen von diesen schwammigen Begriffen nicht unbedingt sinnvoll sind.

Darf man denn fragen wie du zu einer so theoretischen Fragestellung kommst?

Ansonsten kann ich nur mit http://de.wikipedia.org/wiki/Parser dienen ;)
dor_neue
User
Beiträge: 74
Registriert: Montag 16. Juni 2008, 18:51

Ähmm, mein Problemen mit den Begriffen ist:
Jeder benutzt diese und keiner weiß was es bedeutet!
Wenn mich jemand anschaut und mir sagt, er habe eine Text-Datei gemappt -> ?!?

Ich kann doch nicht Wörter benutzen wie ich will - es muss doch eine Richtlinien oder ähnliches geben...

Weitere Beispiele dafür:
dünsten - kochen
errichten - bauen
compilieren - interpretieren
löschen - vernichten
Information - Daten
Auto - PKW

Für jeden Begriff gibt es eine Abgrenzung zu anderen und jeder weiß, wenn er die Wörter wirklich kennt, was diese bedeuten. Ich halte es für wichtig, wenn ich über ein Thema rede, das ich dann auch entsprechende Begriffe verwende. Vor allem beim Programmieren ist die gleiche Kommunikationsgrundlage die wichtigste Grundlage um Informationen auszutauschen.

Hoffe Ihr konntet verstehen was ich suche und meine...
Trotzdem Danke für die Hilfe mit der CSV-Unterstützung - wenn ich in die Situation kommen sollte, diese zu brauchen schau ich in diesem Theard nochmal nach wie es hieß... :P
BlackJack

Also ich hoffe, dass ich in der Regel weiss was die Begriffe bedeuten, die ich verwende.

Ausser "parsen" was ein definierter Fachbegriff ist (siehe Wikipedia-Artikel zu "Parser"), haben die anderen Begriffe eine sehr kontextabhängige Bedeutung, man kann also nicht sagen was sie bedeuten ohne den Zusammenhang zu kennen.

Wenn jemand sagt er hat eine "Textdatei gemappt", dann würde ich nachfragen was er damit meint. Ich würde vermuten, dass es hier um `mmap()` geht, aber 100%ig sicher wäre ich ohne weiter Informationen nicht. Diese Bedeutung von "Mappen" hat mit Parsen nichts zu tun, kann man also nicht vergleichen (Äpfel/Birnen). Und mit Einlesen in so fern, dass man eben nicht selbst einliesst, sondern so tut, als wenn die Daten der Datei im Speicher liegen würden. Das konkrete Einlesen, und eventuelle Schreiben, der Daten verschwindet also hinter einer Abstraktionsschicht.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

dor_neue hat geschrieben:Wenn mich jemand anschaut und mir sagt, er habe eine Text-Datei gemappt -> ?!?
Dann weißt du dass er sich entweder in einem solchen Umfeld aufhält was die für das Umfeld-spezifische Bedeutung von mappen in diesem Kontext Sinn ergibt oder das er Blödsinn redet ("Ich habe mir das Internet ausgedruckt").
dor_neue hat geschrieben:Ich kann doch nicht Wörter benutzen wie ich will - es muss doch eine Richtlinien oder ähnliches geben...
Doch, durchaus. Die Informationen die Wörter in natürlichen Sprachen kodieren sind (aus biologischer Sicht) degeneriert, d.h. die gleiche Information kann durch verschiedene Wörter ausgedrückt werden, dazu kommt, dass das gleiche Wort verschiedene Bedeutungen haben kann. Nehmen wir mal das englische Wort "match" als Beispiel. Das Wort kann sowohl für einen Wettkampf stehen, als auch für einen Suchtreffer bei Regulären Ausdrücken. natürliche Sprache hat Kontext und je nach Bedeutung werden die Wörter verständlich, so würde kaum jemand "Have you seen the match last night on TV?" mit "Hast du dir gestern den Suchtreffer gestern Abend im Fernsehen angesehen?" übersetzen - das wirkt ähnlich sinnfrei wie die frühen automatischen Computerübersetungen, die eher von humoristischen Wert waren.
dor_neue hat geschrieben:Für jeden Begriff gibt es eine Abgrenzung zu anderen und jeder weiß, wenn er die Wörter wirklich kennt, was diese bedeuten. Ich halte es für wichtig, wenn ich über ein Thema rede, das ich dann auch entsprechende Begriffe verwende. Vor allem beim Programmieren ist die gleiche Kommunikationsgrundlage die wichtigste Grundlage um Informationen auszutauschen.
Richtig. Aber auch "Programmierung" ist kein Einheitliches Thema, da gibt es auch Überschneidungen und verschiedene Kontexte. Und mappen kann je nach Kontext verschieden sein. Mappings sind etwa Datentypen die einzelne Elemente auf andere abbilden, auch kann man mittels Mapping ein Objekt mit einer Datenbanktabelle verbinden (siehe SQLAlchemy, wo es direkt "Mapper" gibt), als nächstes kommt dann die Funktion ``map()`` aus der funktionalen Programmierung, die jedes Element einer Liste durch eine definierte Funktion durchjagt und dann die Ausgaben in eine neue Liste schreibt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
dor_neue
User
Beiträge: 74
Registriert: Montag 16. Juni 2008, 18:51

Die Frage nach den 3 Begriffen bezieht sich (jetzt mal ausnahmsweise) nicht auf Python.
Es geht hier im speziellen um einen Kollegen, der mappen für alles verwendet. Ich weiß aber, dass er richtig Ahnung hat von Programmierung. Ihn einfach zu fragen würde dazu führen, dass er mich fragt was ich darunter verstehe und mich dann nach der Lösung suchen lassne (is so ne Art Dozent für mich).
Also überspringe ich den Schritt - suche erst nach Definitionen / Bedeutungen etc. und frag ihn dann.
@Leonidas: Wie Du schon sagtest - Wörter können Unterschiedliche Bedeutungen haben (Hahn (Tier) - Hahn (Wasser-)) aber im Kontext wird der Sinn dann klar.
Wenn ich dem "Dozenten" zuhöre spricht er sowohl beim Einlesen von Textdateien als auch beim Einlesen aus einer Datenbank von Mappen. Auch beim Parsen einer XML-Datei oder bei jeder anderen Möglichkeit wenn Daten in das Programm kommen. Also muss es doch einen Grund haben - heißt mappen auch Daten auf Plausibilität zu prüfen und festzustellen ob es dort zu Fehlern kommt / kam?
Umschließt Parsen eine Plausibilitätsprüfung oder ist es das reine Datenstruktur erkennen und auf eine Variable abbilden.
Ich komm bei solchen "Kleinigkeiten" sehr schnell durcheinander - vermutlich auch weil ich diesem zu viel Beachtung bewohne. Für mich ist es aber nunmal nicht einfach mit: "Ja, hab ich glaube ich verstanden" abgetan - dafür ist mir meine Zeit und die des "Dozenten" einfach zu schade. Schließlich will keiner etwas 3 mal erklären oder erklärt bekommen - sondern schon nach der ersten Erklärung daruas Ergebnisse und Resultate erzeugen können.
BlackJack

Wenn er "mappen" zu seinem Lieblingswort erkoren hat, was er überall verwendet, dann geh' ruhig auch mal davon aus, dass er es teilweise falsch und unpassend verwendet.

"Mappen" heisst nicht "überprüfen" sondern, wie schon gesagt, "abbilden".

Was genau meinst Du jetzt mit Plausibilitätsprüfung? Parser prüfen natürlich ob die Eingabe den Regeln entspricht und meckern, falls sie das nicht tun.
dor_neue
User
Beiträge: 74
Registriert: Montag 16. Juni 2008, 18:51

BlackJack hat geschrieben:Parser prüfen natürlich ob die Eingabe den Regeln entspricht und meckern, falls sie das nicht tun.
Das meinte ich - danke!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

dor_neue hat geschrieben:Also muss es doch einen Grund haben - heißt mappen auch Daten auf Plausibilität zu prüfen und festzustellen ob es dort zu Fehlern kommt / kam?
Nein, sowas nennt man validieren. Wie etwa HTML-Formulare, JVM Bytecode oder HTML-Markup.
dor_neue hat geschrieben:Umschließt Parsen eine Plausibilitätsprüfung oder ist es das reine Datenstruktur erkennen und auf eine Variable abbilden.
Wenn die Datenstruktur blödsinn ist (Syntaxfehler) dann kann man so etwas logischerweise nicht konvertieren.
dor_neue hat geschrieben:Für mich ist es aber nunmal nicht einfach mit: "Ja, hab ich glaube ich verstanden" abgetan - dafür ist mir meine Zeit und die des "Dozenten" einfach zu schade. Schließlich will keiner etwas 3 mal erklären oder erklärt bekommen - sondern schon nach der ersten Erklärung daruas Ergebnisse und Resultate erzeugen können.
Richtig. Aber es ist doch seltsam dass du uns fragst und nicht ihn, schließlich ist er der Dozent und nicht wir. Also jetzt nicht dass ich was dagegen habe, die Begriffe mit dir zu diskutieren, ich meine einfach so allgemein.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
dor_neue
User
Beiträge: 74
Registriert: Montag 16. Juni 2008, 18:51

Ihn frage ich als nächstes aber:
dor_neue hat geschrieben:Ihn einfach zu fragen würde dazu führen, dass er mich fragt was ich darunter verstehe und mich dann nach der Lösung suchen lassne (is so ne Art Dozent für mich).
Also überspringe ich den Schritt - suche erst nach Definitionen / Bedeutungen etc. und frag ihn dann.
Mal sehen was er unter den Begriffen versteht...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

dor_neue hat geschrieben:Mal sehen was er unter den Begriffen versteht...
Ja, da bin ich auch gespannt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
dor_neue
User
Beiträge: 74
Registriert: Montag 16. Juni 2008, 18:51

Antwort war:
Einlesen - stures einlesen z.B. einer Textdatei - keine Weiterverarbeitung vorbereitet

Parsen - einen speziellen Teil aus einer z.B. Textdatei herausnehmen und das weiterverarbeiten (z.B. bei einer XML-Datei die Punkt 'Temperatur')

Mappen - übernehmen der ganzen struktur und Hirachie um damit später weiter arbeiten zu können.

Also is in seinen Augen ein XML-parser wie DOM ein Mapper da er ja alle Daten verarbeitet, auch die, die man nicht sofort brauch...


Ich danke Euch für Eure Hilfe und Eure Vorschläge - hat mir geholfen vorbereitet in das Gespräch zu gehen...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also ich finde ja die Unterscheidung zwischen Parsen und Mappen ziemlich arbiträr. Oftmals ist es auch nicht so einfach, Daten selektiv zu parsen, bei XML muss man ja immer auch gucken ob die Anfangstokens entsprechende Endtokens haben.
Zuletzt geändert von Leonidas am Montag 22. September 2008, 15:06, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
dor_neue
User
Beiträge: 74
Registriert: Montag 16. Juni 2008, 18:51

wie gesagt, das war seine Interpretation und die stimmt ja auch zum großen Teil mit der überein was ich so gefunden habe. Schade finde ich es nach wie vor, dass es zum Thema mappen keine Definition gibt wie beim parsen der Fall.
Sowas kann eben Missverständnisse vermeiden - auch wenn die Software, die sich schreibe wohl eher kleiner Fehler enthalten kann, das relativ kompakt und klein...

PS: ich setz mal voraus, dass arbitär sowas wie fließend bzw. willkürlich ist...
Denn Synonyme finde ich dafür keine - auch dar Duden lässt mich da nen bissel im Stich...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

dor_neue hat geschrieben:PS: ich setz mal voraus, dass arbitär sowas wie fließend bzw. willkürlich ist...
Denn Synonyme finde ich dafür keine - auch dar Duden lässt mich da nen bissel im Stich...
Ja, das war damit gemeint; ich habe es nur falsch geschrieben.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

@dor_neue: Also ich finde die Beschreibung von "Parsen" falsch. Die Weiterverarbeitung gehört IMHO nicht dazu und nur bestimmte Teile "parsen" eigentlich auch nicht. Ein Parser im Sinne des Gebiets Übersetzerbau, bekommt eine Eingabe und parst die entweder ganz oder gar nicht, d.h. Abbruch mit Fehler wenn die Struktur der Eingabe nicht stimmt.

Das was Du als Erklärung bei "Mappen" stehen hast, also zum Beispiel eine komplette XML-Datei in ein DOM umsetzen, ist für mich "Parsen". So etwas machen ja zum Beispiel XML-Parser. Die heissen nicht umsonst *so* und nicht XML-Mapper.

Und zu "Mappen" gibt's ja eine Definition, nämlich "Abbilden" von einem Wert auf einen anderen, oft äquivalenten Wert. Beispiel Object-Relational Mapping (ORM) oder Dictionaries.
Antworten