คำถามติดแท็ก programming-languages

ภาษาโปรแกรมเป็นภาษาประดิษฐ์ที่ออกแบบมาเพื่อแสดงการคำนวณที่เครื่องสามารถทำได้ ** โปรดทราบ: ** เช่นเดียวกับกรณีอื่น ๆ ใน Stack Overflow คำขอแนะนำแหล่งข้อมูลและบทช่วยสอนคำขอรายการสิ่งต่างๆ ("ภาษาใดมีคุณลักษณะนี้ ... ") และตามความคิดเห็นมากเกินไป ("อะไรดีที่สุด ... ") คำถามนอกประเด็น


25
ฉันควรใช้การคูณหรือการหาร?
นี่เป็นคำถามสนุก ๆ โง่ ๆ : สมมติว่าเราต้องดำเนินการง่ายๆโดยที่เราต้องการครึ่งหนึ่งของค่าของตัวแปร โดยทั่วไปมีสองวิธีในการดำเนินการนี้: y = x / 2.0; // or... y = x * 0.5; สมมติว่าเราใช้โอเปอเรเตอร์มาตรฐานที่ให้มาพร้อมกับภาษาอันไหนมีประสิทธิภาพดีกว่ากัน? ฉันเดาว่าการคูณมักจะดีกว่าดังนั้นฉันจึงพยายามยึดติดกับสิ่งนั้นเมื่อฉันเขียนโค้ด แต่ฉันต้องการยืนยันสิ่งนี้ แม้ว่าโดยส่วนตัวแล้วฉันสนใจคำตอบสำหรับPython 2.4-2.5 แต่อย่าลังเลที่จะโพสต์คำตอบสำหรับภาษาอื่น ๆ ! และหากคุณต้องการอย่าลังเลที่จะโพสต์วิธีที่น่าสนใจอื่น ๆ (เช่นการใช้ตัวดำเนินการกะบิต) เช่นกัน

7
อะไรคือความแตกต่างระหว่างภาษาที่รวบรวมและแปลความหมาย?
หลังจากอ่านเนื้อหาบางส่วนเกี่ยวกับเรื่องนี้แล้วฉันยังไม่แน่ใจว่าความแตกต่างระหว่างภาษาคอมไพล์และภาษาที่ตีความหมายคืออะไร ฉันบอกว่านี่เป็นหนึ่งในความแตกต่างระหว่าง Java และ JavaScript มีใครช่วยฉันทำความเข้าใจได้ไหม

4
WebAssembly (Wasm) สามารถคอมไพล์ภาษาอะไรได้บ้าง
WebAssembly (Wasm) สามารถคอมไพล์ภาษาอะไรได้บ้าง ฉันเชื่อว่าตอนนี้ C, C ++ และ Rust (ทดลอง) สามารถคอมไพล์ไปยัง WebAssembly ได้ด้วยแบ็กเอนด์คอมไพเลอร์ llvm ซึ่งมีภาษาเช่น Java, Swift และ C # ไม่ได้รับการสนับสนุนในขณะนี้ แต่เป็นตัวเลือกที่เป็นไปได้สำหรับการพัฒนาในอนาคต ฉันไม่เชื่อว่า JavaScript สามารถคอมไพล์ไปยัง Wasm ได้ https://github.com/WebAssembly/design/issues/219


