1 คะแนน โดย GN⁺ 2024-11-14 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ฟีเจอร์ Raku ที่ไม่เหมือนใคร 5 อย่าง

    • Raku เปรียบเสมือนห้องทดลองสำหรับการทดลองฟีเจอร์ด้านภาษาที่หลากหลาย มีทั้งโมเดล concurrency หลายแบบและฟีเจอร์ต่าง ๆ มากมาย โดยลักษณะการทำงานร่วมกันของแต่ละฟีเจอร์นั้นมีเอกลักษณ์เฉพาะตัว
  • Junctions

    • Junctions ใช้แทนการซ้อนกันของค่าที่เป็นไปได้ และใช้ในการแสดงนิพจน์เชิงตรรกะ
    • ระบบจะนำการดำเนินการไปใช้กับทุกค่า แล้วจึงแปลงผลไปใช้เป็น boolean
    • Raku ใช้ junctions เพื่อแสดงตัวบ่งปริมาณได้อย่างสละสลวย
  • Whatevers

    • * คือสัญลักษณ์ "whatever" ที่ทำหน้าที่ได้หลากหลาย
    • ในช่วงหรือซีเควนซ์ มันหมายถึง "unbound" และสามารถแปลงเป็นฟังก์ชันนิรนามได้
    • เมธอดหลายตัวของ Raku ถูก overload ให้รับฟังก์ชันได้ จึงทำให้สิ่งนี้มีประโยชน์มาก
  • Regular Expressions

    • Raku มีไวยากรณ์แบบใหม่ที่แตกต่างจาก regular expression แบบ POSIX และแบบเข้ากันได้กับ Perl ที่มีอยู่เดิม
    • สามารถนำ regular expression มาประกอบเข้าด้วยกัน แล้วแยกเป็นส่วนย่อยที่เรียบง่ายและอ่านง่ายกว่าเดิมได้
    • รองรับไวยากรณ์สำหรับการแยกวิเคราะห์เป็นฟีเจอร์พื้นฐานของภาษา
  • Hyperoperators

    • l>>.method โดยพื้นฐานแล้วคล้ายกับ map และจะไล่ลงไปแบบ recursive จนถึงรายการย่อย
    • ไฮเปอร์โอเปอเรเตอร์แบบไบนารีจะนำการดำเนินการไปใช้กับสองลิสต์แบบจับคู่ทีละสมาชิก
    • มีประโยชน์ในการรันสูตรเดียวกันกับอินพุตหลายชุด
  • Pair Syntax

    • แฮชของ Raku ประกอบด้วยคู่ key => value และสามารถระบุคู่ได้อย่างกระชับด้วย "colon syntax"
    • :key และ :!key จะถูกแมปเป็น key => True และ key => False ตามลำดับ
    • ทำให้การตั้งค่าเมธอดเขียนได้กระชับมาก
  • ห้องทดลองรุ่นถัดไป: Slangs และ RakuAST

    • Slangs เป็นความสามารถในการปรับเปลี่ยนไวยากรณ์ของ Raku ทำให้สามารถแก้ไขไวยากรณ์ของลูป เปลี่ยนตัวระบุ และอื่น ๆ ได้
    • RakuAST ทำให้สามารถพาร์สทุกนิพจน์ของ Raku เป็น AST ได้จากภายใน Raku เอง
  • การทดลองเพิ่มเติม

    • Raku มีชุดโมดูลจากภายนอกที่ติดตั้งมาให้ล่วงหน้าผ่านการติดตั้ง "Rakudo Star"
    • นี่คือจุดสมดุลที่ยอดเยี่ยมระหว่างภาระในการดูแล standard library ขนาดใหญ่ กับภาระของผู้ใช้ในการค้นหาแพ็กเกจที่เหมาะสม
  • บล็อกแนะนำ

    • บล็อกของ Elizabeth Mattijsen และ Codesections มีข้อมูลจำนวนมากเกี่ยวกับภายในของ Raku
    • Raku Advent Calendar เป็นแหล่งข้อมูลชั้นยอดเกี่ยวกับเทคนิค Raku ขั้นสูง

1 ความคิดเห็น

 
GN⁺ 2024-11-14
ความเห็นจาก Hacker News
  • มีการแนะนำฟีเจอร์ composable regular expressions ที่นำไปทำใน JavaScript แบบแยกอิสระ ซึ่งเป็นไลบรารีที่ถูกใช้บ่อยในหลายโปรเจกต์ ฟีเจอร์นี้ช่วยให้ความรู้สึกใกล้เคียงกับการใช้ parser แบบ first-class ภายในภาษาได้มากขึ้นเล็กน้อย พร้อมยกตัวอย่างการทำ media type parsing

    • สามารถดู "templated-regular-expression" ได้บน npm และ GitHub
    • ภาษาโปรแกรมควรมี parser จริง ๆ และไม่ควรใช้ regular expressions เป็น parser อย่างไรก็ตาม หากจะใช้ regular expressions ก็ควรแยกเป็นชิ้นเล็ก ๆ
  • มีความเห็นว่าอยากออกจากวงการไปก่อนที่จะต้องมาดูแลรักษาโค้ดเบส Raku

  • ปัญหาเรื่องความเร็วของ Raku ยังไม่ได้รับการแก้ไข และ Raku รุ่นล่าสุดยังใช้เวลาพาร์สไฟล์ล็อกนานกว่า Python 3.13 อยู่ 6.5 เท่า

  • ฟีเจอร์หลักของ Raku คือ CLI และ grammar

    • CLI เป็นความสามารถทั่วไปและมีมาให้ใน Raku อยู่แล้ว จึงใช้งานได้สะดวก
    • grammar เป็นสิ่งที่ไม่ค่อยถูกปฏิบัติเป็น "พลเมืองชั้นหนึ่ง" ในภาษาโปรแกรม และมันให้ความสามารถในการสร้าง grammar ด้วยการเขียนโปรแกรมเชิงวัตถุ
  • Hyper ดูเหมือนเป็นเวอร์ชันที่เฉพาะกิจมากกว่าของ recursion schemes และคล้ายกับ _ ของ Scala ผู้แสดงความเห็นบอกว่าชอบ Scala เพราะ lambda และคิดว่าทุกภาษาควรนำสิ่งที่คล้ายกันมาใช้

  • มีการตั้งข้อสงสัยว่าเหตุใด (2, 30, 4, 50).map(* + *) จึงคืนค่าเป็น (32, 45) ทั้งที่ควรคืนค่า (32, 54) หรือไม่ ซึ่งอาจเกิดจากความแตกต่างของวิธีเขียนตัวเลขในบางประเทศ

  • มีความเห็นว่า Perl ตอนนี้กลายเป็นประตูสู่ภาษาตระกูล APL ไปแล้วหรือไม่

  • มีการแสดงความประหลาดใจที่ (2,4,8...*)[17] คืนค่าเป็น 262144

  • มีผู้ใช้งาน Raku ในสภาพแวดล้อมจริงและมองว่าเป็นภาษาที่เหมาะกับงานประมวลผลข้อความมากที่สุด การสร้าง parser ทำได้ดีมาก และน่าแปลกใจที่มันไม่ได้เป็นภาษาที่เหมาะที่สุดสำหรับการสร้าง LLM text pipeline

  • ติดตามโปรเจกต์นี้มานาน เห็นว่าน่าสนใจ แต่ก็น่าเสียดายที่ Perl 6 ถูกขัดขวางอย่างมากเพราะโปรเจกต์นี้