คำถามติดแท็ก language-features

คำถามเกี่ยวกับแง่มุมที่แตกต่างของภาษาคอมพิวเตอร์โดยเฉพาะอย่างยิ่งในวิธีที่พวกเขาเขียนหรือในความสามารถในการแสดงออกให้กับโปรแกรมเมอร์

9
การปิดคืออะไร
ทุกครั้งที่ฉันเห็น "การปิด" ถูกกล่าวถึงและฉันพยายามค้นหา แต่ Wiki ไม่ได้ให้คำอธิบายที่ฉันเข้าใจ มีคนช่วยฉันที่นี่ได้ไหม

30
คุณต้องการมีฟีเจอร์อะไรใน PHP? [ปิด]
เนื่องจากเป็นช่วงเทศกาลวันหยุดและทุกคนต้องการสิ่งนี้ฉันสงสัย - ฟีเจอร์ภาษาที่คุณต้องการจะเพิ่มใน PHP คืออะไร? ฉันสนใจคำแนะนำ / ความปรารถนาที่เป็นประโยชน์สำหรับภาษานี้ โดยการปฏิบัติฉันหมายถึง: สิ่งที่สามารถทำได้ในทางปฏิบัติ (ไม่ใช่: "ฉันหวังว่า PHP จะเดาว่ารหัสของฉันหมายถึงอะไรและแก้ไขข้อบกพร่องสำหรับฉัน" หรือ "ฉันหวังว่าโค้ดใด ๆ จะทำงานภายใต้ 5ms") บางสิ่งที่ไม่ต้องการเปลี่ยน PHP เป็นภาษาอื่น (ไม่ใช่: "ฉันหวังว่าพวกเขาจะลบเครื่องหมาย $ และใช้พื้นที่แทนวงเล็บปีกกา" หรือ "ฉันหวังว่า PHP ถูกคอมไพล์พิมพ์แบบสแตติกและมี # อยู่ในชื่อ") สิ่งที่ไม่ต้องการทำลายรหัสที่มีอยู่ทั้งหมด (ไม่ใช่: "ลองเปลี่ยนชื่อ 500 ฟังก์ชั่นและเปลี่ยนลำดับพารามิเตอร์สำหรับพวกเขา") สิ่งที่ไม่เปลี่ยนภาษาหรือบางแง่มุมที่น่าสนใจของมัน (ไม่ได้ "ผมต้องการมีส่วนขยายเพื่อรองรับการ XYZ โปรโตคอล" หรือ "ฉันหวังว่าข้อผิดพลาด # 12345 ได้รับการแก้ไขในที่สุด") บางสิ่งที่มากกว่าคำพูดโวยวาย (ไม่ใช่: "ฉันหวังว่า …

5
ฟีเจอร์ใดจะถือว่าเป็น“ พลเมืองชั้นหนึ่ง” ในภาษา / แพลตฟอร์มการเขียนโปรแกรม
ฉันเห็นข้อความหลายครั้งเช่น - โปรดทำให้คุณลักษณะนี้เป็นพลเมืองชั้นหนึ่งด้วยภาษา / แพลตฟอร์ม " ตัวอย่างเช่นมีการพูดเกี่ยวกับ enums ใน C # /. net ดังนั้นคุณสมบัตินี้จึงถูกพิจารณาว่าเป็น "พลเมืองชั้นหนึ่ง" ในภาษาโปรแกรม / แพลตฟอร์ม?

8
ทำไมจึงต้องออกแบบภาษาสมัยใหม่โดยไม่มีกลไกการจัดการยกเว้น?
ภาษาสมัยใหม่หลายคนให้การจัดการข้อยกเว้นที่อุดมไปด้วยคุณสมบัติ แต่แอปเปิ้ลของการเขียนโปรแกรมภาษาสวิฟท์ไม่ได้ให้กลไกการจัดการข้อยกเว้น ขณะที่ฉันกำลังจมดิ่งอยู่ในข้อยกเว้นฉันมีปัญหาในการคิดสิ่งที่มันหมายถึง Swift มีคำยืนยันและแน่นอนว่ามีค่าตอบแทน แต่ฉันกำลังมีปัญหาในการนึกภาพว่าวิธีคิดตามข้อยกเว้นของฉันทำแผนที่โลกโดยไม่มีข้อยกเว้น (และสำหรับเรื่องนั้นทำไมโลกเช่นนี้เป็นที่น่าพอใจ ) มีสิ่งใดบ้างที่ฉันไม่สามารถทำได้ในภาษาอย่าง Swift ที่ฉันสามารถทำได้ด้วยข้อยกเว้น ฉันจะได้รับบางอย่างจากการสูญเสียข้อยกเว้น? ยกตัวอย่างเช่นฉันจะแสดงสิ่งที่ดีที่สุดได้อย่างไร try: operation_that_can_throw_ioerror() except IOError: handle_the_exception_somehow() else: # we don't want to catch the IOError if it's raised another_operation_that_can_throw_ioerror() finally: something_we_always_need_to_do() ในภาษา (ตัวอย่างเช่น Swift) ที่ไม่มีการจัดการข้อยกเว้น?

7
เหตุใดสมาชิกข้อมูลแบบคงที่จึงต้องกำหนดนอกคลาสแยกต่างหากใน C ++ (ไม่เหมือนกับ Java)
class A { static int foo () {} // ok static int x; // <--- needed to be defined separately in .cpp file }; ฉันไม่เห็นความต้องการในการA::xกำหนดแยกต่างหากในไฟล์. cpp (หรือไฟล์เดียวกันสำหรับแม่แบบ) ทำไมไม่สามารถA::xประกาศและกำหนดในเวลาเดียวกันได้? มันถูกห้ามด้วยเหตุผลทางประวัติศาสตร์หรือไม่? คำถามหลักของฉันคือมันจะส่งผลกระทบต่อฟังก์ชั่นใด ๆ หากstaticข้อมูลสมาชิกถูกประกาศ / กำหนดในเวลาเดียวกัน (เช่นเดียวกับJava )?

5
Java dev learning Python: ฉันต้องใช้แนวคิดอะไรในการห่อหัวของฉัน?
ความเป็นมา: ฉันทำงานไม่กี่บทช่วยสอนและเขียนโครงการขนาดเล็ก ทั้งหมดเป็นไปอย่างดีพอโดยใช้ Google และStackOverflow หลายครั้งในช่วงไม่กี่วันที่ผ่านมาฉันพบว่าตัวเองสงสัยว่า - ฉันรู้สึกว่าฉันยังคงคิดถึง Java อยู่เมื่อฉันเขียนเป็น Python คำถามนี้ที่ StackOverflow เต็มไปด้วยเคล็ดลับเกี่ยวกับแหล่งข้อมูลที่จะอ่านเพื่อการเรียนรู้ของ Python แต่ฉันยังรู้สึกว่าฉันเป็นนักพัฒนา Java ที่มีพจนานุกรม สิ่งที่ฉันต้องการทำจริงๆคือ refactor หัวของฉันให้สามารถเขียน Pythonic Python แทน Java ที่ปลอมตัวเป็น Python โดยไม่สูญเสียทักษะ Java ของฉัน ดังนั้นปมคำถามของฉันคือ: แนวคิดอะไรที่ Java dev ต้องการเรียนรู้ที่จะคิด Pythonic จริงๆ? รวมถึงสิ่งใดก็ตามที่จำเป็นต้องเรียนรู้ หมายเหตุ: ฉันกำลังถามเกี่ยวกับแนวคิดภาษาไม่ใช่เกี่ยวกับไวยากรณ์ภาษา

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

2
ภาษาการเขียนโปรแกรมรุ่นที่ 4 และ 5 คืออะไร มีอะไรอีกบ้าง? [ปิด]
เนื่องจากมันถูกจำแนกในระดับโรงเรียน / วิทยาลัยภาษาการเขียนโปรแกรมยอดนิยม (C #, Java, C ++) เป็นภาษาที่ 3 ทั้งหมด (ด้วยระดับที่สูงกว่าของนามธรรมจากชิ้นส่วนทางกายภาพของเครื่อง) นอกจากนี้ภาษาแอสเซมบลีถูกจัดประเภทเป็นภาษาที่ 2 และภาษาเครื่องเป็นภาษาที่ 1 ตอนแรกฉันคิดว่า SQL ควรถูกพิจารณาว่าเป็นภาษาเจนเนอเรชั่นที่ 4 เพราะมันเป็นนามธรรมและห่างไกลจากรายละเอียดของการวนซ้ำและการอธิบายเพิ่มเติม ตอนนี้ฉันพบว่ามีภาษารุ่นที่ 4 และรุ่นที่ 5 แต่อะไรคือพื้นฐานของภาษาโปรแกรมหรือเทคโนโลยีใด ๆ ที่จะจัดประเภทเป็นภาษารุ่นที่ 4 หรือ 5 นอกจากนี้ยังมีภาษารุ่นที่ 6 หรือ 7 เช่นกัน?

7
เหตุใดภาษาหลักส่วนใหญ่จึงไม่สนับสนุนไวยากรณ์“ x <y <z” สำหรับการเปรียบเทียบแบบบูลีน 3 ทาง
หากฉันต้องการเปรียบเทียบตัวเลขสองตัว (หรือเอนทิตีที่มีการจัดลำดับที่ดีอื่น ๆ ) ฉันจะทำเช่นx &lt; yนั้น ถ้าผมต้องการเปรียบเทียบสามของพวกเขา, x &lt; y &lt; zนักเรียนพีชคณิตโรงเรียนมัธยมจะแนะนำพยายาม โปรแกรมเมอร์ในตัวฉันจะตอบกลับด้วย "ไม่นั่นไม่ถูกต้องคุณต้องทำx &lt; y &amp;&amp; y &lt; z" ภาษาส่วนใหญ่ที่ฉันพบเจอดูเหมือนจะไม่สนับสนุนไวยากรณ์นี้ซึ่งเป็นเรื่องแปลกเพราะมันเป็นเรื่องธรรมดาในวิชาคณิตศาสตร์ Python เป็นข้อยกเว้นที่น่าสังเกต JavaScript ดูเหมือนข้อยกเว้น แต่จริงๆแล้วเป็นเพียงผลพลอยได้ที่โชคร้ายของลำดับความสำคัญของผู้ปฏิบัติงานและการแปลงโดยนัย ใน Node.js, 1 &lt; 3 &lt; 2ประเมินเพราะมันจริงๆtrue(1 &lt; 3) &lt; 2 === true &lt; 2 === 1 &lt; 2 ดังนั้นคำถามของฉันคือ: เหตุใดจึงx &lt; y …

7
ระบบประเภทของ Haskell เป็นอุปสรรคต่อการทำความเข้าใจการเขียนโปรแกรมที่ใช้งานได้จริงหรือไม่? [ปิด]
ฉันกำลังศึกษา Haskell เพื่อจุดประสงค์ในการทำความเข้าใจเกี่ยวกับการเขียนโปรแกรมฟังก์ชั่นด้วยความคาดหวังว่าฉันจะใช้ความเข้าใจที่ฉันได้รับในภาษาอื่น ๆ (Groovy, Python, JavaScript เป็นหลัก) ฉันเลือกแฮสเค็ลล์เพราะฉันรู้สึกว่ามันใช้งานได้อย่างหมดจดและไม่ยอมพึ่งพารัฐ ฉันไม่ได้เลือกที่จะเรียนรู้ Haskell เพราะฉันสนใจที่จะสำรวจระบบที่เข้มงวดมาก ๆ คำถามของฉันคือสิ่งนี้: ระบบพิมพ์ที่แข็งแกร่งเป็นผลพลอยได้ที่จำเป็นของภาษาที่ใช้งานได้อย่างสมบูรณ์หรือเป็นตัวเลือกการออกแบบที่ไม่เกี่ยวข้องกับ Haskell โดยเฉพาะหรือไม่?

4
ทำไมถึงไม่เป็นโมฆะ * `` หล่อใน C ++ โดยนัย?
ใน C ไม่จำเป็นต้องส่ง a void *ไปยังชนิดพอยน์เตอร์ใด ๆ มันได้รับการเลื่อนอย่างปลอดภัยเสมอ อย่างไรก็ตามใน C ++ นี่ไม่ใช่กรณี เช่น, int *a = malloc(sizeof(int)); ทำงานใน C แต่ไม่ใช่ใน C ++ (หมายเหตุ: ฉันรู้ว่าคุณไม่ควรใช้mallocใน C ++ หรือสำหรับเรื่องnewนั้นและควรเลือกสมาร์ทพอยน์เตอร์และ / หรือ STL แทนที่จะถามสิ่งนี้เพราะความอยากรู้อยากเห็น) ทำไมมาตรฐาน C ++ จึงไม่อนุญาตให้ใช้แบบจำลองนี้ ในขณะที่มาตรฐาน C ทำอะไร

5
ทำไมการเรียนล่ามเสียงกระเพื่อมในเสียงกระเพื่อมจึงสำคัญ?
ฉันได้เห็นหลักสูตร CS และคำแนะนำการเรียนรู้มากมายสำหรับโปรแกรมเมอร์ใหม่ที่เรียกร้องให้โปรแกรมเมอร์ที่ต้องการศึกษาล่ามเสียงกระเพื่อมที่เขียนโดยเฉพาะในเสียงกระเพื่อม เว็บไซต์ทั้งหมดเหล่านี้พูดสิ่งที่คล้ายกับ "ของมันเปิดเผยทางปัญญา" "มันเป็นประสบการณ์ที่ตรัสรู้โปรแกรมเมอร์ทุกคนอย่างจริงจังควรจะมี" หรือ "มันแสดงให้คุณเห็นความสัมพันธ์ของฮาร์ดแวร์ / ซอฟแวร์" และงบคลุมเครืออื่น ๆ โดยเฉพาะอย่างยิ่งจากบทความนี้นำมาจากนี้วิธีการที่มีชื่อเสียง ความเชื่อมั่นทั่วไปของคำถามของฉันคือเสียงกระเพื่อมบรรลุเป้าหมายข้างต้นและทำไมเสียงกระเพื่อม? ทำไมจึงไม่ใช้ภาษาอื่น ฉันถามสิ่งนี้เพราะฉันเพิ่งเสร็จสิ้นการเขียนล่ามแบบแผนในโครงการ (นำมาจาก SICP http://mitpress.mit.edu/sicp/ ) และตอนนี้ฉันกำลังเขียนล่ามหลามในแบบแผนและฉันกำลังพยายามที่จะมีความศักดิ์สิทธิ์ตามตำนานนี้ ที่ควรมาจากอดีตโดยเฉพาะ ฉันกำลังมองหารายละเอียดทางเทคนิคเฉพาะระหว่างสองภาษาที่ฉันสามารถใช้ประโยชน์จากล่ามในโครงการเพื่อทำความเข้าใจเกี่ยวกับวิธีการทำงานของโปรแกรม โดยเฉพาะอย่างยิ่ง: เหตุใดการศึกษาล่ามที่เขียนด้วยภาษาที่ล่ามจึงเน้น - เป็นเพียงการออกกำลังกายทางจิตที่ดีในการรักษาภาษาดั้งเดิมและภาษาที่สร้างขึ้นตรงหรือมีปัญหาเฉพาะที่สามารถหาวิธีแก้ปัญหาในลักษณะของ ภาษาต้นฉบับ? ล่ามเสียงกระเพื่อมแสดงให้เห็นถึงแนวคิดสถาปัตยกรรมที่ดีสำหรับการออกแบบซอฟต์แวร์ในอนาคต ฉันจะพลาดอะไรถ้าฉันทำแบบฝึกหัดนี้ในภาษาอื่นเช่น C ++ หรือ Java เป็นสิ่งที่ใช้มากที่สุด Takeaway หรือ "เครื่องมือทางจิต" จากการออกกำลังกายนี้? ** ** ฉันเลือกคำตอบที่ผมทำเพราะผมได้สังเกตเห็นว่าผมได้รับจากการใช้สิทธิทักษะมากขึ้นในการออกแบบเครื่องมือแยกในหัวของฉันกว่าเครื่องมืออื่น ๆ เดียวและฉันต้องการที่จะหาวิธีการที่แตกต่างกันของการแยกที่อาจทำงานได้ดีขึ้นสำหรับโครงการ ล่ามกว่าล่ามหลาม

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

3
ทำไมสมาชิกส่วนตัวสามารถเข้าถึงได้ในวิธีการคงที่?
ต่อไปนี้เป็นรหัสหลอกฉันลองใน Java และ PHP และทั้งสองทำงาน: class Test { private int a = 5; public static function do_test(){ var t = new Test(); t.a = 1; print t.a // 1 } } Test::do_test(); ทำไมคุณสามารถทำสิ่งนี้ในกระบวนทัศน์ OOP และการใช้งานของมันคืออะไร?

13
เหตุใดฐานข้อมูลจึงไม่รวมเป็นคุณสมบัติภาษา
มีภาษาการเขียนโปรแกรมที่มีฐานข้อมูลในตัวเป็นคุณสมบัติภาษาชั้นหนึ่งมากกว่าการเชื่อมต่อกับฐานข้อมูล SQL (หรืออื่น ๆ ) ภายนอกหรือไม่? อะไรคือข้อเสียและประโยชน์ของฟีเจอร์ดังกล่าว? คุณลักษณะเช่นนี้จะมีลักษณะเป็นอย่างไรและจะเปลี่ยนวิธีการตั้งโปรแกรมของเราอย่างไร

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