- การเสื่อมถอยของ Perl มาจากการที่ปัญหาไม่ได้อยู่ที่ ข้อจำกัดทางเทคนิค แต่เป็นวัฒนธรรมการพัฒนาที่อนุรักษ์นิยมและปิดกั้น
- ท่าทีแบบแยกตัวที่เกิดจาก วัฒนธรรมผู้ดูแลระบบ UNIX ยุคแรก และความภูมิใจแบบ 'ผู้เชี่ยวชาญ' ขัดขวางการพัฒนาภาษา
- การแตกตัวของ Perl 6 ถูกมองว่าเป็นเหตุการณ์ที่เผยให้เห็น ความขัดแย้งภายในชุมชนและความอนุรักษ์นิยม มากกว่าเป็นความล้มเหลวทางเทคนิค
- ในช่วงเวลาเดียวกัน Ruby on Rails, PHP, Python เติบโตจากวัฒนธรรมที่เปิดกว้างและเข้าถึงง่ายกว่า ทำให้เข้ามาแทนที่พื้นที่ของ Perl
- Perl ยังคงเป็น ภาษาสคริปต์หลักของสภาพแวดล้อม POSIX แต่ลดบทบาทในฐานะภาษาพัฒนาแบบกระแสหลักไปแล้ว
ต้นกำเนิดทางวัฒนธรรมและข้อจำกัดของ Perl
- Perl เกิดมาจาก วัฒนธรรมผู้ดูแลระบบ UNIX โดยมีมุกเฉพาะกลุ่มอย่าง ‘RTFM’ และ ‘luser’ พร้อมบรรทัดฐานเชิงปิดกั้นเป็นตัวกำหนด
- วัฒนธรรมนี้ถือว่า การผูกขาดความรู้และการคงไว้ซึ่งเกณฑ์การเข้าถึง เป็นความดีเด่น และมองว่าความยากลำบากเองเป็นสัญลักษณ์ของความสามารถ
- ส่งผลให้เกิดโครงสร้างแบบกลุ่มที่ต่อต้าน ผู้ใช้ใหม่และความเปลี่ยนแปลง อย่างแรงกล้า
- ทัศนคตินี้ถูกเปรียบว่าเป็น ‘วัฒนธรรมป้อมปราการแบบการล้อมยึดพื้นที่’
- สมาชิกภายในยกความซับซ้อนทางเทคนิคของตนเป็นความภาคภูมิใจ และดูหมิ่นความพยายามจากภายนอกที่ต้องการทำให้ง่ายขึ้น
- นำไปสู่ โครงสร้างแบบลำดับชั้น ที่เหมือนว่าเฉพาะ ‘ผู้ที่เหมาะสม’ เท่านั้นจึงจะเข้าได้
โครงสร้างชุมชนของ Perl และการแตกตัวของ Perl 6
- Perl ยืนยันหลักการ TIMTOWTDI(There Is More Than One Way To Do It) เพื่อเน้นความยืดหยุ่น
- อย่างไรก็ตาม หลักการนี้กลับเสริมความอนุรักษ์นิยมต่อการเปลี่ยนแปลงของภาษา ทำให้แกนหลักของภาษาแทบคงที่ และความเป็นนวัตกรรมถูกดันไปอยู่ที่นอก CPAN
- โครงสร้างการขยายที่พึ่งพา CPAN เป็นศูนย์กลางก่อให้เกิด ความวุ่นวายเรื่องการพึ่งพา (dependency hell)
- การกำเนิดของ Perl 6 ถือเป็นผลลัพธ์และสัญลักษณ์ของ ความขัดแย้งภายในชุมชน
- Perl 5 เน้นความใช้งานได้จริงและความเสถียร ส่วน Perl 6 มุ่งสู่ความก้าวหน้าและอุดมคติ ทำให้เกิด การแยกวัฒนธรรมเป็นสองขั้ว
- การพัฒนา Perl 6 ล่าช้า มากกว่า 15 ปี จึงถูกมองว่าเป็น ‘โครงการโอเพนซอร์สที่มีลักษณะ Waterfall อย่างมาก’
- ช่วงเวลานั้น Perl ไม่เป็นมิตรกับ การดึงดูดนักพัฒนาใหม่ และชุมชนกลับยิ่งปิดกั้นมากขึ้น
การผงาดของภาษาแข่ง
- Ruby มีไวยากรณ์ใกล้เคียง Perl แต่ยึดค่านิยม ‘ความสุขของนักพัฒนาโปรแกรม’ และความสุภาพ เป็นแก่นกลาง
- Ruby on Rails ประสบความสำเร็จอย่างกว้างขวางด้วย เครื่องมือเพื่อผู้พัฒนาที่เป็นมิตรและโครงสร้างที่สม่ำเสมอ
- Perl สร้างเฟรมเวิร์กที่คล้ายกันหลายตัว แต่ล้มเหลวในการแพร่หลายเพราะขาด การทำงานร่วมกันและความง่ายต่อการเริ่มต้นใช้งาน
- PHP ในฐานะ ‘ภาษาที่เน้นผู้ใช้’ มีความง่ายในการติดตั้งและปรับใช้ ทำให้แพร่กระจายสู่สาธารณะได้สำเร็จ
- กลายเป็นฐานของ WordPress และแพลตฟอร์มบล็อกต่าง ๆ จนเป็น ภาษาเข้าถึงได้ของนักพัฒนาเว็บรุ่นใหม่
- Python เริ่มต้นจากพื้นหลังทางวิชาการ โดยรักษา พัฒนาค่อยเป็นค่อยไปและหลักการออกแบบที่ชัดเจน
- หลังจาก Google รับมาใช้ จึงเติบโตอย่างมั่นคง และยึดหลัก ‘พร้อมใช้งานครบเซ็ต (batteries included)’ เพื่อเสริมความเป็นประโยชน์ใช้สอย
สถานะปัจจุบันและมรดกของ Perl
- Perl ยังคงมีตัวตนในฐานะ ภาษาสคริปต์ POSIX ที่ติดตั้งไว้ตั้งแต่แรกในระบบส่วนใหญ่
- ยังคงใช้ในระบบเดิมจำนวนมากและสคริปต์อัตโนมัติหลากหลาย
- แต่แทบไม่ถูกเลือกเป็นตัวเลือกหลักสำหรับ โครงการใหม่
- นวัตกรรมสำคัญที่ Perl ทิ้งไว้
- การรวมระบบ regular expression และไวยากรณ์ขยาย
- การแจกจ่ายแพ็กเกจผ่านอินเทอร์เน็ตและการยืนยันลายเซ็นผ่าน CPAN
- การแพร่หลายของ ชุดทดสอบอัตโนมัติ (TAP) และแนวคิด CI
- การทำหน้าที่เชื่อมพรมแดนระหว่างเชลล์กับการเขียนโปรแกรมระบบผ่าน การรวมฟังก์ชัน POSIX
- การปฏิวัติการจัดทำเอกสารด้วยระบบ POD
บทสรุป: ความสำเร็จและการเสื่อมถอยที่ถูกขับเคลื่อนด้วยวัฒนธรรม
- Perl โตอย่างก้าวกระโดดในช่วงต้นเว็บยุคปี 1990 โดย เชื่อมโยงสองวัฒนธรรม (ผู้ดูแลระบบ UNIX และนักพัฒนาเว็บ) เข้าด้วยกัน
- อย่างไรก็ตาม วัฒนธรรมที่อนุรักษ์นิยมและชุมชนที่ปิดกั้น ทำให้ไม่ปรับตัวได้ จนค่อย ๆ หลุดจากกระแสหลัก
- ถึงแม้เช่นนั้น Perl ก็ยังได้รับการประเมินว่าเป็นหนึ่งในภาษาที่ช่วยวางรากฐานการพัฒนาซอฟต์แวร์สมัยใหม่
- ผู้เขียนยืนยันว่า Perl จะไม่หายไป และ ตราบใดที่ยังมี POSIX อยู่ Perl ก็ยังคงมีอยู่
- ในปัจจุบัน Rust, TypeScript และภาษาที่กำลังเติบโตอื่น ๆ กำลังเดินตาม เส้นทางการเปลี่ยนผ่านทางวัฒนธรรม ที่ Perl เคยเผชิญมาก่อน
2 ความคิดเห็น
ฉันมักจะสงสัยในความเป็นต้นฉบับของบทความทันที ถ้ามีเนื้อหาประมาณว่า Perl มีไวยากรณ์คล้าย Ruby อยู่ในนั้น เพราะมันเป็นวลีที่มักถูกยกมาอ้างจากบทความวิจารณ์ Perl ยุคคลาสสิกมากกว่า ไม่ใช่สิ่งที่ฉันเคยรู้สึกจากการใช้งานจริง เลยทำให้รู้สึกว่ามันเป็นการเขียนเติมเนื้อหาแบบพอเป็นพิธี แล้วคัดลอกบทความเก่า ๆ มาใส่ หรือไม่ก็ปล่อยส่วนที่เหลือให้ AI เขียน จนท้ายที่สุดบทความวิจารณ์ Perl แบบเลกาซีในอดีตก็ถูกยอมรับต่อกันมาอย่างไม่วิพากษ์วิจารณ์
ความคิดเห็นจาก Hacker News
ฉันรู้สึกอึดอัดกับภาพลักษณ์แบบ “นักบวชและพ่อมด” ของคอมมูนิตี้ Perl มาโดยตลอด
วัฒนธรรมที่พยายามเขียนโค้ดบรรทัดเดียวให้ดูฉลาดก็ไม่ค่อยถูกจริต และ Python ดูจริงจังกว่าและให้ความรู้สึกว่า ‘ปกติ’ มากกว่า
ไวยากรณ์เหมือนถูกออกแบบให้ซับซ้อนโดยตั้งใจ และมีหลายส่วนที่ไม่มีทางเข้าใจได้เลยถ้าไม่มีเอกสาร
แน่นอนว่าในยุคนั้น ความกระชับของโค้ด อาจสำคัญ แต่ในปี 2025 มันไม่เป็นมิตรกับผู้ใช้เกินไป
เหมือนกับไอเดียสดๆ ของใครสักคนใน D&D ถูกฝังถาวรลงไปในหนังสือกฎ
ขณะที่ Python เน้น “วิธีที่ชัดเจนเพียงหนึ่งเดียว” และผลักดันให้เขียนโค้ดที่สะอาด
Perl ก็เขียนให้สวยได้เหมือนกัน แต่ผู้พัฒนาต้องเลือกทำอย่างมีสติเอง
ส่วน Python ด้วยการบังคับเรื่องการย่อหน้า ทำให้แม้แต่มือใหม่ก็ยังรักษาความอ่านง่ายได้ในระดับหนึ่ง
แต่ตัวภาษาเองมี พลังในการแสดงออกสูงเกินไป จนกลับกลายเป็นพิษต่อโค้ดที่ใช้ร่วมกัน
ถ้าเป็นงานประมวลผลข้อความ Perl ยังยอดเยี่ยมที่สุดอยู่ แต่ในฐานะภาษาสำหรับการทำงานร่วมกันมันลำบาก
ต่างจากภาพลักษณ์เว่อร์ๆ ของคอมมูนิตี้ ด้านที่เป็นมนุษย์ของเขาน่าประทับใจมาก
ความขี้เล่นของ Perl กลับดูจริงใจกว่าและไม่เคร่งเครียดเท่าไร
แต่สุดท้าย Python ก็กลายเป็นกระแสหลัก และ Perl ก็ค่อยๆ ถูกลืมไป
ฉันคิดว่า วัฒนธรรมแบบถือดี ของคอมมูนิตี้ Perl เร่งให้ภาษานี้ล่มสลายเร็วขึ้น
เมื่อก่อนมีเพื่อนคนหนึ่งที่สอน Linux ให้ฉันและเป็นแฟนตัวยงของ Perl แต่ท่าทีแบบ RTFM ที่ชอบเยาะเย้ยคนไม่รู้ทำให้สุดท้ายเราตัดขาดกันไป
ฉันแทบไม่ได้มีปฏิสัมพันธ์กับคอมมูนิตี้ Perl เลย แค่ใช้มันในยุคที่แก้ปัญหาด้วยการค้น Google เอา
สัญลักษณ์อย่าง @, % มีเยอะเกินไป เลย เข้าถึงยากกว่า Ruby หรือ Python
Ruby ถูกออกแบบมาเป็นภาษาเชิงวัตถุตั้งแต่แรก จึงดูเป็นธรรมชาติกว่ามาก
เวลา optional type hinting ของ Python ไม่แม่นยำ มันกลับยิ่งสร้างความสับสนมากกว่า
ถ้ามันต้องแม่นยำ นั่นก็กลายเป็น ระบบชนิดข้อมูลแบบบังคับ ไปแล้ว ไม่ใช่ hint แบบเลือกใช้
ใน IRC ยุค 90s เคยมีคนบอกฉันว่า RTFM แต่ภายหลังก็รู้ว่าเป็น มุกตลกและกิจกรรมต้อนรับมือใหม่
ฉันได้ไปนั่งดื่มกาแฟกับเหล่าพ่อมด Perl และได้รับการเมนเทอร์จริงๆ และประสบการณ์นั้นก็กลายเป็นจุดเปลี่ยนของชีวิตการเขียนโปรแกรมของฉัน
ฉันยังจำคำที่ได้ยินตอนนั้นได้อยู่เสมอ — “Perl it forward!”
ปรากฏการณ์แบบ “พอได้โดพามีนหลังจากฝ่าความลำบาก ก็เผลอคิดว่านั่นเป็นประสบการณ์ที่ดี” แพร่กระจายอยู่ทั่วทั้งวงการคอมพิวเตอร์
มันสับสนอยู่เสมอ และเต็มไปด้วยคำถามว่า “ทำไมถึงออกแบบมาแบบนี้?”
พูดตามตรง Perl หายไปก็เพราะ ภาษาอื่นดีกว่า เฉยๆ
เหมือนกับที่คุณสร้างผลิตภัณฑ์จากบอร์ดต้นแบบไม่ได้ Perl ก็เป็นผลผลิตของการทดลอง
เช่น ถ้ารับ
@arrayเป็นสเกลาร์ มันจะคืนค่าแค่ความยาวเท่านั้น ซึ่งเป็น ความขึ้นอยู่กับบริบท แบบหนึ่งคล้าย Toyota vs Honda คือจริงๆ แล้วมันใกล้เคียงกับ ความต่างด้านรสนิยม มากกว่า
ทั้ง ไวยากรณ์ reference ของ Perl, OO ที่ไม่สะดวก, และการตั้งค่าซ้ำๆ อย่าง use strict; / use warnings; ล้วนทำให้เหนื่อยล้า
Rails ทั้งกระชับและปลอดภัยกว่ามาก และ จังหวะเวลาของยุคสมัย ก็ลงตัวพอดี
Perl เป็นภาษาแรกที่ฉันหลงรัก แต่ในปี 2012 ฉันก็ย้ายไป Python อย่างสมบูรณ์
ทุกวันนี้พอเห็นสคริปต์ Perl ในโค้ดเก่า ก็รู้สึกโล่งใจว่า “ย้ายมาถูกจริงๆ”
โค้ด Perl แทบไม่มีคอมเมนต์เลย และ การใช้ regex แบบหนักเกินไป ก็ทำให้อ่านยากสุดๆ
ตอนนี้ฉันแก้ปัญหารูปแบบนั้นด้วยวิธีแบบ เชิงวัตถุของ Python แทน
ฉันใช้ Perl เยอะมาก แต่สุดท้ายก็ย้ายไป Python เพราะ ปัญหาคุณภาพของ CPAN
โมดูลใน CPAN พังบ่อย และหลายครั้งต้องแก้เองก่อนถึงจะใช้ได้
ในยุค 90 ถึงต้นยุค 2000 ความต่างนั้นค่อนข้างชัดเจน
เหตุผลที่ Perl ตายคือภาษาอื่นๆ มี ecosystem แบบ CPAN กันหมดแล้ว และ
ไวยากรณ์ที่ยืดหยุ่นของ Perl ไม่เหมาะกับการทำงานร่วมกันเป็นทีม
แจกจ่ายโมดูลได้ง่ายโดยไม่ต้องพึ่ง SWIG หรือเวทมนตร์เรื่องชนิดข้อมูลที่ซับซ้อน และ
การล่าช้าไม่รู้จบของ Perl 6 ก็เป็นฟางเส้นสุดท้าย
ในสภาพแวดล้อมการทำงานร่วมกัน ภาระทางการรับรู้เพิ่มขึ้นแบบทวีคูณ
ส่วน Python ทำให้ข้อถกเถียงเหล่านั้นถูก ส่งออกไปจัดการผ่านระบบ PEP จึงมีประสิทธิภาพกว่ามาก