Russell Power นักวิจัยด้าน machine learning อดีต principle engineer ของกูเกิลรายงานถึงการพอร์ตโค้ดไลบรารีบีบอัด Zopfli ด้วย Large Language Model (LLM) โดยอาศัยเทคนิคการสร้างชุดทดสอบด้วย LLM เองจากนั้นตรวจดูว่าผลที่ได้เหมือนหรือต่างกันอย่างไร และแก้ไขไปเรื่อยๆ จนกว่าผลจะเหมือนกันทุกประการ
แนวทางการพอร์ต Zopfli ของ Russell อาศัยการสร้างกราฟของฟังก์ชั่นต่างๆ ว่าฟังก์ชั่นใดขึ้นกับฟังก์ชั่นใดบ้าง จากนั้นเริ่มพอร์ตจากฟังก์ชั่นที่พื้นฐานที่สุดไม่ได้เรียกฟังก์ชั่นอื่นอีก แล้วสร้างฟังก์ชั่น Rust ชื่อเดียวกัน แล้วสร้างชุดทดสอบฟังก์ชั่นแล้วยิงอินพุตเข้าทั้งสองฟังก์ชั่นเพื่อเทียบพฤติกรรมไปเรื่อยๆ หากผลออกมาต่างกันก็จะให้ LLM แก้ไขจนกว่าจะเหมือนกัน
จากการทดลองเขาพบว่า Gemini 2.5 Pro สามารถพอร์ตโค้ดได้ถึง 90% และส่วนที่เหลือใช้ Claude Code ตัว Russell เขียนโค้ดเองเฉพาะการแก้ไขคำเตือนต่างๆ เท่านั้น แต่ระหว่างทางที่ Gemini พอร์ตโค้ด Russell เองก็แก้พรอมพ์ไปบ้าง
ข้อเสียของโครงการนี้คือโค้ดที่ได้ทั้งหมดยังมีอินเทอร์เฟซเป็น C และเป็นโค้ดแบบ unsafe ก่อนหน้านี้มีโครงการ Syzygy ที่ใช้ LLM เหมือนกันแต่สามารถแปลงโค้ดแบบ safe ได้ในตัว และการทำงานของ Zopfli นั้นเป็นไลบรารีที่ไม่มี state ภายใน การพอร์ตซอฟต์แวร์ที่มี state ภายในอาจจะได้ผลต่างออกไป
ค่า LLM รวมสำหรับการพอร์ตโค้ดครั้งนี้อยู่ที่ 50 ดอลลาร์
ที่มา - Russell Power
on
มีใครพอจำได้ไหมว่าวิธีการที่…
Tasksenger Sat, 21/06/2025 - 10:24
มีใครพอจำได้ไหมว่าวิธีการที่หาค่าทางคณิตศาสตร์แบบนี้เขาเรียกเป็นภาษาไทยว่าอะไร ที่มันมีค่าที่ต้องคำนวณมากกว่า 1 ค่า แล้วค่อยๆ แทนที่จนหาผลลัพธ์สุดท้ายออกมา ใช่สมการอนุพันธ์หรือเปล่า ผมเคยทำโครงการตอนจบปริญญาตรีด้วยวิธีการนี้เพื่อหาค่าเพื่อเลือกเครื่องสูบน้ำโดยใช้คอมพิวเตอร์ช่วยในการออกแบบ แต่จำไม่ได้ว่าชื่อเรียกสมการนี้ว่าอะไร จะหาหนังสือมาอ่านใหม่อีกรอบ เพราะหนังสือ Text เดิมส่งให้น้องไปหมดแล้วตั้งแต่เรียนจบ จะหาซื้อใหม่ก็ดันจำไม่ได้อีกว่าเป็นวิธีการอะไร คุ้นๆ ว่าอยู่ใน Calculus 1 หรือ Calculus 2 นี่แหล่ะ แต่เนื้อหาข้างในมันก็เยอะมาก แล้วก็ผมก็จบมานานมากแล้วด้วยสิ 555
สมัยที่ผมทำผมใช้เพื่อปรับค่าความชันของกราฟ ใส่ค่าไปเรื่อยๆ จนกว่าจะได้ความชันเทียบได้กับความชันของกราฟที่มี spec ตรงกับความดันที่ต้องใช้ เพื่อระบุรุ่น และยี่ห้อของปั๊ม เพราะการเลือกปั๊มมันจะดูจากความชันของแต่รุ่น แต่ละยี่ห้อจากแคทตาล็อก ไม่รู้ว่าตอนนั้นทำส่งไปได้ยังไงเหมือนกัน ตอน present อาจารย์ยังงง ว่าทำมาได้ยัง ผมเองก็ยังงงว่าตอนนั้นทำไปได้ยังไงเหมือนกัน แต่มันดันใช้ได้ด้วยนี่สิ
ผมคุ้นๆว่าตอนเรียนเคยรู้จักส…
btoy Sun, 22/06/2025 - 10:52
In reply to มีใครพอจำได้ไหมว่าวิธีการที่… by Tasksenger
ผมคุ้นๆว่าตอนเรียนเคยรู้จักสิ่งนี้เหมือนกันครับ แต่ลืมมันไปแบบสนิทแล้วเช่นกัน 😅
LLM…
btoy Sat, 21/06/2025 - 13:00
LLM เหมาะกับช่วยงานคนที่รู้ว่ากำลังทำอะไรแบบนี้ แต่กับคนที่ไม่รู้จักสิ่งที่ทำเลย การเอา LLM มาใช้เพื่อสร้าง ไม่ใช่เพื่อเรียนรู้หรือศึกษา ส่วนตัวมองว่าเป็นการใช้งาน LLM ในลักษณะที่จะทำให้ผู้ใช้ได้รับผลเสียมากกว่าผลดี
แทนทีเทรนLLMให้แปลงโคดCเป็นR…
Kazu Sat, 21/06/2025 - 13:02
แทนทีเทรนLLMให้แปลงโคดCเป็นRust
ทำมัยไม่เทรนLLMให้ตรวจสอบปัญหาหน่วยความจำในCแทน ในเมื่อจุดเด่นของRustคือ ปัญหาหน่วยความจำตรวจเจอตั้งแต่คอมไพล์ ถ้าใช้LLMตรวจสอบปัญหาหน่วยความจำของCได้ตั้งแต่ก่อนคอมไพล์ ก็จะได้ภาษาCที่มีจุดแข็งของRust
เพราะเอาจริงๆCเขียนง่ายกว่าRustหลายเท่า
ปัญหาความเข้ากันได้…
darkleonic Sat, 21/06/2025 - 20:10
In reply to แทนทีเทรนLLMให้แปลงโคดCเป็นR… by Kazu
ปัญหาความเข้ากันได้ ทำแล้วก็ต้องรื้อ code lagacy ใหม่อยู่ดี สู้ย้ายไปภาษาที่มีความสามารถนี้ไปเลยดีกว่า
และชุมชนเองก็มองว่าไม่ใช่สิ่งที่ควรเป็น การเขียนโปรแกรมให้ปล่อยภัยทำได้ตั้งแต่ยุคอพอลโลแล้วด้วยซ้ำ
ปัญหาความเข้ากันได้น่าจะเป็น…
Kazu Sun, 22/06/2025 - 08:34
In reply to ปัญหาความเข้ากันได้… by darkleonic
ปัญหาความเข้ากันได้น่าจะเป็นปัญหาของRustรึปล่าวครับ ไม่ใช้ปัญหาของC
ข้อดีของRustอย่างเดียวที่เหนือกว่าC คือตรงที่มีคอมไพล์เลอร์คอยเอาไม้เรียวมาตีมือโปรแกรมเมอร์นี้แหล่ะ
แล้วการมาของLLM มันทำให้เอาข้อดีข้อนี้ของRustมาใส่ในCได้โดยที่ไม่ต้องมีซินแทคเยอะแยะมากมาย
"การเขียนโปรแกรมให้ปล่อยภัยทำได้ตั้งแต่ยุคอพอลโลแล้วด้วยซ้ำ" ถ้าข้อนี้เป็นจริง Rustไม่น่าจะเกิดมาแต่แรกแล้วครับ