LLMs ประสบปัญหากับภาษาโปรแกรมที่ไม่เป็นที่รู้จัก ขณะที่ "Vibe Coding" เผชิญกับความเป็นจริง

ทีมชุมชน BigGo
LLMs ประสบปัญหากับภาษาโปรแกรมที่ไม่เป็นที่รู้จัก ขณะที่ "Vibe Coding" เผชิญกับความเป็นจริง

ชุมชนโปรแกรมเมอร์กำลังถกเถียงกันอย่างร้อนแรงเกี่ยวกับข้อจำกัดของการเขียนโค้ดด้วยความช่วยเหลือจาก AI หลังจากการทดลองของนักพัฒนาคนหนึ่งกับ vibe coding ใน Atari BASIC เผยให้เห็นช่องว่างที่สำคัญในโมเดลภาษาปัจจุบัน คำว่า vibe coding หมายถึงการเขียนโค้ดโดยไม่มีโครงสร้าง โดยพึ่งพา AI ในการสร้างโปรแกรมที่ใช้งานได้จากคำอธิบายที่หลวมๆ

การพึ่งพาข้อมูลการฝึกกลายเป็นจุดอ่อนที่ชัดเจน

การทดลองนี้เผยให้เห็นข้อจำกัดพื้นฐาน: LLMs ทำงานได้ดีเฉพาะกับภาษาที่มีข้อมูลการฝึกมากมายออนไลน์เท่านั้น ภาษาสมัยใหม่ที่ได้รับความนิยมอย่าง JavaScript, Python และ Go ทำงานได้อย่างราบรื่นกับความช่วยเหลือจาก AI แต่ภาษาเก่าหรือเฉพาะทางอย่าง Atari BASIC, x87 assembly และแพลตฟอร์มเฉพาะทางมีปัญหาอย่างมาก สมาชิกชุมชนที่ทำงานกับระบบเก่ารายงานว่าอัตราข้อผิดพลาดสูงเกินไปที่จะทำให้ vibe coding ใช้งานได้จริง

นักพัฒนาคนหนึ่งกล่าวถึงประสบการณ์ของพวกเขากับ WebGPU และ WGSL ที่ LLMs สร้าง buffer ด้วย flag ที่ผิดอย่างต่อเนื่องและสับสนระหว่างภาษา shader ที่แตกต่างกัน ปัญหาคล้ายกันเกิดขึ้นกับ Go assembly syntax ที่ AI โทษภาษาแทนที่จะยอมรับข้อจำกัดของตัวเอง

ภาษาโปรแกรมจำแนกตามคุณภาพการสนับสนุนของ AI

  • อัตราความสำเร็จสูง: JavaScript , Python , Go , Java , C
  • ผลลัพธ์แบบผสม: TypeScript (ปัญหาเรื่อง business logic), Elixir (กำลังพัฒนาดีขึ้น)
  • ประสิทธิภาพต่ำ: Atari BASIC , x87 Assembly , WebGPU/WGSL , Go Assembly , Pike , Snobol4

ประสบการณ์ยังคงจำเป็นสำหรับความสำเร็จ

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

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

การตรวจสอบความเป็นจริงสำหรับการอ้าง AGI

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

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

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

ข้อจำกัดสำคัญของ LLM ปัจจุบันสำหรับการเขียนโค้ด

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

การถกเถียงเรื่องเครื่องมือกับไม้กายสิทธิ์

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

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

อ้างอิง: I tried vibe-writing in BASIC and it didn't go well