คุณจะย้ายจาก Java เป็น Ruby ได้อย่างไร
ในคู่มือนี้ คุณจะได้เรียนรู้ว่าความแตกต่างที่สำคัญ .คืออะไร ระหว่างสองภาษาเพื่อช่วยให้คุณก้าวกระโดด
เหมาะอย่างยิ่งสำหรับผู้ที่ต้องการย้ายจาก Java/C# เป็น Ruby
แต่…
หากคุณแค่อยากรู้ความแตกต่าง สิ่งนี้ก็เหมาะสำหรับคุณเช่นกัน
มาทำสิ่งนี้กันเถอะ!
การพิมพ์แบบคงที่กับการพิมพ์แบบไดนามิก
รูปแบบการพิมพ์เป็นความแตกต่างที่ใหญ่ที่สุดและโดดเด่นที่สุดเมื่อดูโค้ดสำหรับภาษาการเขียนโปรแกรมใดภาษาหนึ่ง
นี่คือสถานการณ์ :
- Java ใช้การพิมพ์แบบคงที่
- Ruby ใช้การพิมพ์แบบไดนามิก
หมายความว่าอย่างไรกันแน่นะ
การพิมพ์หมายถึงวิธีการทำงานของตัวแปรและอาร์กิวเมนต์ของเมธอด
ภาษาที่พิมพ์อย่างหนัก (หรือแบบคงที่) ต้องประกาศประเภท (คลาส) ที่ตัวแปรทุกตัวยอมรับได้
หน้าตาเป็นแบบนี้ :
int n = 1;
โดยที่ int
เป็นประเภท ในกรณีนี้ Integer
.
เหตุใดจึงมีประโยชน์
เพราะถ้าคุณพยายามกำหนดวัตถุประเภทอื่นให้กับตัวแปรนี้ คอมไพเลอร์จะทำให้เกิดข้อผิดพลาดและโปรแกรมของคุณจะไม่ทำงานด้วยซ้ำ
ซึ่งหมายความว่าคุณจะรู้อยู่เสมอว่าคุณกำลังทำงานกับวัตถุประเภทใด
โดยมีข้อเสียคือไม่ค่อยยืดหยุ่น
ตรงกันข้าม…
การพิมพ์แบบไดนามิกนั้นเกี่ยวกับความยืดหยุ่น ตัวแปรไม่ได้เชื่อมโยงกับประเภทใดประเภทหนึ่ง ดังนั้นประเภทจึงสามารถเปลี่ยนแปลงได้
นี่คือตัวอย่าง :
n = 1 n = "abc"
ข้อเสียคือ คุณอาจพบข้อผิดพลาดมากขึ้นหากโค้ดของคุณเลอะเทอะและคุณไม่ได้รับมากเมื่ออ่านโค้ด
นั่นคือความแตกต่างที่สำคัญอย่างหนึ่ง!
เพิ่มเติมในหัวข้อถัดไป
Syntax:Simple Things &Boilerplate
Java เป็นราชาแห่งต้นแบบ
Boilerplate คือโค้ด "การตั้งค่า" ทั้งหมดที่คุณต้องเพิ่มเพื่อให้โค้ดของคุณถูกต้องตามหลักไวยากรณ์
เป็นผล…
Java ทำให้เรื่องง่าย ๆ ซับซ้อน!
สวัสดีชาวโลกในภาษา Java :
class Hello { static public void main() { System.out.println("Hello World"); } }
จากนั้นคุณต้องคอมไพล์เป็นไฟล์คลาสและเรียกใช้
สองขั้นตอน!
(IDE ช่วยได้)
ความแตกต่างอีกประการหนึ่งคือนิพจน์ใน Java ลงท้ายด้วยอัฒภาค ซึ่งไม่จำเป็นใน Ruby คุณสามารถเว้นวงเล็บใน Ruby ได้เกือบตลอดเวลา
สวัสดีชาวโลกในทับทิม :
puts "Hello World"
ครับ
แค่นั้นแหละ.
ดูเหมือนว่า Ruby จะทำให้โค้ดสะอาดขึ้น เห็นด้วยไหม
ยิ่งไปกว่านั้น…
คุณสามารถเรียกใช้รหัสนี้ด้วยคำสั่งเดียวจากเทอร์มินัล!
ไม่จำเป็นต้องมีขั้นตอนการคอมไพล์
การเล่นด้วยโค้ด:REPL ในตัว
Ruby มาพร้อมกับ irb ซึ่งทำให้การทดสอบโค้ดเล็กน้อยนั้นรวดเร็วมาก
คุณไม่จำเป็นต้องบันทึกไฟล์ด้วยซ้ำ
หรือเปิดโปรแกรมแก้ไข!
Java ไม่มีสิ่งนี้ในตัว อย่างน้อยก็ไม่มีจนกระทั่ง Java 9
ชื่อไฟล์และการจัดไฟล์
Java บังคับโครงสร้างและการตั้งชื่อไฟล์เฉพาะ
ตัวอย่างเช่น :
หากคุณมีคลาส (สาธารณะ) ชื่อ Hello
ชื่อไฟล์ต้องเป็น Hello.java
.
นี่ไม่ใช่กรณีใน Ruby
นอกจากนี้เรายังไม่มีแนวคิดเรื่องคลาสส่วนตัวใน Ruby
การจัดการข้อยกเว้น
Java มีข้อยกเว้นสองประเภท:
- ตรวจสอบข้อยกเว้น
- ไม่ได้เลือกข้อยกเว้น
ความแตกต่าง?
คุณต้องจัดการกับข้อยกเว้นที่ตรวจสอบ!
มิฉะนั้นโปรแกรมของคุณจะไม่ทำงานด้วยซ้ำ
ตอนนี้ :
Ruby มีข้อยกเว้นเพียงประเภทเดียวเท่านั้น
คุณสามารถจัดการได้หากต้องการ ล่ามจะไม่บ่นเกี่ยวกับมัน แต่อาจทำให้โปรแกรมของคุณขัดข้อง
คอมไพเลอร์และใบอนุญาตภาษา
สุดท้ายนี้ เรามาพูดถึงการออกใบอนุญาตกันดีกว่า
ซึ่งปกติแล้วจะไม่มีปัญหากับภาษาโปรแกรม
ทำไม?
เนื่องจากเป็นโอเพ่นซอร์ส โดยมีคนเดียวเป็นหัวหน้าผู้ดูแลและนักออกแบบ
Java มีความแตกต่างที่นี่
ให้กับบริษัทขนาดใหญ่ (Oracle) และมีผลกระทบต่อการออกใบอนุญาต
อันที่จริง :
รันไทม์ Java มีสองเวอร์ชันคือ “Oracle JDK” ซึ่ง (หากฉันเข้าใจถูกต้อง) ที่ขึ้นต้นด้วยเวอร์ชัน 9 เป็นผลิตภัณฑ์เชิงพาณิชย์
จากนั้นคุณมี “Open JDK” ซึ่งเป็นของ Oracle ด้วย
แต่มีใบอนุญาตโอเพนซอร์ส
ไลบรารีและการแจกจ่ายโค้ด
ความแตกต่างที่สำคัญอีกประการหนึ่ง สิ่งหนึ่งที่ฉันชอบ (เช่นเดียวกับ Matz ที่ชื่นชอบ) เกี่ยวกับ Ruby คือ RubyGems
ทำให้การแจกจ่ายไลบรารี (เช่นไคลเอ็นต์ HTTP) ง่ายขึ้นมาก
เพราะ :
- มีที่เก็บส่วนกลาง
- รวมเข้ากับภาษา
- โอเพ่นซอร์สอัญมณีมากมายและหาง่าย
เท่าที่ฉันรู้ Java ไม่มีอะไรใกล้เคียงกับสิ่งนี้ ดังนั้นนี่คือ ชัยชนะที่สำคัญ สำหรับทับทิม
สรุป
คุณได้เรียนรู้ความแตกต่างที่สำคัญระหว่าง Java และ Ruby รวมถึงสิ่งต่างๆ เช่น การพิมพ์แบบคงที่ ต้นแบบ และการตั้งชื่อไฟล์
ตอนนี้คุณพร้อมที่จะเข้าใจ Ruby มากขึ้นแล้ว เพื่อให้คุณตัดสินใจได้อย่างถูกต้อง
ขอบคุณที่อ่าน! 🙂