← กลับไปยังบทความทั้งหมด

คลังตัวอย่างรหัสโปรแกรม Rosetta Code

สรุปใจความสำคัญ

  • ก่อตั้งในปี พ.ศ. 2550 โดย Michael Mol
  • เป็นวิกิที่รวบรวมตัวอย่างการเขียนโปรแกรมเพื่อเปรียบเทียบวิธีการแก้ปัญหาในภาษาต่าง ๆ
  • มีภาษาโปรแกรมที่ถูกนำมาใช้ในระบบมากกว่า 900 ภาษา
  • ย้ายการโฮสต์ไปยัง Miraheze ในปี พ.ศ. 2565

Rosetta Code เป็นเว็บไซต์ในรูปแบบวิกิที่ทำหน้าที่เป็นคลังตัวอย่างรหัสโปรแกรม (Programming Chrestomathy) โดยรวบรวมการนำอัลกอริทึมทั่วไปและแนวทางการแก้ปัญหาทางคอมพิวเตอร์ในรูปแบบของภาษาโปรแกรมที่หลากหลาย เพื่อให้ผู้ใช้งานสามารถศึกษาและเปรียบเทียบวิธีการเขียนโปรแกรมในแต่ละภาษาได้

ชื่อของเว็บไซต์นี้ได้รับแรงบันดาลใจมาจาก ศิลาโรเซตตา (Rosetta Stone) ซึ่งเป็นศิลาจารึกที่มีข้อความเดียวกันในสามภาษา ทำให้สามารถถอดรหัสอักษรเฮียโรกลิฟิกของอียิปต์ได้เป็นครั้งแรก การตั้งชื่อนี้จึงสะท้อนถึงวัตถุประสงค์ของเว็บไซต์ที่ต้องการให้ผู้เขียนโปรแกรมสามารถ "ถอดรหัส" หรือทำความเข้าใจการทำงานของภาษาโปรแกรมหนึ่งผ่านการเปรียบเทียบกับอีกภาษาหนึ่งที่ตนคุ้นเคย

ภาพหน้าจอของเว็บไซต์ Rosetta Code ปี 2022
หน้าหลักของเว็บไซต์ Rosetta Code ซึ่งแสดงรายการงานโปรแกรมและภาษาต่าง ๆ

ประวัติและการดำเนินงาน

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 ซึ่งเป็นผู้ให้บริการวิกิที่ไม่แสวงหาผลกำไร