bc

ในห้อง #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 เอาหละเขียนมาเยอะและยังไงก็ต้องลองไปเล่นดูละกันครับ

About llun

Just a programmer

, ,

  • http://whsgroup.ath.cx วิน

    ดีจังมีคนเขียนถึงบอต :smile:

    อย่าเอาคำสั่งหา pi ไปรันในบอตนะครับ

    ปล. แถมท้าย scale=1000 ก่อนแล้วค่อยสั่ง จะออกทศนิยม 1000 ตำแหน่งครับ สังเกตว่าตัดบรรทัดให้ด้วย แต่ willwillBot จะแสดงบรรทัดเดียวครับ

  • pF ;)

    นั่นดิ มันย่อจากอะไร – -?
    ถ้า php/bc มันคือ Binary Calculator
    ถ้า POSIX/GNU มันคือ basic ใช่ไหมเอ่ย – -?

    แต่มันคงไม่ใช่ เครื่องคิดเลขของบุญชิต ม้ัง ฮะฮะ ;)

    ป.ล. บุญชิต เป็น ปะกิต ^^!