Performancemythen?



  • otze schrieb:

    @DEvent

    class EnergieQuelle{};//leer
    struct Batterie:public Energiequelle
    {[...]};
    
    template<class T>
    class Elektrogerät
    {
         BOOST_STATIC_ASSERT(is_derived<T,EnergieQuelle>::value);
         T member;
    
         public:
             void bar(){ member.foo();}
    };
    

    Jetzt gibt es sogar die Absicherung vom programmierer, dass Batterie eine Energiequelle ist, und somit mit dem Interface übereinstimmt. Vererbung ist, wie wir alle sagten, manchmal sinnvoll, aber nicht zwingend.

    wenn ich einen int ähnlichen Objekttyp brauche, werde ich sicher nicht danach schauen, ob es von "Int" abgeleitet ist. mir reicht es, wenn alle Operatoren überladen sind, die ein Int braucht.

    Soweit alles richtig.

    Und sobald Dein Programm kompiliert ist, hast Du keine Elektrogeräte, die eine EnergieQuelle zum nutzen, sondern Du hast Elektrogerät<Batterie> und Elektrogerät<Atomkraftwerk> usw., die alle nicht miteinander verwandt sind und damit nicht austauschbar sind.
    Ein Elektrogerät<Batterie> ist kein Elektrogerät<Atomkraftwerk>, auch wenn sie gleiche Funktionalität bieten, haben sie keine Gemeinsamkeit, die die Programmiersprache interessiert.
    Du wirst also jede Funktion für Elektrogerät<Batterie> und Elektrogerät<Atomkraftwerk> redundant schreiben müssen.
    Vererbung ist nicht zwingend, aber sinnvoll.

    Templates sind Templates und Vererbung ist Vererbung und damit...

    otze schrieb:

    Was sich wie ein int verhällt, ist ein int.

    ...ist der Satz auch nur Hall und Rauch.



  • ok ich fasse mal zusammen

    Xin schrieb:

    1: javascript und php sind scheiße
    2: ich bin toll
    3: shade ist dumm

    zu punkt eins sei gesagt, dass sich smalltalk ebenso verhält wie php und java\1: wenn ein objekt eine bestimmte nachricht nicht verarbeitet geht die nachricht halt ins leere. da gibts kein problem mit, das ist auch kein designfehler 🙄

    Xin schrieb:

    Am Rande dazu vielleicht noch folgendes: JavaScript heißt eigentlich ECMAScript, JavaScript ist nur der "übliche" Name für ECMAScript.

    eigentlich heißt JavaScript LiveScript. JavaScript ist nur der "übliche" name für LiveScript. ECMAScript heißt nur die standardisierte variante- aber das nur am rande 🤡

    Xin schrieb:

    JavaScript ist nicht kompatibel zu Java.

    kras sag bloß 😮

    Xin schrieb:

    damit hätte es genausogut C++Script heißen können.

    dann hätte es aber bei weitem nicht die popularität gewonnen die es heute hat 🕶

    Xin schrieb:

    JavaScript und Java sind nicht miteinander verwandt, sondern unabhängig voneinander entstandene Programmiersprachen und abgesehen von einer Ähnlichkeit im Namen, den sie genaugenommen auch nicht haben, haben beide Sprachen absolut gar nichts miteinander zu tun.
    Wer JS mit Java kompiliert, möge den Blick auf die Startseite des Forums richten, dort steht beim Java-Forum extra in Fettschrift "kein JavaScript". Die wollen genausowenig JS Fragen beantworten, wie die Leute im C++ Forum Java Fragen sehen wollen.
    Darum schrillen bei mir die Alarmglocken für besonders qualifizierte Postings, wenn jemand schreibst, dass er kein Problem hat JavaScript mit Java zu kompilieren.

    oh man jetzt wirds klar, du hast anscheinend gar nicht verstanden was shade damit sagte oder? 🙄
    egal, hauptsache mal alles schlecht gemacht, alle anderen dumm gemacht, dich selbst als den größten verkauft aber bloß nichts verstehen oder auf andere posts eingehen? 🕶



  • minhen schrieb:

    stolze 55 Seiten

    in der tat, sowas ist aber auch nur hier möglich. in anderen foren wo ich unterwegs bin wär der thread schon längst im müll gelandet sobald jemand wie Xin anfängt mist zu labern (bzw da der thread ja eigentlich um was ganz anderes ging der entsprechende teil ;))



  • naja - es ist immer wieder ein tolles armutsbezeugniss für deppen die sich über irrelevante details kloppen wollen

    das ist genauso wie die leute die sich klopfen wo spaces bei dem * der pointerdeklaration hinkommen



  • minhen schrieb:

    Das naive Verständnis von Kapselung ist, gerade wenn man gedanklich in der C++-Welt steckt, sicher die Einschränkung von Sichtbarkeit. Aber wie gezeigt versteht Stroustrup unter Kapselung die Möglichkeit Integritätsbedingungen wahren zu können. Er definiert es also nicht als Einschränkung der Sichtbarkeit sondern funktional.

    Ich habe eigentlich das selbe Verständnis von Kapselung, nur ich sehe "Sichtbarkeit" als eine Art andere Form der funktionalen Kontrolle an. Anstatt den bisherigen Zugriff zu verändern/überwachen streicht man ihn ganz und schreibt einen neuen.
    Man hat also nur diese "einfache" Möglichkeit zur Verfügung.
    Am Ende wird man mit beiden Varianten nichts anderes machen, als den Zugriff auf Ojektdaten zu kontrolieren.

    minhen schrieb:

    Dass man sich selbst in C++ mit Tricks sogar zu private-Attributen durchhacken kann, ist eine andere Geschichte. Das liegt, wie du schon ansprichst, durchaus an einer Form der "Mächtigkeit". Aber deshalb würde man auch nicht die grundsätzliche Möglichkeit der Kapselung bei C++ in Frage stellen.

    Ich wollte auf die Frage hinaus, ob es nicht auch in Lisp die Möglichkeit gibt die Kapselung zu durchbrechen. (Bei dem Beispiel von Doktor Prokt)
    Und dann stelle ich mir die Frage ab wann Kapselung als solche angenommen wird, also ganz einfach gefragt: "Wie schwer muss es sein die Kapselung zu umgehen, damit man einer Programmiersprache auch Kapselung als Fähigkeit zugesteht?"



  • kapslung finde ich nicht unbedingt notwendig,

    es it eine praktische möglichkeit verantwortungsloses vorgehen zu unterbinden,
    wenn man jedoch davon ausgehen kann,
    das die nutzer der bibliotheken verantwortungsvoll sind,
    ist das ganze nicht mehr sooo wichtig



  • Tellerrand schrieb:

    Und dann stelle ich mir die Frage ab wann Kapselung als solche angenommen wird, also ganz einfach gefragt: "Wie schwer muss es sein die Kapselung zu umgehen, damit man einer Programmiersprache auch Kapselung als Fähigkeit zugesteht?"

    Ich würde es da mit der guten alten C-Logik halten. Wenn eine Sprache keine Möglichkeit zur Kapselung bereitstellt, hat sie den vorzeichenlosen Kapselungswert 0. Sobald sie eine Möglichkeit bereitstellt, hat sie einen positiven Wert. Je schwieriger es ist, die Kapselung zu umgehen, desto höher ist der Wert. Das heißt, es kann durchaus Abstufungen von verschieden starken Kapselungen geben. Aber jeder positive Wert evauliert bereits zu true 😉



  • @Xin (unregistriert) schrieb:

    Xin schrieb:

    JavaScript und Java sind nicht miteinander verwandt, sondern unabhängig voneinander entstandene Programmiersprachen und abgesehen von einer Ähnlichkeit im Namen, den sie genaugenommen auch nicht haben, haben beide Sprachen absolut gar nichts miteinander zu tun.
    Wer JS mit Java kompiliert, möge den Blick auf die Startseite des Forums richten, dort steht beim Java-Forum extra in Fettschrift "kein JavaScript". Die wollen genausowenig JS Fragen beantworten, wie die Leute im C++ Forum Java Fragen sehen wollen.
    Darum schrillen bei mir die Alarmglocken für besonders qualifizierte Postings, wenn jemand schreibst, dass er kein Problem hat JavaScript mit Java zu kompilieren.

    oh man jetzt wirds klar, du hast anscheinend gar nicht verstanden was shade damit sagte oder? 🙄
    egal, hauptsache mal alles schlecht gemacht, alle anderen dumm gemacht, dich selbst als den größten verkauft aber bloß nichts verstehen oder auf andere posts eingehen? 🕶

    Dann will ich mal mit einer einfachen Rückfrage auf Dich eingehen: Wo liegt der Zusammenhang Deiner verbalen Ejakulation zu dem Text, denn Du dazu zitierst?

    mal so mal so (unregistriert) schrieb:

    in anderen foren wo ich unterwegs bin wär der thread schon längst im müll gelandet sobald jemand wie Xin anfängt mist zu labern

    Was mir positiv auffällt ist, dass die Leute, die mich hier beleidigen mehr und mehr Unregistrierte sind, sich also nicht trauen ihre Äußerungen einer eindeutigen Identität zuordnen zu lassen. Das mindert das Risiko dumm darzustehen deutlich, wenn ein halbwegs kompetenter diesen Thread nochmal lesen würde (der allerdings minhen und mich für genauso bekloppt erklären würde, weil wir uns seitenlang diesem Kindergarten widmen.)
    Überhaupt "diskutieren" hier fast mehr Unregistrierte als Registrierte, die aber offenbar über 500 Postings im Thread verfolgt haben, um sich mit ähnlichen Lese- und Verständnisschwächen (siehe "@Xin"s-Posting) eine ähnlich beleidigende Meinung bilden zu können, wie sie vorher Registrierte propagierten, die sich nicht mehr beteiligen, weil sie die Hoffnungslosigkeit des Threads natürlich voll durchblickt haben.

    Erstaunlich...

    Was mich nochmal interessieren würde, ist ob ich nun alle Fragen des unregistrierten Tellerrandes beantworten konnte, da der Punkt, der "meine" == minhens == Stroustrups == Marc++us Definition zum Wanken bringen würde, sich ja nun nicht bestätigt hat.
    Ich will ja nicht davon ausgehen, dass ihn das überzeugen konnte, aber es gibt zumindest keine Beleidigungen oder Rückfragen mehr.

    Mir würde ein "Ich erwäge inzwischen die Möglichkeit, dass Du, minhen, Stroustrup und Marcus richtig liegen" vollkommen reichen.



  • Xin schrieb:

    Was mir positiv auffällt ist, dass die Leute, die mich hier beleidigen mehr und mehr Unregistrierte sind, sich also nicht trauen ihre Äußerungen einer eindeutigen Identität zuordnen zu lassen.

    Du solltest nicht von Dir auf andere schließen. Einige Identitäten können sehr wohl zugeordnet werden- entweder bist Du zu faul oder zu unfähig dafür, aber das ist kein Problem von Unregistrierten.

    Und nochmal für Dich: Du unterliegst einer grob falschen Selbsteinschätzung, wenn Du (vor einigen Seiten) meinst, Du hättest Dich hier behauptet. Im Gegenteil! Während Deine Definition immer noch etwa so dasteht wie anfangs, hat "Xin" im Verlauf der folgenden Seiten stark abgebaut.



  • Xin schrieb:

    Das mindert das Risiko dumm darzustehen deutlich, wenn ein halbwegs kompetenter diesen Thread nochmal lesen würde (der allerdings minhen und mich für genauso bekloppt erklären würde, weil wir uns seitenlang diesem Kindergarten widmen.)

    Deine Arroganz war bisher eigentlich nur zum Kotzen. Wie auch in diesem Beitrag. Aber spätestens nach deiner Eierschaukelei wie toll du dich doch mit Compilerbau usw. auskennst, bist du in meinen Augen einfach nur ein armer Drops. Sorry.



  • ronny schrieb:

    naja - es ist immer wieder ein tolles armutsbezeugniss für deppen die sich über irrelevante details kloppen wollen

    das ist genauso wie die leute die sich klopfen wo spaces bei dem * der pointerdeklaration hinkommen

    ich hab im laufe der seiten irgendwie aus dem auge verloren, worüber alle eigentlich ursprünglich diskutieren.



  • Xin schrieb:

    Was mich nochmal interessieren würde, ist ob ich nun alle Fragen des unregistrierten Tellerrandes beantworten konnte, da der Punkt, der "meine" == minhens == Stroustrups == Marc++us Definition zum Wanken bringen würde, sich ja nun nicht bestätigt hat.

    Deine Definition ist nicht die gleiche wie die von Stroustrup oder die von Marcus. Für die zählt zum OOP mehr als nur laufzeit Polymorphie.

    Tim schrieb:

    Xin schrieb:

    Das mindert das Risiko dumm darzustehen deutlich, wenn ein halbwegs kompetenter diesen Thread nochmal lesen würde (der allerdings minhen und mich für genauso bekloppt erklären würde, weil wir uns seitenlang diesem Kindergarten widmen.)

    Deine Arroganz war bisher eigentlich nur zum Kotzen. Wie auch in diesem Beitrag. Aber spätestens nach deiner Eierschaukelei wie toll du dich doch mit Compilerbau usw. auskennst, bist du in meinen Augen einfach nur ein armer Drops. Sorry.

    Lass ihn doch in seiner Traumwelt leben.

    Ist doch logisch. Wir sind alle Kinder, weil er ständig beleidigt, pöbelt und als Argumentation unter anderem seine Eierschaukelei auffährt (ich hab D&E gelesen, obey!!!). ... Allllleeeessssss klaaaaaaaaar ... Mit der Argumentation wird man natürlich auch jeden Aussenstehenden überzeugen.

    Ich frage mich eh, wie verschoben das Selbstbild seien muss, wenn man sich in einem Thread wie Xin verhalten hat, um sich am Ende "auf einen Sockel zu stellen" und sich beschwert, das man beleidigt wurde (und dann in dem gleichen Posting eine weitere Beleidigung auszustoßen).



  • Hat jetzt auch der letzte gerafft, dass solche Threads total fürn Ars ch sind und man ihn gleich auf Seite 2 hätte schließen sollen?



  • btw:

    ich bin generell der meinung, das c++ style sprachen kaum objektorientiertes programmieren sind, da man überall imperativ arbeitet

    die sprachen ermöglichen lediglich umsetzung objektorientierter designs

    vollständige objektorientierung ist erst bei smalltalk style erreicht, wo z.b. if/else nachrichten bestehend aus closuere objekten an bool objekte sind

    das sowas reichlich leistung kostet, dürfte klar sein



  • scrub schrieb:

    Und nochmal für Dich: Du unterliegst einer grob falschen Selbsteinschätzung, wenn Du (vor einigen Seiten) meinst, Du hättest Dich hier behauptet. Im Gegenteil! Während Deine Definition immer noch etwa so dasteht wie anfangs, hat "Xin" im Verlauf der folgenden Seiten stark abgebaut.

    Ich sehe das positiv: Die Definition steht unverändert zur Debatte. Das hat inzwischen Minhen übernommen, denn ich hatte nach 40 Seiten keinen Bock mehr. Das sehe ich nicht als 'abbauen'.

    Ich denke, man darf erwarten, dass wenn man sich zu diesem Thema in der selbstbewußten Form äußert, wie das hier mit MrN begonnen hat, dass dann auch was kommt.

    MrN schrieb:

    Wie kommst du auf diesen Unfug? Das hätte ich von dir nicht erwartet. 🙄

    Das war die volle Argumentation. Ich habe keine Ahnung, was hier wer von mir erwartet, ich erwarte von mir, dass ich entweder eine Meinung äußere, z.b. mit "Ich finde" oder etwas, was ich recherchiert habe. Recherchen "finde ich" nicht, sondern die sind so. Ich habe beschrieben, wo man das Recherchieren kann, ich habe erklärt, warum das logisch ist und ich habe Stroustup zitiert, der sich mehr mit dem Thema beschäftigt hat, als wir alle zusammen.

    Menschen, die das getan haben, wie Stroustrup oder Marcus, werden mit den Worten abgetan "das sind nicht meine Vordenker". Die sind beide in der grundlegenden Verantwortung, dass hier überhaupt irgendwas geschrieben wird, aber ansonsten spielt es keine Rolle, was die erarbeitet haben.
    Die Diskussion hat vor 40 Seiten stark abgebaut, den hier wurde von den wenigsten versucht Wissen zu formen und in eine allgemeinverständliche Formulierung zu bringen, sondern nur Meinungen geschrieben, deren stärkstes Argument "Ich finde" war und gegeneinander Zitate ausgespielt.

    Ich habe mir hier etliche Tage die Finger wund geschrieben, um Fragen zu beantworten. Um immer wieder die gleichen, bereits beantworteten Fragen zu beantworten, gekoppelt mit einem Vorwurf oder Beleidigungen, dass ich das ja nicht berücksichtigt hätte.
    Sowas nervt.

    Ich durfte "Argumente" aus dem Weg zu räumen, die überhaupt nichts mit der Thematik zu tun hatten und mir vorwerfen lassen, dass ich Argumente nicht berücksichtige. Wie auch - sie haben ja nichts mit dem Thema zu tun. Warum Templates nichts mit OOP zu tun hat, habe ich schon X mal erklärt, aber es tauchte kürzlich wieder auf.
    Um immer wieder wird man mit den idiotischsten Vorwürfen konfrontiert.

    Seit 50 Seiten schaue ich mir an, wie ich von einer ganzen Reihe von Leuten, beginnend mit MrNs "Wie kommst du auf diesen Unfug?" für blöd erklärt werde und soll mir dann vorwerfen lassen, dass ich nicht immer höflich und zuvorkommend war? Vermutlich habe ich an dem Unfug länger recherchiert, als MrN C++ programmiert.

    Ich habe hier echt viel Zeit investiert, mit dem Ziel Wissen anzubieten. Nicht, um mich als "ach so toll" zu präsentieren. Ob ihr mich toll findet oder nicht ist mir auf gut Deutsch gesagt s-Punkt-egal. Wenn ich etwas erklären kann, dann macht mir das Spaß. Da haben zwei Seiten was von. Ich erkläre aber keine Dinge, wo ich mir unsicher bin. Ich bin auch gerne offen für neue Anregungen - ich suche und frage danach und spreche mit den Leuten über die merkwürdigsten Ideen. So findet sich immer etwas, was sich im Alltag tatsächlich gebrauchen läßt. Aber eine Diskussion läuft mit handfesten, logischen Begründungen. Stroustup hat für seine Definition seitenlang durchgekaut, ich bin ein sehr kritischer und mißtrauischer Mensch in solchen Dingen und Stroustrups Definition bietet absolut keine Angriffsfläche, wenn man verstanden hat, wie die Konzepte ineinandergreifen.
    Die Definition ist rund und schlüssig und eindeutig und die praktische Umsetzung findet sich in allen mir bekannten Sprachen - manchmal offensichtlich und explizit, wie in C++, manchmal eher sprachintern wie in PHP.
    Es ging mir nicht darum, ein Image auf- oder abzubauen. Daher ist es mir jetzt genauso egal, dass ich hier offenbar bei einer ganzen Reihe von Leuten unten durch bin. Viel wichtiger ist mir zum Beispiel, dass ich mit minhen und DEvent Leute im Forum gefunden habe, die sich durch Recherche, bzw. durch Überlegen besonders hervorgetan haben.

    Aus meiner Perspektive hat die Qualität des Forums unter diesem Thread massivst gelitten und das nicht verursacht durch mich, sondern weil sich hier tatsächlich Leute hinstellen und behaupten "Lieber eine schwammige Definition, die ich verstehe, als eine scharfe, die vielleicht nur noch Studierte anwenden können."
    Solche Aussagen findest Du hier als Gegenargument im Thread. Etwas nicht zu verstehen, ist kein Beinbruch. Aber den eigenen Horizont nicht erweitern zu wollen, um etwas verstehen zu können. Das fand in diesem Thread statt, um jeden Preis.
    Auf sowas reagiere ich zynisch, was in der Sache sicherlich auch eher im Einzelfall zum Denken anregte und vom Rest als Arroganz aufgefasst wird.

    Mein Anteil an der Geschichte ist unbestritten, dass ich nicht vorzeitig ausgestiegen bin und damit verhindert hätte, dass die Leute überhaupt derartige schwammiges Gedankengut veröffentlichen. Das hätte aber nichts daran geändert, dass einige hier so denken.

    Und das ist für mich ehrlich gesagt sehr enttäuschend, denn dieses Forum ist eine der besten Anlaufstellen im deutschsprachigen Raum. Ich hatte mir vielleicht zuviel erhofft.

    Letztendlich kommt hier keiner ohne blaues Auge aus dem Thread. Ich weiß weiterhin, dass Stroustrups Definition Allgemeingültigkeit besitzt, aber nur ein kleiner Teil im Forum stimmt dem zu. Recht zu haben, ist nichts, was man mit einer Umfrage klären kann und hier konnte man es auch nicht durch Gedankenaustausch.
    Hier hat sich niemand mit Ruhm bekleckert, der einzige, der aus dem Thread nahezu ungeschoren herauskommt ist minhen. Er wird ohne jeden Zweifel recht behalten. Er stand nicht im Sperrfeuer von Beleidigungen und konnte schon vorher abschätzen, dass das Problem nicht ein kleine Ungenauigkeit der OOP-Definition ist, sondern eigentlich ein Desaster. Somit blieb ihm die Geduld, viele Fragen zu beantworten, obwohl einige der letzten Postings ("Das ist wohl ein schlechter Witz") auch darauf schließen lassen, dass er seinen Altruismus langsam verliert.

    Die Situation ist ziemlich verfahren.
    Ich sehe keinen Grund mich von Stroustrup zu distanzieren und der Rest wird das weiterhin als Ignoranz und Arroganz auslegen. Das ist für mich das Verhalten von kleinen Kindern, was mir sicherlich als Reply auf diesen Post wieder als Arroganz ausgelegt wird.

    Also entweder singe ich hier die Hymne der Mehrheit, um ebendiese glücklich zu machen, oder ich bleibe da, wo ich bin und abgesehen von minhen und vielleicht DEvent weiß keiner, dass das, was ich hier erklärt habe, sinnvoll ist und werde dann vom Rest geschnitten.

    Überzeugen konnte minhen oder ich nicht, was zu einer Win-Win-Situation führen würde. Die Masse konnte minhen und mich nicht überzeugen, was ebenfalls zu einer Win-Win-Situation geführt hätte.
    Wie es derzeit aussieht, ist läuft dieser Threads auf eine Lost-Lost-Situation hinaus.
    Ein Ergebnis, dass in einem professionellen Team unüblich ist. Wir outen uns damit alle als Anfänger, wenn es darum geht Probleme ziel- und lösungsorientiert zu lösen.

    Das ist bedauerlich für uns alle.



  • boah ich bin nur froh dat du nich mehr in deutschland lebst so dass ich dir nich über den weg laufen muss 👍 👍 👍



  • Xin schrieb:

    (Seite 55)
    Wenn man sich mit Programmiersprachen beschäftigt, dann muss man überlegen wo sie herkommen und was sich die Autoren dabei gedacht haben.

    Du solltest Dir deshalb für Deine Definition von OOP einen anderen und treffenderen Begriff suchen.
    Was Du definierst ist bestenfalls OOP auf Mikroebene bzw. nur noch Laufzeitoptimierung.
    Einen praktischen Nutzen davon haben nur Kompilerhersteller.

    Die Definition von OOP ergibt sich (von selbst) aus ihrer "Stellung" im Software-Engineering.
    Und aus dem Umstand, dass sie entwickelt wurde als möglicher Ansatz zur Bewältigung der Software-Krise.

    Wenn Daten und deren Manipulation zu Einheiten (Objekten) zusammengefasst werden, lassen sich z.B. Programmfehler schon anhand der produzierten Daten nicht nur finden, sondern schnell finden.

    Mehr steckt nicht dahinter.

    (amen!) 🙂



  • merker schrieb:

    Du solltest Dir deshalb für Deine Definition von OOP einen anderen und treffenderen Begriff suchen.

    das hat rüdiger ihm schon versucht vor 40 seiten mit sienem zwei plus zwei gleich fünf beispiel zu erklären aber das hat er wohl nicht verstanden.



  • Oh man... 57 Seiten. Euch muss echt langweilig sein.



  • Xin schrieb:

    Aus meiner Perspektive hat die Qualität des Forums unter diesem Thread massivst gelitten und das nicht verursacht durch mich, sondern weil sich hier tatsächlich Leute hinstellen und behaupten "Lieber eine schwammige Definition, die ich verstehe, als eine scharfe, die vielleicht nur noch Studierte anwenden können."

    Das Niveau sinkt weil Leute nicht deiner Meinung sind?
    Finde ich etwas gewagt.

    Aber bitte, um ehrlich zu sein: großen Wert legen wir hier nicht auf dich - also würde es niemanden stören wenn du das Niveau durch dein fernbleiben wieder anheben würdest.


Anmelden zum Antworten