ตอนนี้แนวทางการเขียนโปรแกรมภาษา KISS เป็นความคิดที่ตลกอย่างน้อยถ้าคุณคิดว่าภาษาการเขียนโปรแกรมเป็นเลเยอร์ที่เป็นนามธรรมของชุดคำสั่งของ CPU เป็นต้นหากคุณไม่ได้กำหนด "KISS" ให้ละเอียดยิ่งขึ้น ฉันแค่พูดที่นี่ว่ารถลากวัวนั้นเป็น KISS ที่ใช้กับรถยนต์อย่างเต็มที่
ตอนนี้การตีความอีกครั้งของ KISS อาจเป็นสิ่งที่ "ทำอย่างฉลาดโดยไม่มีเครื่องประดับที่ไม่จำเป็นและไม่ซับซ้อนเกินไป" โดยเฉพาะอย่างยิ่งใคร ๆ ก็เถียงว่าไม่ควรมีกรณีเฉพาะจำนวนมากเกินไปสำหรับสิ่งที่คล้ายกัน ฯลฯ โดยปกติคณิตศาสตร์ค่อนข้างดีในการทำให้เนื้อหาต่าง ๆ มีความสำคัญและ - ช่างสงสัยว่านักคณิตศาสตร์ใช้เวลาคิดถึงการเขียนโปรแกรมและคอมพิวเตอร์ .
สำหรับการเขียนโปรแกรมมีตัวแบบนามธรรมที่โด่งดัง 2 ตัวอยู่:
- หนึ่งคือเครื่องจักรทัวริงซึ่งกำหนดเครื่องและแบบจำลองการเรียนการสอนง่ายๆที่สามารถคำนวณทุกสิ่งที่คอมพิวเตอร์สามารถทำได้
- อีกอย่างคือแลมบ์ดา - แคลคูลัสโดยคริสตจักรและอื่น ๆ อัล ที่เทียบเท่ากับพลังงาน
สิ่งที่สนุกคือ: ในขณะที่เครื่องทัวริงค่อนข้างเรียบง่ายในรูปแบบของมัน แต่มันไม่ใช่ระบบที่ง่ายต่อการจัดการและฉันไม่คิดว่ามันจะมีคุณสมบัติสำหรับ "smart KISS" แต่แลมบ์ดาแคลคูลัสนั้นเกี่ยวข้องกับการเขียนโปรแกรมภาษาที่เรารู้จักมากขึ้นและด้วย Lisp และ Scheme ที่เป็นผู้บุกเบิกคุณสมบัติของแลมบ์ดาแคลคูลัสมันทำให้มันเป็นภาษาจำนวนมาก
Lisp และ Scheme นั้นง่ายจริงๆอย่างน้อยก็มีไวยากรณ์ที่ชาญฉลาด ไวยากรณ์เป็นปัญหาสำคัญกับภาษาการเขียนโปรแกรม (ซึ่งอาจเป็นสาเหตุที่พวกเขาได้รับการคิดค้นใหม่ตลอดเวลา) ในกรณีของ C ++ มันเกือบจะเป็นไปไม่ได้ที่สมองของมนุษย์จะคาดเดาได้ว่าคอมไพเลอร์ตีความบางแหล่งข้อมูลได้อย่างไร)
Lisps กำลังลดความซับซ้อนของการสร้างประโยคทั้งหมดด้วยการแนะนำรูปแบบทั่วไปสำหรับคำสั่ง:
(command param1 param2 ...)
นี่อาจเป็นการเรียกเมธอดเช่น
(max 1 2 3 4)
เช่นเดียวกับถ้าสาขาห่วง ฯลฯ
(if (< 1 2)
(write 4)
(write 5))
(รหัสทั้งหมดที่นี่คือผู้ไม่เชื่อเรื่องพระเจ้าหลอกหลอก / ภาษาถิ่น)
แบบฟอร์ม
(command param1 param2 ...)
สามารถตีความได้ว่าเป็นรายการ
(item1 item2 item3)
และนั่นคือพื้นฐานของความเรียบง่ายและความงามของ Lisps เพราะรายการที่ซ้อนกัน (เช่นในif
ตัวอย่างคำแถลง) ประกอบด้วยต้นไม้และสิ่งที่สามารถเข้าใจได้ง่ายทั้งโดยเครื่องจักรและโดยมนุษย์ต่อหน้าเครื่องจักร
คุณสมบัติอีกประการของ Lisps คือมาโครฉันจะไม่เข้าไปดูรายละเอียดที่สกปรกที่นี่ แต่เนื่องจากไม่มีความแตกต่างทางไวยากรณ์ระหว่างการเรียกใช้ฟังก์ชันปกติและ "ไวยากรณ์ (ไข่สำหรับลูป, การประกาศตัวแปร ฯลฯ ) ทุกอย่างที่ parser ต้องจัดการ ภาษาการเขียนโปรแกรม) คุณสามารถสร้างไวยากรณ์ของคุณเองมาโครเป็นสาระสำคัญการจัดการของต้นไม้ที่ถือโปรแกรมของคุณ
ฉันคิดว่า LISP มี KISS สำหรับการเขียนโปรแกรม ที่คุณสามารถจัดการกับไวยากรณ์โดยใช้แมโครได้นำไปสู่ปรากฏการณ์ที่ Lisp มีการพัฒนาค่อนข้างแบบไดนามิก ต้องการคุณสมบัติภาษาใหม่เช่น - สมมติว่าการวางแนววัตถุ - เพียงแค่เขียนระบบ OOP ด้วยมาโคร!
ในขณะที่ C ถูกขยายวงเวียน 2 ครั้งด้วยคุณสมบัติ OOP (C ++, Obj. C) เสียงกระเพื่อมขยายออกไปหลายครั้งในท้ายที่สุดก็มีผู้ชนะ
นั่นเป็นเรื่องแปลกใหม่เกี่ยวกับเสียงกระเพื่อมมันวิวัฒนาการ (ดู Clojure และ Clojurescript สำหรับการกลายพันธุ์ใหม่ที่น่าสนใจของเสียงกระเพื่อม)
สำหรับคุณสมบัติของ KISS Lisps นั้นได้รับการสนับสนุนเป็นภาษาการสอนโดยบางคน เหมือน Fogus สรุปในพิมพ์เขียวของเขาเกี่ยวกับภาษาการศึกษา ( http://blog.fogus.me/2013/01/21/enfield-a-programming-language-designed-for-pedagogy/ )
ในการเริ่มต้นฉันเชื่อมั่นอย่างยิ่งว่าเมื่อเรียนรู้สิ่งใหม่และในบางครั้งหัวข้อที่ซับซ้อนก็เป็นอันตรายอย่างยิ่งที่จะทำให้นักเรียนใช้งานเกินความจำเป็นโดยใช้กฎไวยากรณ์ที่ไม่สำคัญ ดังนั้นฟีลด์ได้รับการออกแบบด้วยกฎไวยากรณ์ที่น้อยที่สุดและสิ่งที่น้อยกว่า Lisp เช่นไวยากรณ์