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

ภาษาประดิษฐ์สำหรับสั่งคอมพิวเตอร์ให้ทำขั้นตอนการคำนวณเพื่อให้งานสำเร็จ อนุญาตให้โปรแกรมเมอร์สื่อสารกับคอมพิวเตอร์

30
ฉันจะสร้างภาษาการเขียนโปรแกรมของตัวเองและคอมไพเลอร์ได้อย่างไร [ปิด]
ฉันถี่ถ้วนกับการเขียนโปรแกรมและได้เจอภาษาต่างๆเช่นภาษาเบสิกภาษาฟอร์แทรนภาษาโคบอล LISP โลโก้ Java, C ++, C, MATLAB, Mathematica, Python, Ruby, Perl, JavaScript, Assembly เป็นต้น ฉันไม่เข้าใจว่าผู้คนสร้างภาษาการเขียนโปรแกรมและประดิษฐ์คอมไพเลอร์อย่างไร ฉันยังไม่เข้าใจว่าผู้คนสร้างระบบปฏิบัติการเช่น Windows, Mac, UNIX, DOS และอื่น ๆ อย่างไร สิ่งอื่น ๆ ที่ลึกลับสำหรับฉันคือวิธีที่ผู้คนสร้างห้องสมุดเช่น OpenGL, OpenCL, OpenCV, Cocoa, MFC และอื่น ๆ สิ่งสุดท้ายที่ฉันไม่สามารถเข้าใจได้ก็คือวิธีที่นักวิทยาศาสตร์คิดค้นภาษาแอสเซมบลีและแอสเซมเบลอร์สำหรับไมโครโปรเซสเซอร์ ฉันอยากจะเรียนรู้สิ่งเหล่านี้ทั้งหมดและฉันอายุ 15 ปี ฉันมักจะต้องการเป็นนักวิทยาศาสตร์คอมพิวเตอร์ที่ชอบ Babbage, Turing, Shannon หรือ Dennis Ritchie ฉันได้อ่านหนังสือการออกแบบคอมไพเลอร์ของ Aho แล้วและแนวคิดระบบปฏิบัติการของ Tanenbaum และพวกเขาทั้งหมดพูดถึงแนวคิดและรหัสในระดับสูงเท่านั้น …

4
โปรแกรมช่องว่างของสหภาพโซเวียตใช้ภาษาโปรแกรมซอฟต์แวร์อะไร
ฉันสนใจโปรแกรมอวกาศของโซเวียตและสนใจที่จะค้นพบว่าซอฟต์แวร์บนยานอวกาศ Buranประมาณปี 1988 เขียนขึ้นใน Prolog มีใครรู้บ้างไหมว่าภาษาใดบ้างที่อาจถูกนำมาใช้ในภารกิจก่อนหน้านี้โดยเฉพาะอย่างยิ่งภารกิจยานพรวนดิน Mars PrOP-Mในต้นปี 1970 ซึ่งค่อนข้างอิสระและสามารถนำทางอุปสรรคได้ แก้ไข แหล่งที่มาของฉันสำหรับ Buran Prolog เป็นเอกสารที่ไม่เป็นความลับอีกต่อไปจากไซต์ CIAเมื่อเดือนพฤษภาคม 1990 ฉันไม่พบเวอร์ชัน OCR ดังนั้นนี่เป็นคำพูดที่เกี่ยวข้องจาก p 0449: ตามวรรณคดีโอเพนซอร์ซโซเวียตใช้ภาษาเขียนโปรแกรมที่พัฒนาโดยฝรั่งเศสที่รู้จักกันในชื่อ Prolog เพื่อพัฒนาซอฟต์แวร์ระบบออนบอร์ดสำหรับยาน Buran ...

