namespace refactoring
-
Womit er natürlich Recht hat.
Nur finde ich es doof Namespaces deswegen wegzulassen. Wenn keine vollständige Lösung bekannt ist, dann nehm ich jederzeit eine, die nur zu 90% funktioniert...
-
Natürlich hat er da Recht, aber das ist eine Verschiebung um Kilometer.
Imo ist das einfach keine ernst zu nehmende Begründung.btw:
Meine Frage, warum das neue Sprachfeature "across" nicht wie in jeder anderen Sprache foreach heisst hat er bis jetzt nicht beantwortet..
Ich vermute das (und das mit den namespaces) liegt wohl eher an der "Eiffel-Mentalität". Man möchte sich möglichst weit von den bösen Sprachen, wie Java und C++ distanzieren. Das merkt man immer mal wieder, wenn man mit Eiffel programmiert oder Literatur darüber liest.
-
drakon schrieb:
Natürlich hat er da Recht, aber das ist eine Verschiebung um Kilometer.
Imo ist das einfach keine ernst zu nehmende Begründung.Ja, hab ja auch geschrieben ich finde es doof Namespaces deswegen wegzulassen.
drakon schrieb:
Meine Frage, warum das neue Sprachfeature "across" nicht wie in jeder anderen Sprache foreach heisst hat er bis jetzt nicht beantwortet..
Ich vermute das (und das mit den namespaces) liegt wohl eher an der "Eiffel-Mentalität". Man möchte sich möglichst weit von den bösen Sprachen, wie Java und C++ distanzieren. Das merkt man immer mal wieder, wenn man mit Eiffel programmiert oder Literatur darüber liest.Auf mich macht es eher den Eindruck als ob es das Werk eines sehr intelligenten aber auch etwas zu sturen Eigenbrötlers wäre.
Ich denke also er wird "across" als Name gewählt haben weil er den Namen "besser" findet, nicht um auf Zwang anders zu sein als C++/Java/...
Ob das gut ist oder nicht ist wieder ein anderes Thema. Etwas übernehmen nur weil es alle anderen so machen hat genau so offensichtliche Nachteile, wie etwas anders zu machen als alle anderen, nur weil es (eine Spur) besser/logischer/... ist.
Was schwerer wiegt ist dann natürlich Ansichtssache.
-
hustbaer schrieb:
drakon schrieb:
Natürlich hat er da Recht, aber das ist eine Verschiebung um Kilometer.
Imo ist das einfach keine ernst zu nehmende Begründung.Ja, hab ja auch geschrieben ich finde es doof Namespaces deswegen wegzulassen.
Wollte dir nicht widersprechen, sondern eher andeuten, dass ich das einfach vergessen habe oben noch hinzuschreiben.

Auf mich macht es eher den Eindruck als ob es das Werk eines sehr intelligenten aber auch etwas zu sturen Eigenbrötlers wäre.
Ich denke also er wird "across" als Name gewählt haben weil er den Namen "besser" findet, nicht um auf Zwang anders zu sein als C++/Java/...
Ob das gut ist oder nicht ist wieder ein anderes Thema. Etwas übernehmen nur weil es alle anderen so machen hat genau so offensichtliche Nachteile, wie etwas anders zu machen als alle anderen, nur weil es (eine Spur) besser/logischer/... ist.
Was schwerer wiegt ist dann natürlich Ansichtssache.Stur ist die Sprache schon (was sicher auf den Entwickler zurückzuführen ist). Und das meinte ich eben mit Eiffel-Mentalität.

Aber was ist besser daran etwas so zu nennen, dass es die Leute eher verwirrt, als es ihnen hilft? Als ich das erste mal gesehen habe, konnte ich mir darunter überhaupt nichts vorstellen. Als ich dann die Definition angeschaut habe wurde mir klar, dass es einfach nur ein foreach ist.
-
drakon schrieb:
Stur ist die Sprache schon (was sicher auf den Entwickler zurückzuführen ist). Und das meinte ich eben mit Eiffel-Mentalität.

Und ich finde das grundsätzlich gar nicht mal SO schlecht

