กรณีศึกษาที่น่าสนใจในเรื่องของโครงงานขนาดที่ใช้ภาษาไดนามิกและการตีความสามารถพบได้ในBeginning Scalaโดย David Pollak
ฉันเริ่มค้นหาวิธีในการแสดงรหัสในสมองของฉันในวิธีที่ง่ายกว่าและตรงกว่ามากขึ้น ฉันพบ Ruby และ Rails ฉันรู้สึกเป็นอิสระ Ruby อนุญาตให้ฉันแสดงแนวคิดในบรรทัดของโค้ดที่น้อยลง Rails นั้นใช้งานได้ง่ายกว่า Spring MVC, Hibernate และเฟรมเวิร์กเว็บ Java“ คล่องตัว” อื่น ๆ ด้วย Ruby และ Rails ฉันต้องแสดงให้เห็นถึงสิ่งที่อยู่ในหัวของฉันในเวลาอันสั้น มันคล้ายกับการปลดปล่อยที่ฉันรู้สึกเมื่อฉันย้ายจาก C ++ เป็น Java ...
เมื่อโครงการ Ruby และ Rails ของฉันเติบโตเกินกว่าสองสามพันบรรทัดของรหัสและเมื่อฉันเพิ่มสมาชิกในทีมของฉันโครงการความท้าทายของภาษาแบบไดนามิกก็ชัดเจน
เรามีค่าใช้จ่ายมากกว่าครึ่งหนึ่งของการเขียนโปรแกรมการทดสอบการเขียนเวลาของเราและมากของกำไรจากการผลิตที่เราเห็นได้หายไปในการเขียนการทดสอบ การทดสอบส่วนใหญ่นั้นไม่จำเป็นใน Java เพราะส่วนใหญ่จะทำการทดสอบเพื่อให้แน่ใจว่าเราได้อัพเดตผู้โทรเมื่อเรา refactored code โดยการเปลี่ยนชื่อเมธอดหรือจำนวนพารามิเตอร์ นอกจากนี้ผมพบว่าการทำงานกับทีมที่มีความคิดผสมผสานระหว่าง 2-4 สมาชิกในทีมเป็นสิ่งที่เป็นไปด้วยดีในรูบี แต่ในขณะที่เราพยายามที่จะนำสมาชิกใหม่เข้าสู่ทีมในการเชื่อมต่อจิตยากที่จะส่งไปยังสมาชิกในทีมใหม่
ฉันไปหาภาษาใหม่และสภาพแวดล้อมการพัฒนา ฉันกำลังมองหาภาษาที่มีความหมายเหมือน Ruby แต่ปลอดภัยและมีประสิทธิภาพสูงเท่ากับ Java ...
อย่างที่คุณเห็นความท้าทายที่สำคัญในการปรับขนาดโครงการสำหรับผู้เขียนกลายเป็นการทดสอบการพัฒนาและการถ่ายโอนความรู้
โดยเฉพาะอย่างยิ่งผู้เขียนเข้าไปในรายละเอียดเพิ่มเติมในการอธิบายความแตกต่างในการเขียนการทดสอบระหว่างภาษาที่พิมพ์แบบไดนามิกและแบบคงที่ในบทที่ 7 ในส่วน "Bunnies ฆ่า Poignantly: Stairs Dwemthy '" กล่าวถึง Scala พอร์ตของตัวอย่างทับทิมเฉพาะ:
ทำไม Lucky Stiff ... แนะนำแนวคิดของ Metaprogrammingของ Ruby ในArray ของ Dwemthyที่กระต่ายต่อสู้กับสิ่งมีชีวิตหลายชนิด N8han14 อัปเดตตัวอย่างเพื่อทำงานใน Scala ...
เมื่อเทียบกับรหัสทับทิมส่วนห้องสมุดของรหัสสกาล่ามีความซับซ้อนมากกว่า เราต้องทำงานมากมายเพื่อให้แน่ใจว่าประเภทของเราถูกต้อง เราต้องเขียนคุณสมบัติของ Creature ด้วยตนเองในคลาส DupMonster และ CreatureCons method_missing
นี่คือการทำงานมากกว่า นอกจากนี้เรายังต้องทำงานในปริมาณที่พอเหมาะเพื่อสนับสนุนสิ่งมีชีวิตและอาวุธของเรา
ในทางกลับกันผลลัพธ์นั้นมีประสิทธิภาพมากกว่ารุ่น Ruby หากเราต้องเขียนการทดสอบสำหรับรหัส Ruby ของเราเพื่อทดสอบสิ่งที่คอมไพเลอร์ Scala มั่นใจกับเราเราจะต้องมีโค้ดอีกหลายบรรทัด ตัวอย่างเช่นเราสามารถมั่นใจได้ว่ากระต่ายของเราไม่สามารถขวานได้ ในการรับการรับรองนี้ใน Ruby เราจะต้องเขียนการทดสอบเพื่อให้แน่ใจว่าการเรียกใช้|^
Rabbit นั้นล้มเหลว Scala เวอร์ชันของเราช่วยให้มั่นใจได้ว่ามีเพียงอาวุธที่กำหนดไว้สำหรับสิ่งมีชีวิตที่กำหนดเท่านั้นที่สามารถใช้งานได้โดยสิ่งมีชีวิตนั้นสิ่งที่จะต้องใช้จำนวนมากของการสะท้อนภาพ runtime ใน Ruby ...
การอ่านด้านบนสามารถทำให้คิดได้ว่าเมื่อโครงการขยายใหญ่ขึ้นการเขียนทดสอบอาจกลายเป็นเรื่องยุ่งยาก การใช้เหตุผลนี้จะผิดเนื่องจากเป็นตัวอย่างของโครงการขนาดใหญ่ที่ประสบความสำเร็จซึ่งกล่าวถึงในคำถามนี้ ("Python ใช้สำหรับ ... YouTube" สำเร็จแล้ว)
สิ่งที่เป็นมาตราส่วนของโครงการไม่ตรงไปตรงมาจริงๆ โครงการระยะยาวที่มีขนาดใหญ่มากสามารถ "ซื้อ" กระบวนการพัฒนาที่แตกต่างกันไปด้วยชุดทดสอบคุณภาพการผลิตทีมทดสอบมืออาชีพและสิ่งอื่น ๆ ที่มีน้ำหนักมาก
Youtube ห้องทดสอบหรือชุด Java ความเข้ากันได้แน่ใจว่าอาศัยอยู่ที่แตกต่างกันชีวิตกว่าการทดสอบในโครงการกวดวิชาเล็ก ๆ เช่นอาร์เรย์ Dwemthy ของ