ภาษาไพทอนสู่เครื่องคิดเลข HP Prime

HP Virtual Calculator

ปกติเครื่องคิดเลข HP Prime G2 ที่ผมยกให้เป็นเทพของเครื่องคิดเลขด้านวิทยาศาสตร์ทั้งหลาย ผมเขียนโปรแกรมด้วยภาษา HP PPL หรือ Prime Programming Language คล้ายๆปาสคาลแต่บางอย่างคล้ายไพทอน

จากทิศทางที่เครื่องคิดเลขระดับไฮเอ็นต์ของ Casio และ TI ได้นำร่องโดยเอาภาษาไพทอนลงเครื่องคิดเลขไปก่อนหน้านี้ โดยจริงๆแล้วไพทอนในเวอร์ชั่นของเครื่องคิดเลขจะถูกออปติไมซ์ให้ใช้กับเครื่องที่มีความเร็วซีพียูที่ช้าและแรมไม่มากนัก ที่ดังที่สุดได้แก่ ไมโครไพทอน (Micropython) ที่พอร์ตภาษาไพทอนลงไมโครคอนโทรลเลอร์ ทำให้มีไลบรารีจำนวนมากที่ถูกพอร์ตลงมาใช้งานเช่นเดียวกัน อานิสงค์เลยได้มาลงที่เครื่องคิดเลขเช่นเดียวกัน

ผมเห็นว่าทีมงานผู้พัฒนาเครื่องคิดเลข Prime ของ HP คงเล็งเห็นแล้วว่าการพัฒนาลากภาษา PPL ให้ใช้ในกลุ่มแคบๆ น่าจะไม่คุ้มทุนในระยะยาว สู้ไปออปติไมซ์ภาษาไพทอนอีกต่อหนึ่งจะดีกว่า และภาษาไพทอนในปัจจุบันก็แซงภาษาอื่นๆขึ้นมาเป็นผู้นำแล้ว มีฐานผู้ใช้ที่มาก การพัฒนาที่ไม่สะดุดต่อเนื่อง

ในขณะนี้เฟิร์มแวร์ของเครื่องคิดเลขยังเป็นรุ่นเบต้าอยู่ ยังมีบางอย่างที่ไม่เข้าที่เข้าทางมากนัก มีคนไปทดสอบภาษาไพทอนเทียบกับภาษา PPL เดิม สรุปประมาณว่าไพทอนเร็วกว่า 4-10 เท่าทีเดียว

HP Connectivity Kit

การใช้งานต้องเปิดโปรแกรม HP Virtual Calculator พร้อมๆกับ HP Connectivity Kit เขียนโค้ดใน HP Connectivity Kit แล้วรันทดสอบโปรแกรมไพทอนที่เขียนใน HP Virtual Calculator

ผมลองเอาโค้ดไพทอนที่รันบน TI-NSpire CX II และ Casio fx-50cg และ Casio fx-9860GIII มาลองทดสอบดู คือ “COGO SSE 1” หรือ “COGO Selected Serie 1” สร้างไอคอนง่ายๆเข้าไปให้ชื่อไฟล์ “icon.png” โปรแกรมเรียกใช้โมดูลไฟล์ชื่อ “pbrutils.py”

แต่พบว่าบน HP Prime G2 ติดเรื่องป้อน input เพราะว่าบังคับให้ป้อนตรงบรรทัดล่างสุด พอป้อนเสร็จจะไม่มีการปริ๊นท์ให้ ดังนั้นต้องเพิ่มโค้ด print() เข้าไปให้ ทำให้รู้สึกรำคาญไปนิดหน่อย

ไลบรารีไพทอน

ไม่ผิดหวังทีมงาน HP Prime ขนไลบรารีมาให้มากพอสมควรได้แก้ micropython, array, uio, ucollections, ustruct, math, cmath, sys, gc, uerrno, ure, utimeq, uhashlib, urandom, hpprime, graphic, cas, arit, linalg, matplotl เนื่องจากเฟิร์มแวร์ของเครื่องคิดเลขยังเป็น beta ทำให้บางไลบรารียังไม่สมบูรณ์เช่น matplotl (ตัวย่อของ matplotlib) ซึ่งผมพยายามใช้แต่ส่วนใหญ่ยังใช้ไม่ได้ สังเกตุว่าไลบรารีที่ขึ้นต้นตัว “u” จะเป็นไลบรารีที่ขนมาจากไมโครไพทอน ที่น่าสนใจคือไลบรารี “linalg” นั้นเป็นตัวย่อของ Numpy.linalg ซึ่งสามารถนำมาคำนวณเมตริกซ์ได้

ทดสอบวาดรูปกราฟฟิค

ทดสอบการวาดใช้โค้ดจากลิ๊งค์นี้ เป็นการวาดรูปหมวก ใช้เวลา 0.935 วินาที

from hpprime import *
from math import *
t0 = eval("ticks()") # Save the current clock count for timing program
# Clear screen
fillrect(0,0,0,320,240,0,0)
# Start program proper
p=160; q=120
xp=144; xr=1.5*3.1415927
yp=56; yr=1; zp=64
xf=xr/xp; yf=yp/yr; zf=xr/zp
for zi in range(-q,q+1):
  if zi>=-zp and zi<=zp:
    zt=zi*xp/zp; zz=zi
    xl=int(.5+sqrt(xp*xp-zt*zt))
    # Draw one cross-section of figure
    for xi in range(-xl,xl+1):
      xt=sqrt(xi*xi+zt*zt)*xf; xx=xi
      yy=(sin(xt)+.4*sin(3*xt))*yf
      x1=xx+zz+p
      y1=yy-zz+q
      pixon(0,x1,230-y1,65280)
      if y1!=0:
        line(0,x1,230-y1+1,x1,230,0) # Erase points below current point
t = eval("ticks()")-t0
# Wait for key and print elapsed time
eval("wait()")
t = t/1000
print(t," seconds")

ตอนนี้ผมก็รอเฟิร์มแวร์เครื่องคิดเลขรุ่นเสถียร คิดว่าคงไม่นานนัก ตอนนี้แทบจะพูดได้วาเครื่องคิดเลขรุ่นท็อปของแต่ละค่าย Casio, TI และ HP ได้นำภาษาไพทอนรุ่นย่อส่วนมาลงโดยถ้วนหน้า และที่ผมกำลังมองๆอยู่คือ Numworks เป็นเครื่องคิดเลขที่เกิดมาพร้อมไพทอนโดยแท้ สามารถใช้ไลบรารี Numpy ได้เกือบเทียบเท่าบน Desktop PC เนื่องจากไม่มีตัวแทนจำหน่ายในไทยคงต้องรออีกสักพัก ถ้าสั่งเข้ามาเองคงต้องเสียภาษีแน่เป็นสำคัญ

ต่อไปคงมีจะมีโปรแกรมในด้านการสำรวจหรือด้านอื่นๆจากผู้ใช้ผู้เขียนมากหน้าหลายตา มาแทนภาษาเบสิคเดิมๆของแต่ละค่ายเครื่องคิดเลข เนื่องจากไพทอนเขียนง่าย อ่านง่าย โปรดติดตามกันตอนต่อไปครับ

Subscribe

Sign up for our newsletter and stay up to date

*

Leave a Reply

Your email address will not be published.