9
เข้าใจความแตกต่างระหว่างขั้นตอนและการทำงานอย่างแท้จริง
ฉันมีช่วงเวลาที่ยากลำบากในการทำความเข้าใจความแตกต่างระหว่างกระบวนทัศน์การเขียนโปรแกรมขั้นตอนและฟังก์ชัน นี่คือสองย่อหน้าแรกจากรายการ Wikipedia เกี่ยวกับการเขียนโปรแกรมเชิงฟังก์ชัน : ในวิทยาการคอมพิวเตอร์การเขียนโปรแกรมเชิงฟังก์ชันเป็นกระบวนทัศน์การเขียนโปรแกรมที่ถือว่าการคำนวณเป็นการประเมินฟังก์ชันทางคณิตศาสตร์และหลีกเลี่ยงสถานะและข้อมูลที่ไม่แน่นอน เน้นการประยุกต์ใช้ฟังก์ชันตรงกันข้ามกับรูปแบบการเขียนโปรแกรมที่จำเป็นซึ่งเน้นการเปลี่ยนแปลงในสถานะ การเขียนโปรแกรมเชิงฟังก์ชันมีรากฐานมาจากแคลคูลัสแลมบ์ดาซึ่งเป็นระบบทางการที่พัฒนาขึ้นในช่วงทศวรรษที่ 1930 เพื่อตรวจสอบนิยามของฟังก์ชันการประยุกต์ใช้ฟังก์ชันและการเรียกซ้ำ ภาษาโปรแกรมที่ใช้งานได้หลายภาษาสามารถมองว่าเป็นรายละเอียดเกี่ยวกับแคลคูลัสแลมบ์ดา ในทางปฏิบัติความแตกต่างระหว่างฟังก์ชันทางคณิตศาสตร์และความคิดของ "ฟังก์ชัน" ที่ใช้ในการเขียนโปรแกรมที่จำเป็นคือฟังก์ชันที่จำเป็นอาจมีผลข้างเคียงทำให้ค่าสถานะของโปรแกรมเปลี่ยนไป ด้วยเหตุนี้พวกเขาจึงขาดความโปร่งใสในการอ้างอิงกล่าวคือการแสดงออกของภาษาเดียวกันอาจทำให้เกิดค่าที่แตกต่างกันในช่วงเวลาที่ต่างกันขึ้นอยู่กับสถานะของโปรแกรมการดำเนินการ ในทางกลับกันในโค้ดฟังก์ชันค่าเอาต์พุตของฟังก์ชันจะขึ้นอยู่กับอาร์กิวเมนต์ที่ป้อนให้กับฟังก์ชันเท่านั้นดังนั้นการเรียกใช้ฟังก์ชัน fสองครั้งด้วยค่าเดียวกันสำหรับอาร์กิวเมนต์xจะให้ผลลัพธ์เดียวกันf(x)ทั้งสองครั้ง การขจัดผลข้างเคียงสามารถทำให้เข้าใจและทำนายพฤติกรรมของโปรแกรมได้ง่ายขึ้นซึ่งเป็นหนึ่งในแรงจูงใจสำคัญในการพัฒนาการเขียนโปรแกรมเชิงฟังก์ชัน ในวรรค 2 ที่ระบุว่า ในทางกลับกันในโค้ดเชิงฟังก์ชันค่าเอาต์พุตของฟังก์ชันจะขึ้นอยู่กับอาร์กิวเมนต์ที่ป้อนให้กับฟังก์ชันเท่านั้นดังนั้นการเรียกใช้ฟังก์ชันfสองครั้งด้วยค่าเดียวกันสำหรับอาร์กิวเมนต์xจะให้ผลลัพธ์เดียวกันf(x)ทั้งสองครั้ง นั่นไม่ใช่กรณีเดียวกันสำหรับการเขียนโปรแกรมขั้นตอนหรือไม่? เราควรมองหาอะไรในขั้นตอนและฟังก์ชันที่โดดเด่น?

