คำถามติดแท็ก syntax

ไวยากรณ์หมายถึงชุดของกฎที่กำหนดวิธีการเขียนโปรแกรมที่มีโครงสร้างอย่างถูกต้องในภาษา ไม่ได้เกี่ยวข้องกับความหมายหรือการตีความของโปรแกรมอย่างชัดเจน

9
ประโยชน์ของการให้ผู้ดำเนินการมอบหมายคืนค่าคืออะไร?
ฉันกำลังพัฒนาภาษาที่ฉันต้องการแทนที่ทั้ง Javascript และ PHP (ฉันไม่เห็นปัญหาใด ๆ กับสิ่งนี้มันไม่เหมือนภาษาใดภาษาหนึ่งเหล่านี้ที่มีฐานการติดตั้งขนาดใหญ่) หนึ่งในสิ่งที่ฉันต้องการเปลี่ยนคือการเปลี่ยนผู้ประกอบการมอบหมายให้เป็นคำสั่งการมอบหมายลบความสามารถในการใช้ประโยชน์จากค่าที่ส่งคืน x=1; /* Assignment. */ if (x==1) {} /* Comparison. */ x==1; /* Error or warning, I've not decided yet. */ if (x=1) {} /* Error. */ ฉันรู้ว่านี่จะหมายความว่าฟังก์ชั่นหนึ่งบรรทัดที่คน C รักมากจะไม่ทำงานอีกต่อไป ฉันคิด (มีหลักฐานน้อยกว่าประสบการณ์ส่วนตัวของฉัน) ว่าส่วนใหญ่ครั้งนี้เกิดขึ้นมันตั้งใจจริง ๆ ที่จะดำเนินการเปรียบเทียบ หรือมันคืออะไร? มีการใช้งานจริงของค่าส่งคืนของผู้ดำเนินการที่ไม่สามารถเขียนใหม่ได้หรือไม่? (สำหรับภาษาใด ๆ ที่มีแนวคิดดังกล่าว)

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

10
ภาษาการเขียนโปรแกรมที่ทุกฟังก์ชั่นการโทร / บล็อกทำในเธรดแยกกันหรือไม่ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ขณะนี้ฉันกำลังสร้างภาษาการเขียนโปรแกรมเพื่อความสนุกที่ความคิดคือทุกการเรียกใช้ฟังก์ชัน / บล็อกใหม่ (ถ้าส่วนคำสั่งลูปเป็นต้น) จะทำงานในเธรดแยกต่างหาก แทนที่จะสร้างเธรดใหม่มาตรฐานควรเป็นแบบนั้นทำโดยอัตโนมัติและหากคุณต้องการให้เธรดทำงานในเธรดหลักคุณจะต้องระบุ ฉันไม่ทราบเรื่องการเขียนโปรแกรมแบบหลายเธรดแบบขนาน แต่ฉันรู้พื้นฐาน (ฟิวเจอร์สวัตถุที่ปลอดภัยสำหรับเธรด) ดังนั้นฉันสงสัยว่าภาษาดังกล่าวสามารถดูไวยากรณ์ที่ชาญฉลาดและถ้าเป็นไปได้ที่จะเริ่มต้นด้วย? เป้าหมายไม่ใช่เพื่อให้ "มีประโยชน์" มันมีไว้เพื่อความสนุกและประสบการณ์การเรียนรู้ (ฉันขอโทษถ้านี่เป็นสถานที่ที่ผิดที่จะโพสต์ถ้าเป็นเช่นนั้นฉันยินดีที่จะขอบคุณถ้าคุณชี้ให้ฉันไปยังสถานที่ที่เหมาะสมที่อนุญาตให้มีคำถามเช่นของฉัน)

