8 คะแนน โดย GN⁺ 2023-12-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แสวงหาความสุขของโปรแกรมเมอร์

  • Ruby เป็นภาษาที่มุ่งแสวงหาความสุขของโปรแกรมเมอร์ ซึ่งบ่อยครั้งก็กลายเป็นเป้าถูกล้อเลียนจากคอมมูนิตี้อื่น
  • การใช้ Ruby เป็นเรื่องที่มอบความเพลิดเพลิน และนี่คือคุณค่าที่ฝังอยู่ในตัวภาษา ระบบนิเวศของ gems และคอมมูนิตี้โดยรวม
  • เมื่อเขียนโค้ด Ruby ก็รู้สึกสนุก แม้กระทั่งในส่วนที่ไม่ดี

ส่งเสริมความสามารถในการแสดงออก

  • Ruby อาจเป็นภาษาโปรแกรมที่มีความสามารถในการแสดงออกมากที่สุดในโลก
  • ด้วยความสามารถด้าน metaprogramming และสำนวนเชิงวัฒนธรรม ทำให้โปรแกรมเมอร์สามารถเขียนโค้ดที่แสดงเจตนาได้อย่างชัดเจน
  • ตัวอย่างเช่น DSL ของ RSpec ทำให้สิ่งที่ต้องการทดสอบอ่านได้ราวกับเป็นภาษาที่มนุษย์พูดกัน

ภาษาที่เหมือนสร้างมาเพื่อฉัน

  • นักพัฒนา Ruby จำนวนมากรู้สึกว่า Ruby และ Rails เข้ากับวิธีคิดของตัวเองได้อย่างพอดี
  • สามารถเดาชื่อเมธอดและ signature ได้อย่างเป็นธรรมชาติ และถ้าผิดก็อาจลองสลับลำดับของอาร์กิวเมนต์ดู
  • จึงเรียนรู้ได้อย่างรวดเร็วที่จะลองทำบางอย่างจากสัญชาตญาณก่อนอ่านเอกสาร

คอมมูนิตี้และคุณค่า

  • คอมมูนิตี้ Ruby มีบทบาทสำคัญในการกำหนดว่าภาษานี้คืออะไร และการใช้งานมันให้ความรู้สึกแบบไหน
  • Kent Beck กล่าวว่า "การออกแบบซอฟต์แวร์คือการฝึกฝนความสัมพันธ์ระหว่างมนุษย์" ซึ่งสิ่งนี้ก็ใช้ได้กับคอมมูนิตี้และคุณค่าเช่นกัน
  • คอมมูนิตี้ Ruby เป็นกลุ่มคนที่ยอดเยี่ยม อบอุ่น เป็นมิตร และคอยสนับสนุนกัน
  • Ruby มีคุณลักษณะสำคัญคือความสุขและคอมมูนิตี้ ซึ่งเป็นจุดเด่นที่ยอดเยี่ยม

