8 กุมภาพันธ์ 2558

Published กุมภาพันธ์ 08, 2558 by with 0 comment

Nuitka แปลงโค้ด Python ไปสู่โค้ด C++

สวัสดีผู้อ่านทุกท่านครับ อย่างที่ผู้อ่านทราบกันว่า Python ใช้ CPython ในการ compile โค้ด Python ผมจะพาผู้อ่านไปรู้จักกับ compile ตัวหนึ่งที่สามารถแปลงโค้ด Python ไปสู่โค้ด C++ ได้ นั้นคือ Nuitka

ในภาษา Python จะมีการใช้แปลงโค้ดอยู่สองส่วนคือ

1.Python interpreter เวลานำไปใช้งานจริง งานที่ต้องใช้การประมวลผลสูง ประสิทธิภาพไม่ดีสู้แบบ Compile
2. Compile ซึ่งใช้ CPython เป็นหลัก
และด้วยข้อจำกัดของ CPython ทำให้นักพัฒนาภายนอก พัฒนา compile อื่น ๆ ขึ้นมา เพื่อตอบโจทย์ที่ต้องการ หนึ่งในนั้นคือ Nuitka

Nuitka เป็น Python compiler ที่ถูกพัฒนาให้เข้ากันได้กับ CPython 2.6 ขึ้นมาและ CPython ตั้งแต่ 3.2 ขึ้นมาโดยรองรับทั้ง 32/64 bits รองรับทั้ง Linux, FreeBSD, NetBSD, MacOS X, และ Windows และยังใช้ Apache 2.0 license (ASF)

โดยหลักการทำงานคือ แปลงโค้ด Python และโมดูลที่เรียกใช้ไปยังโค้ด C++ ซึ่งต้องนำไป compile ด้วย C++ compiler อีกรอบหนึ่ง ซึ่งทำให้มีประสิทธิภาพที่ดีกว่า CPython และทำงานได้รวดเร็วกว่า CPython

ก่อนติดตั้ง Nuitka ผู้อ่านต้องมี Python เวชั่นที่รองรับอยู่ในเครื่องด้วยนะครับ ในการติดตั้งผู้อ่านสามารถติดตั้งได้ดังนี้

  1. โหลดโค้ดมา compile ติดตั้งเองจาก http://nuitka.net/pages/download.html#id1

  2. โหลดไฟล์ติดตั้งจาก http://nuitka.net/pages/download.html#id4


การใช้งานเบื้องต้น

ในการแปลงโค้ด Python ไปสู่โค้ด C++ สามารถทำได้ด้วยคำสั่ง
nuitka --recurse-all ไฟล์ที่ต้องการ.py
หรือต้องการสร้างไฟลฺ์ exe สามารถใช้คำสั่ง
nuitka --exe ga1.py
หากต้องการแปลงแปลงโค้ด Python ไปสู่โค้ด C++ ด้วย Nuitka แบบง่าย ๆ สามารถใช้ nuitka-gui ช่วยได้ โดยเข้าไปโหลดได้ที่ https://github.com/juancarlospaco/nuitka-gui (Python 3) ครับ
nuitka-guiเมื่อแปลงโค้ดออกมาได้แล้วจะพบกับ

python to c++ไฟล์โค้ดในภาษา C++ จำนวนมากในโฟลเดอร์ ชื่องาน.build ครับ เมื่อนำไปใช้งานต้อง compile ด้วย C++ compiler อีกรอบหนึ่งครับ
วิดีโอแนะนำการใช้งาน Nuitka

[embed]https://www.youtube.com/watch?v=ZDHkla5rllg[/embed]
อ่านรายละเอียดการใช้งาน Nuitka เพื่อเติมได้ที่ http://nuitka.net/doc/user-manual.html
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)