Home > programming > กฎหมายกับโปรแกรม

กฎหมายกับโปรแกรม

April 19th, 2007

แม้ว่าคนส่วนใหญ่จะพูดกันว่ารัฐธรรมนูญ พ.ศ. 2540 ที่เพิ่งโดนฉีกไปหมาด เป็นรัฐธรรมนูญที่ดีที่สุดฉบับหนึ่ง แต่ในสายตานักเขียนโปรแกรม ผมรู้สึกว่ารัฐธรรมนูญฉบับนั้นดูแย่มาก ทำไมเหรอ? ก็เพราะเห็นปัญหาต้องตีความอยู่บ่อยๆ (ไม่รู้หรอกว่าบ่อยกว่าฉบับก่อนๆ หรือเปล่า เกิดไม่ทัน แหะๆ) สาเหตุที่เห็นส่วนใหญ่คือการเขียนข้อความที่เฉพาะเจาะจงกับกรณีปกติ ไม่ได้คิดถึงปัญหาที่จะเกิดขึ้นในอนาคต เหมือนกับเขียนโปรแกรมที่รับข้อมูลเข้า โดยไม่มีการตรวจสอบ ตั้งสมมติฐานไว้ก่อนว่าข้อมูลเข้านั้นถูกต้องเสมอ ฉะนั้นเวลาผู้ใช้ใส่ข้อมูลผิดพลาด หรือมีกรณีผิดปกติอะไรเกิดขึ้น โปรแกรมก็ไม่สามารถทำงานต่อไป หรือไม่ก็ทำงานต่อโดยไม่สามารถคาดเดาผลลัพธ์ได้

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

แต่ยังไงก็แล้วแต่ผมไม่ใช่ผู้เชี่ยวชาญด้านกฎหมาย (ไม่มีความรู้เลยต่างหาก) ผมไม่รู้หรอกว่ากฎหมายที่ดีควรเป็นยังไง แต่โปรแกรมที่ดีควรคำนึงถึงปัญหาต่างๆ ที่อาจจะเกิดขึ้นในทุกกรณี เพื่อให้โปรแกรมทำงานตามที่เราคาดการณ์ไว้ ไม่เกิดเงื่อนไขแปลกๆ แล้วทำให้เกิดทางตัน หรือผลลัพธ์ที่ไม่เป็นไปตามที่ต้องการ

สำหรับโปรแกรมหรือซอฟท์แวร์นั้น เรามีวิชาวิศวกรรมซอฟท์แวร์ ที่พูดถึงวิธีการทดสอบซอฟท์แวร์แบบต่างๆ เพื่อให้เกิดความมั่นใจว่าเราจะได้ซอฟท์แวร์ที่มีคุณภาพ เอ…อย่างนี้เราควรจะต้องมีวิชาวิศวกรรมกฎหมายหรือเปล่า เผื่อว่าเราจะได้กฎหมายที่ดีขึ้น (ในแบบของผม)

programming ,

  1. ezybzy
    April 22nd, 2007 at 23:42 | #1

    ตามมาอ่านครับ แหะๆ

    เท่าที่เคยฟังคำพูดของนักกฎหมายหลายๆ ท่าน กล่าวไว้ว่า กฎหมายมันต้องเขียนให้ดิ้นครับ ซึ่งผมก็ไม่เข้าใจว่าทำไมต้องดิ้นเหมือนกัน
    และเหมือนกับว่าเราไม่สามารถเขียน condition ซับซ้อนลงในกฎหมายได้

  2. April 23rd, 2007 at 07:26 | #2

    ผมก็เคยได้ยินแบบนั้นเหมือนกัน แต่ก็ยังไม่เข้าใจว่าทำไม เขาอาจจะคิดกันว่าเราไม่มีทางมองปัญหาได้ทุกกรณีมั้ง แต่เป็นอย่างนั้นก็ควรจะคิดเผื่อเขียนกันไว้ กำหนดค่า default ไว้ ว่าถ้าไม่พูดถึง ไม่กำหนด แปลว่าทำได้ หรือทำไม่ได้

  1. No trackbacks yet.