ความเห็นของ GN⁺

  • คุณลักษณะที่สำคัญที่สุดของภาษา Ruby คือการทำให้โปรแกรมเมอร์มีความสุขและสามารถเขียนโค้ดที่แสดงออกได้ชัดเจน
  • ความเหนียวแน่นของคอมมูนิตี้ Ruby และวัฒนธรรมการสนับสนุนซึ่งกันและกัน มอบทั้งความภาคภูมิใจและความพึงพอใจอย่างมากให้แก่นักพัฒนาที่ใช้ภาษานี้
  • บทความนี้ถ่ายทอดเสน่ห์ของ Ruby จากมุมมองของนักพัฒนาที่รักมัน และน่าสนใจชวนติดตามเพราะแสดงให้เห็นว่าภาษาโปรแกรมไม่ได้เป็นเพียงเครื่องมือ แต่ยังสามารถสร้างคอมมูนิตี้และวัฒนธรรมได้ด้วย

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

 
GN⁺ 2023-12-19
ความคิดเห็นจาก Hacker News
  • มีความเห็นแตกต่างกันเกี่ยวกับความสื่อความของภาษา Ruby

    Ruby ยอดเยี่ยมเมื่อทำงานภายใน ecosystem ของมัน หรือทำงานแบบที่ ecosystem คาดหวังไว้ แต่จะยุ่งยากมากเมื่อพยายามทำสิ่งที่ไม่เป็นมาตรฐาน เมธอดฟังก์ชันสนับสนุนอาจถูกนิยามไว้ลึกลงไปใน abstraction ถึง 5 ชั้น และบางครั้งอาจเป็นส่วนหนึ่งของ metaprogramming ในไลบรารีบางตัวจน LSP ชี้ไปไม่ถึง Ruby เป็น ecosystem ที่ยกย่องความเป็นนัย ซึ่งบางครั้งก็ชวนให้รู้สึกบ้าคลั่งได้ ถึงโค้ดที่เสร็จแล้วจะดูสวยและอ่านง่าย แต่นั่นก็ไม่ได้แก้ทุกปัญหา

  • มีความเห็นว่ายอมรับความสำคัญของประสบการณ์นักพัฒนา แต่ Ruby ไม่ใช่ตัวเลือกที่ดีที่สุด

    เห็นด้วยว่าประสบการณ์นักพัฒนาถูกประเมินค่าต่ำไปในภาษาโปรแกรมหรือเฟรมเวิร์กหลายตัว แต่ไม่คิดว่า Ruby จะดีที่สุดในด้านนี้ ไวยากรณ์อาจดูดีในตอนแรก แต่การไม่มีข้อมูล type และ metaprogramming ทำให้ Ruby ใช้งานยาก นอกจากนี้ยังมีปัจจัยอื่นที่ต้องพิจารณาเมื่อเลือกภาษาโปรแกรม เช่น ประสิทธิภาพ runtime เป็นต้น ดูเหมือนว่า Ruby จะหลุดจากกระแสไปเพราะการไม่มี static typing และเหตุผลเหล่านี้ โดยส่วนตัวคิดว่า Kotlin คือจุดที่ลงตัวที่สุดสำหรับภาษาโปรแกรม Kotlin กระชับ อ่านง่าย มีการรองรับเครื่องมือระดับโลก มี static typing ประสิทธิภาพอันยอดเยี่ยมของ JVM และทุกอย่างใน ecosystem ของ Java

  • มีความเห็นที่แสดงความชื่นชอบต่อภาษา Ruby พร้อมอธิบายเหตุผลที่ยังเลือก Python มากกว่า

    ชอบ Ruby และชอบ Ruby มากกว่า Python โดยเฉพาะการเชื่อมต่อกันของ functional operations ที่สะอาดมากและมีความสื่อความสูง ชอบจุดที่คล้ายกับ Java streams ecosystem ของไลบรารีก็ดีเยี่ยม และเหมือนกับ Python ตรงที่ไลบรารีใช้งานได้จริงมาก แต่ถ้าเป็นงานที่ต้องดูแลรักษา จะเลือก Python และถ้าต้องใส่ใจเรื่องประสิทธิภาพแม้เพียงเล็กน้อยก็จะเลือก Java ระหว่าง Ruby กับ Python ก็ยังเลือก Python อยู่เรื่อย ๆ เพราะทั้งสองมีแนวทางต่อ gradual typing ต่างกัน Python 3 สามารถใส่ type เป็นส่วนหนึ่งของโปรแกรมได้ แต่ Ruby มักมีแนวโน้มจะแยก type ไว้ในไฟล์ต่างหาก ซึ่งดูเหมือนจะมีไว้เพื่อไลบรารีเป็นหลัก คล้ายกับที่ไลบรารี JavaScript แถมไฟล์ type ของ TypeScript มาด้วย แต่โดยส่วนตัวอยากใช้งาน type โดยตรง แน่นอนว่ามีเครื่องมือชื่อ Sorbet แต่ไม่ชอบที่มันเป็น gem และทำงานอยู่ในภาษาแทนที่จะเป็นส่วนหนึ่งของไวยากรณ์ เห็นว่ามันใช้ได้ดีที่ Stripe แต่ส่วนตัวไม่ชอบ และรู้สึกว่า Python 3 ที่มี type hint ในตัวทำให้ใช้ type ได้ง่ายกว่า Ruby มาก แม้จะชอบ Ruby มาก แต่ก็อยากให้ส่วน type hinting ดีขึ้น

  • มีความเห็นที่แชร์ประสบการณ์กับหลายภาษาและระบุว่าชอบ Ruby ค่อนข้างน้อย

    เคยลองใช้มาหลายภาษา และช่วงหนึ่งก็ทุ่มเทกับ Ruby มากตอนที่ใช้ Rails เป็นหลัก แต่ Ruby น่าจะเป็นภาษาที่ชอบน้อยที่สุด ฟีเจอร์ส่วนใหญ่ที่ทำให้ Ruby ดูมีเอกลักษณ์กลับทำให้หันไปหา F# เมื่อต้องการความสนุกแบบ functional หรือใช้ C++ เมื่อต้องการความรู้สึกผจญภัย หรือถ้าอยากได้ภาษาแบบ dynamic ก็จะใช้ Scheme/Racket แทน สงสัยว่ามีคำนิยามเชิงปริมาณที่เป็นที่ยอมรับทั่วไปสำหรับความสื่อความของภาษาโปรแกรมหรือไม่ ที่นี่ผู้เขียนดูจะมองว่าความสื่อความเท่ากับความใกล้เคียงภาษาธรรมชาติ จากประสบการณ์ โค้ด Ruby เขียนง่าย แต่ถ้าไม่คุ้นกับ codebase และสำนวนการเขียนของมันก็จะตามได้ยาก ข้อมูลจำนวนมากที่จำเป็นต่อความเข้าใจถูกส่งผ่านบริบทโดยนัย

  • มีความเห็นที่แสดงความไม่ชอบ Ruby อย่างแรง แต่ก็ยอมรับว่ายังเป็นภาษาหลักที่ใช้อยู่ในตอนนี้

    เกลียด Ruby แบบสุด ๆ แต่ตอนนี้ก็ยังเป็นภาษาหลักที่ใช้อยู่ ปัญหาไม่ได้อยู่ที่ตัวภาษา Ruby จะไร้เหตุผลเสียทีเดียว แต่อยู่ที่แพตเทิร์นที่พบได้บ่อยใน ecosystem มากกว่า เช่น การใช้ inheritance เพื่อแชร์โค้ด การมี global mutable state เต็มไปหมด และการใช้ metaprogramming มากเกินไป ปัญหาเหล่านี้ไม่ใช่สิ่งที่ภาษาบังคับ แต่เป็นธรรมเนียมที่ชุมชนเลือกใช้กันอยู่บ่อย ๆ

  • มีความเห็นที่บ่นถึงความยากในการดูแลรักษา Ruby และพยายามย้ายไปภาษาอื่น

    รู้สึกว่าการดูแลรักษา Ruby เหมือนฝันร้าย และกำลังพยายามหนีออกจากนรกนั้น สำหรับโปรเจกต์ส่วนตัวชอบ Ruby แต่เมื่อทำงานร่วมกับคนอื่น ทุกอย่างจะเละเร็วกว่าเดิม และทำให้ข้อดีของ Ruby ที่ว่า "ไม่ขวางทางคุณ" หายไป ปัญหาคือมันทำลายความสามารถในการให้เหตุผลเชิงเฉพาะจุดภายในโค้ด

  • มีความเห็นที่แชร์ประสบการณ์ย้ายจาก Ruby ไป Rust พร้อมบอกว่ายังมีความผูกพันกับ Ruby

    หลังใช้ Ruby มา 10 ปี ก็ย้ายไป Rust เมื่อ 4 ปีก่อน และไม่ได้คิดจะหันกลับไปอีก ถึงอย่างนั้นก็ยังมีความผูกพันกับ Ruby รู้สึกว่าตัวเองทำงานต่อไปไม่ได้แล้วหากไม่มี type system ที่ดี และน่าจะคุ้นกับ Rust ไปแล้ว แต่ก็ยังคิดถึงความสามารถด้าน reflection อันทรงพลังของ Ruby

  • มีความเห็นที่ชี้ให้เห็นความย้อนแย้งว่าภาษาโปรแกรมที่สนุกมักมีตลาดงานเล็ก

    หนึ่งในความย้อนแย้งของโลกโปรแกรมคือ ภาษาโปรแกรมที่สนุกที่สุดมักมีตลาดงานเล็กที่สุด ถ้าสามารถเขียน Elixir ได้ทั้งวัน ชีวิตการทำงานในฐานะโปรแกรมเมอร์คงจะดีกว่านี้มาก แต่เมื่อเทียบกับ TypeScript, Python, Java แล้ว งาน Elixir แทบไม่มีเลย Ruby เคยเป็นข้อยกเว้นของเรื่องนี้ แต่ตอนนี้แทบไม่มีคนสร้างบน Rails แล้ว กลับมีคนสร้างบน React และ NextJS มากกว่า นี่เป็นเรื่องของตลาด full-stack application โดยรวม ส่วนสำหรับคนใช้ Rust ทำระบบ หรือใช้ Python ทำ data/AI สถานการณ์อาจต่างออกไป

  • มีความเห็นที่เน้นว่า ecosystem และวัฒนธรรมของ Ruby ส่งผลต่อการเขียนโปรแกรมอย่างมาก

    มีการพูดถึงตัวภาษาเองมากมาย แต่สิ่งที่ทำให้อยากอยู่กับ Ruby ต่อไปคือ ecosystem ของ Ruby และวัฒนธรรมที่มันสร้างขึ้น บทความก็ชี้ประเด็นนี้ไว้เช่นกัน ยังไม่เคยเห็นชุมชนการเขียนโปรแกรมไหนที่ให้กำลังใจและเป็นมิตรได้เท่ากับชุมชนรอบ ๆ Ruby

  • มีความเห็นเชิงบวกต่อผู้เขียนที่สนุกกับ Ruby พร้อมแชร์ประสบการณ์ส่วนตัว

    ดีใจที่ผู้เขียนสนุกกับ Ruby และในฐานะคนที่มีประสบการณ์กับ Ruby ไม่มากนัก ข้อความอ้างอิงเหล่านี้สะดุดตาเป็นพิเศษ ไม่ว่าจะเป็นแนวคิดที่ว่าภาษาควรใช้งานอย่างเพลิดเพลิน โค้ด Ruby ที่เขียนดีสามารถอ่านได้เหมือนภาษาธรรมชาติ และพลังของการรู้สึกว่าได้รับการยอมรับจากภาษาที่เราใช้เขียนโปรแกรม นอกจากนี้ยังเห็นด้วยกับคำพูดของ Kent Beck ที่ว่าการออกแบบซอฟต์แวร์คือการฝึกฝนความสัมพันธ์ระหว่างมนุษย์ องค์ประกอบทั้งหมดที่คอยสนับสนุนภาษา เช่น compiler, documentation, standard library, third-party libraries, package manager, framework, formatter, profiler ล้วนสำคัญเป็นพิเศษ