ฉันทำ Python ย้อนกลับไปในปี 2003-5 เมื่อฉันเป็นที่ปรึกษาของ Plone / Zope จากนั้นในปี 2549 ฉันเริ่มรับทับทิม ฉันไม่เคยมองย้อนกลับไป ฉันคิดว่าคนอื่นรู้สึกสะดวกสบายกับภาษาและวัฒนธรรมการเขียนโปรแกรมที่แตกต่างกัน แต่สำหรับฉัน Ruby รู้สึกดีกว่า Python มาก
โดยส่วนตัวแล้วผมคิดว่าเมื่อเทียบกับ Ruby แล้ว Python เป็นสิ่งที่น่าเชื่อถือและน่าเชื่อถือ ทับทิมเป็นอะไรที่สนุกมากกว่า มันเป็นภาษาที่ดูดีขึ้นและสามารถทำสิ่งที่สนุกและขี้ขลาดมากมายที่ทำให้ผู้ฝึกปฏิบัติ ฉันได้ยินว่าคน Python โจมตี Ruby เพราะเป็นอันตรายเกินไปโดยบอกว่ามันง่ายเกินไปที่จะเปิดคลาสอีกครั้งและทำสิ่งที่บ้าคลั่งและไร้ความรับผิดชอบเช่นนั้น แต่นั่นเป็นส่วนหนึ่งของสิ่งที่ทำให้รูบีรู้สึกเหมือนเป็นนักแสดงตลกแนวผจญภัยแอ็กชั่นสุดโรแมนติกสำหรับฉัน ในทางกลับกัน Python เป็นเหมือนเฟอร์นิเจอร์ของ Ikea: เป็นที่น่าพอใจสะดวกสบายและน่าเชื่อถือ - แต่มันจะไม่มีวันทำให้คุณประหลาดใจ
สองสิ่งที่ดีที่สุดเกี่ยวกับ Ruby จากมุมมองของฉันคือสองสิ่งที่แยกความแตกต่างอย่างชัดเจนจาก Python อันดับแรกทับทิมได้รับอิทธิพลอย่างมากจาก Perl Python ดูเหมือนจะภาคภูมิใจในการต่อต้าน Perl แต่สิ่งที่ทับทิมที่ยืมมาจาก Perl นั้นมีประโยชน์อย่างมาก ยกตัวอย่างเช่นใช้นิพจน์ทั่วไป if mystring =~ /^\s+hello word!/ ...
ในทับทิมคุณสามารถเขียนการแสดงออกปกติตามธรรมชาติเช่น ใน Python ไม่มากนักเพราะ Python เป็นเรื่องเกี่ยวกับการทำให้ทุกอย่างเป็นไปตามไวยากรณ์ที่คาดเดาได้อย่างสม่ำเสมอ ในทับทิมคุณจะได้รับ STDIN input = STDIN.read
ทันทีด้วย ในหลามคุณต้องแล้วimport sys
sys.stdin.read()
นี่เป็นเพียงสองตัวอย่างเท่านั้นที่ความพยายามของ Python ในการแยกตัวออกจาก Perl และเป็นเรื่องปกติที่คาดเดาได้ก็คือการที่ Ruby ตั้งใจที่จะทำสิ่งที่ถูกต้องในแต่ละกรณี
อีกสิ่งหนึ่งที่แยกความแตกต่างของ Ruby จาก Python ก็คือ Ruby นั้นใกล้กับ Lisp มากในขณะที่ Python นั้นค่อนข้างเป็นภาษาโปรแกรม ฉันคิดว่านี่เป็นข้อดีอย่างมากในความโปรดปรานของรูบี้
มีคุณสมบัติคล้ายกับ Lisp มากมายของ Ruby ที่ทำให้สามารถทำงานได้มากขึ้นโดยใช้โค้ดใน Ruby น้อยกว่าใน Python ตัวอย่างเช่นทุกคำสั่งและโครงสร้างการควบคุมใน Ruby คืนค่า: คุณสามารถไปใน Ruby ได้โดยไม่ต้องใช้return
คำสั่ง แม้แต่if
ข้อความสั่งให้ประเมินค่าคุณก็สามารถเขียนสิ่งนี้ได้
result = if output == 'hello'
[some code here]
"world"
else
[some other code here]
"there"
end
ใน Python คุณจะต้องเขียน
if output == "hello":
[some code here]
result = "world"
else:
[some other code here]
result = "there"
Python ทำให้คุณพิมพ์result =
สองครั้ง นั่นไม่แห้งมาก (อย่าทำซ้ำตัวเอง) มีหลายกรณีเช่นนี้ที่ Ruby จะแห้งกว่า Python เนื่องจากมีคุณสมบัติคล้ายเสียงกระเพื่อม Matz ผู้สร้างทับทิมมาจากพื้นหลังเสียงกระเพื่อม
บางคนบอกว่ารูบี้ก็เตะตูดของไพ ธ อนในเมตาโพแกรมมิง (การเขียนโปรแกรมแบบไดนามิก) คนงูใหญ่ตอบว่าโดยบอกว่า metaprogramming นั้นอันตรายเกินไปหรือโดยบอกว่าในทางทฤษฎีคุณสามารถทำ metaprogramming ทั้งหมดที่ Ruby สามารถทำได้ใน Python ต่างไปจากเดิม แต่สิ่งหนึ่งที่ทุกคนเห็นพ้องต้องกันก็คือ metaprogramming นั้นพบได้น้อยใน Python มากกว่าใน Ruby และนั่นก็แย่เกินไปเพราะการเดินทางผ่านเมโทรโพรไฟล์เป็นทริป
ฉันคิดว่ามันอาจเป็นความจริงว่าเมื่อสิ้นสุดวัน Ruby และ Python ก็สามารถทำงานให้สำเร็จได้ เมื่อเทียบกับ C และ Java แล้ว Ruby และ Python ก็เหมือนกันมาก พวกเขาเป็นภาษาที่แสดงออกและมีประสิทธิผลในระดับสูง
ดังนั้นมันจึงเป็นสิ่งที่คุณต้องจดจำ
คุณชอบสิ่งที่คาดเดาได้ปกติและปลอดภัยหรือไม่? คุณชอบสไตล์การเขียนโปรแกรมที่จำเป็นหรือไม่? คุณต้องการทำงานกับ Google ซักวันไหม คุณคิดว่า Perl เป็นแหล่งวางไข่ที่วุ่นวายหรือไม่? ติดกับงูหลาม
คุณมีความยินดีอย่างยิ่งที่จะหาวิธีที่กระชับที่สุดในการบรรลุผลการเขียนโปรแกรมใช่ไหม คุณเบื่อกับความสม่ำเสมอและความสม่ำเสมอหรือไม่? คุณชอบที่จะมีอิสระในการเขียนโค้ดในสไตล์ที่เป็นของคุณเองและมีพื้นที่มากมายในการสร้างลูกเล่นของคุณเอง? คุณรู้สึกผูกพันกับ Lisp มากกว่า C หรือไม่? คุณรู้สึกชื่นชมอย่างมากต่อการมีส่วนร่วมในยุคสมัยของ Perl ในการเขียนโปรแกรมซอฟต์แวร์ แต่หวังว่ามันจะเป็นความลับและน่าเกลียดน้อยลงหรือไม่? คุณคิดว่ารหัสเหมือนคนอื่น ๆ คิดว่าบทกวี? ลองทับทิม