16
วัฒนธรรม Grokking Java - ทำไมสิ่งต่าง ๆ ถึงหนักนัก มันเหมาะกับอะไร? [ปิด]
ฉันเคยใช้รหัสใน Python มาก ตอนนี้สำหรับเหตุผลการทำงานฉันรหัสใน Java โครงการที่ฉันทำมีขนาดค่อนข้างเล็กและ Python อาจทำงานได้ดีขึ้น แต่มีเหตุผลที่ไม่เป็นวิศวกรรมที่ถูกต้องในการใช้ Java (ฉันไม่สามารถอธิบายรายละเอียดได้) ไวยากรณ์ของ Java ไม่มีปัญหา มันเป็นเพียงภาษาอื่น แต่นอกเหนือจากไวยากรณ์แล้ว Java ยังมีวัฒนธรรมชุดวิธีการพัฒนาและวิธีปฏิบัติที่ถือว่า "ถูกต้อง" และสำหรับตอนนี้ฉันล้มเหลวอย่างสิ้นเชิงที่จะ "คร่ำครวญ" วัฒนธรรมนั้น ดังนั้นฉันจะขอบคุณคำอธิบายหรือพอยน์เตอร์ในทิศทางที่ถูกต้อง ตัวอย่างที่สมบูรณ์แบบน้อยที่สุดมีอยู่ในคำถาม Stack Overflow ที่ฉันเริ่มต้น: https://stackoverflow.com/questions/43619566/returning-a-result-with-several-values-the-java-way/43620339 ฉันมีงาน - แยก (จากสตริงเดียว) และจัดการชุดสามค่า ใน Python มันเป็นหนึ่งซับ (tuple) ใน Pascal หรือ C-5 ซับเร็กคอร์ด / struct ตามคำตอบที่เทียบเท่าของ struct มีอยู่ในไวยากรณ์ Java และสามมีอยู่ในห้องสมุด Apache …

9
ทำไมผู้คนถึงลังเลที่จะใช้ Python 3
Python 3 เปิดตัวในเดือนธันวาคม 2551 เวลาผ่านไปนานมากแล้ว แต่จนถึงทุกวันนี้นักพัฒนาหลายคนลังเลที่จะใช้ Python 3 แม้แต่กรอบงานที่ได้รับความนิยมอย่าง Django ก็ไม่สามารถทำงานร่วมกับ Python 3 ได้ แต่ก็ยังต้องพึ่งพา Python 2 แน่นอนว่า Python 3 มีความเข้ากันไม่ได้กับ Python 2 และบางคนจำเป็นต้องพึ่งพาความเข้ากันได้แบบย้อนหลัง แต่ Python 3 ยังไม่พอสำหรับโปรเจ็กต์ส่วนใหญ่ที่จะเปลี่ยนหรือเริ่มต้นด้วย Python 3 การมีสองเวอร์ชันที่แข่งขันกันนั้นมีข้อเสียมากมาย สองสาขาต้องได้รับการดูแลรักษาความสับสนสำหรับผู้เรียนและอื่น ๆ เหตุใดจึงมีความลังเลอย่างมากในชุมชน Python เกี่ยวกับการเปลี่ยนเป็น Python 3

