[PYTHON] Übersicht über 5 "Doppelpunkt" -Sprachen (ː ☆ 1)

Einführung

Viele weit verbreitete Sprachen wie Java / C ++ / C # / JS / PHP sind durch ein Semikolon (;) getrennt. Andererseits gibt es viele Sprachen wie Python / Ruby / Scala, die durch Zeilenumbrüche getrennt werden sollten. Es gibt ziemlich viele Liebhaber von Skriptsprachen, die Semikolon hassen. Einige Menschen haben das Gefühl, dass sie verlieren, wenn sie eine durch Semikolon getrennte Sprache verwenden (I).

Davon abgesehen Es gibt ziemlich viele Sprachen, die einen Doppelpunkt (ː) als Trennzeichen für Anweisungen verwenden.

An den wichtigsten Orten Python, Objective-C usw. Ein Smalltalk, der in den 1970er Jahren ins Leben gerufen wurde. Und die aufstrebende aufstrebende Sprache Nim und die Small Talk-ähnliche Sprache sprudeln auf Nim.

Ich habe angefangen, Python bei der Arbeit zu verwenden, also habe ich angefangen, diese 5 Sprachen zu verwenden Ich habe es zufällig versucht, und das alles Mir ist aufgefallen, dass der Doppelpunkt (ː) in vielerlei Hinsicht eine wichtige Rolle spielt. Vorerst möchte ich das Memo-Schreiben, das auch als Doppelpunktsprache bezeichnet wird, als erfrischendes Mittel für meine Brüder herausstellen, die normalerweise von der Semikolonsprache SI erschöpft sind.

Oder wenn Sie es wie eine Geschichte schreiben ː

――Wenn Sie es Doppelpunktsprachen nennen, ist es etwas übertrieben wie die Linguistik. ―― Respektiere Yukorin, der einen ähnlichen Goro (?) Hat, und nenne ihn die Colon Star-Sprache. ... Yukorin, 2017 werden wir von Mamatale auf Alleinerziehende umsteigen ... ――Wenn Sie "Colon ☆" schreiben, wird es in einer Art Animation angezeigt ...

Doppelpunktsystem ① Python

Eine typische Skriptsprache, jedermanns Python, verwendet stark die Doppelpunktnotation. Schreiben Sie if-, for- und Klassendefinitionen mit Doppelpunkten.

Beispiel:

person.py


class Person():
    def __init__(self, name, age):
        self.name, self.age = name, age
        self.address = None

Im Vergleich zu der schnellsten Master-Serie der Grundgrammatik, die vor langer Zeit populär war, [Python Basic Grammar Fastest Master](http://d.hatena.ne.jp/dplusplus/20100126/p1 Die Häufigkeit der Verwendung von Doppelpunkten in) ist mehr als zehnmal so hoch wie bei Ruby Basic Grammar Fastest Master. Der von Python verwendete Stil zur Verwendung von Tabulatortrennzeichen und Doppelpunkten wird auch in einigen anderen Sprachen verwendet (Boo unter .NET, Nim in C-Sprachen kompiliert usw.). Ich denke, dass Smalltalk, die ursprüngliche Doppelpunktsprache, die einzige in der schnellsten Master-Reihe der Grundgrammatik ist, die Doppelpunkte häufiger als Python verwendet.

Dickdarmsystem ② Ziel-c

Objective-c ist als iOS-Entwicklungssprache zu berühmt geworden. Die Doppelpunktnotation wird häufig in objektorientierten Teilen verwendet, die von Smalltalk beeinflusst werden. Beispielsweise wird die Methode setName, die Name und Preis als Argumente verwendet, wie folgt definiert.

method.m


- (void)setName:(NSString *)name price:(NSNumber *)price {
   _name = name;
   _price = price;
}

--Quelle Objective-C 2.0 Basic Grammar Fastest Master #Der schnellste Master, der vor 2015 Jahren hochgeladen wurde. Wenn Sie Objective-C 2.0 nicht verwenden, kann es für einige Personen empfohlen werden. Ich werde es in die Praxis umsetzen.

Aus dem Grund, warum die Methodennotation nicht setName (Name, Preis) lautet, obwohl es sich um eine C-Sprache handelt, ist es besser, sich den Small Talk anzusehen, der die Quelle war.

--Objektiv-C ist vollständig kompatibel mit der C-Sprache, und C-Funktionen sind in C-Sprache geschrieben.

Ziel C, ich denke darüber nach, es in die Praxis umzusetzen, also werde ich in naher Zukunft einen Artikel schreiben:

Doppelpunktsystem ③ Smalltalk

Zur historischen Bedeutung von Smalltalk siehe Smalltalk-Entwickler Alankeis Special Class Special Number (NHK). Ich denke, dass.

Wenn Sie weiterhin auf Fastest Master verweisen, sehen Sie übrigens die Smalltalk-Notation, die mehr Doppelpunkte als Python verwendet.

Lassen Sie mich einige zitieren:

Verwenden Sie Doppelpunkte, um Arrays zu definieren und auf Arrays zuzugreifen (Auswahlbeschreibung).

array.st


array := #(a b c). "Array-Definition"
array at: 2.          "Extraktion des zweiten Elements des Arrays=> #b "

Definition des Wörterbuchs und Ergänzung zum Wörterbuch

dict.st


dict := Dictionary new.
dict at: #a put: 1. "Zum Wörterbuch hinzufügen"
dict at: #b put: 2. "”"
dict at: #c put: 3. "”"
dict   "=> a Dictionary(#a->1 #b->2 #c->3 ) "

Definition einer anonymen Funktion unter Verwendung von Blöcken

Die sogenannte Bracket-Notation wird als Block bezeichnet, mit dem Sie eine anonyme Funktion definieren können.

block.st


block1 := [:a :b | a + b]. "Weisen Sie der Variablen block1 eine anonyme Funktion zu, die die Argumente a und b verwendet"
block1 value: 3 value: 4.           "Geben Sie die Block1-Werte 3 und 4 an=> 7 "

Es gibt eine ähnliche Notation für Ziel-c, aber ich finde, dass Smalltalk schlauer ist. Wenn Sie interessiert sind, lesen Sie bitte PPAP mit Smalltalk-76 und Squeak / Pharo ~ Vergleich der generationsübergreifenden Small Talks über 40 Jahre ~. Berühren Sie oben die bekannte Smalltalk-Ausführungsumgebung (Squeak / Pharo usw.). Ich habe "Einführung in die Squeak-Future-Programmierumgebung aus der Vergangenheit" erhalten, ein gutes Buch zum Erlernen der Objektorientierung bei Amazon für 1 Yen, daher denke ich, dass ich eines Tages etwas schreiben werde. sq

Dickdarmsystem ④ Nim

Nim, eine typisierte Sprache, die eine Python-ähnliche Einrückungsstruktur verwendet und in C kompiliert ist, ist eine Doppelpunkt-schwere Sprache, die in Smalltalk dünn zu sein scheint.

Lassen Sie mich aus einer schönen Notiz Syntax of Nim zitieren:

für und wenn

for.nim


for b in 1..10:
  if b == 5:
    continue
  if b == 7:
    break
  echo b
# (1, 2, 3, 4,6 und eine Zeile werden ausgegeben)

Prozedur- (Funktions-) Argumente und Rückgabewerte

proc.nim


proc isPositive(i: int): bool = i >= 0

Einschließlich Prozedurargumente und Rückgabewerte Die Typdefinition ist wie Java in Doppelpunktnotation.

Wenn Sie wissen, dass proc so etwas wie eine JS-Funktion ist oder gehen Sie func Es wird leicht zu lesen sein.

Ausnahmebehandlung versuchen-außer-endlich

try.nim


var f: File
if open(f, "sometext.txt"):
    try:
      ...  #Etwas zu verarbeiten
    except SomeError:  #Wenn SomeError in der try-Klausel auftritt, hier
      echo "some error"
    except AnotherError:  #Wenn hier ein anderer Fehler auftritt
      echo "another error"
    except:  #Wenn Sie hier einen anderen Fehler erhalten
      echo "unknown erro"
      raise  #Wenn Sie nur erhöhen, werfen Sie die gleiche Ausnahme auf
    finally:
      echo "finally"  #Muss ausgeführt werden

Die Syntax ist fast die gleiche wie bei Python. Nims Doppelpunktnotation ist gut lesbar und läuft schnell. Es ist die erwartete Kompilierungssprache.

Doppelpunktsystem ⑤ Springe auf Nim

Skriptsprache im Smalltalk-Stil Spry in Nim geschrieben. Da es sich um eine Smalltalk-ähnliche Skriptsprache handelt, die die Kompatibilität mit der Nim-Sprache mit vielen Doppelpunkten verbessert hat, Spry ist möglicherweise der Kandidat Nummer eins für eine geheime, kolonlastige Sprache.

――Wenn Sie eine Sprache voller Doppelpunkte kennen, lassen Sie es mich bitte wissen.

Unten ist die Quelle das Sprachhandbuch auf der offiziellen Website.

Funktionsfunktion

Die Funktionsdefinition erfolgt im Smalltalk-Geschmack. Verwenden Sie im Argument einen Doppelpunkt

func1.sy


foo = func [:x + 4]
# Prints 9 on stdout
echo foo 5

Wenn es um zwei Argumente geht, wird es eine schönere Doppelpunktnotation.

func2.sy


add:to: = func [:x + :y]
echo (add: 5 to: 6)   # prints "11"

# And a method in the same way
add:and: = method [self + :x + :y]
echo (3 add: 5 and: 6) # prints "14"

Add: ~ to: und add: ~ und: sind Selektorbeschreibungen in Smalltalk. Ähnlich wie bei Smalltalk ähnelt die Beschreibung der natürlichen Sprache (Englisch).

Bedingungsblock

Wenn es um bedingte Verzweigung geht, wird diese nicht übernommen und im Doppelpunkt geschrieben. In anderen Sprachen

if a >10 then 20 else 10

Aber ich würde schreiben ...:

cond.sy


foo = func [:a > 10 then: [20] else: [10]]

echo foo 5  # prints 10
echo foo 12 # prints 20

Hmmm, das scheint zu mögen oder nicht zu mögen. Die Beschreibung ist jedoch sehr präzise und es wird Spaß machen, wenn sie richtig mit Nim kombiniert wird. Eine spektakulärere Doppelpunktnotation finden Sie in der zweiten Hälfte des Handbuchs.

Weiter ... vielleicht.

Wie Sie an der Tatsache sehen können, dass dies im Nim-Adventskalender 2016 eine Lücke ist, habe ich es geschrieben, weil ich etwas Gemeinsamkeiten mit dem Doppelpunktsystem gefunden habe, als ich den Ursprung der neuen Sprache Nim + Spry erkundet habe, auf die ich achte. Ich konnte nicht alle Details schreiben, aber es ist ziemlich interessant, die Doppelpunktnotation jeder Sprache und das Designkonzept jeder Sprache zu betrachten. Als Bonus denke ich, dass kolonlastige Sprachen gemeinsam haben, dass die Verwendung von Semikolon (;) und Komma (,), die häufig in Java usw. verwendet werden, bescheiden ist (obwohl dies nicht für Ziel-c gilt).

Nachdem ich mich eingehender mit der Doppelpunktnotation jeder Sprache befasst habe, kann ich sie erneut schreiben. Daher werde ich vorerst (ː ☆ 1) als ersten Teil der Reihe zum Titel hinzufügen ː)

Recommended Posts

Übersicht über 5 "Doppelpunkt" -Sprachen (ː ☆ 1)
[Einführung in cx_Oracle] Übersicht über cx_Oracle
Merkmale der Programmiersprache [Memo]
Übersicht über Docker (für Anfänger)
Die Popularität von Programmiersprachen
Zunächst ein Überblick über Odo (Odoo 13)