12
คุณจะเห็นการใช้ Trilean (True, False, ??) ใด ๆ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว บางครั้งฉันมีฟังก์ชั่นที่ควรกลับจริงหรือเท็จ แต่บางครั้งค่าสามค่าที่เป็นไปได้นั้นสมเหตุสมผลกว่า ในบางกรณีภาษาเหล่านี้จะได้รับการจัดการด้วยจำนวนเต็มหรือมีข้อยกเว้น สำหรับตัวอย่างที่คุณต้องการจัดการอายุของผู้ใช้ถ้าเขาอายุมากกว่า 18 ปี และคุณมีฟังก์ชั่นเช่นนี้ if(user.isAdult(country_code)){ //Go On }else{ // Block access or do nothing } แต่ในบางกรณีขึ้นอยู่กับการสร้างแอปของคุณฉันสามารถดูกรณีที่ฟิลด์วันเกิดไม่สมบูรณ์ จากนั้นฟังก์ชั่นนี้จะคืนค่าบางอย่างที่ไม่ได้ระบุ switch(user.isAdult()){ case true: // go on break; case undetermined: //Inform user birthday is incomplete case false: //Block access } อย่างที่ฉันบอกว่าเราสามารถจัดการกับมันด้วย Exceptions และ Int …
22 syntax 

2
เหตุใด C ใช้เครื่องหมายดอกจันสำหรับพอยน์เตอร์ [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันเพิ่งจะเรียนรู้เกี่ยวกับ C. ฉันคิดว่ามันแปลกที่ผู้สร้างเลือกเครื่องหมายดอกจัน ( *) เป็นสัญลักษณ์สำหรับพอยน์เตอร์แทนที่จะเป็นสัญลักษณ์ที่ดูเหมือนตัวชี้ ( ->) พิจารณาว่าตัวชี้การลงทะเบียนและฟังก์ชั่นที่ทำให้เกิดความสับสนสามารถมีเหตุผลทางประวัติศาสตร์หรือทางปฏิบัติได้หรือไม่สำหรับการใช้เครื่องหมายดอกจัน
21 c  history  syntax 

4
เครื่องหมายโคลอนในบล็อกหลามเป็นสิ่งจำเป็นทางเทคนิคหรือไม่
นี่เป็นเพียงคำถามเชิงทฤษฎีของ newbie ใหญ่ที่ต้องการเข้าใจมากขึ้น ฉันลืมโคลอนไปเรื่อย ๆ หลังจากบล็อกข้อความเริ่มต้นในไพ ธ อน นี่คือสิ่งที่ฉันหมายถึง: for <variable> in <sequence>: if <blah blah>: ความคิดของฉันคือเหตุผลหนึ่งที่ฉันลืมอยู่เสมอว่ามันเป็นความจริงโดยนัย: โคลอนหรือไม่คำแถลงลงท้ายด้วยบรรทัดนั้น คำถามของฉัน - ที่ฉันถามเพื่อเรียนรู้วิธีการทำงานของ python ไวยากรณ์ - ไม่ว่าลำไส้ใหญ่ไม่จำเป็นจริงๆ? ฉันจะเปลี่ยนไวยากรณ์ของไพ ธ อนเพื่อไม่ให้โคลอนไม่จำเป็นอีกต่อไปแล้วจะมีอะไรแตกหรือไม่ นั่นจะทำให้ข้อความบางอย่างคลุมเครือหรือเป็นไปไม่ได้ไหม?
19 python  syntax  theory 

6
มีภาษาที่ transpiles ไป C ด้วยไวยากรณ์ที่ดีขึ้นหรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา CoffeeScript เป็นภาษาที่เปลี่ยนไปใช้ JavaScript ด้วยไวยากรณ์ที่สะอาดซึ่งได้รับแรงบันดาลใจจาก Ruby มีภาษาที่คล้ายกันซึ่ง transpiles เป็น C หรือไม่ทำให้โค้ดที่อ่านง่ายขึ้นโดยไม่กระทบต่อประสิทธิภาพ หากไม่มีสิ่งนี้เกิดขึ้นมีเหตุผลที่ดีที่จะไม่สร้างมันขึ้นมาหรือไม่?
19 c  syntax  compiler 

1
Dollar Sign Blues: Javascript และ PHP
ฉันโตขึ้นการเขียนโปรแกรม C ++ และ Java ที่ทุกอย่างปลอดภัยและสวยงาม คอมไพเลอร์ตรวจสอบให้แน่ใจเพื่อให้ฉันอยู่ในการตรวจสอบถ้าฉันหลงทาง แน่นอนว่าทุกคนทำ Perl ได้เล็กน้อยในวิทยาลัย แต่ฉันไม่ได้หายใจเข้า เด็ก ๆ ทุกวันนี้ทุกอย่างเกี่ยวกับ PHP ที่แบ็กเอนด์และจาวาสคริปต์ที่อยู่ข้างหน้า ในการพยายามเป็นสะโพกฉันทำเช่นเดียวกัน (สำหรับการพัฒนาเว็บ) ปัญหาที่ฉันยังคงทำงานต่อไปคือฉันเพิ่มเครื่องหมายดอลลาร์ ($) ต่อหน้าตัวแปรปกติใน Javascript และแน่นอนไม่มีใครพูดอะไรเลยเพราะนั่นคือไวยากรณ์ทางกฎหมายที่มักใช้กับวัตถุ jQuery มีเครื่องมือในการดีบักหรือกลอุบาย dev เพื่อจับสัญญาณดอลลาร์นี้หรือไม่? คุณมักจะทำผิดพลาดเหมือนกันและคุณจัดการกับอารมณ์อย่างไร? เครื่องมือ Chrome dev ไม่เห็นว่านี่เป็นข้อผิดพลาดของ Javascript เสมอไป ฉันใช้ PhpStorm และ Emacs เพื่อการพัฒนา แต่สิ่งเหล่านั้นไม่ได้ทำให้ฉันงี่เง่าแม้ว่าฉันคิดว่า Emacs ทำ แต่เลือกที่จะไม่บอกฉันเกี่ยวกับเรื่องนี้ หากคุณคิดว่าคำถามนี้ไร้สาระฉันคิดว่าคุณพูดถูก แต่เราอยู่ในโลกที่ตัวแปรมีเครื่องหมายดอลลาร์อยู่ข้างหน้ามัน ในโลกใบนี้ไม่มีอะไรไร้สาระ

9
เหตุใดภาษาการเขียนโปรแกรมส่วนใหญ่จึงไม่ซ้อนบล็อกความคิดเห็น
ไม่กี่คนที่ทำ แต่ไม่ได้รับความนิยมเท่าที่ฉันรู้ มีบางอย่างที่ไม่ดีเกี่ยวกับความคิดเห็นในการซ้อนหรือไม่ ฉันวางแผนที่จะบล็อกความคิดเห็นซ้อนในภาษา (เล็ก) ที่ฉันกำลังทำงานอยู่ แต่ฉันอยากจะรู้ว่านี่เป็นความคิดที่ไม่ดีหรือไม่

2
ตัวดำเนินการ Ternary ของ Javascript เทียบกับ ||
ฉันดูโค้ด node.js ก่อนหน้านี้และฉันสังเกตเห็นว่าคนที่เขียนมันดูเหมือนจะชอบไวยากรณ์ต่อไปนี้: var fn = function (param) { var paramWithDefault = null == param ? 'Default Value' : param; } ในสิ่งที่ฉันคิดว่ากระชับกว่า: var fn = function (param) { var paramWithDefault = param || 'Default Value'; } ฉันสงสัยว่ารูปแบบที่สองเป็นไวยากรณ์ JavaScript ที่สังคมยอมรับได้มากกว่าหรือไม่ฉันเคยเห็นรูปแบบที่แปลกประหลาดมากกว่าตัวดำเนินการแบบไตรภาคเพื่อจุดประสงค์นี้หรือไม่ ฉันสังเกตว่าในตัวอย่างแรกเขาใช้สองเท่า (ไม่ใช่สามเท่า) ซึ่งหมายความว่ามันจะนับว่า "ไม่ได้กำหนด" เป็นโมฆะซึ่งจะลดผลกระทบที่ฉันคิดได้ อย่างไรก็ตามฉันได้อ่านในหลาย ๆ ที่ == เป็นตัวดำเนินการที่ค่อนข้างชั่วร้ายใน JavaScript …

5
ทำไมไวยากรณ์ C สำหรับอาร์เรย์พอยน์เตอร์และฟังก์ชั่นจึงถูกออกแบบด้วยวิธีนี้
หลังจากได้เห็น (และถาม!) คำถามมากมายคล้ายกับ อะไรint (*f)(int (*a)[5])หมายถึงใน C? และถึงแม้จะเห็นว่าพวกเขาสร้างโปรแกรมเพื่อช่วยให้ผู้คนเข้าใจไวยากรณ์ของ C ฉันก็อดไม่ได้ที่จะสงสัยว่า: ทำไมไวยากรณ์ของ C จึงถูกออกแบบด้วยวิธีนี้ ตัวอย่างเช่นถ้าฉันออกแบบพอยน์เตอร์ฉันจะแปล "ตัวชี้ไปยังอาเรย์ของพอยน์เตอร์ 10 องค์ประกอบ" เป็น int*[10]* p; และไม่ int* (*p)[10]; ซึ่งฉันรู้สึกว่าคนส่วนใหญ่จะเห็นด้วยน้อยกว่ามาก ดังนั้นฉันสงสัยว่าทำไมไวยากรณ์เอ่อไม่ได้ใช้งานง่าย? มีปัญหาเฉพาะหรือไม่ที่ไวยากรณ์แก้ปัญหา (อาจเป็นความกำกวม?) ที่ฉันไม่รู้?
16 c  syntax 

7
อะไรคือการใช้งานของบล็อกโดยพลการในสำนวน C?
บล็อกคือรายการคำสั่งที่จะดำเนินการ ตัวอย่างของการที่บล็อกเกิดขึ้นใน C อยู่หลังคำสั่ง while และใน if statement while( boolean expression) statement OR block if (boolean expression) statement OR block C ยังอนุญาตให้บล็อกถูกซ้อนในบล็อก ฉันสามารถใช้สิ่งนี้เพื่อนำชื่อตัวแปรมาใช้ใหม่ได้ฉันคิดว่าฉันชอบ 'x' int x = 0; while (x < 10) { { int x = 5; printf("%d",x) } x = x+1; } จะพิมพ์หมายเลข 5 สิบครั้ง ฉันเดาว่าฉันสามารถเห็นสถานการณ์ที่ทำให้จำนวนชื่อตัวแปรต่ำเป็นที่ต้องการ บางทีในการขยายตัวแมโคร อย่างไรก็ตามฉันไม่เห็นเหตุผลที่ยากลำบากที่จะต้องใช้คุณสมบัตินี้ …
15 c  syntax 

12
มีคอมไพเลอร์ใดที่พยายามแก้ไขข้อผิดพลาดทางไวยากรณ์ด้วยตนเองหรือไม่? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันได้ยินมาพักหนึ่งแล้วว่าเคยเป็นคอมไพเลอร์ที่พยายามแก้ไขข้อผิดพลาดทางไวยากรณ์โดยการวิเคราะห์บริบทและสรุปสิ่งที่ตั้งใจไว้ คอมไพเลอร์ดังกล่าวมีอยู่จริงหรือไม่? เห็นได้ชัดว่ามันมีคุณค่าในทางปฏิบัติน้อย แต่จะน่าสนใจมากที่จะเล่นกับและเรียนรู้จาก
15 syntax  compiler 

6
One-liners vs. readability: เมื่อใดที่จะหยุดลดรหัส? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา บริบท ฉันเพิ่งได้รับความสนใจในการผลิตรหัสที่จัดรูปแบบที่ดีขึ้น และโดยดีกว่าฉันหมายถึง "การปฏิบัติตามกฎเกณฑ์ที่รับรองโดยผู้คนมากพอที่จะถือว่าเป็นแนวปฏิบัติที่ดี" (เนื่องจากจะไม่มีวิธีที่ดีที่สุดในการเขียนโค้ดแน่นอน) ทุกวันนี้ฉันส่วนใหญ่เป็นรหัสใน Ruby ดังนั้นฉันจึงเริ่มใช้ linter (Rubocop) เพื่อให้ข้อมูลบางอย่างเกี่ยวกับ "คุณภาพ" ของรหัสของฉัน ("คุณภาพ" นี้ถูกกำหนดโดยชุมชนruby-style- project -guide-guide ) โปรดทราบว่าผมจะใช้ "คุณภาพ" ในขณะที่ "คุณภาพของการจัดรูปแบบว่า" ไม่มากเกี่ยวกับประสิทธิภาพของรหัสแม้ว่าในบางกรณีที่มีประสิทธิภาพรหัสจริงจะได้รับผลกระทบโดยวิธีการรหัสที่เขียน อย่างไรก็ตามทำทุกสิ่งที่ฉันรู้ (หรืออย่างน้อยก็จำได้) บางสิ่ง: บางภาษา (ที่โดดเด่นที่สุดคือ Python, Ruby และเช่นนั้น) อนุญาตให้สร้างโค้ดแบบหนึ่งบรรทัดที่ยอดเยี่ยม การปฏิบัติตามหลักเกณฑ์บางประการสำหรับรหัสของคุณอาจทำให้รหัสสั้นลงและชัดเจนมาก กระนั้นก็ตามการปฏิบัติตามแนวทางเหล่านี้อย่างเคร่งครัดเกินไปอาจทำให้รหัสชัดเจนน้อยลง / อ่านง่าย รหัสสามารถปฏิบัติตามหลักเกณฑ์บางอย่างเกือบจะสมบูรณ์แบบและยังคงมีคุณภาพไม่ดี ส่วนใหญ่การอ่านรหัสเป็นเรื่องส่วนตัว (เช่นเดียวกับใน "สิ่งที่ฉันเห็นชัดเจนว่าอาจคลุมเครือกับนักพัฒนาซอฟต์แวร์") นี่เป็นเพียงการสังเกตไม่ใช่กฎที่แน่นอน คุณจะทราบได้ว่าการอ่านโค้ดและแนวทางต่อไปนี้อาจดูเหมือนไม่เกี่ยวข้องกัน ณ …

4
มีเหตุผลที่จะชอบไวยากรณ์แลมบ์ดาแม้ว่าจะมีเพียงพารามิเตอร์เดียวหรือไม่?
List.ForEach(Console.WriteLine); List.ForEach(s => Console.WriteLine(s)); สำหรับฉันแล้วความแตกต่างนั้นเป็นเครื่องสำอางล้วนๆ แต่มีเหตุผลใดที่ลึกซึ้งว่าทำไมคน ๆ หนึ่งถึงชอบกัน
14 c#  syntax  lambda 

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