Als «language-design» getaggte Fragen

Fragen zum Design und zur Struktur von Programmiersprachen.

2
Warum haben bitweise Operatoren eine niedrigere Priorität als Vergleiche?
Könnte jemand erklären, warum Vergleichsoperatoren (==,! =, <,>, <=,> =) In einer Reihe der beliebtesten Sprachen (siehe Hinweis unten) eine höhere Priorität haben als bitweise Operatoren (&, |, ^) , ~)? Ich glaube nicht, dass ich jemals auf eine Verwendung gestoßen bin, bei der dieser Vorrang natürlich wäre. Es ist …

6
Warum wurde C # im Gegensatz zu Java mit den Schlüsselwörtern "new" und "virtual + override" erstellt?
In Java gibt es keine virtual, new, overrideSchlüsselwörter für Methodendefinition. Die Arbeitsweise einer Methode ist also leicht zu verstehen. Verursachen , wenn DerivedClass erstreckt Baseclass und hat ein Verfahren mit denselben Namen und dieselbe Signatur von Baseclass dann den übergeordneten findet im Laufzeit - Polymorphismus nehmen (vorausgesetzt , das Verfahren …

9
Warum beinhalten Sprachen keine Implikation als logischen Operator?
Es mag eine seltsame Frage sein, aber warum gibt es in vielen Sprachen keine Implikation als logischer Operator (Java, C, C ++, Python Haskell - obwohl es als letztes trivial ist, benutzerdefinierte Operatoren hinzuzufügen)? Ich finde logische Implikationen viel klarer zu schreiben (insbesondere in Behauptungen oder assert-ähnlichen Ausdrücken) als Negation …


2
Warum ist 'void' in C # nicht als generischer Typ zulässig?
Welche Designentscheidungen sprachen dafür, voidnicht konstruierbar zu sein und nicht als generischer Typ zugelassen zu werden? Immerhin ist es nur ein besonderes structLeerzeichen und hätte die totale PITA vermieden, eindeutige Funcund Actiondelegierte Personen zu haben. (C ++ erlaubt explizite voidRückgaben und erlaubt voidals Template-Parameter)

3
Was ist ein Typensystem?
Hintergrund Ich entwerfe eine Sprache als Nebenprojekt. Ich habe einen funktionierenden Assembler, einen statischen Analysator und eine virtuelle Maschine dafür. Da ich mit der von mir aufgebauten Infrastruktur bereits nicht-triviale Programme kompilieren und ausführen kann, habe ich mir überlegt, an meiner Universität einen Vortrag zu halten. Während meines Vortrags erwähnte …

5
Warum nehmen alle <algorithm> -Funktionen nur Bereiche an, keine Container?
Es gibt viele nützliche Funktionen in &lt;algorithm&gt;, aber alle arbeiten mit "Sequenzen" - Paaren von Iteratoren. Wenn ich zB einen Container habe und darauf laufen möchte std::accumulate, muss ich schreiben: std::vector&lt;int&gt; myContainer = ...; int sum = std::accumulate(myContainer.begin(), myContainer.end(), 0); Wenn alles, was ich vorhabe, ist: int sum = std::accumulate(myContainer, …

4
Warum lösen Iteratoren in Python eine Ausnahme aus?
Hier ist die Syntax für Iteratoren in Java (etwas ähnliche Syntax in C #): Iterator it = sequence.iterator(); while (it.hasNext()) { System.out.println(it.next()); } Welches macht Sinn. Hier ist die äquivalente Syntax in Python: it = iter(sequence) while True: try: value = it.next() except StopIteration: break print(value) Ich dachte, Ausnahmen sollten …

8
Warum sollte man eine moderne Sprache ohne Ausnahmebehandlungsmechanismus entwerfen?
Viele moderne Sprachen bieten umfangreiche Funktionen zur Ausnahmebehandlung , die Programmiersprache Swift von Apple bietet jedoch keinen Mechanismus zur Ausnahmebehandlung . Ich bin so durchdrungen von Ausnahmen, dass ich Probleme habe, mir darüber Gedanken zu machen, was dies bedeutet. Swift hat Behauptungen und natürlich Rückgabewerte. Aber ich habe Probleme damit, …

13
Warum weist der Zuweisungsoperator der linken Seite zu?
Ich habe vor kurzem angefangen, einer Freundin Programmieren beizubringen (wir verwenden Python), und als wir angefangen haben, die Erstellung von Variablen und den Zuweisungsoperator zu besprechen, fragte sie, warum der Wert auf der rechten Seite dem Namen auf der linken Seite zugewiesen wird und nicht umgekehrt . Ich hatte vorher …

5
Warum werden alte Programmiersprachen weiter überarbeitet?
Diese Frage lautet nicht: "Warum verwenden die Leute immer noch alte Programmiersprachen?" Ich verstehe das ganz gut. Die beiden Programmiersprachen, die ich am besten kenne, sind C und Scheme. Beide stammen aus den 70er Jahren. Kürzlich las ich über die Änderungen in C99 und C11 gegenüber C89 (die in der …

4
Warum sind Strukturen und Klassen in C # getrennte Konzepte?
Beim Programmieren in C # bin ich auf eine seltsame Entscheidung für das Sprachdesign gestoßen, die ich einfach nicht verstehe. C # (und die CLR) haben also zwei aggregierte Datentypen: struct(Werttyp, auf dem Stapel gespeichert, keine Vererbung) und class(Referenztyp, auf dem Heap gespeichert, hat Vererbung). Dieses Setup hört sich zunächst …




Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.