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 ^ _ ^ *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.
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:
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.
... 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