Ich frage mich, ob andere C # -Entwickler eine Verbesserung für eine Compiler-Direktive für % finden würden. co_de% , um Whitespace signifikant zu machen, in dem Haskell oder Python, wo die Arten von Leerzeichen Codeblöcke erzeugen.
Dies wäre sicherlich eine massive Abkehr von Sprachen im C-Stil , aber es scheint mir, dass seit C # wird letztlich zu CIL kompiliert (was immer noch die geschweiften Klammern und Semikolons hätte), es ist wirklich nur ein Parsing-Trick Der Compiler kann mit beiden Methoden umgehen (dh er kann entweder mit signifikanten Leerzeichen umgehen oder nicht). Da Curlies und Semikolons oft eine Barriere für den Zugang zu C # & amp; Sie analysieren wirklich nur Helfer (sie verleihen Ihrem Code selbst keine Bedeutung), sie könnten a la Haskell / Python entfernt werden.
F # behandelt dies mit der #light-Compiler-Direktive, über die Sie in Leichte Syntaxoption in F # 1.1.12.3 .
Ich würde gerne dasselbe in C # sehen: ein #SigSpace oder eine solche Anweisung, die csc.exe
anweist, die Quelle wie eine Haskell-Datei in Form von Leerzeichen zu behandeln (nur als Beispiel).
Standard C #:
%Vor%Signifikante Leerzeichen:
%Vor%Ich sage nicht, dass ich das in C # möchte, aber ich bin daran interessiert, was die Kompromisse sind. Meine Vermutung ist, dass die meisten C # -Entwickler sich so an die Syntax gewöhnt haben, dass sie nicht sehen können, wie künstlich es ist (obwohl es am Ende den Code leichter lesbar macht).
Vielleicht interessieren Sie sich für die These von Kirill Osenkov, Entwerfen, Implementieren und Integrieren ein strukturierter C # -Code-Editor .
Die zugrunde liegende Idee ist, dass die geschweiften Klammern zwar Teil der C # -Sprache sind, die Sie definiert haben, aber Ihr Editor muss sie Ihnen nicht zeigen. Osenkov hat ein Editor-Steuerelement für SharpDevelop implementiert, das Klammerpaare als Einrückung darstellt und es für den Programmierer schneller macht, mit der Struktur des Codes zu arbeiten. Wechseln Sie im verknüpften Dokument zu Seite 113, um ein gutes Beispiel zu sehen.
Wenn Sie diese Syntax wünschen, verwenden Sie einfach IronPython oder Boo statt C #?
Es scheint besser, hierfür eine benutzerdefinierte Sprache zu implementieren, anstatt zu versuchen, C # zu optimieren. Wie Sie gesagt haben, kompilieren sie alle zur selben IL, also gibt es keinen Grund, eine gute, saubere Arbeitssyntax zu ändern, um eine neue Sprachgrammatik zu implementieren.
Als hauptsächlich Python-Entwickler würde ich gerne mehr Sprachen sehen, die einen signifikanten Whitespace für die Begrenzung von Blöcken verwenden.
Wenn Sie die Newsgroups durchsuchen, werden Sie viele Meinungen von C-, C ++ -, C # -, Java-Entwicklern finden. Mein Gefühl ist, dass viele von ihnen die geschweiften Klammern wirklich mögen.
Eine Mischung von Stilen wäre jedoch ein Schmerz.
Ich benutze auch regelmäßig geschweifte Klammersprachen, damit ich beide Seiten sehen kann
Ich kann mir nichts Schlimmeres vorstellen!
Vor allem mit der Option der beiden. Jedes Mal, wenn du den Code eines anderen liest, musst du mit beiden Schreibweisen vertraut sein, um einen Sinn daraus zu machen, und der Himmel verbietet es ihnen, zwischen den beiden zu wechseln - was für ein Albtraum!
Es würde alle Konsistenz entfernen und dazu führen, dass viele Entwickler mehr WTFs schreien.
Dann gibt es den ganzen heiligen Krieg auf Whitespace vs. Brackets - worüber ich nicht einmal etwas sagen werde.
Nein. Curlies beseitigen jede Möglichkeit der Zweideutigkeit seitens des Lesers. Menschen unterscheiden nicht gut zwischen verschiedenen Arten von Leerzeichen (ich denke nur darüber nach - "verschiedene Arten von Leerzeichen"!). Und von Menschen, ich meine mich. Deshalb mag ich C # :)
Einige Sprachen haben Philosophien hinter sich, die einige Arten von Ambiguität beinhalten. C # ist keiner von ihnen.
Nachdem ich meine ganze Karriere als C # / Java-Entwickler verbracht hatte und C # -Code mit signifikanten Leerstellen betrachtete, würde mich das in den Wahnsinn treiben.
Wenn Sie mit eckigen Klammern vertraut sind, macht es Code VIEL besser lesbar und hilft Ihnen wirklich herauszufinden, was der Code macht.
Das wäre nicht C #, es wäre eine andere Sprache wie Iron Python .
Wenn das eine Option wäre, würde ich es nie benutzen.
Insbesondere mag ich die Art und Weise, wie Visual Studio die geschweiften Klammern analysiert, sodass Blockzusammenbrüche / -erweiterungen möglich sind. Wenn Sie den Cursor neben einer geschweiften Klammer platzieren, wird die entsprechende schließende / öffnende geschweifte Klammer hervorgehoben.
Menschliche Lesbarkeit ist auch ein Problem. Es ist einfacher, geschweifte Klammern zwischen Wörtern zu unterscheiden, als um Leerzeichen zu unterscheiden.
Ich arbeite an einer Programmiersprache, die vor mehr als 30 Jahren von meiner Firma entwickelt wurde. Wir feilschen ständig mit solchen Fragen. Jede Änderung oder sogar Ergänzung führt nicht nur zu einer Verbesserung, sondern auch zu einer Chance für Fehler und Missverständnisse.
Selbst im besten Fall löst das kein Problem. Sie handeln nur eine beliebige Menge von Code-Block-Identifiern mit einer anderen, die alle Gewinne zunichte macht (wenn es welche mit der neuen Syntax gibt, die nicht einmal etabliert sind).
Viel wahrscheinlicher ist es, dass Sie mit einem anderen, nicht so bekannten, ein gut bekanntes Regelwerk abhandeln, das die Chancen von Fehlern und Missverständnissen einführt. Auch wenn Sie dies nur als Option hinzufügen, ist die Wahrscheinlichkeit von Fehlern höher, da Sie nun zwei Syntaxen zum Schreiben desselben Codes und möglicherweise sogar für dasselbe Entwicklerteam verwenden können.