Aber was ist besser daran etwas so zu nennen, dass es die Leute eher verwirrt, als es ihnen hilft? Als ich das erste mal gesehen habe, konnte ich mir darunter überhaupt nichts vorstellen. Als ich dann die Definition angeschaut habe wurde mir klar, dass es einfach nur ein foreach ist.
Warum er "across" besser findet als "foreach", wenn man mal unterstellt dass es überhaupt so ist, weiss ich nicht.
Ich denke nur es hat beides Vorteile, das "Festhalten an Altbewehrtem" und das "anders Machen weil's anders besser ist".Wenn man immer an alten Konventionen festhält, hat das z.B. den Nachteil, dass man den Raum für Verbesserungen auf Erweiterungen einengt.
In diesem Fall, wo es einfach nur um ein Keyword geht, ist das zwar vielleicht etwas dick aufgetragen, aber grundsätzlich gilt es auch da: wenn "across" (warum auch immer) das logischere und intuitiv besser verständliche Wort wäre, zumindest für Leute die andere bedeutungsgleiche Begriffe noch nie gehört haben, dann hat es Vorteile (nicht nur, aber auch), es zu ändern.
-
Naja. Kommt wohl drauf an in welchem Kontext.
Ich verstehe nicht, wie across besser aussagen kann was es machen soll als foreach. foreach sagt ja bereits was es macht und ist daher sehr intuitiv verständlich. Korrigier mich, wenn ich falsch liege, aber wenn man das Wort noch nicht kennt und einen Container durchgehen will für jedes Element, dann kommt man da ja sogar selbst drauf. Und noch auf Englisch, damit man es sieht: "I'd like to go throug this container for each element." - Ich denke intuitiver kann man ein Schlüsselwort kaum wählen.

Aber mir fällt es wieder ein, was wohl der wirkliche Grund (und das meine ich jetzt nicht als Scherz) für die Wahl von across ist. Meyer ist sehr stolz (hat es in der Vorlesung mehrmals erwähnt und in seinem Buch auch), dass alle Schlüsselwörter komplette Englische Ausdrücke sind bis auf elseif. Foreach wäre da natürlich gegen die Namenskonvention.
Wenn die Sturheit dann bei so etwas zu tragen kommt (falls es so ist und ich vermute, dass es so ist), dann finde ich das schlecht.btw:
Ich finde auch, dass Eiffel sehr gute Konzepte (Umsetzung der Vererbung, Contracts, Agents, Operatoren) hat. Mit ein paar Syntaxänderungen und einer anständigen IDE würde es sogar richtig Spass machen damit etwas zu entwickeln.
-
Und einer anständigen und grossen Standard-Library

-
hustbaer schrieb:
Und einer anständigen und grossen Standard-Library

Ja, aber mit einer schlechten Dokumentation (vor allem bei zusätzlichen Bibliotheken).

Ich hatte wirklich ein Weilchen bis ich endlich ein Fenster hingekriegt habe.

Liegt aber wahrscheinlich an der eher geringen Verbreitung.btw:
Programmierst du auch mit Eiffel? Wenn ja was?
-
Hihi, ich meinte das als Forderung. (Also dass die Std. Library nicht so toll ist, und das noch gändert werden müsste damit ich gerne damit programmieren würde)
Und nein, ich programmiere nicht in Eiffel. Finde es aber schade dass sich die Sprache so gar nicht durchgesetzt hat.
-
Also ich finde die Standardbibliothek recht umfangreich. Prinzipiell musste ich nie nach eine Bibliothek suchen (weder GUI, noch Internet), aber sie sind nicht gerade einfach zu benutzen, da schlecht dokumentiert und unintuitiv zu handhaben.
Oder was vermisst du da? Klar so umfangreich, wie bei .net oder Java ist sie nicht, aber das geht imo auch weit über eine Standardbibliothek heraus.
-
Hallo,
ich stand vor einiger Zeit selbst vor der Namespace Problematik und wollte zusätzlich noch viele Header Dateien und ganze Ordner Umbenennen/Verschieben. Nach einigen Stunden #include Statements anpassen und nachdem ich einige Tools ausprobiert hatte (die das aber alle nicht konnten) hab mir dann doch selbst ein Tool dafür geschrieben. Wenn Interesse besteht stelle ich es mit Quelltext online. Es hat keine Gui (nicht weil ich Guis nicht mag (ich liebe Guis....), sondern weil das ganze so schon genug Arbeit war), und es hat folgende Features.
1. Es kann feststellen, welche Dateien umbenannt wurden und passt #include Statements entsprechend an.
2. Man kann namespaces umbenennen, hinzufügen und entfernen. Es hat aber KEINEN vollständigen C++ parser, sondern kann nur Code Zeilen der Form
namespace <Name> {
umbenennen, hinzufügen oder entfernen und die abschließenden '}' Zeilen an passender Stelle einfügen/entfernen. Also wird bspw dieser code nicht abgeändert werden:
<Name>::blubbIch gebe zu bedenken, dass der "parsende" Teil vom Code Teil nicht wirklich schön ist, da kein echter C++ parser benutzt wird, sondern eine eigene "frickel" Lösung. Der Rest vom Quellcode ist einigermaßen passabel (aber unkommentiert).
Nach einem frei verfügbaren C++ parser habe ich vergeblich gesucht.Abhängigkeiten gibts nur zu Boost (wird zum Ordner durchsuchen benutzt). Das Projekt existiert bisher nur als Visual Studio Projekt, Windows Header werden aber nirgendwo benutzt.
Viele Grüße
S.Mond
-
Ich biete drei Kamele dafür, das S.Mond Kóyaánasqatsi ist

-
glaub ich nicht.