8
ทุกภาษาเขียนด้วยภาษา C หรือไม่
บางครั้งในขณะที่การเขียนโปรแกรมในภาษาต่างๆ (C / C ++, C #) ความคิดนี้อยู่ในใจของฉัน: ภาษาแต่ละภาษาเขียนด้วยภาษา C หรือไม่? ภาษา C เป็นแม่ / พ่อของทุกภาษาหรือไม่ แต่ละแนวคิด ( OOPฯลฯ ) ถูกนำไปใช้ใน C หรือไม่ ฉันไปในทิศทางที่ถูกต้องหรือไม่

19
มีเหตุผลใดที่จะใช้ C ++ แทน C, Perl, Python และอื่น ๆ ? [ปิด]
ในฐานะนักพัฒนา Linux (ฝั่งเซิร์ฟเวอร์) ฉันไม่รู้ว่าที่ไหนและเพราะเหตุใดฉันจึงควรใช้ C ++ เมื่อฉันจะไปแสดงตัวเลือกแรกและสุดท้ายคือ C เมื่อ "ประสิทธิภาพ" ไม่ใช่ปัญหาหลักภาษาการเขียนโปรแกรมเช่น Perl และ Python จะเป็นตัวเลือกที่ดี เกือบทุกแอพพลิเคชั่นโอเพนซอร์ซที่ฉันรู้จักในพื้นที่นี้เขียนด้วยภาษา C, Perl, Python, Bash script, AWKหรือแม้แต่ PHP แต่ไม่มีใครใช้ C ++ ฉันไม่ได้พูดถึงเรื่องอื่น ๆ เช่น GUI หรือเว็บแอปพลิเคชันฉันแค่พูดถึง Linux, CLI และ daemons มีเหตุผลที่น่าพอใจในการใช้ C ++ หรือไม่?

26
การค้นหาตัวอย่างรหัสอย่างสม่ำเสมอเป็นสัญญาณของนักพัฒนาซอฟต์แวร์ที่ไม่ดีหรือไม่ [ปิด]
ฉันเป็นนักเรียน CS ที่มีประสบการณ์หลายปีใน C และ C ++ และในช่วงไม่กี่ปีที่ผ่านมาฉันทำงานกับ Java / Objective C เพื่อพัฒนาแอพอย่างต่อเนื่องและตอนนี้ฉันได้เปลี่ยนไปใช้การพัฒนาเว็บและเน้นที่ทับทิมเป็นหลัก Rails และฉันมาถึงสำนึกว่า (เช่นเดียวกับการพัฒนาแอพจริงๆ) ฉันอ้างอิงวิธีอื่น ๆ ของรหัสมากเกินไป ฉันใช้ฟังก์ชั่นของ Google อย่างต่อเนื่องในหลาย ๆ สิ่งที่ฉันคิดว่าฉันควรจะทำได้ตั้งแต่เริ่มต้นและมันทำให้ฉันมั่นใจเล็กน้อย พื้นฐานพื้นฐานไม่ใช่ปัญหาฉันเกลียดที่จะใช้สิ่งนี้เป็นตัวอย่าง แต่ฉันสามารถเรียกใช้ผ่าน javabat ในทั้ง java / python ที่ sprint - เห็นได้ชัดว่าไม่ใช่ความสำเร็จและสิ่งที่ฉันหมายถึงคือฉันมีฐานที่แข็งแกร่งสำหรับพื้นฐาน ฉันคิด? ฉันรู้ว่าสิ่งที่ฉันจำเป็นต้องใช้โดยทั่วไป แต่การอ้างอิงไวยากรณ์อย่างต่อเนื่อง จะรักคำแนะนำและข้อมูลเกี่ยวกับเรื่องนี้เพราะมันถือฉันกลับค่อนข้างแน่นหนาในแง่ของการหางานในสาขานี้แม้ว่าฉันจะจบการศึกษาระดับปริญญาของฉัน เหตุผลหลักของฉันสำหรับการถามไม่ได้เกี่ยวกับการจ้างงานจริง ๆ แต่ยิ่งกว่านั้นฉันไม่ต้องการเป็นคนเดียวที่ Hackathon ไม่ได้ตอกรหัส nonstop และนั่งอยู่ที่นั่นพร้อมกับแท็บ Google 20 / github …

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

24
ข้อเสียของ Python คืออะไร [ปิด]
Python ดูเหมือนจะโกรธแค้นในทุกวันนี้และไม่ใช่เรื่องที่ไม่สมควรเพราะมันเป็นภาษาที่แท้จริงที่คนส่วนใหญ่ชอบที่จะได้รับปัญหาใหม่ในการแก้ปัญหา แต่ในฐานะที่เป็นนักปราชญ์เคยกล่าวไว้ว่า (เรียกเขาว่านักปราชญ์เท่านั้นเพราะฉันไม่รู้ว่าใครพูดจริง ๆ ไม่แน่ใจว่าเขาเป็นคนฉลาดเลย) เพื่อรู้ภาษาที่แท้จริงไม่เพียง แต่รู้ ไวยากรณ์, การออกแบบ, ฯลฯ , ข้อดี แต่ยังรวมถึงข้อเสียของมัน ไม่มีภาษาใดที่สมบูรณ์แบบบางคนดีกว่าคนอื่น ดังนั้นสิ่งที่จะเป็นในความคิดของคุณข้อเสียวัตถุประสงค์ของงูหลาม หมายเหตุ: ฉันไม่ได้ขอให้เปรียบเทียบภาษาที่นี่ (เช่น C # ดีกว่า Python เพราะ ... yadda yadda yadda) - มีวัตถุประสงค์มากกว่า (ในบางระดับ) ความคิดเห็นที่คุณลักษณะภาษาได้รับการออกแบบไม่ดีไม่ว่าจะเป็นอะไร บางอย่างที่คุณขาดไปและอื่น ๆ หากต้องใช้ภาษาอื่นเป็นการเปรียบเทียบ แต่เพียงเพื่อแสดงให้เห็นถึงจุดที่ยากที่จะอธิบายรายละเอียดอย่างอื่น (เช่นเพื่อความเข้าใจง่าย)

15
ทำไมภาษาที่มีการจัดการหน่วยความจำเช่น Java, Javascript และ C # จึงยังคงรักษาคำหลัก `ใหม่ 'อยู่
newคำหลักในภาษาเช่น Java, JavaScript, และ C # สร้างตัวอย่างใหม่ของชั้นเรียน ดูเหมือนว่าไวยากรณ์นี้จะได้รับการสืบทอดมาจาก C ++ ซึ่งnewมีการใช้เฉพาะเพื่อจัดสรรอินสแตนซ์ใหม่ของคลาสบนฮีปและส่งกลับตัวชี้ไปยังอินสแตนซ์ใหม่ ใน C ++ นี่ไม่ใช่วิธีเดียวในการสร้างวัตถุ คุณยังสามารถสร้างวัตถุบนสแต็กโดยไม่ต้องใช้new- และในความเป็นจริงวิธีการสร้างวัตถุนี้เป็นเรื่องธรรมดามากใน C ++ ดังนั้นมาจากพื้นหลัง C ++ newคำสำคัญในภาษาเช่น Java, Javascript และ C # ดูเป็นธรรมชาติและชัดเจนสำหรับฉัน จากนั้นฉันก็เริ่มเรียนรู้ Python ซึ่งไม่มีnewคำหลัก ใน Python อินสแตนซ์ถูกสร้างโดยการเรียกนวกรรมิกเช่น: f = Foo() ในตอนแรกสิ่งนี้ดูจะยากสำหรับฉันจนกว่ามันจะเกิดขึ้นกับฉันว่า Python ไม่มีเหตุผลnewเพราะทุกอย่างเป็นวัตถุดังนั้นจึงไม่จำเป็นต้องแยกแยะระหว่างไวยากรณ์ตัวสร้างต่าง ๆ แต่แล้วฉันก็คิดว่า - จุดประสงค์newใน Java คืออะไร? ทำไมเราควรจะพูดว่าObject o = …

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

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

9
มีเหตุผล "ของจริง" ที่ไม่ชอบการสืบทอดหลายครั้งหรือไม่
ฉันชอบความคิดที่ว่าจะมีหลายมรดกที่สนับสนุนในภาษา ส่วนใหญ่มักจะลืมมันโดยเจตนาและ "การแทนที่" ที่ควรจะเป็นอินเตอร์เฟส การเชื่อมต่อก็ไม่ได้ครอบคลุมการสืบทอดหลาย ๆ อันเหมือนกันทั้งหมดและข้อ จำกัด นี้บางครั้งอาจนำไปสู่รหัสสำเร็จรูปมากขึ้น เหตุผลพื้นฐานเดียวที่ฉันเคยได้ยินเรื่องนี้คือปัญหาเพชรกับชั้นเรียนพื้นฐาน ฉันไม่สามารถยอมรับได้ สำหรับฉันมันหลุดออกมามากมายเช่น "เอาละมันเป็นไปได้ที่จะพลาดมันดังนั้นมันจึงเป็นความคิดที่ไม่ดีโดยอัตโนมัติ" คุณสามารถทำอะไรผิดพลาดในภาษาการเขียนโปรแกรมและฉันหมายถึงอะไร ฉันไม่สามารถทำสิ่งนี้ได้อย่างจริงจังอย่างน้อยก็ไม่ใช่โดยไม่ต้องอธิบายให้ละเอียด เพียงตระหนักถึงปัญหานี้ 90% ของการต่อสู้ นอกจากนี้ฉันคิดว่าฉันได้ยินบางสิ่งบางอย่างเมื่อหลายปีก่อนเกี่ยวกับวัตถุประสงค์ทั่วไปที่เกี่ยวข้องกับอัลกอริทึม "ซองจดหมาย" หรืออะไรทำนองนั้น (เสียงกริ่งดังขึ้นทุกคนหรือไม่) ปัญหาเกี่ยวกับเพชรปัญหาของแท้ที่ฉันอาจนึกได้คือถ้าคุณพยายามใช้ห้องสมุดบุคคลที่สามและไม่เห็นว่าสองคลาสที่ไม่เกี่ยวข้องกันดูเหมือนว่าในห้องสมุดนั้นมีคลาสพื้นฐานร่วมกัน แต่นอกเหนือไปจาก เอกสารคุณสมบัติของภาษาที่ง่ายอาจทำให้คุณต้องการประกาศความตั้งใจในการสร้างข้าวหลามตัดก่อนที่จะทำการรวบรวมเพชรให้คุณ ด้วยคุณสมบัติเช่นนี้การสร้างเพชรใด ๆ ก็อาจเป็นการจงใจไม่ประมาทหรือเพราะไม่มีใครรู้ถึงความผิดพลาดนี้ เพื่อให้ทุกคนพูดว่า ... มีเหตุผลจริงหรือที่คนส่วนใหญ่เกลียดชังมรดกหลายอย่างหรือว่ามันเป็นเพียงแค่กลุ่มฮิสทีเรียที่ก่อให้เกิดอันตรายมากกว่าดี? มีบางอย่างที่ฉันไม่เห็นใช่ไหม ขอขอบคุณ. ตัวอย่าง รถขยาย WheeledVehicle, KIASpectra ขยายรถยนต์และอิเล็กทรอนิกส์ KIASpectra มีวิทยุ เหตุใด KIASpectra จึงไม่มี Electronic เพราะมันเป็นอิเล็กทรอนิกส์ การสืบทอดกับการจัดองค์ประกอบควรเป็นความสัมพันธ์แบบ is-a กับความสัมพันธ์แบบ a-a เพราะมันเป็นอิเล็กทรอนิกส์ …

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

15
LISP ยังมีประโยชน์ในโลกปัจจุบันหรือไม่? เวอร์ชันใดที่ใช้มากที่สุด
ฉันพยายามสอนภาษาโปรแกรมใหม่ในช่วงเวลาปกติ เมื่อเร็ว ๆ นี้ฉันได้อ่าน Lisp และภาษาถิ่นของมันอยู่ตรงข้ามกับสเปกตรัมจากภาษาอย่าง C / C ++ ซึ่งทำให้ฉันอยากรู้มากขึ้นเกี่ยวกับเรื่องนี้ อย่างไรก็ตามมีสองสิ่งที่ไม่ชัดเจนสำหรับฉันและฉันกำลังมองหาแนวทางสำหรับพวกเขา: LISP ยังคงฝึกฝน / ใช้ในโลกปัจจุบันหรือว่าเป็นภาษาดั้งเดิมเช่น FORTRAN / COBOL ฉันหมายถึงนอกเหนือจากการบำรุงรักษาโค้ดที่มีอยู่แล้วมันใช้กับโครงการใหม่หรือไม่? ภาษาที่ใช้กันมากที่สุดคืออะไร? ฉันได้พบกับ Scheme และ Common LISP ในฐานะภาษากลางที่แพร่หลายมากที่สุดสองภาษาและต้องการความคิดเห็นของคุณว่าสิ่งใดเป็นสิ่งที่เป็นที่นิยม / มีประโยชน์มากที่สุดในการเรียนรู้และจะทำให้คุณพอใจมากหากคุณสามารถแนะนำทรัพยากร ในขณะที่กระตือรือร้นที่จะเรียนรู้ภาษาที่แตกต่างจากภาษาขั้นตอนที่ฉันคุ้นเคย แต่ฉันไม่ต้องการที่จะลงทุนในความพยายามที่ไม่เหมาะสมในบางสิ่งถ้ามันล้าสมัยไปหมด - ฉันยังคงเรียนรู้ว่ามันเป็น "มืออาชีพ" แต่มีมุมมองทางวิชาการเท่านั้น

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