สวัสดีครับ/ค่ะ ผม/ฉันเป็นนักพัฒนา Frontend ที่มีประสบการณ์ 8 ปี
ผม/ฉันได้ลองเรียบเรียงเป็นบทความเกี่ยวกับประสบการณ์ที่สามารถออกแบบ DSL compiler และถึงขั้นส่งงานวิจัยขึ้น arXiv ได้ด้วยความช่วยเหลือของ AI
- จุดเริ่มต้นมาจากสัญชาตญาณที่รู้สึกจากการสร้าง SaaS หลายตัวว่า "ในแต่ละโดเมนมีโครงสร้างแบบเดิมซ้ำอยู่"
- ผม/ฉันใช้ AI ไม่ใช่แค่ผู้ช่วยเขียนโค้ด แต่เป็นเครื่องมือสำหรับยืมวิธีคิดของผู้เชี่ยวชาญในแต่ละสาขา
- เมื่อต้นทุนของความล้มเหลวลดลงในเชิงโครงสร้าง ผม/ฉันจึงยังเดินหน้าโปรเจกต์ต่อได้ แม้จะรื้อสถาปัตยกรรมใหม่ถึงสี่ครั้ง
- ขณะเดียวกันก็สัมผัสได้ถึงความสำคัญของอีก 20% ที่ AI เติมให้ไม่ได้ — สัญชาตญาณว่า "ตอนนี้เรากำลังถามผิดเรื่องอยู่"
นี่คือบันทึกประสบการณ์อย่างตรงไปตรงมาที่ทำให้ผม/ฉันได้เห็นทั้งศักยภาพและข้อจำกัดของการใช้ AI
11 ความคิดเห็น
ฉันไม่รู้ว่าภาษารูปแบบคืออะไร แต่
state,computedดูเหมือนจะเป็นตัวแปร และactionดูเหมือนจะเป็นฟังก์ชัน แล้วมันต่างกันอย่างไรครับ? พออ่านบทความแล้วก็เหมือนกำลังวาดแผนภาพสถานะอยู่หรือเปล่า แต่ก็ยังไม่เข้าใจว่าเกี่ยวข้องกับประเด็นที่ว่าโดเมนเกิดซ้ำอย่างไร คำที่ปรากฏในบทความก็ไม่ใช่คำที่ไม่รู้จักนะ แต่กลับอ่านไม่ค่อยลื่นเลยครับยกตัวอย่างเช่น สมมติว่าเรากำลังสร้างฟอร์มสมัครสมาชิก
สมมติว่าในฟอร์มสมัครสมาชิก เราจะรับข้อมูล 4 อย่างคือ ชื่อ เพศ อายุ และปลดประจำการทหารแล้วหรือไม่
และสมมติว่ามีเงื่อนไขเพิ่มขึ้นมาอีกข้อหนึ่งว่า
"ถ้าเพศเป็นชาย ให้แสดง select box เพื่อถามว่าปลดประจำการทหารแล้วหรือไม่"
และถ้ามีปุ่มส่งข้อมูลอยู่ด้วย สิ่งนั้นก็น่าจะเรียกได้ว่าเป็น domain model ของการสมัครสมาชิกในความหมายที่เราพูดกันโดยทั่วไป
ถ้าอย่างนั้น ในกรณีนี้ ชื่อ เพศ อายุ และการปลดประจำการทหาร ทั้ง 4 อย่างนี้คือ state ของโดเมน
ส่วน visibility ของ select box ที่ถามเรื่องการปลดประจำการทหาร เป็น computed ที่อนุมานมาจากเพศ
และปุ่มสมัครสมาชิกก็คือสิ่งที่ action ถูกแมปเข้าไป
ดูเหมือนว่าผมจะเขียนอธิบายได้ไม่ค่อยดี เลยอาจจะทำให้อ่านได้ไม่ลื่นนัก
ขอให้เข้าใจว่าแนวคิดโดยรวมก็น่าจะคล้ายกับที่อธิบายไว้ข้างต้นครับ
อาจจะยังไม่ได้เข้าใจอย่างถ่องแท้นัก แต่ก็รู้สึกว่าเข้าใจอารมณ์คร่าว ๆ ว่าเป็นยังไงครับ
ขอบคุณครับ
อ่านแล้วดีมากครับ รวมถึงเนื้อหาที่คุณเขียนไว้ในบล็อกด้วยนะครับ ไม่แน่ใจว่าอุปมานี้จะเหมาะไหม แต่ผมคิดว่านี่คล้ายกับเหตุผลที่บทเรียนแรกสุดของภาษาโปรแกรมต่าง ๆ คือ Hello World! และในอดีตเวลาศึกษาการพัฒนาเว็บ เรามักเรียนรู้ด้วยการทำเว็บบอร์ดกับร้านค้าออนไลน์ ซึ่งสุดท้ายก็ดูจะอยู่ในแนวเดียวกับที่คุณพูดไว้เหมือนกัน เมื่อก่อนผมเคยคิดแบบนั้นนะครับว่า ถ้ามีเทคนิคมากพอจะสร้างเว็บบอร์ดและร้านค้าออนไลน์ได้ ก็แทบจะสร้างเว็บส่วนใหญ่ได้แล้ว และท้ายที่สุดแล้ว การเขียนโปรแกรมก็มีเพียง Input กับ Output เท่านั้น
ผมคิดว่าอุปมานี้ค่อนข้างเหมาะสมครับ โปรเจกต์ของผมเองก็โดยพื้นฐานแล้วประกอบด้วยแค่ 2 อย่างคือ Intent ของคนกับ Snapshot เท่านั้น
ท้ายที่สุดแล้ว ผมคิดว่าเส้นทางที่โปรเจกต์ของผมควรมุ่งไปก็คือ จะคำนวณเจตนาของมนุษย์ (เช่น การกดแป้นพิมพ์ การคลิกเมาส์) อย่างไร และจะทำให้มันมีความหมายแบบไหน
สรุปคือสร้าง mini language สำหรับวาด state diagram ใช่ไหม?
ไม่ใช่ครับ สิ่งที่ผมแสดงให้ดูคือ
state diagramซึ่งเป็นหนึ่งในวิธีสำหรับทำให้เห็นภาพการเปลี่ยนสถานะภายใน Manifestoเราได้สร้างเฟรมเวิร์กของ state machine แบบกำหนดแน่นอน
การคำนวณภายใน Manifesto Core ถูกออกแบบมาให้เมื่ออยู่ในสถานะและได้รับคำสั่งเดียวกัน จะประมวลผลออกมาเป็นผลลัพธ์เดิมเสมอ
เข้าใจว่าคุณได้สร้าง DSL ขึ้นมาหนึ่งตัว แต่ยังไม่ค่อยเข้าใจว่าดีเทอร์มินิสติกสเตตแมชชีนหมายถึงอะไรนะครับ เลยแอบสงสัยว่ามีนอนดีเทอร์มินิสติกสเตตแมชชีนด้วยหรือเปล่า... อย่างไรก็ตาม อ่านได้เพลินดีครับ ขอให้ค่อย ๆ พัฒนาต่อไปนะครับ
อ้อ ข้อสังเกตของอาจารย์ถูกต้องครับ ตัว state machine เองนั้นเป็นแบบกำหนดแน่นอนอยู่แล้วครับ สิ่งที่ผมนำเข้ามาใน manifesto คือการอิงบนพื้นฐานที่ไม่ Turing-complete ดังนั้นภายใน DSL จึงไม่มีลูป ด้วยเหตุนี้จึงสามารถคำนวณได้ตั้งแต่ก่อนรันโปรแกรมว่าโปรแกรมจะทำงานอย่างไร และอธิบายได้ว่าทำไมถึงได้ผลลัพธ์แบบนั้น
ขอบคุณสำหรับคำชี้แนะครับ!
อ่านแล้วน่าสนใจมากครับ เห็นด้วยกับหลายประเด็นเลย ทั้งตื่นเต้นและหวาดกลัว
ขอบคุณที่อ่านด้วยความสนใจครับ
ช่วงนี้เป็นช่วงที่ทำให้ต้องครุ่นคิดกันมากจริง ๆ ว่า
เราควรใช้ชีวิตอย่างไรท่ามกลางกระแสของยุคสมัยที่เปลี่ยนแปลงอย่างรวดเร็ว