นักพัฒนาซอฟต์แวร์ถกเถียงว่า LLMs สร้างกระบวนทัศน์การเขียนโปรแกรมใหม่หรือเป็นเพียงเครื่องมืออีกชิ้นหนึ่ง

ทีมชุมชน BigGo
นักพัฒนาซอฟต์แวร์ถกเถียงว่า LLMs สร้างกระบวนทัศน์การเขียนโปรแกรมใหม่หรือเป็นเพียงเครื่องมืออีกชิ้นหนึ่ง

Martin Fowler ที่ปรึกษาด้านการพัฒนาซอฟต์แวร์ชื่อดัง เพิ่งจุดประกายการถกเถียงอย่างเข้มข้นในชุมชนโปรแกรมเมอร์ด้วยการเปรียบเทียบ Large Language Models (LLMs) กับการเปลี่ยนแปลงครั้งใหญ่จากภาษา assembly ไปสู่ภาษาโปรแกรมระดับสูง ข้อโต้แย้งของเขามุ่งเน้นไปที่แนวคิดว่า LLMs ไม่ได้เป็นเพียงระดับของการทำนามธรรมใหม่ แต่เป็นแนวทางที่แตกต่างโดยสิ้นเชิงในการเขียนโปรแกรมที่นำเอาองค์ประกอบแบบไม่กำหนดล่วงหน้ามาสู่สาขาที่เคยเป็นแบบกำหนดล่วงหน้าได้

การอภิปรายนี้เผยให้เห็นความแตกแยกอย่างชัดเจนภายในชุมชนนักพัฒนาเกี่ยวกับผลกระทบและคุณค่าที่แท้จริงของเครื่องมือเขียนโค้ดที่ขับเคลื่อนด้วย AI

ความสงสัยของชุมชนเกี่ยวกับการอ้างว่าเป็นการปฏิวัติ

นักพัฒนาหลายคนกำลังต่อต้านการจำแนกประเภทของ Fowler ที่ว่า LLMs เป็นการเปลี่ยนแปลงกระบวนทัศน์พื้นฐาน นักวิจารณ์โต้แย้งว่าการสั่งงานระบบ AI นั้นแตกต่างจากการเขียนโปรแกรมแบบดั้งเดิมโดยพื้นฐาน และไม่ควรถือว่าเป็นกิจกรรมเดียวกัน พวกเขาตั้งคำถามว่าทำไมผลลัพธ์แบบไม่กำหนดล่วงหน้าจึงควรมาแทนที่พฤติกรรมที่เชื่อถือได้และคาดเดาได้ซึ่งทำให้คอมพิวเตอร์มีคุณค่าสำหรับการทำงานอัตโนมัติ

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

มุมมองของชุมชนต่อผลกระทบของการเขียนโปรแกรม LLM:

  • กลุ่มผู้สงสัย: มองว่าการใช้ prompting นั้นแตกต่างจากการเขียนโปรแกรมโดยพื้นฐาน และตั้งคำถามเกี่ยวกับการแทนที่ระบบที่มีการทำงานแบบกำหนดได้
  • กลุ่มนักปฏิบัติ: รายงานผลการเพิ่มผลิตภาพ แต่เน้นย้ำถึงความจำเป็นในการทดสอบอย่างครอบคลุม
  • กลุ่มผู้นำการใช้งาน: กำลังพัฒนาแอปพลิเคชันที่ใช้ LLM ในขณะที่จัดการกับความท้าทายของการทำงานแบบไม่แน่นอน
  • ผู้ใช้งานทางธุรกิจ: มักรู้สึกหงุดหงิดกับพฤติกรรมที่คาดเดาไม่ได้เมื่อเปรียบเทียบกับระบบแบบกฎเกณฑ์แบบดั้งเดิม

ความท้าทายของการไม่กำหนดล่วงหน้าในทางปฏิบัติ

นักพัฒนาที่กำลังสร้างแอปพลิเคชันที่ใช้ LLMs รายงานความท้าทายในทางปฏิบัติอย่างมีนัยสำคัญกับลักษณะไม่กำหนดล่วงหน้าของระบบเหล่านี้ การเปลี่ยนแปลงเล็กน้อยในคำสั่งสามารถสร้างผลลัพธ์ที่แตกต่างกันอย่างมาก ทำให้ยากต่อการคาดเดาผลลัพธ์และสร้างอุปสรรคสำหรับการนำไปใช้ในธุรกิจหลัก

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

ความไม่แน่นอนนี้ตรงกันข้ามอย่างชัดเจนกับการเขียนโปรแกรมแบบดั้งเดิม ซึ่งโค้ดเดียวกันจะให้ผลลัพธ์เหมือนกันทุกครั้งที่รัน ความท้าทายจะซับซ้อนยิ่งขึ้นเมื่อต้องจัดการกับปัญหาทางเทคนิคเช่นขีดจำกัดของ context window ซึ่งบริการ AI ต่างๆ จัดการไม่สอดคล้องกัน บางตัวจะแสดงข้อผิดพลาดในขณะที่บางตัวจะตัดเนื้อหาอย่างเงียบๆ

ความท้าทายทางเทคนิคหลักของ LLMs ในการเขียนโปรแกรม:

  • ผลลัพธ์ที่ไม่แน่นอนจากคำสั่งที่เหมือนกัน
  • ข้อจำกัดของ context window ที่จัดการไม่สอดคล้องกันระหว่างผู้ให้บริการ
  • การตั้งค่า temperature ที่ส่งผลต่อความสามารถในการทำซ้ำ (ต้องใช้ temperature=0.0 เพื่อผลลัพธ์ที่สม่ำเสมอ)
  • ความล้มเหลวแบบเงียบ เทียบกับ ข้อผิดพลาดที่ชัดเจนที่แตกต่างกันตามการใช้งาน
  • ความยากในการทำนายผลลัพธ์จากการปรับเปลี่ยน prompt

การเพิ่มประสิทธิภาพเทียบกับการแลกเปลี่ยนความเชื่อถือได้

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

การถกเถียงมักจะมุ่งเน้นไปที่ปัญหาประเภทใดที่เหมาะสมสำหรับการแก้ไขแบบไม่กำหนดล่วงหน้า บางคนโต้แย้งว่ากรณีขอบบางอย่างที่ต้องการการตัดสินใจด้วยสามัญสำนึกอาจได้ประโยชน์จากการจัดการของ AI ในขณะที่คนอื่นๆ กังวลเกี่ยวกับความเสี่ยงของพฤติกรรมที่คาดเดาไม่ได้ในระบบที่ใช้งานจริง

ข้อกังวลเกี่ยวกับการทดสอบและการประกันคุณภาพ

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

อย่างไรก็ตาม ความท้าทายในการทดสอบจะซับซ้อนมากขึ้นเมื่อระบบ AI เองเป็นส่วนหนึ่งของตรรกะแอปพลิเคชัน ไม่ใช่เพียงเครื่องมือพัฒนา การรับประกันพฤติกรรมที่สม่ำเสมอในเวอร์ชันโมเดลต่างๆ จุดปลาย API และการตั้งค่าต่างๆ ต้องการแนวทางใหม่ในการประกันคุณภาพ

บทสรุป

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

อ้างอิง: LLMs bring new nature of abstraction