ภาษาโปรแกรมเชิงปฏิบัติที่ไม่มีทฤษฏีไม่มีคำหลักที่สงวนไว้


22

ฉันค้นหาภาษาการเขียนโปรแกรมเชิงปฏิบัติที่ไม่มีคำหลักที่สงวนไว้ แต่ฉันไม่มีโชคในการค้นหา

ฉันกำลังทำงานกับภาษาการเขียนโปรแกรมสำหรับการสั่งสอนและความบันเทิงของตัวเองและฉันไม่จำเป็นต้องใส่คำหลักใด ๆ นั่นคือสิ่งที่ทำให้ฉันค้นหาและคำถาม:

ฉันไม่เห็นความสะดวกสบายกับผู้เขียนคอมไพเลอร์ว่ามีความสำคัญต่อผู้ใช้ภาษา คอมพิวเตอร์มีพลังมากพอที่วันนี้จะสามารถสรุปความหมายจากบริบท ไม่มากไปกว่านักเขียนที่จำเป็นต้องติดป้ายคำนามคำกริยาและเช่นเมื่อเขียนนวนิยายทำไมโปรแกรมเมอร์ควรจะต้องติดฉลากฟังก์ชั่นและตัวแปรที่มีfunction x() {}หรือset x = 1หรือvar x = 1ฯลฯ ; เมื่อฉันสามารถอนุมานจากบริบทของคำสั่งว่ามันคือการประกาศฟังก์ชั่นหรือการร้องขอหรือว่าฉลากเป็นการกำหนดค่าหรือการอ้างอิงถึงค่าป้ายที่?

นี่คือตัวอย่างที่เป็นรูปธรรมของสิ่งที่ parser ปัจจุบันของฉันจะทำจำเป็นสำหรับคำหลักที่สงวนไว้เพื่อสนับสนุนสิ่งที่พบที่ปกติจะมีพวงของไม่มีเสียงเหมือนfuncหรือfunctionหรือdecหรือสิ่งที่ไม่

ประกาศฟังก์ชั่น

sum3(a,b,c) -> a + b + c.

ฟังก์ชั่นภาวนา

x = sum3(1,2,3).

ฟังก์ชันที่ไม่ระบุชื่อตั้งชื่อ x

x = (a,b,c) -> a + b + c.
y = x(1,2,3).

ฉันต้องการทราบว่าทำไมคำหลักที่มีความสำคัญต่อภาษาการเขียนโปรแกรมที่ประสบความสำเร็จ


8
การใช้งานค่อนข้างง่ายและไม่มีคำหลักใด ๆ
SK-logic

4
@ JamesAnderson ไม่พวกเขาเป็นแค่คำพูดเช่นเดียวกับคำอื่น ๆ ทั้งหมด ไม่มีความหมายพิเศษใด ๆ ทั้งสิ้น
SK-logic

7
ตัวดำเนินการและเครื่องหมายวรรคตอนนับเป็น "คำหลัก" หรือไม่ ถ้าใช่จะไม่มีภาษาอยู่เนื่องจากไม่สามารถกำหนดไวยากรณ์ได้
Emilio Garavaglia

2
@ SK-logic: ปกติแล้ว แต่ "ตัวระบุ" คืออะไรถ้าคุณยังไม่โทเค็น? เนื่องจากโทเค็นคือ "สิ่งใด ๆ ที่จดจำได้", "int", "myvalue" และ "+" จะไม่แตกต่างกันก่อนที่จะได้รับกฎไวยากรณ์ หากไม่ได้กำหนด "+" เป็นโอเปอเรเตอร์มันอาจเป็นเพียงชื่อของสิ่งที่คล้ายกับอักขระสตริงเดี่ยว ๆ ของยูนิโค้ด ตัวดำเนินการตามจุดยืนของไวยากรณ์ล้วนไม่มีอะไรเพิ่มเติมที่ "คำหลักอักขระเดียว"
Emilio Garavaglia

