แสดงบทความที่มีป้ายกำกับ erlang แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ erlang แสดงบทความทั้งหมด

วันพฤหัสบดีที่ 24 ตุลาคม พ.ศ. 2556

แนะเครื่องมือช่วยในการเขียนโค้ดโปรแกรม IDE, Text editor

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

1. Notepad++

Notepad++ เป็นเครื่องมือสำหรับแก้ไขโค้ดโปรแกรม (Text Editor) แบบเน้นๆไม่มีตัวช่วยมากนัก เหมาะสำหรับคนที่ต้องการความเร็วในการทำงาน มี Syntax Highlight ให้หลากหลายภาษา โดยส่วนตัวแล้วผมจะใช้แก้โค้ดที่เกิดมีข้อผิดพลาดไม่มาก
ข้อดีโดยสรุปที่ได้ใช้งาน
  • ฟรีแวร์
  • เปิดโปรแกรมเร็ว
  • ไม่มีปัญหากับภาษาไทย (สระไม่ลอย)
  • มีส่วนเสริมช่วยในการทำงานมากและฟรี

วันอาทิตย์ที่ 9 มิถุนายน พ.ศ. 2556

พื้นฐานการเขียนโปรแกรมภาษา Erlang ตอนที่ 4

Functions
-    ฟังก์ชั่นถูกจัดกลุ่มเก็บไว้ใน module
-    ชื่อฟังก์ชั่นเป็น atom
-    ฟังก์ชั่นประกอบด้วยส่วนหัวคือชื่อของฟังก์ชั่น และวงเล็บพารามิเตอร์
-    จำนวนพารามิเตอร์เรียก arity
-    ใช้เครื่องหมายลูกศร (->) เป็นตัวแยกส่วนหัวกับ ตัวของฟังก์ชั่น
ตัวอย่างฟังก์ชั่นคำนวณพื้นที่ของรูปทรง
area({square,Side})->
    Side*Side;
area({cicle,Radius})->
    math:pi()*Radius*Raduis;
area({triangle,A,B,C})->
    S=(A+B+C)/2,
    math:sqrt(S*(S-A)*(S-B)*(S-C));
area(Other)->
    {error,invalid_object}.


การใช้งานฟังก์ชั่น เมื่อมีการผ่านค่าพารามิเตอร์ จะมีการตรวจสอบรูปแบบของพารามิเตอร์ว่ามีความสัมพันธ์ตรงกับฟังก์ชั่นใด
1.    เทียบแล้วถ้ามีรูปแบบที่ถูกต้อง ตัวแปรถูกผูก ส่วนของคำสั่งภายในฟังก์ชั่นประมวลผล
2.    ถ้าไม่ ให้เทียบกับฟังก์ชั่นถัดไป
3.    ถ้าไม่มีฟังก์ชั่นใดที่รูปแบบตรงกับพารามิเตอร์ ให้ทำฟังก์ชั่น area(Other) ซึ่งเป็นฟังก์ชั่น catch-all
ตัวอย่างฟังก์ชั่น factorial แบบ recursive
    factorial(0)-> 1;
    factorial(N)->
        N*factorial(N-1);

วันพุธที่ 17 เมษายน พ.ศ. 2556

พื้นฐานการเขียนโปรแกรมภาษา Erlang ตอนที่ 3

Variables
  • ตัวแปรใช้เก็บค่าพื้นฐานใน Erlang
  • ขึ้นต้นด้วยตัวพิมพ์ใหญ่ ตามด้วยตัวพิมพ์ใหญ่หรือเล็ก ตัวเลข และขีดล่าง (_ underscore) โดยไม่มีอักษรพิเศษอื่นๆ
ตัวอย่าง
A_Long_Variable_Name
Vname
T2animation
Db2Connect


  • ตัวแปรเมื่อมีการผูกค่าแล้ว เปลี่ยนแปลงค่าไม่ได้ (single assignment)
  • ถ้าต้องการประมวลผลลัพธ์จากตัวแปร ต้องสร้างตัวแปรใหม่มาเก็บผลลัพธ์
Ten = 2,
Result = Ten*Ten.


  • การเรียกตัวแปรใน Erlang เป็นแบบ Call by value
  • อากิวเมนต์ที่จะผ่านเข้าสู่ฟังก์ชั่น จะต้องมีการผูกค่า ก่อนที่ฟังก์ชั่นจะทำการประมวลผล
  • ใน Erlang ไม่มีการเรียกแบบอ้างอิง Call by reference does not exist
  • ตัวแปรเป็นแบบ local อยู่กับฟังก์ชั่นที่มันอยู่
  • ไม่มีตัวแปรแบบ Global ใน Erlang
  • ตัวแปรไม่ต้องประกาศก่อน ใช้เมื่อต้องการใช้มัน
  • ตัวแปรใน Erlang เป็นแบบ dynamic type system (Erlang type system)
  • ตัวแปรที่ถูกค่าแล้วสามารถยกเลิกการผูกค่าโดยใช้ฟังก์ชั่น f() มีรูปแบบคือ f(Variable).

วันเสาร์ที่ 30 มีนาคม พ.ศ. 2556

พื้นฐานการเขียนโปรแกรมภาษา Erlang ตอนที่ 2

 Atoms and Strings
ความแตกต่างของ Atoms และ Strings
  • atom ทำการประมวลผลได้เฉพาะนำมาเปรียบเทียบกันเอง
  • string ประมวลผลได้หลายแบบ เช่นการนำสตริงมาแยก
ตัวอย่าง
  สตริง "Hello World" สามารถแยกได้เป็น ["Hello","World"] แต่ในกรณีของอะตอม 'Hello World' ไม่สามารถแยกได้
  • เราสามารถใช้สตริงแทนอะตอมในรูปแบบของตัวแปรคงที่แต่ ประสิทธิภาพที่ได้มีความแตกต่างกัน เพราะว่า
     สตริง ใช้พื้นที่เก็บเท่ากับความยาวของข้อความ
     อะตอม ใช้พื้นที่เก็บขนาด 2 ไบต์ในการอ้างอิง
ถ้ามีการเปรียบเทียบ สตริงต้องวิ่งเปรียบเทียบทีละตัวอักษร ส่วนอะตอมเปรียบเทียบในขั้นตอนเดียว
Building and Processing Lists 
  • เราสามารถแยก list ได้ออกเป็นส่วนหัว (head) และหาง (tail) ตราบเท่าที่ลิสต์ไม่ว่า
  • หัวคือส่วนแรกในลิสต์ หางคือลิสต์ที่ภายในประกอบด้วยส่วนที่เหลือ
รูปแบบ
List = [Element|List] หรือ []

วันอังคารที่ 26 กุมภาพันธ์ พ.ศ. 2556

พื้นฐานการเขียนโปรแกรมภาษา Erlang ตอนที่ 1

 หลังจากที่ได้อ่านหนังสือเกี่ยว Erlang Programming ของ Francesco Cesarini และ Simon Thompson วันนี้ก็มีโอกาสว่างๆ อัพเดตบล็อกเกี่ยวกับพื้นฐานการเขียนโปรแกรมภาษา Erlang เพื่อเอาไว้ช่วยบันทึกความจำของผมเองว่าเรียนรู้ไปถึงไหนบ้างแล้ว
 สำหรับใครที่ต้องการรู้ประวัติของ Erlang ถ้าต้องการ Download

เริ่มต้นกันก่อนที่ Erlang Shell


คำสั่งพื้นฐานที่จำเป็นใช้ใน Erlang Shell
help().     เรียกดูคำสั่งที่ของ Erlang Shell ทั้งหมด
q().        ออกจาก Erlang Shell
pwd().     ดูว่าเรากำลังทำงานอยู่ในไดเรกทรอรีไหน
cd("C:/Users/Me/WorkingDir").    เปลี่ยนไดเรกทรอรีที่ทำงานไปที่ C:/Users/Me/WorkingDir
ls().        ดูรายการในไดเรกทรอรี
os:cmd("notepad myprog.erl"). เรียกใช้คำสั่งเฉพาะของ OS
c(myprog).    คอมไพล์ Module ต้องมีไฟล์ชื่อ myprog.erl อยู่ในไดเรกทรอรีที่ทำงานอยู่ก่อนคอมไพล์
m(myprog).    ดูรายการ public function ใน Module นี้
myprog:function(arguments).    เรียกในฟังก์ชั่นใน Module
2 + 3 * 4.    ตัวอย่างการเขียน Expression
Variable = expression.    ผูกตัวแปรเข้ากับนิพจน์ ผูกได้เพียงครั้งเดียวเท่านั้น
f(Variable).  ยกเลิกการผูกค่าตัวแปร
f().    ยกเลิกการผูกค่าตัวแปรทั้งหมด