ในห้อง #ubuntu-th มีบอทอยู่ตัวนึงของ willwill คราวนี้มันมีความสามารถพิเศษอยู่อย่างคือคำสั่ง math โดยจะเรียกไปที่โปรแกรม bc ตอนแรกผมก็นึกว่ามันเป็นคำสั่งที่ให้คำนวนเลขธรรมดา แต่ด้วยความสงสัยด้วยว่าอะไรคือ bc เลยลองเปิดใน Terminal เครื่อง mac(ปลอมๆ) ที่ทำงานซะหน่อย แล้วก็ได้ด้วย
เปิดมาตอนแรกก็เล่นไม่เป็นเลยต้องไปหาผู้ชาย(man) มาช่วยซะหน่อยเลยรู้ด้วยเลยว่า bc มันคืออะไร
bc – An arbitrary precision calculator language
แล้ว bc มันมาจากตัวไหนของชื่อเต็มหละฟะ ช่างมันเพราะที่น่าสนใจมันไม่ได้อยู่ตรงนี้ แต่มันสามารถเขียนโปรแกรมในนี้ได้เลยโดยรูปแบบภาษาก็คล้ายๆ ภาษาซี แต่ไม่ได้ใช้ compiler เท่านั้นเองเพราะอันนี้พิมพ์ประโยคเสร็จกด enter ผลลัพธ์กลับมาเลยเช่น
llun@pluto:~$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
10+5
15
ดูแล้วอาจจะงงๆ บรรทัดไหนที่เราพิมพ์ บรรทัดไหนคำตอบวะ แต่คนพิมพ์เองคงไม่งงเท่าไหร่ยกเว้นเรียกใช้ function แหะๆ เนื่องจากโปรแกรมนี้ไม่มี prompt เหมือนของภาษาอื่นอย่าง ruby จากด้านบนที่พิมพ์ไปคือ 10+5 พอ enter ปุ๊บคำตอบก็โผล่มาในบรรทัดถัดมาเลยคือ 15 หลายคนอาจงงแล้วมันจะเขียนโปรแกรมได้ยังไง งั้นลองดูต่อบรรทัดล่างละกัน
llun@pluto:~$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
define frac(x) {
if (x > 0)
{ return x*frac(x-1) }
return 1
}
frac(5)
120
ด้านบนนี้ผมประกาศ function เล็กๆ ชื่อ frac รับ parameter ไปตัวคือ x คนที่เรียนคอมมาก็คงมองออกว่าเป็น function หา fractorial ง่ายๆ มีใครสังเกตุอะไรแปลกๆ มั้ยครับ มันไม่ต้องปิดแต่ละคำสั่งด้วย “;” เหมือน javascript ด้วยหละ คราวนี้มาดูประกาศตัวแปรกับพวก if, loop มั่งดีกว่า
i=0
while(i<5) {
print i,"n"
i++
}
0
0
1
1
2
2
3
3
4
4
การประกาศตัวแปรของ bc ก็ง่ายๆ อีกเขียนขึ้นมาได้เลย ไม่ต้องมีการกำหนดอะไร ส่วนคำสั่งที่ใช้คุม flow ก็จะเหมือนกับภาษาซี (น่าจะบอกว่าเหมือน javascript มากกว่าแฮะ) การใช้ array ก็กำหนดข้อมูลให้ทีละช่องไปเลย ไม่ต้องบอกขนาดมาก่อน (หรือต้องบอกไม่รู้เหมือนกันแฮะ) เหมือนกับภาษา php เอาหละเขียนมาเยอะและยังไงก็ต้องลองไปเล่นดูละกันครับ