2
ในบริบทนี้คำหลักคืออะไร มันเป็นตัวบ่งชี้ที่มีความหมายพิเศษกับคอมไพเลอร์หรือไม่? มันเป็นตัวบ่งชี้ที่โปรแกรมเมอร์ไม่ควรใช้เป็นตัวแปรหรืออะไร? จะนับว่าไม่มีคำหลักหรือไม่หากคำหลักต้องถูกกำหนดเป็นพิเศษ? (นานมาแล้วฉันเห็นระบบ ALGOL ซึ่งคำหลักที่จำเป็นต้องใช้ในการอ้างถึงเป็นคำหลัก)
David Thornley

คำตอบ:


12

MUMPSประสบความสำเร็จอย่างสูงมีการใช้กันอย่างแพร่หลายในการประกันและการดูแลสุขภาพและไม่มีคำสงวน ฉันว่าพวกเขาช่วยในการเขียนรหัสที่ชัดเจนขึ้น แต่พวกเขาไม่จำเป็นอย่างเคร่งครัด APL เป็นอีกตัวอย่างหนึ่ง APL เห็นการใช้งานสคริปต์แบบใช้ครั้งเดียวในอุตสาหกรรมนิวเคลียร์ในหมู่ผู้อื่น Jสมาชิกของตระกูล APL ยังขาดคำหลักเช่นกัน

คำหลักช่วยให้ผู้เขียนคอมไพเลอร์ใช้การแยกวิเคราะห์ได้ง่ายขึ้น APL เป็นสมาคมที่มีชื่อเสียง พวกเขายังช่วยเสริมการประชุมและปรับปรุงการอ่าน APL ไม่เป็นที่รู้จักสำหรับคนส่วนใหญ่ที่สามารถอ่านได้อย่างมหาศาล


2
+1 สำหรับ "คำหลักช่วยให้ผู้เขียนคอมไพเลอร์ใช้การแยกวิเคราะห์ได้ง่ายขึ้น" ฉันคิดว่ามันสวยมาก คำสำคัญถูกประดิษฐ์ขึ้นเพื่อลดจำนวนบริบทที่ parser ต้องเก็บไว้ในหน่วยความจำย้อนกลับไปเมื่อคอมไพเลอร์ทั้งหมดพร้อมชุดการทำงานของมันต้องพอดีกับแรมนับโหล KB
Jörg W Mittag

2
การเขียนโปรแกรมแยกวิเคราะห์สำหรับ APL ง่ายกว่าภาษาอื่นเกือบทุกภาษา! พิจารณาว่าการใช้งานล่าม APL ครั้งแรกนั้นทำโดยใช้ทรานซิสเตอร์และไดโอด
James Anderson

2
ฉันคิดว่าเหตุผลหลักสำหรับคำหลักคือการทำให้ง่ายต่อการแยกวิเคราะห์ภาษาได้ง่ายขึ้น คอมพิวเตอร์จะมีความสุขมากขึ้นถ้าภาษานั้นประกอบไปด้วยตัวเลขและรูปแบบบิตเหมือนกับรหัสเครื่อง
James Anderson

6
สิ่งที่ APL ขาดในคำหลักมันเป็นสิ่งที่เกินความจำเป็นในการใช้แบบอักษรของตัวเอง
Blrfl

@Blrfl นั่นคือจุดของ J, K และ Q. พวกเขาทั้งหมดถึงหนึ่งหรืออีกหนึ่ง APL ใน ASCII
วิศวกรโลก

9

ภาษาที่รู้จักกันดีโดยไม่มีคำหลักคือ Lisp สิ่งที่ใกล้เคียงที่สุดกับคำหลักเรียกว่ารูปแบบพิเศษ - จำนวนของพวกเขาอาจแตกต่างกันระหว่างภาษาถิ่น - ที่ได้รับการดูแลเป็นพิเศษจากล่าม นอกเหนือจากนั้นพวกเขาจะแยกไม่ออกจากฟังก์ชั่นปกติในแง่ถ้าพวกเขาใช้อย่างไรยกเว้นว่าพวกเขาไม่สามารถนิยามใหม่ได้ (อย่างน้อยใน Lisps ที่ฉันคุ้นเคย)

