คำถามยอดนิยม
ไทมไลน์
แชท
มุมมอง
ภาษาคริสตัล
จากวิกิพีเดีย สารานุกรมเสรี
Remove ads
ภาษาคริสตัล (Crystal) เป็น ภาษาโปรแกรมเชิงวัตถุสำหรับใช้งานทั่วไป ไวยากรณ์ได้รับอิทธิพลจากภาษารูบี[4] การอนุมานชนิดข้อมูล ช่วยให้สามารถละการประกาศชนิดข้อมูลของตัวแปรได้[4] ภาษาคริสตัลพัฒนาและเผยแพร่เป็นซอฟต์แวร์เสรีและโอเพนซอร์สภายใต้สัญญาอนุญาตอะแพชี 2.0
Remove ads
Remove ads
ประวัติความเป็นมา
การพัฒนาภาษาคริสตัลเริ่มต้นในเดือนมิถุนายน 2011 โดยมุ่งเป้าไปที่ความสวยงามและประสิทธิภาพสูงซึ่งเป็นจุดเด่นของภาษารูบี และความเร็วในการประมวลผลที่รวดเร็ว ประสิทธิภาพ และ ความปลอดภัยของชนิดข้อมูล อันเป็นจุดเด่นของภาษาคอมไพเลอร์[5] เดิมเรียกว่า Joy แต่ไม่นานก็เปลี่ยนชื่อเป็นชื่อปัจจุบัน[5]
เริ่มแรกคอมไพเลอร์ถูกเขียนด้วยภาษารูบี แต่ต่อมาถูกเขียนใหม่โดยภาษาคริสตัลเองในเดือนพฤศจิกายน 2013[6] เวอร์ชันแรกอย่างเป็นทางการ Crystal 0.1.0 เปิดตัวในเดือนมิถุนายน 2014 ภาษาคริสตัลเข้าไปอยู่ในดัชนี TIOBE ในเดือนกรกฎาคม 2016
Remove ads
ภาพรวม
แม้ว่าไวยากรณ์ของภาษาคริสตัลจะได้รับอิทธิพลจากภาษารูบีแต่ลักษณะภาษาโปรแกรมพลวัต ของรูบีก็ได้ถูกละทิ้งออกไป และด้วยการใช้ LLVM ที่ส่วนหลัง ก็ทำให้สามารถสร้างรหัสเครื่อง ที่มีประสิทธิภาพได้[7][8] เมื่อเปรียบเทียบกับภาษาคอมไพเลอร์อื่นๆ การผสมผสานระหว่างการอนุมานชนิดข้อมูลขั้นสูงและชนิดยูเนียน ทำให้สามารถเขียนได้กระชับเหมือนอย่างภาษาสคริปต์ระดับสูง[9] ภาษาคริสตัลมีการเก็บขยะ ตัวแบบการทำงานแบบภาวะพร้อมกันของภาษาคริสตัลยืนพื้นการประมวลผลตามลำดับสื่อสาร (CSP) ซึ่งเป็นการใช้งานช่องสัญญาณและไฟเบอร์ที่เบาเครื่องสำหรับการสื่อสารระหว่างไฟเบอร์ ซึ่งได้รับแรงบันดาลใจจากภาษาโก
Remove ads
ตัวอย่าง
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
อ้างอิง
ดูเพิ่ม
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads