ภาษาคริสตัล

จากวิกิพีเดีย สารานุกรมเสรี
คริสตัล
กระบวนทัศน์กระบวนทัศน์หลากหลาย: เชิงวัตถุ, ระหว่างการดำเนินงาน
ผู้ออกแบบAry Borenszweig, Juan Wajnerman, Brian Cardiff
ผู้พัฒนาManas Technology Solutions
เริ่มเมื่อ19 มิถุนายน 2014; 9 ปีก่อน (2014-06-19)[1]
รุ่นเสถียร
1.12.1 แก้ไขบนวิกิสนเทศ / 11 เมษายน 2024; 11 วันก่อน (11 เมษายน 2024)
ระบบชนิดตัวแปรstatic, inferred, nominal, duck
ภาษาโปรแกรมคริสตัล
แพลตฟอร์มIA-32 (i386), x86-64, AArch64[2]
ระบบปฏิบัติการLinux, macOS, FreeBSD, OpenBSD[2]
สัญญาอนุญาตApache License 2.0
นามสกุลของไฟล์.cr
เว็บไซต์crystal-lang.org
ได้รับอิทธิพลจาก
ภาษารูบี, ภาษาซี, ภาษารัสต์, ภาษาโก,[3] ภาษาซีชาร์ป,[3] ภาษาไพธอน[3]

ภาษาคริสตัล (Crystal) เป็น ภาษาโปรแกรมเชิงวัตถุสำหรับใช้งานทั่วไป ไวยากรณ์ได้รับอิทธิพลจากภาษารูบี[4] การอนุมานชนิดข้อมูล ช่วยให้สามารถละการประกาศชนิดข้อมูลของตัวแปรได้[4] ภาษาคริสตัลพัฒนาและเผยแพร่เป็นซอฟต์แวร์เสรีและโอเพนซอร์สภายใต้สัญญาอนุญาตอะแพชี 2.0

ประวัติความเป็นมา[แก้]

การพัฒนาภาษาคริสตัลเริ่มต้นในเดือนมิถุนายน 2011 โดยมุ่งเป้าไปที่ความสวยงามและประสิทธิภาพสูงซึ่งเป็นจุดเด่นของภาษารูบี และความเร็วในการประมวลผลที่รวดเร็ว ประสิทธิภาพ และ ความปลอดภัยของชนิดข้อมูล อันเป็นจุดเด่นของภาษาคอมไพเลอร์[5] เดิมเรียกว่า Joy แต่ไม่นานก็เปลี่ยนชื่อเป็นชื่อปัจจุบัน[5]

เริ่มแรกคอมไพเลอร์ถูกเขียนด้วยภาษารูบี แต่ต่อมาถูกเขียนใหม่โดยภาษาคริสตัลเองในเดือนพฤศจิกายน 2013[6] เวอร์ชันแรกอย่างเป็นทางการ Crystal 0.1.0 เปิดตัวในเดือนมิถุนายน 2014 ภาษาคริสตัลเข้าไปอยู่ในดัชนี TIOBE ในเดือนกรกฎาคม 2016

ภาพรวม[แก้]

แม้ว่าไวยากรณ์ของภาษาคริสตัลจะได้รับอิทธิพลจากภาษารูบีแต่ลักษณะภาษาโปรแกรมพลวัต ของรูบีก็ได้ถูกละทิ้งออกไป และด้วยการใช้ LLVM ที่ส่วนหลัง ก็ทำให้สามารถสร้างรหัสเครื่อง ที่มีประสิทธิภาพได้[7][8] เมื่อเปรียบเทียบกับภาษาคอมไพเลอร์อื่นๆ การผสมผสานระหว่างการอนุมานชนิดข้อมูลขั้นสูงและชนิดยูเนียน ทำให้สามารถเขียนได้กระชับเหมือนอย่างภาษาสคริปต์ระดับสูง[9] ภาษาคริสตัลมีการเก็บขยะ ตัวแบบการทำงานแบบภาวะพร้อมกันของภาษาคริสตัลยืนพื้นการประมวลผลตามลำดับสื่อสาร (CSP) ซึ่งเป็นการใช้งานช่องสัญญาณและไฟเบอร์ที่เบาเครื่องสำหรับการสื่อสารระหว่างไฟเบอร์ ซึ่งได้รับแรงบันดาลใจจากภาษาโก

ตัวอย่าง[แก้]

Hello World[แก้]

ด้านล่างนี้เป็นตัวอย่างแบบง่ายที่สุดของ Hello World ในภาษาคริสตัล

puts "Hello World!"

สำหรับการเขียนโปรแกรมเชิงวัตถุในภาษาคริสตัลเขียนได้ดังนี้

class Greeter
  def initialize(@name : String)
  end

  def salute
    puts "Hello #{@name}!"
  end
end

g = Greeter.new("World")
g.salute

เซิร์ฟเวอร์ HTTP[แก้]

require "http/server"

server = HTTP::Server.new do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello World! The time is #{Time.now}"
end

server.bind_tcp("0.0.0.0", 8080)
puts "Listening on http://0.0.0.0:8080"
server.listen

เซิร์ฟเวอร์ TCP echo[แก้]

require "socket"

def handle_client(client)
  message = client.gets
  client.puts message
end

server = TCPServer.new("localhost", 1234)
while client = server.accept?
  spawn handle_client(client)
end

อ้างอิง[แก้]

  1. "Crystal 0.1.0 released!". crystal-lang. 19 June 2014.
  2. 2.0 2.1 "Crystal Platform Support". crystal-lang.org.
  3. 3.0 3.1 3.2 Borenszweig, Ary (June 16, 2016). "Crystal 0.18.0 released!". crystal-lang.org. It's heavily inspired by Ruby, and other languages (like C#, Go and Python).
  4. 4.0 4.1 "Introduction". สืบค้นเมื่อ 2018-09-30.
  5. 5.0 5.1 María Inti David (2016-04-01). "The story behind #CrystalLang". คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2018-09-30. สืบค้นเมื่อ 2018-09-30.
  6. Ary Borenzweig (2013-11-14). "Good bye Ruby Thursday". สืบค้นเมื่อ 2018-09-30.
  7. Ary Borenzweig (2015-03-04). "Internals". สืบค้นเมื่อ 2018-09-30.
  8. "Ruby のように書きやすく C のように速いプログラミング言語「Crystal」". DMM inside. 2018-05-30. สืบค้นเมื่อ 2018-09-30.
  9. "Union types". สืบค้นเมื่อ 2018-09-30.

ดูเพิ่ม[แก้]