สิ่งนี้ส่งผลให้เกิดรูปแบบที่เรียบง่าย (แต่หนักมาก) และเป็นหนึ่งในสิ่งที่ทำให้ Lisp มีระบบมาโครที่ทรงพลัง ในทางตรงกันข้ามเสียงกระเพื่อมมักจะพูดกันว่าอ่านยาก APL และ MUMPS ยิ่งกว่านั้นฉันเคยเห็นทั้งคู่อธิบายว่าเป็นครึ่งทางสู่ Brainf * ck คำหลักช่วยในแผนกนี้และทำให้การอ่านรหัสง่ายขึ้นสำหรับเราเช่นกัน

ดังนั้นฉันจะไม่พูดคำหลักที่จำเป็นสำหรับภาษาที่ประสบความสำเร็จ แต่พวกเขาแน่ใจว่าช่วยให้ภาษาประสบความสำเร็จ


1
IIRC Lisp ไม่มีคำค้นหา รูปแบบพิเศษจะต้องได้รับการปฏิบัติเป็นพิเศษโดยคอมไพเลอร์ แต่ชื่อของพวกเขาเป็นสัญลักษณ์ปกติ
Jan Hudec

2
คำหลักเป็นคุณลักษณะของไวยากรณ์ซึ่ง Lisp ไม่มีเช่นกัน ฉันไม่คิดว่ามันสมเหตุสมผลที่จะพูดถึงคำหลักใน Lisp จริงๆ
Jörg W Mittag

2
ฉันเห็นด้วยกับJörg ฉันคิดว่ามีใครสามารถพูดเกี่ยวกับคำหลักเมื่อภาษามีโทเค็นที่ต้องกำหนดอย่างชัดเจนว่าพิเศษเพื่อให้แตกต่างจากโทเค็นที่มีโครงสร้างที่คล้ายกัน โทเค็นที่แตกต่างกันนำไปสู่ต้นไม้ไวยากรณ์ที่แตกต่างกัน ตัวอย่างเช่นifใน C จะเป็นตัวระบุที่ถูกต้องหากไม่ได้กำหนดให้เป็นพิเศษ (คำหลัก) ซึ่งหมายความว่าifไม่ใช่ตัวระบุและif = 10ให้ข้อผิดพลาดทางไวยากรณ์ ถ้าฉันไม่ผิดไวยากรณ์น้อยเสียงกระเพื่อมไม่เห็นความแตกต่างdefunจากf, x, yและใน+ (defun f (x y) (+ x y))
Giorgio

@Giorgio สะดุดตาif เป็นชื่อตัวแปรที่ถูกต้องใน Common Lisp (และ Lisp-2s อื่น ๆ ) (defparameter if nil)จะไม่ทำลายสิ่งใดและสามารถใช้ในรูปแบบเช่น(unless if (setf if t))
tobyodavies

ในหมายเหตุเดียวกันแม้ว่า(defun if ...)จะล้มเหลว จดบันทึกจากความคิดเห็นไปยังบัญชีและแก้ไขคำตอบ ฉันสามารถยอมรับได้ว่ารูปแบบพิเศษไม่ใช่คำหลักในระดับเดียวกับใน C แต่ก็ยังเป็นสิ่งที่เสียงกระเพื่อมที่ใกล้เคียงที่สุด
scrwtp

8

TCLไม่มีคำสำคัญและมีเพียง 12 กฎไวยากรณ์เท่านั้น แม้ว่ามันจะไม่ได้รับความนิยมเท่าที่เคยเป็นมา แต่ก็มีช่องที่มีความคาดหวังและฝังอยู่ใน ECAD และเราเตอร์ดังนั้นมันจึงนับได้ว่าเป็นประโยชน์ในใจของฉัน

ฉันคิดว่ามันอาจแสดงให้เห็นว่าทำไมภาษาจำนวนมากจึงไม่ไปเส้นทางนี้ ใช่มันเป็นไปได้อย่างสมบูรณ์แบบในการเขียนตัวแยกวิเคราะห์ของ TCL (arguably ง่ายกว่าภาษาอื่น ๆ ) แต่คุณไม่สามารถเขียนไวยากรณ์ BNF ที่มีประโยชน์มากสำหรับภาษาและคนจำนวนมากดูเหมือนจะมีปัญหาในการเรียนรู้ภาษา ฉันสงสัยว่าอย่างน้อยส่วนหนึ่งเป็นเพราะขาดคำหลัก


2
Tcl คล้ายกับ Lisp ในเรื่องนี้ยกเว้น "ทุกอย่างคือรายการ" แต่ก็มี "ทุกอย่างเป็นสตริง" รายการเป็นเพียงสตริงที่มีช่องว่างในนั้นและการเรียกขั้นตอนเป็นเพียงรายการที่มีองค์ประกอบแรกที่ถูกตีความว่าเป็นชื่อของขั้นตอนและส่วนที่เหลือจะถูกตีความว่าเป็นข้อโต้แย้ง นั่นคือ Lisp S-Expression
Jörg W Mittag

ใช่พวกเขาทั้งคู่ใช้สัญกรณ์โปแลนด์และเป็น homo-iconic ดังนั้นจึงมีความหมายคล้ายกัน
jk

5

คอมพิวเตอร์มีพลังมากพอที่วันนี้จะสามารถสรุปความหมายจากบริบท

นี่หมายความว่าคุณต้องการไวยากรณ์ที่ไม่เป็นบริบทหรือไม่? โชคดี.

ไม่ใช่คำถามเกี่ยวกับการมีพลังหรือไม่ มีกฎนิรันดร์ที่ไม่มีการเปลี่ยนแปลงเกี่ยวกับภาษา - กฎทางคณิตศาสตร์ สิ่งนี้และความจริงที่ว่าภาษาการเขียนโปรแกรมควรมีความง่ายในการสร้างประโยคจะทำให้ CFGs ปกครองมาหลายทศวรรษ

Btw. ใน Haskell เหมือนกับไวยากรณ์คุณแค่เขียนอะไรบางอย่าง

f x y = (x+1)*(y-1)

เพื่อกำหนดฟังก์ชั่น แต่สังเกตว่า "คำหลัก" ในกรณีนี้คือ '=' หากคุณพลาดมันสิ่งที่น่ากลัวจะเกิดขึ้นในตัวแยกวิเคราะห์

แต่นี่คือจุดที่ฉันเห็นด้วยกับคุณฉันพบว่ามันใช้งานง่ายกว่าคำหลัก def, dcl, fun, fn, ฟังก์ชั่นหรือคำที่ไม่ใช่อะไรที่แนะนำฟังก์ชั่นในภาษาอื่น ๆ

กระนั้นไวยากรณ์นี้สามารถเขียนเป็น LALR แบบเก่าที่เรียบง่าย (1) ไม่มีความหมายว่า "อนุมานจากบริบท" ที่นี่


1
+1 สำหรับการจัดการกับคำแถลงนี้ (คอมพิวเตอร์มีประสิทธิภาพมากพอที่จะสามารถสรุปความหมายจากบริบทได้ในขณะนี้ ฉันคิดว่าเหตุผลที่ทำให้ไวยากรณ์ของ CFG เป็นที่ต้องการคือทำให้พวกเขาสามารถกำหนดโครงสร้างของโปรแกรมได้ ฉันไม่เห็นว่าทำไมคนหนึ่งถึงอยากเปลี่ยนแปลงสิ่งนี้แม้ใน 100 ปีบางทีฉันอาจจะขาดจินตนาการ
Giorgio

2
CFG นั้นตายไปแล้วและตายไปหลายสิบปีแล้ว JavaScript ใน HTML, แม้กระทั่งสตริงการจัดรูปแบบ C ภายใน C, แม้แต่ความคิดเห็นที่ซ้อนกันใน, พูด, OCaml - สิ่งนี้ไม่ได้เป็นบริบทฟรี และทำไมคุณถึงต้องการ จำกัด ตัวเองกับพิธีการที่ได้รับการแต่งตั้งตามอำเภอใจตอนนี้ในยุคของ PEG และ GLR
SK-logic

1
@Ingo ใช่คุณพูดถูกตัวอย่างที่ผิด ฉันหมายถึงไวยากรณ์แบบผสมและแบบขยายได้ (เช่นลำดับสูง) ซึ่งไม่ใช่ CFG
SK-logic

2
@ SK-logic: ฉันไม่ทราบว่าคุณได้รับข้อมูลที่ CFG ของตายแล้ว ฉันได้พูดคุยกับอดีตเพื่อนร่วมงานของฉันที่สอนการสร้างคอมไพเลอร์ในช่วง 20 ปีที่ผ่านมาและดูเหมือนว่า CFG นั้นห่างไกลจากความตาย
Giorgio

1
@Ingo: เท่าที่ฉันจำได้แง่มุมที่ไม่ใช่ CF นั้นจะถูกจัดการหลังจากนั้นโดยการวิเคราะห์ต้นแยกวิเคราะห์แบบ semantically เช่น{ int x = 0; x = "HELLO"; }ควรสร้างแผนผังการแยกวิเคราะห์ แต่เมื่อคอมไพเลอร์ค้นหา x ในการมอบหมายครั้งที่สองมันจะเห็นว่ามันถูกประกาศว่าเป็น int และทำให้เกิดข้อผิดพลาดประเภท ดังนั้นโปรแกรมจึงถูกปฏิเสธแม้ว่าโครงสร้าง CF จะถูกต้อง
Giorgio

4

เท่าที่ฉันรู้ Smalltalk เป็นภาษาที่มีคำหลักน้อยที่สุด (ถ้าฉันไม่นับภาษาเช่น Brainfuck) คำหลักที่สมอลล์ทอล์คมี true, false, nil, self, และsuperthisContext

ฉันได้ออกแบบ langage ซึ่งได้แรงบันดาลใจมาจาก smalltalk ที่ไม่มีคำหลัก แต่หลังจากใช้ไปสักพักฉันก็ลงเอยด้วยการเพิ่มคำค้นหาสักเล็กน้อย

ดังนั้นความคิดเห็นของฉันคือภาษาที่ไม่มีคำหลักนั้นเป็นไปได้ แต่มันไม่สามารถนำไปใช้ได้จริงและนั่นคือเหตุผลที่ภาษายอดนิยมทั้งหมดมีคำหลัก


หากได้รับการสนับสนุนสมอลล์ทอล์คข้อความส่งกับตัวรับโดยปริยายแล้วอย่างน้อยtrue, falseและnilอาจจะหมายถึงวิธีการในการที่รับโดยปริยายและให้ความสามารถในการสะท้อนอีกสามอาจได้เป็นอย่างดี
Jörg W Mittag

1
นั่นไม่ใช่คำหลัก แต่เป็น pseudovariables "ปลอม" เพราะtrue, falseและnilเป็นค่าที่รู้จักกันดีที่จัดทำโดยสภาพแวดล้อมและself, superและthisContextเป็นตัวแปรคุณไม่สามารถตั้ง แต่มีค่าเปลี่ยนเป็นผลมาจากการดำเนินการ
Frank Shearar

3

ดูเหมือนว่าคุณจะทำงานหนักภายใต้สมมติฐานที่ผิด ๆ ว่าคำหลักอยู่ที่นั่นเพื่อทำให้สิ่งต่าง ๆ ง่ายขึ้นสำหรับคอมไพเลอร์ ในขณะที่พวกเขาจะทำให้สิ่งที่ง่ายสำหรับคอมไพเลอร์ที่พวกเขามีประโยชน์ที่สำคัญมากขึ้น: พวกเขาทำสิ่งที่ง่ายสำหรับคนอ่านรหัส

ใช่คุณสามารถดูบริบทจำนวนหนึ่งและคิดออกว่าคุณกำลังดูการประกาศฟังก์ชั่นหรือการประกาศตัวแปร แต่ขึ้นอยู่กับบริบทและความซับซ้อนของรหัสที่เกี่ยวข้องซึ่งอาจใช้เวลานานในการคิดออก . หรือคุณอาจมีคำหลักที่ใช้งานง่ายเช่นฟังก์ชั่นหรือvarและคุณรู้ได้ทันทีว่าคุณกำลังดูอะไรอยู่

ใช่พวกเขาทำให้รหัสมีความซับซ้อนมากขึ้นในการเขียนแต่การพิจารณาว่าโปรแกรมใช้เวลาในการบำรุงรักษามากกว่าในการผลิตและรหัสของพวกเขาถูกอ่าน debugged และบำรุงรักษามากกว่าที่มันถูกสร้างขึ้นพยายามออกแบบภาษาของคุณ ทำให้ง่ายต่อการเขียนแทนที่จะอ่านง่ายเป็นกรณีคลาสสิกของการเพิ่มประสิทธิภาพก่อนวัยอันควรเป็นอันตราย

นอกจากนี้อย่าดูถูกแนวคิดที่ทำให้งานของคอมไพเลอร์ง่ายขึ้น ยิ่งการแยกวิเคราะห์ง่ายขึ้นรหัสของคุณก็จะยิ่งรวบรวมได้เร็วขึ้นซึ่งหมายถึงรอบการแก้ไขข้อบกพร่องสร้างได้เร็วขึ้นซึ่งหมายความว่าผลผลิตของคุณจะเพิ่มขึ้น

เมื่อคุณมี codebase ขนาดใหญ่และซับซ้อนซึ่งสามารถสร้างความแตกต่างในการเพิ่มผลผลิต ตัวอย่างเช่นที่ที่ฉันทำงานเรามีโปรแกรมที่ทำงานนั่นคือ Delphi ประมาณ 4 ล้านบรรทัด เรามีโมดูลอื่นที่มี C ++ ประมาณ 300,000 บรรทัด พวกเขาทั้งสองใช้เวลาในการรวบรวมประมาณเดียวกัน (ประมาณ 3 นาที) หากเรามี C ++ 4 ล้านบรรทัดอาจใช้เวลาหนึ่งชั่วโมงในการสร้าง!


ทุกจุดที่ยอดเยี่ยม +1

ถ้าคำนามคำกริยาคำวิเศษณ์และคำคุณศัพท์ในนวนิยายทุกเล่มมีป้ายกำกับเช่นนี้มันจะทำให้ HARDER อ่านไม่ง่ายขึ้น!

@JarrodRoberson: แน่นอน แต่รหัสไม่ใช่นิยาย ภาษาธรรมชาติแตกต่างจากภาษาโปรแกรมอย่างมาก ภาษาธรรมชาติเป็นที่เข้าใจอย่างสังหรณ์ใจในขณะที่ภาษาโปรแกรมมีความหมายอย่างเป็นทางการ เทคนิคที่ใช้ในการอ่านและทำความเข้าใจกับความหมายของมันนั้นแตกต่างกันมากและเป็นความผิดพลาดที่จะลองเทียบทั้งสองอย่างที่คุณทำ
Mason Wheeler

ผมบอกว่าคอมไพเลอร์นักเขียนที่แตกต่างจากคอมไพเลอร์ คอมไพเลอร์ได้เร็วขึ้นบนฮาร์ดแวร์ที่เร็วกว่านักเขียนคอมไพเลอร์เป็นมนุษย์เราไม่ปฏิบัติตามกฎของมัวร์!

รหัสฐานที่ฉันมักจะทำงานด้วยคือคำสั่งที่มีขนาดยาวกว่านวนิยายที่มีความยาวส่วนใหญ่เป็นโค้ดมากกว่า 1,000,000+ บรรทัดนวนิยายที่ยาวที่สุดคือ <2,000,000 คำ ! และเช่นเดียวกับนวนิยายที่มนุษย์อ่านพวกเขาใช้เวลาในการอ่านรหัสมากกว่าเขียน! เมื่อพิจารณาถึงฐานรหัสที่มีอายุมากกว่า 10 ปีและ 1,000,000+ บรรทัดจำนวนครั้งที่นักพัฒนาอ่านเป็นเวลากว่า 10 ปีที่ดาวแคระใช้เวลาในการสร้างตั้งแต่แรก!

2

มีบางตัวอย่างที่หายากอยู่

APL ใช้สัญลักษณ์เท่านั้น - แต่มีมากมาย! คุณต้องใช้แป้นพิมพ์พิเศษเพื่อใช้ภาษา

ดูบทความวิกิพีเดียนี้

CORAL 66 - มีคำหลัก แต่จดจำได้เฉพาะเมื่อมีการเสนอราคาด้วยคำพูดเดียว

PL / 1 มีคำหลักด้วย - แต่คุณสามารถใช้มันเป็นชื่อตัวแปรหรือขั้นตอนได้

สรุปคำถามของคุณเป็นเหมือนการถามว่า "ทำไมภาษาพูดจึงมีคำ?"


เพียงแค่เพิ่มว่าถ้าคุณชอบรูปลักษณ์ของ APL แต่ไม่ต้องการซื้อแป้นพิมพ์ใหม่Jก็เป็นเพียงสิ่งนั้น
AakashM

0

เหตุผลหลักคือง่ายขึ้นสำหรับทั้งมนุษย์และคอมพิวเตอร์ในการแยกวิเคราะห์ การแก้ปัญหาภาษาที่ซับซ้อนโดยไม่มีคำหลักจะต้องใช้สัญลักษณ์หลายอย่างเป็นไวยากรณ์และมันจะทำให้เกิดความสับสนอย่างหนาแน่นและไม่จำเป็น อ่านง่ายfunctionกว่า$!{}มาก และบริบทไม่สามารถแก้ไขความคลุมเครือทั้งหมด


1
ผมคิดว่าคำที่สำคัญในคำตอบของคุณที่ซับซ้อนเป็นภาษาที่ออกแบบมาอย่างเพียงพอควรจะเรียบง่ายไม่ซับซ้อน

1
@ Jarrod Roberson: Leonardo da Vinci: "Simplicity is the sophistication ที่สุด", Antoine de Saint Exupéry: "ดูเหมือนว่าความสมบูรณ์แบบนั้นจะมาถึงไม่ได้เมื่อไม่มีอะไรเหลือให้เพิ่ม แต่เมื่อไม่มีอะไรเหลือให้ไป"
Giorgio

1
@Jarrod: ภาษาคอมพิวเตอร์ที่สื่อความหมายมีความหมายซับซ้อน
DeadMG

1
@DeadMG: โครงการง่ายมากและในเวลาเดียวกันแสดงออกมาก น่าเสียดายที่ฉันรู้ว่ามันไม่มีไลบรารี่มาตรฐาน
Giorgio

Erlang นั้นแสดงออกได้ดีและไม่ซับซ้อนทางไวยากรณ์ ฉันคิดว่าภาษาที่ใช้งานได้ทั้งหมดมีความชัดเจนมากขึ้นด้วยคำหลักที่สงวนไว้น้อยกว่า
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.