こんにちは、Khabrovites。「PythonDeveloper。Basic」コースの開始を見越して、興味深い記事の翻訳を用意しました。また、オープンウェビナー「Careerfor」PythonDeveloper.Basic「」にもご招待します。
Python — , . , , Python. , , . Nim.
Nim?
Nim – , , - . Nim , Python, , Lisp. Python, Nim , C .
Nim
Nim, . nim-lang.org.
, Nim. -, , hello.nim, . :
static:
echo("Hello, world!")
, :
nim compile hello.nim
! «Hello, World!». Nim .
Nim Python
Nim nimpy
nimporter
, Python. pip install nimporter
. .
Nim, , , n- .
Benchmark 3 :
main.py
— ,
nmath.nim
—fib
Nim
pmath.py
—fib
Python
fib Python:
def fib(n):
if n == 0:
return 0
elif n < 3:
return 1
return fib(n - 1) + fib(n - 2)
nmath.nim
. nimpy
:
import nimpy
Python, ? :
import nimpy
proc fib(n: int): int {.exportpy.} =
if n == 0:
return 0
elif n < 3:
return 1
return fib(n-1) + fib(n-2)
fib
proc
. , (, ?) {.exportpy.}
Nim, Python. , Python.
main.py :
import nimporter
from time import perf_counter
import nmath # Nim imports!
import pmath
print('Measuring Python...')
start_py = perf_counter()
for i in range(0, 40):
print(pmath.fib(i))
end_py = perf_counter()
print('Measuring Nim...')
start_nim = perf_counter()
for i in range(0, 40):
print(nmath.fib(i))
end_nim = perf_counter()
print('---------')
print('Python Elapsed: {:.2f}'.format(end_py - start_py))
print('Nim Elapsed: {:.2f}'.format(end_nim - start_nim))
!
nimporter
Nim Python, , . , ?
, python main.py
, !
Python Elapsed: 33.60
Nim Elapsed: 1.05
, , Nim Python. Nim 30 , , . Nim, .
, ! , . , .
"Python Developer. Basic".
demo- « : map(), filter() zip()».