Rust, Python, TypeScript: 3 ภาษาการเขียนโปรแกรมชุดใหม่ (Trifecta)
(smallcultfollowing.com)- คาดว่า Rust, Python, TypeScript จะก้าวขึ้นมาเป็นภาษาหลักของการพัฒนาซอฟต์แวร์ในอนาคต
- ด้วย การแพร่หลายของเครื่องมือเขียนโค้ด AI ความภักดีของนักพัฒนาที่มีต่อภาษาใดภาษาหนึ่งจึงลดลง และภาษาที่ใช้งานได้จริงพร้อม ecosystem แข็งแกร่งจะได้รับการเลือกใช้
- เกิดกระบวนทัศน์ การเขียนโปรแกรมที่ขับเคลื่อนด้วยไอเดีย (idea-oriented programming) โดยนักพัฒนาจะโฟกัสที่การออกแบบและการทบทวน ส่วนการลงมือ implement เปลี่ยนไปให้ AI รับผิดชอบ
- ทั้งสามภาษานี้มีทั้ง ระบบ type ขั้นสูง และ ecosystem ของ package manager ที่แข็งแกร่ง จึงได้เปรียบต่อการใช้ AI การทำงานร่วมกัน และการป้องกันข้อผิดพลาด
- คุณภาพของข้อความ error, ecosystem, การเชื่อมต่อกับแพลตฟอร์ม ก็กำลังกลายเป็นเกณฑ์สำคัญมากขึ้นเรื่อย ๆ
เหตุผลที่ Rust, Python, TypeScript กำลังมาแรง
- Rust โดดเด่นสำหรับ system software งานที่ต้องการประสิทธิภาพสูง ความปลอดภัยของ type และประสิทธิภาพด้านหน่วยความจำ
- Python เหมาะที่สุดสำหรับการทดลอง การทำต้นแบบ และการใช้ไลบรารีด้านคณิตศาสตร์/วิทยาศาสตร์ ช่วยตรวจสอบไอเดียได้อย่างรวดเร็ว
- TypeScript นำไปใช้กับเว็บ เบราว์เซอร์ และแพลตฟอร์มหลากหลายได้ทันที พร้อมระบบ type ที่ทรงพลังและ ecosystem ของ npm ที่รองรับการขยายตัว
กระบวนทัศน์การพัฒนาที่ AI เปลี่ยนไป: การเขียนโปรแกรมที่ขับเคลื่อนด้วยไอเดีย
- ด้วย การแพร่หลายของเครื่องมือเขียนโค้ด AI (Large Language Model) การเขียนโปรแกรมกำลังเปลี่ยนเป็นโครงสร้างแบบ 'คิดไอเดีย→AI ลงมือเขียน→มนุษย์ออกแบบ/ทบทวน'
- Vibe coding ใกล้เคียงกับคำสั่งแบบฉับพลันและกำกวม ขณะที่ Idea-oriented programming เน้นการออกแบบ โครงสร้าง และหลักการที่ยั่งยืน
- นักพัฒนารับหน้าที่ ออกแบบหลัก/กำหนดทิศทาง ส่วน AI รับงานที่เป็นงานซ้ำ ๆ/งาน implementation เปรียบได้กับความสัมพันธ์ระหว่างสถาปนิกกับลูกมือฝึกหัด
การเปลี่ยนแปลงของเกณฑ์เลือกภาษา
- แต่ก่อนอาจทำงานอย่างรวดเร็วด้วยภาษาที่ตัวเองถนัด (เช่น Rust) แต่เมื่อทำงานร่วมกับ AI สิ่งที่สำคัญกว่าคือ ไลบรารีที่ต้องใช้ ประสิทธิภาพ และการเชื่อมต่อกับแพลตฟอร์ม
- เลือกภาษาที่เหมาะสมที่สุดตามลักษณะงาน เช่น Python (แมชชีนเลิร์นนิง), TypeScript (เว็บ·VSCode Extension), Rust (ตัวเลือกพื้นฐาน)
ความสำคัญของระบบ type
- ในสภาพแวดล้อมที่มี AI ช่วยเขียนโค้ด ระบบ type ขั้นสูง ยิ่งมีความสำคัญมากขึ้น
- Rust และ TypeScript ช่วยบังคับเรื่อง สถานะ ความถูกต้องของข้อมูล และการป้องกันความผิดพลาด ในระดับโค้ด ทำให้โอกาสที่ AI จะพลาดลดลง
- ฝั่ง Python ก็สามารถสร้างความมั่นคงด้าน type ได้ผ่านการตั้งค่าอย่าง mypy, pydantic
มูลค่าที่เพิ่มขึ้นของ ecosystem และ package manager
- เมื่อพัฒนาร่วมกับ AI การใช้ ไลบรารีขนาดใหญ่ ทำได้ง่ายขึ้น จึงทำให้ขนาดของ ecosystem และคุณภาพของ package manager สำคัญยิ่งกว่าเดิม
- Rust(cargo), TypeScript(npm), Python(uv เป็นต้น) ต่างก็มี package manager ที่ทันสมัย
ไวยากรณ์จุกจิกและวิธีแก้เฉพาะหน้าจะสำคัญน้อยลง แต่คุณภาพของข้อความ error และคู่มือยังคงสำคัญ
- LLM(AI) แก้ข้อผิดพลาดทางไวยากรณ์ที่เกิดซ้ำ ๆ ได้อย่างรวดเร็ว แต่ ข้อความ error/คู่มือต้องชัดเจน จึงจะช่วยให้แก้ไขได้อย่างมีประสิทธิภาพ
- เช่นเดียวกับความพยายามของชุมชน Rust ในด้าน ergonomics, AI ก็ใช้ประโยชน์จากข้อความ error ที่ดีเพื่อสร้างโค้ดที่ดีกว่าได้
บทสรุป: LLM เปิดเครื่องมือพัฒนาทรงพลังให้ทุกคนเข้าถึงได้
- ในยุคของการเขียนโปรแกรมที่ขับเคลื่อนด้วยไอเดีย นักพัฒนาระดับจูเนียร์ก็อาจมีประสบการณ์ด้านการออกแบบ/การกำกับในระดับ Principal Engineer ได้
- แม้จะมีความกังวลว่าภาวะ ‘flow’ ของการเขียนโค้ดเองจะลดลง แต่คาดว่า ประสบการณ์การพัฒนาที่เน้นการออกแบบและไอเดียจะยิ่งมีคุณค่ามากขึ้น
► ในยุคที่ทำงานร่วมกับ AI Rust, Python, TypeScript กำลังยึดตำแหน่งมาตรฐานของสนามพัฒนาด้วยระบบ type ที่แข็งแกร่ง ecosystem ที่สมบูรณ์ และการรองรับแพลตฟอร์มที่ดี
14 ความคิดเห็น
ในสามตัวนี้ ตัวที่คุ้นสุดคือ TS ตัวที่ทำได้คือ Python ส่วน Rust ยังไม่ค่อยรู้แต่ก็อยากทำ...
ไม่ว่าอย่างไหน อย่างน้อยที่น่าโล่งใจกว่าทุกอย่างคือในสามตัวนั้นไม่มี Java รวมอยู่ด้วย
จากโคเดอร์ => นักพัฒนาที่วางสถาปัตยกรรมสำหรับพัฒนาฟังก์ชัน => ไปสู่สถาปัตยกรรมที่ใหญ่ขึ้น (ระบบ, เครือข่าย, ความปลอดภัย) => การวางแผน
ในกระแสที่ประสบการณ์พัฒนาไปแบบนี้ ดูเหมือนว่าโอกาสที่โคเดอร์จะได้เรียนรู้จากการทำงานหน้างานจริงจะยิ่งน้อยลง
ถ้าการเขียนโปรแกรมที่ยึดไอเดียเป็นศูนย์กลางกลายเป็นกระแสหลัก
อย่างน้อยก็รู้สึกว่าโคเดอร์ที่สามารถจัดการฟูลสแตกบนพื้นฐาน AI ได้ด้วยตัวคนเดียว น่าจะกลายเป็นมาตรฐานพื้นฐานเลย 555
ผมยังหาคำตอบไม่ได้ว่าทำไมถึงควรย้ายจาก C ไป Rust สำหรับโค้ดสมรรถนะสูงอย่างจริงจัง ฝั่งที่ไวยากรณ์ค่อนข้างเรียบง่ายกว่าอย่าง Zig ดูจะเหมาะกับการพัฒนาแบบ e2e มากกว่า ส่วนที่เหลือก็ยังเป็นโครงสร้างแบบเดิมอยู่ดี คือหลังจากทำ profiling แล้วค่อยไปเขียนเฉพาะส่วนที่ต้องเรียกจากภาษาระดับสูง (ในฐานะผู้ใช้ Python) แต่พอใช้ Rust ต้นทุนการพัฒนาตอนทำงานร่วมกับภาษาอื่น เช่น การควบคุม GIL กลับสูงกว่าที่คิดพอสมควร ส่วน C นั้นเดิมทีภาษาอื่น ๆ ก็คาดหวังให้รองรับอยู่แล้ว
จะให้ใช้ Zig สู้ใช้ c ไปเลยดีกว่าฮ่าๆ...
ขอเป็นกำลังใจให้ zig :)
ผมอยากบอกว่าจริง ๆ แล้วเหตุผลที่ย้ายจาก C ไป Rust คือเรื่องประสิทธิภาพการพัฒนา แม้การรองรับความปลอดภัยของหน่วยความจำจะดีมาก แต่ต่อให้มองแค่
cargoอย่างเดียว ผมก็คิดว่านั่นก็เป็นเหตุผลมากพอที่จะย้ายแล้วเวลาเขียน Python extension module ไม่ว่าจะใช้ภาษาไหน การจัดการ GIL ก็ยุ่งยากเสมอ ส่วนนี้ C/C++ ก็เหมือนกัน แน่นอนว่าถ้าใช้ไลบรารีหรือเครื่องมือที่ช่วยในการเขียน extension module ก็อาจเป็นข้อยกเว้น แต่ใน RUST เองก็มี crate ที่ยอดเยี่ยมชื่อว่า PyO3 เช่นกัน
นอกจากนี้ จากมุมมองของนักพัฒนา C แล้ว zig ก็เป็นภาษาที่ใช้งานได้ถนัดโดยธรรมชาติ เพราะโดยพื้นฐานแล้ว zig เองก็เป็น C compiler ด้วย ถึงขนาดที่สามารถ import header file มาใช้ได้ตรง ๆ เลย
ก็อาจมองแบบนั้นได้เหมือนกันนะครับ จากประสบการณ์ของผม การใช้
python.hมากกว่า PyO3 (ซึ่งก็เป็นเหตุผลว่าทำไม zig ถึงเป็นทางเลือกที่ดี) ทำให้ลงไปทำงานในระดับ OS หรือระดับเวกเตอร์ไรซ์แล้วกลับขึ้นมาได้ง่ายกว่ามาก แต่ในแง่ที่ไม่ต้องกังวลเรื่องการจัดการหน่วยความจำ ถ้าเกินขนาดหนึ่งไปแล้ว ฝั่ง Rust ก็อาจมีผลิตภาพระยะยาวที่สูงกว่าสำหรับงานขนาดใหญ่ได้ครับ。เหตุผลที่ C เรียนรู้ง่าย ก็เพราะมันเป็นรากฐานของภาษาเมเจอร์สมัยใหม่ หรือมีไวยากรณ์ที่คล้ายกัน ไม่ว่าจะเป็น Python/TS/Go/PHP/Java ดังนั้นจึงไม่ใช่แค่ว่าไวยากรณ์มันง่าย แต่เพราะมันเป็นภาษาที่วันหนึ่งคุณจะต้องเจอ หรือเป็นภาษาที่คุณเคยเจอมาก่อนนั่นเอง ในทางกลับกัน Rust อยู่คนละฝั่ง จึงต้องใช้ความพยายามมากพอสมควรหากจะนำมาใช้ในทีม แม้จะมีคุณค่าสูงก็ตาม ผมคิดว่าเป็นเพราะมันไม่ใช่ภาษาที่ค่อย ๆ วิวัฒน์ แต่เป็นภาษาที่มีความเป็นนวัตกรรมสูงครับ
ดูเหมือนจะเป็นบทความที่เขียนโดยคนที่สร้าง crate
rayonของ Rust นะครับตอนนี้ Python กับ TypeScript ก็ดูจะยังเป็นภาษาหลักอยู่เหมือนกัน...
ส่วน Rust ยังไม่ถึงตำแหน่งนั้นเท่าไรนะครับ อาจเป็นเพราะคนมองว่ายากด้วยมั้ง
หวังว่า LLM จะช่วยลดกำแพงในการเริ่มต้น แล้วทำให้ Rust ก้าวขึ้นมาเป็นภาษาหลักได้เหมือนกันครับ
Niko Matsakis มีสถานะใกล้เคียงกับการเป็นบิดาแห่ง Rust มากกว่าจะเป็นแค่ผู้สร้าง
rayonเท่านั้น แน่นอนว่า Graydon Hoare คือผู้ให้กำเนิด แต่ถ้าจะพูดกันว่าคนที่มีส่วนสำคัญที่สุดต่อองค์ประกอบหลักของภาษาคือใคร ก็คงต้องเป็น Nikoถ้าเป็นนักพัฒนา Rust ก็คงจะมีความชอบเป็นพิเศษอยู่บ้าง เลยอาจเป็นข้อมูลที่มีอคติหน่อยนะครับ!
ขอบคุณสำหรับการแบ่งปันข้อมูลครับ
PHP เจ๋งสุด
แต่ในประเทศเราก็ Java นี่ครับ?
ดูเหมือนว่า Go จะหลุดโผไปเพราะเรื่อง GC นะ
สามทหารเสือเลยเหรอเนี่ย ตื่นเต้นจัง