Lerne Nim mit Python (ab Anfang des Jahres).

Heute werde ich mein Memorandum über das Erlernen von Python mit Nim meinen älteren Brüdern vorstellen, die C ++ / Objective-C in der Praxis verwenden oder Pythonista sind. ... Ab Anfang des Jahres arbeiten Sie in Python + C mit Big Data. Ich hatte das Gefühl, es würde nicht funktionieren, selbst wenn ich nim verwenden würde, und ich bin dankbar.

Eines der Merkmale der Zusammenstellungssprache Nim (ehemals Nimrod)

Der frühere Nimrod, Nim, befindet sich seit etwa 2008 in der Entwicklung. Um Python-Benutzer dazu zu bringen, seine Funktionen zu verstehen, ist es meiner Meinung nach besser, sich den folgenden Code in der japanischen Version von Wikipedia, nim, anzusehen.

wikipedia.nim


proc reverse(s: string): string =
  result = "" #Implizite Ergebnisvariable
  for i in countdown(high(s), 0):
    result.add s[i]

var str1 = "Reverse This!"
echo "Reversed: ", reverse(str1)

Ein kleiner Wikipedia-Kommentar:

Obwohl Nim eine typisierte Kompilierungssprache ist, kann sie wie eine Skriptsprache geschrieben werden.

Es scheint, dass Nim vor ungefähr fünf Jahren in Japan im Blog von Takano32 bekannt wurde: "Schreiben wir FizzBuzz mit Nimrod!".

Takano32, ein Ruby-Committer, veröffentlichte sofort einen Eintrag: "Wie kann ich Python mit Nimrod verwenden?"

Ja, es gibt einige Leute, die versuchen, Python und Nim zusammen zu verwenden (was ist mit der Beziehung zwischen Ruby und Nim?).

Dieses Mal möchte ich nim von Python aus aufrufen und darüber nachdenken, wie ich es verwenden soll.

* Wenn Sie also ein Python-Benutzer sind, der sich für nim interessiert, das die gleiche Ausführungsgeschwindigkeit wie die C-Sprache anstelle von Pferd hat, lesen Sie bitte den Quellcode von nim und das Originaldokument und veröffentlichen Sie es im Blog. .. Ich werde gerettet ^ _ ^ *

Rufen Sie nim von Python aus auf.

Wenn Sie Connecting Nim to Python befolgen, ist dies im Grunde genommen schnell. Wir erstellen aus dem Quellcode von nim eine sogenannte Shared Library in C-Sprache. Binärdateien sind abhängig von der Ausführungsumgebung. Unten finden Sie ein Beispiel für einen Mac. Wenn Sie xcode und das neueste Gebräu haben, müssen Sie nim nur wie folgt installieren.

brew install nim

Bereiten Sie zunächst den NIM-Code mit nur einer Prozedur (Funktion) vor.

fn1.nim


proc summer*(x, y: float): float {. exportc, dynlib .} =
  result = x + y

Unten wird es in eine gemeinsam genutzte Bibliothek umgewandelt.

nim c --app:lib fn1.nim

Der Python-Code, der die generierte libfn1.dylib aufruft, befindet sich unten (mit python2.7, das von Anfang an im Mac enthalten ist). Verwenden Sie ctypes, da es sich um einen Aufruf einer gemeinsam genutzten Bibliothek in C handelt.

py2nim1.py


from ctypes import *

def main():
    test_lib = CDLL('./libfn1.dylib')

    # Function parameter types
    test_lib.summer.argtypes = [c_double, c_double]

    # Function return types
    test_lib.summer.restype = c_double

    sum_res = test_lib.summer(1.0, 3.0)
    print('The sum of 1.0 and 3.0 is: %f'%sum_res)

if __name__ == '__main__':
    main()

Wenn Sie in der 64-Bit-Umgebung auf den Doppeltyp achten, können Sie die Antwort "4.0" von nim erhalten.

Wird es beispielsweise als internes Stapelverarbeitungssystem verwendet?

Wenn die Umgebung nicht obszön ist, wie Numpy, Pypy, Micropython, R18python ... und spezielle Py-Begriffe, um die Ausführungsgeschwindigkeit zu erreichen, kann sich nim reibungslos einfügen. Auch wenn es nicht so ist: "Hey, sieh dir das an, du. Was denkst du über diesen Kerl? "- Wenn du eine Umgebung wie" Es ist wirklich groß ... (in Bezug auf die Berechnung) "hast, ist es möglich, den Prozess mit Python + C-Sprache + Nim herauszufordern Es scheint so als.

