Monday, 27 August 2007

Scala ภาษาพี่น้องกับ Java?

Scala เป็นภาษาใหม่ที่เพิ่งเกิดมาไม่นานนัก เป็นภาษาที่เป็นทั้ง Object-oriented และ Functional language ในตัวเดียวกัน

ความรู้สึกแรกที่ได้มาจับ Scala จะรู้สึกว่ามันเป็น Object-oriented ทั้งหมด
เพราะว่าไม่ว่าจะทำอะไร ก็จะเก็บเป็น Object ทั้งสิ้น

โดย Type (Attribute ใน Java) และ Behavior (Method ใน Java-โดยจะใช้ keyword ในการสร้าง Method ว่า def) จะถูกรวมกันอยู่ใน Class (Class ใน Scala นั้นจะใช้ keyword ว่า Object)

Scala มีความสามารถของ Inherit และพ่วงด้วยกลไกที่เรียกว่า Clean Replacement เพื่อช่วยในการทำ Multiple Inheritance ตัวอย่าง


object HelloWorld {
def main(args: Array[String]) =
Console.println("Hello, world!")
}

จากองค์ประกอบที่ผ่านมา เราก็ยังมองไม่เห็นว่ามันมีความเป็น Functional Languages ตรงไหน

แต่ถ้าลองเข้าไปใน Function ของ Scala แล้วจะรู้ว่าทุกๆ Function ของ Scala นั้นได้ถอดแบบมาจาก Functional Languages

ใน Function ของแต่ละ Function ของ Scala นั้นสามารถมี Function ที่ซ้อนเข้าไปด้านในได้ ซึ่งเราเรียกว่า Anonymous Functions และมีกลไกที่เรียกว่า Higher-Order Functions เพื่อช่วยจัดการในเรื่อง Nested Function

และอีกอย่างที่น่าสนใจมากของ Scala คือเป็น Platform Independence ซึ่งใช้หลักการ Hybrid แบบ Java คือแปลง Source code เป็น Byte code ก่อน
ซึ่ง Byte code ตัวนี้จะไปรันกับ Interpreter ใด ๆ ก็ได้

Highlight อยู่ตอนนี้ครับ คือ Byte code ของเจ้า Scala ที่ว่านี้สามารถนำไปรันกับ Interpreter ของ Java ได้ด้วย !

Feature ของภาษานี้อีกหลายอย่างนั้นก็ค่อนข้างที่จะคล้ายคลึง Java มาก ซึ่งจะคล้ายคลึงกันยังไงนั้นไว้วันหลังผมค่อยมาเล่าต่อหละครับ

ที่มา : http://www.scala-lang.org/index.html

เกี่ยวข้อง: Scala: The Next Next Java

No comments: