คลังตัวอย่างรหัสโปรแกรม Rosetta Code
สรุปใจความสำคัญ
- ก่อตั้งในปี พ.ศ. 2550 โดย Michael Mol
- เป็นวิกิที่รวบรวมตัวอย่างการเขียนโปรแกรมเพื่อเปรียบเทียบวิธีการแก้ปัญหาในภาษาต่าง ๆ
- มีภาษาโปรแกรมที่ถูกนำมาใช้ในระบบมากกว่า 900 ภาษา
- ย้ายการโฮสต์ไปยัง Miraheze ในปี พ.ศ. 2565
Rosetta Code เป็นเว็บไซต์ในรูปแบบวิกิที่ทำหน้าที่เป็นคลังตัวอย่างรหัสโปรแกรม (Programming Chrestomathy) โดยรวบรวมการนำอัลกอริทึมทั่วไปและแนวทางการแก้ปัญหาทางคอมพิวเตอร์ในรูปแบบของภาษาโปรแกรมที่หลากหลาย เพื่อให้ผู้ใช้งานสามารถศึกษาและเปรียบเทียบวิธีการเขียนโปรแกรมในแต่ละภาษาได้
ชื่อของเว็บไซต์นี้ได้รับแรงบันดาลใจมาจาก ศิลาโรเซตตา (Rosetta Stone) ซึ่งเป็นศิลาจารึกที่มีข้อความเดียวกันในสามภาษา ทำให้สามารถถอดรหัสอักษรเฮียโรกลิฟิกของอียิปต์ได้เป็นครั้งแรก การตั้งชื่อนี้จึงสะท้อนถึงวัตถุประสงค์ของเว็บไซต์ที่ต้องการให้ผู้เขียนโปรแกรมสามารถ "ถอดรหัส" หรือทำความเข้าใจการทำงานของภาษาโปรแกรมหนึ่งผ่านการเปรียบเทียบกับอีกภาษาหนึ่งที่ตนคุ้นเคย

ประวัติและการดำเนินงาน
Rosetta Code ก่อตั้งขึ้นในปี พ.ศ. 2550 โดย Michael Mol เนื้อหาภายในเว็บไซต์อยู่ภายใต้สัญญาอนุญาต GNU Free Documentation License 1.2 โดยบางส่วนอาจมีการใช้สัญญาอนุญาตอื่นที่ผ่อนปรนมากกว่า
เดิมทีเว็บไซต์นี้มีการโฮสต์แยกเป็นอิสระ แต่ในเดือนสิงหาคม พ.ศ. 2565 Rosetta Code ได้ย้ายระบบการจัดเก็บข้อมูลและการดำเนินงานไปยัง Miraheze ซึ่งเป็นผู้ให้บริการวิกิที่ไม่แสวงหาผลกำไร
โครงสร้างและการทำงานของเว็บไซต์
เว็บไซต์ถูกออกแบบมาให้เป็นจุดตัดระหว่าง "งานโปรแกรม" (Tasks) และ "ภาษาโปรแกรม" (Languages) โดยมีลักษณะการทำงานดังนี้:
- หน้างานโปรแกรม (Task Pages): ในแต่ละหน้าจะระบุปัญหาหรือโจทย์ทางคอมพิวเตอร์หนึ่งอย่าง และแสดงตัวอย่างรหัสโปรแกรม (Solutions) ที่ส่งเข้ามาโดยอาสาสมัครในภาษาต่าง ๆ ทำให้ผู้เข้าชมสามารถเปรียบเทียบแนวทางการแก้ปัญหาตามกระบวนทัศน์ (Paradigm) ของแต่ละภาษาได้
- การจัดหมวดหมู่ตามภาษา: หากงานหนึ่งมีตัวอย่างรหัสที่เขียนด้วยภาษา C งานนั้นจะถูกนำไปแสดงในรายการของภาษา C และหากมีตัวอย่างในภาษา Ruby ด้วย งานนั้นก็จะปรากฏในรายการของภาษา Ruby เช่นกัน
ข้อมูล ณ วันที่ 22 กุมภาพันธ์ พ.ศ. 2567 Rosetta Code ประกอบด้วย:
- งานโปรแกรมทั้งหมด 1,266 รายการ
- งานโปรแกรมที่อยู่ในสถานะร่าง (Draft) 404 รายการ
- ภาษาโปรแกรมที่ถูกนำมาใช้แก้ปัญหาในเว็บไซต์นี้ถึง 933 ภาษา
ตัวอย่างภาษาและโจทย์โปรแกรม
ภาษาโปรแกรมที่ปรากฏในระบบ
เว็บไซต์นี้ครอบคลุมตั้งแต่ภาษาที่เป็นที่นิยมในปัจจุบันไปจนถึงภาษาในเชิงประวัติศาสตร์หรือภาษาเฉพาะทาง เช่น:
- ภาษาระดับสูงและยอดนิยม: Python, Java, JavaScript, C++, C#, Rust, Go, Swift, Kotlin
- ภาษาเชิงฟังก์ชันและตรรกะ: Haskell, Lisp, Clojure, Prolog, Erlang, Elixir
- ภาษาดั้งเดิมและเฉพาะทาง: COBOL, Fortran, ALGOL, Ada, APL
- ภาษาสำหรับการคำนวณทางวิทยาศาสตร์: MATLAB, Mathematica, R, Julia
ตัวอย่างโจทย์โปรแกรม (Tasks)
โจทย์ใน Rosetta Code มีตั้งแต่ระดับพื้นฐานไปจนถึงอัลกอริทึมที่ซับซ้อน เช่น:
- พื้นฐาน: โปรแกรม Hello World, การคำนวณแฟกทอเรียล (Factorials), ลำดับฟีโบนัชชี (Fibonacci sequence)
- คณิตศาสตร์และวิทยาศาสตร์: จำนวนเฉพาะ (Prime numbers), การแยกตัวประกอบ Cholesky, การคำนวณอินทิเกรตเชิงตัวเลข (Numerical integration)
- อัลกอริทึมและการประมวลผล: อัลกอริทึมการเรียงลำดับ (Sorting algorithms), ระยะห่างเลเวนชไตน์ (Levenshtein distance), รหัสรหัส มอร์ส (Morse code)
- โจทย์เชิงตรรกะและเกม: ปริศนา 8 ควีน (Eight queens puzzle), การแก้โจทย์ซูโดกุ (Sudoku), หอคอยแห่งฮานอย (Tower of Hanoi)
คำถามที่พบบ่อย
Rosetta Code คืออะไร?
เป็นเว็บไซต์วิกิที่รวบรวมตัวอย่างรหัสโปรแกรมสำหรับโจทย์หรืออัลกอริทึมเดียวกันในหลายภาษาโปรแกรม เพื่อให้ผู้ใช้เปรียบเทียบความแตกต่างของแต่ละภาษาได้
ใครสามารถส่งรหัสโปรแกรมเข้าสู่ Rosetta Code ได้บ้าง?
เนื่องจากเป็นเว็บไซต์รูปแบบวิกิ ผู้ใช้งานทั่วไปสามารถมีส่วนร่วมในการเขียนและส่งตัวอย่างรหัสโปรแกรมเพื่อแก้โจทย์ต่าง ๆ ในภาษาที่ตนถนัดได้
เว็บไซต์นี้มีประโยชน์อย่างไรต่อผู้เรียนเขียนโปรแกรม?
ช่วยให้ผู้เรียนเห็นภาพว่าโจทย์เดียวกันสามารถเขียนได้หลายวิธีตามลักษณะของภาษาโปรแกรม (Programming Paradigm) และช่วยในการเรียนรู้ภาษาใหม่โดยเปรียบเทียบกับภาษาที่คุ้นเคย
Rosetta Code ใช้สัญญาอนุญาตแบบใด?
เนื้อหาส่วนใหญ่ใช้สัญญาอนุญาต GNU Free Documentation License 1.2
ปัจจุบัน Rosetta Code โฮสต์อยู่ที่ไหน?
ตั้งแต่เดือนสิงหาคม พ.ศ. 2565 เว็บไซต์ได้ย้ายมาโฮสต์ที่ Miraheze ซึ่งเป็นผู้ให้บริการวิกิที่ไม่แสวงหาผลกำไร
