ภาษาคริสตัล (Crystal) เป็น ภาษาโปรแกรมเชิงวัตถุสำหรับใช้งานทั่วไป ไวยากรณ์ได้รับอิทธิพลจากภาษารูบีข้อมูล ช่วยให้สามารถละการประกาศชนิดข้อมูลของตัวแปรได้ ภาษาคริสตัลพัฒนาและเผยแพร่เป็นซอฟต์แวร์เสรีและโอเพนซอร์สภายใต้สัญญาอนุญาตอะแพชี 2.0
กระบวนทัศน์ | กระบวนทัศน์หลากหลาย: เชิงวัตถุ, |
---|---|
Ary Borenszweig, Juan Wajnerman, Brian Cardiff | |
ผู้พัฒนา | Manas Technology Solutions |
เริ่มเมื่อ | 19 มิถุนายน 2014 |
รุ่นเสถียร | 1.12.2 / 31 พฤษภาคม 2024 |
ระบบชนิดตัวแปร | , , , |
ภาษาโปรแกรม | คริสตัล |
(i386), x86-64, | |
ระบบปฏิบัติการ | Linux, macOS, FreeBSD, OpenBSD |
สัญญาอนุญาต | Apache License 2.0 |
นามสกุลของไฟล์ | .cr |
เว็บไซต์ | crystal-lang |
ได้รับอิทธิพลจาก | |
ภาษารูบี, ภาษาซี, ภาษารัสต์, ,ภาษาซีชาร์ป,ภาษาไพธอน |
ประวัติความเป็นมา
การพัฒนาภาษาคริสตัลเริ่มต้นในเดือนมิถุนายน 2011 โดยมุ่งเป้าไปที่ความสวยงามและประสิทธิภาพสูงซึ่งเป็นจุดเด่นของภาษารูบี และความเร็วในการประมวลผลที่รวดเร็ว ประสิทธิภาพ และ ความปลอดภัยของชนิดข้อมูล อันเป็นจุดเด่นของภาษาคอมไพเลอร์ เดิมเรียกว่า Joy แต่ไม่นานก็เปลี่ยนชื่อเป็นชื่อปัจจุบัน
เริ่มแรกคอมไพเลอร์ถูกเขียนด้วยภาษารูบี แต่ต่อมาถูกเขียนใหม่โดยภาษาคริสตัลเองในเดือนพฤศจิกายน 2013 เวอร์ชันแรกอย่างเป็นทางการ Crystal 0.1.0 เปิดตัวในเดือนมิถุนายน 2014 ภาษาคริสตัลเข้าไปอยู่ใน ในเดือนกรกฎาคม 2016
ภาพรวม
แม้ว่าไวยากรณ์ของภาษาคริสตัลจะได้รับอิทธิพลจากภาษารูบีแต่ลักษณะ ของรูบีก็ได้ถูกละทิ้งออกไป และด้วยการใช้ ที่ส่วนหลัง ก็ทำให้สามารถสร้างรหัสเครื่อง ที่มีประสิทธิภาพได้ เมื่อเปรียบเทียบกับภาษาคอมไพเลอร์อื่นๆ การผสมผสานระหว่างการอนุมานชนิดข้อมูลขั้นสูงและ ทำให้สามารถเขียนได้กระชับเหมือนอย่างภาษาสคริปต์ระดับสูง ภาษาคริสตัลมี ตัวแบบการทำงานแบบของภาษาคริสตัลยืนพื้น (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
อ้างอิง
- "Crystal 0.1.0 released!". crystal-lang. 19 June 2014.
- "Crystal Platform Support". crystal-lang.org.
- 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).
- "Introduction". สืบค้นเมื่อ 2018-09-30.
- María Inti David (2016-04-01). . คลังข้อมูลเก่าเก็บจากแหล่งเดิมเมื่อ 2018-09-30. สืบค้นเมื่อ 2018-09-30.
- Ary Borenzweig (2013-11-14). "Good bye Ruby Thursday". สืบค้นเมื่อ 2018-09-30.
- Ary Borenzweig (2015-03-04). "Internals". สืบค้นเมื่อ 2018-09-30.
- "Ruby のように書きやすく C のように速いプログラミング言語「Crystal」". DMM inside. 2018-05-30. สืบค้นเมื่อ 2018-09-30.
- "Union types". สืบค้นเมื่อ 2018-09-30.
ดูเพิ่ม
wikipedia, แบบไทย, วิกิพีเดีย, วิกิ หนังสือ, หนังสือ, ห้องสมุด, บทความ, อ่าน, ดาวน์โหลด, ฟรี, ดาวน์โหลดฟรี, mp3, วิดีโอ, mp4, 3gp, jpg, jpeg, gif, png, รูปภาพ, เพลง, เพลง, หนัง, หนังสือ, เกม, เกม, มือถือ, โทรศัพท์, Android, iOS, Apple, โทรศัพท์โมบิล, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, Sonya, MI, PC, พีซี, web, เว็บ, คอมพิวเตอร์
phasakhristl Crystal epn phasaopraekrmechingwtthusahrbichnganthwip iwyakrnidrbxiththiphlcakphasarubikhxmul chwyihsamarthlakarprakaschnidkhxmulkhxngtwaeprid phasakhristlphthnaaelaephyaephrepnsxftaewresriaelaoxephnsxrsphayitsyyaxnuyatxaaephchi 2 0khristlkrabwnthsnkrabwnthsnhlakhlay echingwtthu Ary Borenszweig Juan Wajnerman Brian CardiffphuphthnaManas Technology Solutionserimemux19 mithunayn 2014 10 pikxn 2014 06 19 runesthiyr1 12 2 31 phvsphakhm 2024 21 wnkxn 31 phvsphakhm 2024 rabbchnidtwaepr phasaopraekrmkhristl i386 x86 64 rabbptibtikarLinux macOS FreeBSD OpenBSDsyyaxnuyatApache License 2 0namskulkhxngifl crewbistcrystal lang wbr orgidrbxiththiphlcakphasarubi phasasi phasarst phasasicharp phasaiphthxnprawtikhwamepnmakarphthnaphasakhristlerimtnineduxnmithunayn 2011 odymungepaipthikhwamswyngamaelaprasiththiphaphsungsungepncudednkhxngphasarubi aelakhwamerwinkarpramwlphlthirwderw prasiththiphaph aela khwamplxdphykhxngchnidkhxmul xnepncudednkhxngphasakhxmiphelxr edimeriykwa Joy aetimnankepliynchuxepnchuxpccubn erimaerkkhxmiphelxrthukekhiyndwyphasarubi aettxmathukekhiynihmodyphasakhristlexngineduxnphvscikayn 2013 ewxrchnaerkxyangepnthangkar Crystal 0 1 0 epidtwineduxnmithunayn 2014 phasakhristlekhaipxyuin ineduxnkrkdakhm 2016phaphrwmaemwaiwyakrnkhxngphasakhristlcaidrbxiththiphlcakphasarubiaetlksna khxngrubikidthuklathingxxkip aeladwykarich thiswnhlng kthaihsamarthsrangrhsekhruxng thimiprasiththiphaphid emuxepriybethiybkbphasakhxmiphelxrxun karphsmphsanrahwangkarxnumanchnidkhxmulkhnsungaela thaihsamarthekhiynidkrachbehmuxnxyangphasaskhriptradbsung phasakhristlmi twaebbkarthanganaebbkhxngphasakhristlyunphun CSP sungepnkarichnganchxngsyyanaelaifebxrthiebaekhruxngsahrbkarsuxsarrahwangifebxr sungidrbaerngbndaliccaktwxyangHello World danlangniepntwxyangaebbngaythisudkhxng Hello World inphasakhristlputs Hello World sahrbkarekhiynopraekrmechingwtthuinphasakhristlekhiyniddngniclass Greeter def initialize name String end def salute puts Hello name end end g Greeter new World g salute esirfewxr 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 esirfewxr 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 endxangxing Crystal 0 1 0 released crystal lang 19 June 2014 Crystal Platform Support crystal lang org 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 Introduction subkhnemux 2018 09 30 Maria Inti David 2016 04 01 khlngkhxmulekaekbcakaehlngedimemux 2018 09 30 subkhnemux 2018 09 30 Ary Borenzweig 2013 11 14 Good bye Ruby Thursday subkhnemux 2018 09 30 Ary Borenzweig 2015 03 04 Internals subkhnemux 2018 09 30 Ruby のように書きやすく C のように速いプログラミング言語 Crystal DMM inside 2018 05 30 subkhnemux 2018 09 30 Union types subkhnemux 2018 09 30 duephimkarekhiynopraekrmechingwtthu phasarubi