Seit ungefähr 20 Jahren, als es eine Nebensprache war, wurde unzähliger Code von wilden Männern geschrieben, und es gibt verschiedene "Künste" in Python. Beispielsweise enthält die Mac-Umgebung eine aufrufende Bibliothek für Objective-c (++) namens PyObjC, und Sie können nim sofort aufrufen, während Sie eine in Objective-c mit Python geschriebene GUI aufrufen. Da die Beschreibung des GUI-Aufrufs auf der Python-Seite lang ist, geben Sie den Code in gist ein.

Ausführungsbeispiel: スクリーンショット 2016-12-15 05.12.54.png

Das Erstellen einer GUI für Benutzer, die eine in nim geschriebene Berechnungsbibliothek aufrufen, ist mit Python viel einfacher. Die Kompilierungssprache nim kann sich auf Datenverarbeitungsbeschreibungen konzentrieren, die C / C ++ aufrufen, das gegebenenfalls eine hohe Affinität aufweist.

Fortsetzen

... und ich schrieb über das Verhältnis und den gesunden Menschenverstand über nim, das jetzt auf die materielle Sprache beschränkt ist. Aber, großer Bruder, mach dir keine Sorgen. Vor diesem Hintergrund werde ich in naher Zukunft einen Story-Beitrag zum Thema IoT schreiben.

Recommended Posts

Lerne Nim mit Python (ab Anfang des Jahres).
Notizen vom Anfang von Python 1 lernen
Notizen vom Anfang von Python 2 lernen
Studie vom Anfang von Python Hour1: Hallo Welt
Studie aus Python Hour8: Verwenden von Paketen
Erster Python 3 ~ Der Beginn der Wiederholung ~
Existenz aus Sicht von Python
Rufen Sie Python von Nim mit Nimpy auf
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
[Python] Verstehe das Klassenselbst. Lerne die Rolle des Selbst aus dem Ausführungsergebnis mit oder ohne Selbst.
Überprüfen Sie die Existenz der Datei mit Python
Lassen Sie die Stückliste am Anfang der Zeichenfolge weg
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
Von der Einführung von JUMAN ++ bis zur morphologischen Analyse von Japanisch mit Python
Lernen Sie das Entwurfsmuster "Singleton" mit Python
Lernen Sie intuitiv die Umformung von Python np
Lernen Sie das Designmuster "Facade" mit Python
Holen Sie sich den Inhalt von Git Diff aus Python
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
2016 Todai Mathematik mit Python gelöst
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Überprüfen Sie das Datum der Flaggenpflicht mit Python
Finden des Beginns der Avenomics anhand der NT-Vergrößerung 2
Konvertieren Sie den Zeichencode der Datei mit Python3
Finden des Beginns der Avenomics anhand der NT-Vergrößerung 1
[Python] Bestimmen Sie den Typ der Iris mit SVM
Der Beginn von cif2cell
Lerne Python mit ChemTHEATER
der Zen von Python
Deep Learning von Grund auf neu Die Theorie und Implementierung des mit Python erlernten Deep Learning Kapitel 3
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
Zerstören Sie den Zwischenausdruck der Sweep-Methode mit Python
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Mathematisches Verständnis der Hauptkomponentenanalyse von Anfang an
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
Python zeigt aus der Perspektive eines C-Sprachprogrammierers
Berechnen Sie den Regressionskoeffizienten der einfachen Regressionsanalyse mit Python
Lernen Sie das Entwurfsmuster "Chain of Responsibility" in Python
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Hauptkomponentenanalyse mit Python von nim mit nimpy
Holen Sie sich mit Python den Betriebsstatus von JR West
Installieren Sie das neueste Python von pyenv, das von Homebrew installiert wurde
[Grundlagen der Datenwissenschaft] Sammeln von Daten aus RSS mit Python
Vom Anfangszustand von CentOS8 bis zum Ausführen von PHP Python Perl Ruby mit Nginx
Extrahieren Sie Bilder und Tabellen mit Python aus PDF, um die Berichtslast zu verringern
Rufen Sie die API mit python3 auf.
Beginnend mit maschinellem Python-Lernen
Über die Funktionen von Python
Mit Skype benachrichtigen Sie mit Skype von Python!
Die Kraft der Pandas: Python
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
DJango Hinweis: Von Anfang an (Vereinfachung und Aufteilung von URLConf)
Extrahieren Sie die Vorlage der aus Thunderbird gespeicherten EML-Datei mit python3.7
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden