- Notation เป็นเครื่องมือสำคัญที่ช่วยการคิด และมีบทบาทแกนกลางทั้งในคณิตศาสตร์และภาษาโปรแกรม
- ภาษา APL ถูกพัฒนาขึ้นเพื่อพยายามผสานข้อดีของสัญกรณ์ทางคณิตศาสตร์เข้ากับความสามารถในการรันและความเป็นสากลของภาษาโปรแกรม
- คุณลักษณะของ Notation ที่ดี ได้แก่ ความกระชับ ความชัดเจน ความชี้นำ ความสามารถในการซ่อนรายละเอียดระดับล่าง และความสามารถในการพิสูจน์เชิงรูปแบบ
- สามารถ แสดงและแปลง โครงสร้างทางคณิตศาสตร์ที่หลากหลาย เช่น พหุนาม การแปลง และกราฟ ด้วย APL ได้อย่างมีประสิทธิภาพ
- การนำ Notation มาใช้และการเรียนรู้ ควรเกิดขึ้นอย่างเป็นธรรมชาติภายในบริบท และความเป็นโครงสร้างรวมถึงความอเนกประสงค์ของ Notation ก็มีความสำคัญเช่นกัน
Notation ในฐานะเครื่องมือสำหรับการคิด
- ในสาขาวิทยาศาสตร์อย่างเคมีและพฤกษศาสตร์ ระบบการตั้งชื่อที่เป็นระบบก็ช่วยเร่งความก้าวหน้าของศาสตร์นั้น ๆ
- George Boole เน้นย้ำว่าภาษาเองก็เป็นเครื่องมือของการคิด
- สัญกรณ์ทางคณิตศาสตร์เป็นตัวอย่างเด่นของภาษาที่ช่วยสนับสนุนการคิด โดยลดภาระทางความคิดและเพิ่มพลังในการคิด
- A.N. Whitehead และ Charles Babbage ต่างก็เน้นย้ำความสำคัญของสัญกรณ์ทางคณิตศาสตร์
ศักยภาพของภาษาโปรแกรมในฐานะเครื่องมือสำหรับการคิด
- ภาษาโปรแกรมมีจุดแข็งในด้าน ความอเนกประสงค์ และ ความชัดเจน
- สามารถทดลองไอเดียผ่านคอมพิวเตอร์ และทำการทดลองทางความคิดที่ชัดเจนได้
- อย่างไรก็ตาม ภาษาโปรแกรมส่วนใหญ่ยังมีบทบาทเป็นเครื่องมือสำหรับการคิดที่ด้อยกว่าสัญกรณ์ทางคณิตศาสตร์
- APL ถูกออกแบบให้เป็น Notation ที่สนับสนุนการคิด โดยมุ่งไปที่ความชัดเจนและความแม่นยำ
คุณลักษณะสำคัญของ Notation ที่ดี
- ความง่ายในการแสดงปัญหา: ควรสามารถแสดงโครงสร้างที่ได้มาจากปัญหาโดยตรงได้อย่างง่ายดาย
- ความชี้นำ: รูปแบบที่แสดงออกมาควรสื่อถึงปัญหาที่คล้ายกันหรือปัญหาที่ขยายต่อได้
- การซ่อนรายละเอียดระดับล่าง: มีโครงสร้างที่ช่วยทำให้รายละเอียดที่ซับซ้อนเรียบง่ายลงเพื่อสนับสนุนการคิด
- ความกระชับ: ควรทำให้สามารถแสดงสิ่งต่าง ๆ ได้กว้างขวางด้วยสัญลักษณ์และกฎให้น้อยที่สุด
- ความสามารถในการพิสูจน์เชิงรูปแบบ: Notation ควรเอื้อต่อการพิสูจน์แบบเป็นทางการและการอนุมานเชิงนิรนัย
แนะนำเทคนิคสัญกรณ์พื้นฐานของ APL
- ใช้โครงสร้างแบบอาเรย์ เช่น เวกเตอร์และเมทริกซ์ ได้อย่างเป็นธรรมชาติ
- ฟังก์ชันและโอเปอเรเตอร์จะถูกนำไปใช้กับเวกเตอร์/เมทริกซ์ในระดับองค์ประกอบโดยอัตโนมัติ
- แสดงการประกอบฟังก์ชันด้วยโอเปอเรเตอร์ เช่น reduction(
/), scan(\) และ inner product(.)
- สามารถสร้างนิพจน์ที่หลากหลายได้ด้วยสัญลักษณ์พื้นฐาน เช่น
⍳, ⌽, ⍴, +, ×, *
- ทุกฟังก์ชันใช้กฎให้ความสำคัญกับด้านขวา จึงเขียนนิพจน์ได้อย่างเป็นธรรมชาติโดยไม่ต้องพึ่งวงเล็บ
ตัวอย่างการแก้ปัญหาและการส่งเสริมการคิด
- แสดงลำดับทางคณิตศาสตร์ เช่น จำนวนสามเหลี่ยมและแฟกทอเรียล ได้ด้วยสูตรที่เรียบง่าย
- จัดการการดำเนินการอย่างการแทนพหุนาม การคูณ และการหาอนุพันธ์ ได้อย่างกระชับด้วยกฎที่สอดคล้องกัน
- ทฤษฎีกราฟ (ต้นไม้, transitive closure, spanning tree) ก็สามารถแสดงได้อย่างชัดเจนด้วยการดำเนินการกับอาเรย์
- สามารถขยายไปใช้กับหลายสาขา เช่น การเรียงสับเปลี่ยน พีชคณิตบูลีน และการแปลงระบบจำนวน (การแยกตัวประกอบเฉพาะ)
การพิสูจน์เชิงรูปแบบและการคิดอย่างมีโครงสร้าง
- เนื่องจากทุกการดำเนินการและนิพจน์ถูกแสดงในรูปที่สามารถรันได้อย่างชัดเจน จึงตรวจสอบอัตโนมัติด้วยคอมพิวเตอร์ได้
- มีการนำเสนอตัวอย่างการพิสูจน์เชิงรูปแบบหลายแบบ เช่น การอุปนัยทางคณิตศาสตร์ การไล่ครบทุกกรณี และการแจกแจงอัตลักษณ์
- พิสูจน์อย่างเป็นทางการถึง identity ของ reduction และ scan รวมถึงสมบัติการเปลี่ยนหมู่และการแจกแจงของการดำเนินการ inner product
- พิสูจน์ฟังก์ชันสมมาตรของนิวตัน รวมถึงสูตรการคูณพหุนามและการหาอนุพันธ์โดยตรง
เปรียบเทียบ APL กับสัญกรณ์คณิตศาสตร์แบบดั้งเดิม
- APL ให้ทั้งการนิยามฟังก์ชันอย่างชัดเจน การดำเนินการกับอาเรย์ที่สอดคล้องกัน และระบบสัญลักษณ์ที่หลากหลาย
- ใช้กฎการประมวลผลจากขวาไปซ้ายกับทุกการดำเนินการ แทนการกำหนดลำดับความสำคัญหลายระดับ
- ลดความซับซ้อนของการใช้สัญลักษณ์ทางคณิตศาสตร์ และสนับสนุน formal manipulation
- ไวยากรณ์กระชับและกฎมีความสม่ำเสมอ จึงเป็นประโยชน์ทั้งต่อผู้เริ่มต้นและผู้มีประสบการณ์
วิธีนำเสนอและเรียนรู้ Notation
- เน้นแนวทางที่ไม่ต้องมี "บทเรียนภาษา" แยกต่างหาก แต่แนะนำเฉพาะสัญกรณ์ที่จำเป็นอย่างเป็นธรรมชาติภายในบริบท
- เรียนรู้สัญลักษณ์ใหม่อย่างเป็นสัญชาตญาณผ่านสถานการณ์ปัญหาที่เป็นรูปธรรม
- สิ่งสำคัญไม่ใช่ความยากของ Notation เอง แต่คือการตระหนักถึงความเป็นไปได้และการต่อยอดที่มันชี้ให้เห็น
ความเป็นไปได้ในการขยาย APL และข้อเสนอแนะ
- เสนอการขยายฟังก์ชันให้รองรับการจัดการจำนวนเชิงซ้อน
- มีความจำเป็นต้องทำให้ฟังก์ชัน unique elements และ summary เป็นมาตรฐาน
- การเพิ่มโอเปอเรเตอร์ที่ทั่วไปยิ่งขึ้นอาจช่วยรองรับหัวข้อเพิ่มเติม เช่น เวกเตอร์แคลคูลัส
- มุ่งยกระดับความชัดเจนของการออกแบบภาษาและความสามารถในการให้เหตุผล
สมดุลระหว่างประสิทธิภาพและความชัดเจน
- แนะนำให้กำหนด Notation ที่ชัดเจนและวิเคราะห์ได้ก่อน แล้วค่อยเพิ่มประสิทธิภาพผ่านการปรับให้เหมาะสม
- การทำให้อัลกอริทึมชัดเจนยังช่วยต่อยอดไปสู่การปรับให้เหมาะสมภายหลังและการ optimize โดยคอมไพเลอร์
- นิพจน์พื้นฐานที่เขียนด้วย APL มีศักยภาพที่จะมีส่วนช่วยทั้งการสำรวจเชิงวิชาการและการประยุกต์ใช้ในอุตสาหกรรม
1 ความคิดเห็น
ความเห็นจาก Hacker News
ระบบสัญลักษณ์ไม่ได้เป็นเพียงการแทนที่การแสดงออกแบบหนึ่งด้วยอีกแบบหนึ่งเท่านั้น แต่มีความหมายที่ลึกซึ้งกว่านั้น
การเสื่อมความนิยมของ APL เกิดจากการมาของ Lotus 123 และ MS Excel
สมมติฐานซาเพียร์-วอร์ฟชี้ว่าภาษาอาจจำกัดความคิดได้
กำลังพัฒนาโปรเจ็กต์ที่ใช้ APL
น่าเสียดายที่ทำแอปโน้ตแบบ Freeform ไม่สำเร็จ
นี่คือการบรรยายที่มีการใช้คำว่า "เครื่องมือของความคิด" เป็นครั้งแรก
มีการกล่าวถึงเอกสารที่เกี่ยวข้องคือ "Notation as a Tool of Thought" ของ Iverson