30
ภาษาใดถือว่าเป็นภาษาสคริปต์ [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ปิดให้บริการใน6 ปีที่ผ่านมา ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ อะไรทำให้ภาษาเป็นภาษาสคริปต์? ฉันเคยได้ยินบางคนพูดว่า "เมื่อถูกตีความแทนที่จะรวบรวม" นั่นจะทำให้ PHP (ตัวอย่าง) เป็นภาษาสคริปต์ เป็นเกณฑ์เดียวหรือไม่? หรือมีหลักเกณฑ์อื่นอีกหรือไม่? ดูสิ่งนี้ด้วย: “ สคริปต์” กับ“ แอปพลิเคชัน” ต่างกันอย่างไร

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

7
เหตุใดจึงคำนวณวันที่ตั้งแต่ 1 มกราคม 1970
มีเหตุผลใดบ้างที่ใช้วันที่ (1 มกราคม 1970) เป็นมาตรฐานเริ่มต้นสำหรับการปรับเวลา ฉันเคยเห็นมาตรฐานนี้ใน Java และใน Python สองภาษานี้ฉันรู้ มีภาษายอดนิยมอื่น ๆ ที่เป็นไปตามมาตรฐานเดียวกันหรือไม่? กรุณาอธิบาย

7
การเรียนภาษาแอสเซมบลีคุ้มค่าหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน9 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ยังคุ้มค่าที่จะเรียนรู้ASMหรือไม่? ฉันรู้เล็กน้อย แต่ฉันไม่ได้ใช้มันหรือเรียนรู้อย่างถูกต้องจริงๆเพราะทุกสิ่งที่ฉันเรียนรู้ในแอสเซมเบลอร์ฉันสามารถทำได้ใน 1/10 เวลากับบางภาษาเช่น C หรือ C ++ ดังนั้นฉันควรเรียนรู้และใช้ ASM จริง ๆ หรือไม่? มันจะทำให้ฉันเป็นมืออาชีพที่ดีได้หรือไม่? มันจะเพิ่มความมั่งคั่งของฉันหรือไม่? ในระยะสั้นมันจะทำให้ฉันเป็นโปรแกรมเมอร์ที่ดีขึ้นได้หรือไม่? หมายเหตุ: ฉันกำลังพูดถึงแอสเซมบลีระดับต่ำเช่นFASMหรือNASMไม่ใช่HLA (High-Level Assembler)

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

12
มี“ ตรงข้าม” กับตัวดำเนินการการรวมกันเป็นโมฆะหรือไม่? (…เป็นภาษาอะไร?)
การรวมกันเป็นโมฆะแปลได้คร่าวๆว่า return x, unless it is null, in which case return y ฉันมักจะต้องการ return null if x is null, otherwise return x.y ฉันสามารถใช้ return x == null ? null : x.y; ไม่เลว แต่nullตรงกลางมักรบกวนฉัน - ดูเหมือนฟุ่มเฟือย ฉันไม่ต้องการสิ่งที่ต้องการreturn x :: x.y;ซึ่งสิ่งที่ตามมาคือการประเมินเฉพาะในกรณีที่สิ่งที่นำหน้ามันไม่ได้เป็น::null ฉันเห็นว่านี่เกือบจะตรงข้ามกับการรวมกันเป็นโมฆะซึ่งผสมกับ terse, อินไลน์เช็คโมฆะ แต่ฉัน [ เกือบ ] แน่ใจว่าไม่มีตัวดำเนินการดังกล่าวใน C # มีภาษาอื่นที่มีตัวดำเนินการดังกล่าวหรือไม่? …

8
วิธีการสร้างภาษาโปรแกรม JVM?
ฉันได้สร้างคอมไพเลอร์ในภาษา C (โดยใช้ Lex & Bison) สำหรับภาษาการเขียนโปรแกรมแบบไดนามิกที่รองรับลูปการประกาศฟังก์ชันภายในฟังก์ชันการเรียกซ้ำ ฯลฯ ฉันยังสร้างเครื่องเสมือนที่รันโค้ดกลางที่สร้างโดยคอมไพเลอร์ ฉันกำลังคิดเกี่ยวกับการรวบรวมเป็น Java bytecode แทนที่จะเป็นรหัสกลางของฉันเอง ผมเห็นว่าคำถามเกี่ยวกับการสร้างภาษา JVM ได้รับแล้วถามแต่ผมไม่หาคำตอบให้ข้อมูลมาก นี่คือคำถามของฉัน: ฉันเดาว่าจะสร้างภาษาสำหรับ JVM สิ่งที่ต้องทำคือการอ่านหนังสือข้อกำหนดของ JVMคุณสามารถแนะนำหนังสืออะไรได้อีกบ้าง (ยกเว้น Dragon Book แน่นอน) ส่วนใหญ่ฉันกังวลเกี่ยวกับหนังสือหรือแบบฝึกหัดเกี่ยวกับวิธีสร้างภาษา JVM ไม่ใช่คอมไพเลอร์โดยทั่วไป มีไลบรารี Java มากมายสำหรับอ่านเขียนและเปลี่ยน.classไฟล์เช่นjclasslib , bcel , gnu bytecodeฯลฯ คุณจะแนะนำตัวไหน นอกจากนี้คุณทราบถึงไลบรารี C ที่ทำงานเดียวกันหรือไม่? ฉันกำลังคิดที่จะดูภาษาอื่นที่กำหนดเป้าหมายไปที่ JVM เช่น Clojure, Jython หรือ JRuby แต่ภาษาทั้งหมดเหล่านี้มีระดับสูงและซับซ้อนมาก (เพื่อสร้างคอมไพเลอร์สำหรับพวกเขา) ฉันกำลังมองหาภาษาการเขียนโปรแกรมที่ง่ายกว่า …

9
ภาษาการเขียนโปรแกรมเชิงฟังก์ชันทำงานอย่างไร
หากภาษาโปรแกรมที่ใช้งานได้ไม่สามารถบันทึกสถานะใด ๆ ได้พวกเขาจะทำสิ่งง่ายๆเช่นการอ่านอินพุตจากผู้ใช้อย่างไร พวกเขา "จัดเก็บ" อินพุต (หรือจัดเก็บข้อมูลสำหรับเรื่องนั้นอย่างไร) ตัวอย่างเช่นสิ่งที่ C ง่ายๆนี้จะแปลเป็นภาษาโปรแกรมที่ใช้งานได้เช่น Haskell ได้อย่างไร #include<stdio.h> int main() { int no; scanf("%d",&no); return 0; } (คำถามของฉันได้รับแรงบันดาลใจจากโพสต์ที่ยอดเยี่ยมนี้: "Execution in the Kingdom of Nouns" การอ่านมันทำให้ฉันเข้าใจดีขึ้นว่าการเขียนโปรแกรมเชิงวัตถุคืออะไร Java ใช้งานอย่างไรในลักษณะที่รุนแรงและภาษาโปรแกรมที่ใช้งานได้นั้นเป็นอย่างไร ตรงกันข้าม)

18
ไฟล์ config กลายเป็นภาษาโปรแกรมที่จุดใด
ฉันใช้ไฟล์ config และความสัมพันธ์กับโค้ดมาระยะหนึ่งแล้วและขึ้นอยู่กับวันและทิศทางของลมความคิดเห็นของฉันดูเหมือนจะเปลี่ยนไป มากขึ้นเรื่อย ๆ แม้ว่าฉันจะกลับมาสู่การตระหนักรู้ครั้งแรกในขณะที่เรียนรู้ Lisp: มีความแตกต่างเล็กน้อยระหว่างข้อมูลและรหัส สิ่งนี้ดูเหมือนจะเป็นจริงทวีคูณสำหรับไฟล์ config เมื่อมองในแง่ที่ถูกต้องสคริปต์ Perl จะมากกว่าไฟล์ config สำหรับ perl เล็กน้อย สิ่งนี้มีแนวโน้มที่จะส่งผลที่ค่อนข้างหนักสำหรับงานเช่น QA และแผนกต่างๆเช่นใครควรรับผิดชอบในการเปลี่ยนไฟล์ config การคืบจากไฟล์กำหนดค่าไปเป็นภาษาที่สมบูรณ์โดยทั่วไปจะทำงานช้าและดูเหมือนว่าจะได้รับแรงหนุนจากความปรารถนาที่จะมีระบบทั่วไป โปรเจ็กต์ส่วนใหญ่ดูเหมือนจะเริ่มต้นเล็ก ๆ ด้วยรายการกำหนดค่าบางอย่างเช่นตำแหน่งที่จะเขียนบันทึกค้นหาข้อมูลชื่อผู้ใช้และรหัสผ่าน ฯลฯ แต่จากนั้นพวกเขาก็เริ่มเติบโตขึ้น: ฟีเจอร์ต่างๆเริ่มที่จะสามารถเปิดหรือปิดได้ การกำหนดเวลาและลำดับของการดำเนินการเริ่มได้รับการควบคุมและบางคนต้องการเริ่มเพิ่มลอจิกเข้าไปอย่างหลีกเลี่ยงไม่ได้ (เช่นใช้ 10 ถ้าเครื่องเป็น X และ 15 ถ้าเครื่องเป็น Y) เมื่อถึงจุดหนึ่งไฟล์ config จะกลายเป็นภาษาเฉพาะของโดเมนและภาษาที่เขียนไม่ดี ตอนนี้ฉันได้เดินเตร่เพื่อตั้งเวทีคำถามของฉันมีดังนี้: วัตถุประสงค์ที่แท้จริงของไฟล์กำหนดค่าคืออะไร? ควรพยายามทำให้ไฟล์ config เป็นเรื่องง่ายหรือไม่? ใครควรรับผิดชอบในการเปลี่ยนแปลงสิ่งเหล่านี้ (นักพัฒนาผู้ใช้ผู้ดูแลระบบ ฯลฯ ) ควรควบคุมแหล่งที่มา …

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