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

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


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

10
ทำไมภาษาต้องใช้วงเล็บในการแสดงออกเมื่อใช้กับ“ ถ้า” และ“ ในขณะที่”
ภาษาเช่น C, Java และ C ++ ทั้งหมดต้องวงเล็บรอบการแสดงออกทั้งเมื่อนำมาใช้ในการให้if, หรือwhileswitch if (true) { // Do something } ตรงข้ามกับ if true { // Do something } นี่ดูแปลกสำหรับฉันเพราะวงเล็บซ้ำซ้อน ในตัวอย่างtrueนี้เป็นการแสดงออกเพียงอย่างเดียวของมันเอง วงเล็บไม่เปลี่ยนความหมายในทางใดทางหนึ่งที่ฉันรู้ ทำไมไวยากรณ์แปลก ๆ นี้จึงมีอยู่และทำไมมันจึงเป็นเรื่องธรรมดา? มีประโยชน์ไหมที่ฉันไม่ทราบ?

9
ฉันสามารถพูดได้ว่า“ เรียนรู้” ณ จุดใด
ในช่วงไม่กี่ปีที่ฉันเขียนโปรแกรมฉันได้เล่นกับทุกอย่างตั้งแต่ Ruby ถึง C ++ ฉันทำทุกอย่างตั้งแต่การเรียนรู้ไวยากรณ์พื้นฐาน (Ruby) ไปจนถึงการทำโครงงานหลัก (สำหรับฉัน) หลายอย่างที่ทำให้ฉันมีความสามารถด้านภาษา ด้วยความหลากหลายนี้ (และความจริงที่ว่าการเรียนรู้ภาษาอย่างแท้จริงไม่เคยหยุดนิ่ง) เมื่อใดที่ฉันสามารถบอกได้ว่าฉันรู้ (หรือเรียนรู้) ภาษา?

8
ชุมชนภาษาบางภาษา (เช่น Ruby และ Python) สามารถป้องกันการแตกแฟรกเมนต์ได้อย่างไรขณะที่ชุมชนอื่น (เช่น Lisp หรือ ML) ไม่
คำว่า "เสียงกระเพื่อม" (หรือ "เสียงกระเพื่อมคล้าย") เป็นร่มสำหรับภาษาต่าง ๆ มากมายเช่น Common Lisp, Scheme และ Arc มีการแตกแฟรกเมนต์ที่คล้ายกันในชุมชนภาษาอื่นเช่นใน ML อย่างไรก็ตาม Ruby และ Python มีการจัดการเพื่อหลีกเลี่ยงชะตากรรมนี้ที่นวัตกรรมเกิดขึ้นมากขึ้นในการดำเนินการ (เช่น PyPy หรือ YARV) แทนการเปลี่ยนแปลงภาษาเอง ชุมชน Ruby และ Python ทำอะไรเป็นพิเศษเพื่อป้องกันการแตกหักของภาษาหรือไม่

10
การออกแบบไวยากรณ์ - ทำไมต้องใช้วงเล็บเมื่อไม่มีการส่งอาร์กิวเมนต์?
ในหลายภาษาไวยากรณ์function_name(arg1, arg2, ...)ถูกใช้เพื่อเรียกใช้ฟังก์ชัน เมื่อเราต้องการที่จะเรียกฟังก์ชั่นโดยไม่ขัดแย้งใด ๆ function_name()ที่เราต้องทำ ฉันคิดว่ามันแปลกที่คอมไพเลอร์หรือสคริปต์ล่ามจะต้อง()ประสบความสำเร็จในการตรวจสอบว่าเป็นการเรียกใช้ฟังก์ชัน หากตัวแปรรู้จักกันว่า callable ทำไมถึงไม่function_name;พอ? ในบางภาษาเราสามารถทำได้: function_name 'test';หรือแม้แต่function_name 'first' 'second';เรียกฟังก์ชั่นหรือคำสั่ง ฉันคิดว่าวงเล็บจะดีกว่านี้หากพวกเขาต้องการเพียงแค่ประกาศลำดับความสำคัญและในสถานที่อื่นเป็นทางเลือก ตัวอย่างเช่นการทำif expression == true function_name;ควรถูกต้องตามที่if (expression == true) function_name();ควร สิ่งที่น่ารำคาญที่สุดในความคิดของฉันคือทำ'SOME_STRING'.toLowerCase()เมื่อไม่มีข้อโต้แย้งที่ชัดเจนโดยฟังก์ชันต้นแบบ ทำไมนักออกแบบถึงเลือกคนที่เรียบง่าย'SOME_STRING'.lower? คำเตือน:อย่าเข้าใจฉันผิดฉันชอบไวยากรณ์ C-like! ;) ฉันแค่ถามว่ามันจะดีกว่า ต้อง()มีข้อได้เปรียบด้านประสิทธิภาพหรือไม่หรือทำให้เข้าใจรหัสได้ง่ายขึ้น? ฉันอยากรู้จริงๆว่าเหตุผลคืออะไร

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

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

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

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

3
อะไรคือความแตกต่างที่ใหญ่ที่สุดระหว่าง F # และ Scala?
F # และ Scala เป็นทั้ง langugages โปรแกรมการทำงานที่ไม่ได้บังคับให้นักพัฒนาใช้เฉพาะประเภทข้อมูลที่ไม่เปลี่ยนรูป พวกเขาทั้งสองมีการสนับสนุนวัตถุสามารถใช้ไลบรารีที่เขียนในภาษาอื่นและเรียกใช้บนเครื่องเสมือน ดูเหมือนว่าทั้งสองภาษาจะใช้ ML อะไรคือความแตกต่างที่ยิ่งใหญ่ที่สุดระหว่าง F # และ Scala แม้ว่าข้อเท็จจริงที่ว่า F # ได้รับการออกแบบสำหรับ. NET และ Scala สำหรับแพลตฟอร์ม Java?

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

11
บทวิจารณ์สมัยใหม่ของ Java [ปิด]
ฉันเขียนโปรแกรมมาสองสามปีแล้วและฉันเริ่มต้นที่ Java และในเวลาที่ฉันพบแหล่งข้อมูลหลายแห่งที่อ้างว่า Java เป็นภาษาที่ด้อยกว่าไม่ทางใดก็ทางหนึ่ง ฉันรู้ดีว่าแต่ละภาษามีจุดแข็งและจุดอ่อน แต่หลายสิ่งที่ฉันได้อ่านเกี่ยวกับ Java ดูเหมือนจะล้าสมัย เหตุผลที่อ้างถึงบ่อยที่สุดสำหรับ Java ที่ด้อยกว่าคือมันช้ากว่าภาษาอื่น ๆ ที่รวบรวมเช่น C ++ หลายคนวิจารณ์นักออกแบบเกม Notch (ผู้พัฒนาเกม Minecraft) สำหรับการใช้งานจาวาเพราะขาดความชัดเจนในแผนกประสิทธิภาพ ฉันรู้ว่า Java ช้าลงมากในวันนี้ แต่มีการปรับปรุงมากมายตั้งแต่นั้นมาโดยเฉพาะอย่างยิ่งการรวบรวม JIT ฉันต้องการที่จะได้รับความคิดเห็นวัตถุประสงค์ของ Java เป็นภาษาวันนี้ ดังนั้นคำถามของฉันมี 4 ส่วน ประสิทธิภาพ. วันนี้ความเร็วของ Java เปรียบเทียบกับ C ++ อย่างไร ข เป็นไปได้ไหมที่จะสร้างชื่อ AAA ที่ทันสมัยโดยใช้ Java? ค Java ช้ากว่า C ++ เป็นพิเศษในด้านใดบ้าง? …

15
ฉันไม่รู้ซีและทำไมฉันจึงควรเรียนรู้ [ปิด]
ภาษาโปรแกรมแรกของฉันคือ PHP ( อ้าปากค้าง ) หลังจากนั้นฉันเริ่มทำงานกับ JavaScript ฉันเพิ่งทำงานใน C # ฉันไม่เคยดูภาษาระดับต่ำหรือระดับกลางเช่น C ฉันทามติทั่วไปในการเขียนโปรแกรมชุมชน - ขนาดใหญ่คือ "โปรแกรมเมอร์ที่ไม่ได้เรียนรู้อะไรบางอย่างเช่น C, ตรงไปตรงมาก็ไม่สามารถจัดการแนวคิดการเขียนโปรแกรมเช่นตัวชี้ประเภทข้อมูลค่าผ่านการอ้างอิง ฯลฯ " ผมไม่เห็นด้วย. ฉันยืนยันว่า: เนื่องจากภาษาระดับสูงสามารถเข้าถึงได้ง่ายขึ้นทำให้ผู้ที่ไม่ใช่ "โปรแกรมเมอร์" ยิ่งดำน้ำและทำให้ยุ่งเหยิง เพื่อที่จะทำสิ่งใดให้สำเร็จในภาษาระดับสูงเราจำเป็นต้องเข้าใจแนวคิดที่คล้ายกันซึ่งผู้สนับสนุนส่วนใหญ่ของการประกาศพระวรสาร บางคนจำเป็นต้องรู้ C คนเหล่านั้นมีงานที่ต้องการให้พวกเขาเขียนรหัสต่ำถึงระดับกลาง ฉันแน่ใจว่า C ยอดเยี่ยมและฉันแน่ใจว่ามีโปรแกรมเมอร์ที่ไม่ดีบางคนที่รู้จัก C. ทำไมต้องมีอคติ ในฐานะที่เป็นโปรแกรมเมอร์ที่ดีซื่อสัตย์และหิวโหยถ้าฉันต้องเรียนรู้ C (ด้วยเหตุผลที่ไม่คาดฝัน) ฉันจะเรียนรู้ C. เมื่อพิจารณาภาษาที่มีอยู่มากมายนักโปรแกรมเมอร์ที่ดีไม่ควรมุ่งเน้นไปที่การเรียนรู้สิ่งที่ก้าวหน้า เราไม่ควรเรียนรู้สิ่งที่เราสนใจ เราไม่ควรใช้เวลาอัน จำกัด ของเราในการก้าวไปข้างหน้า ? ทำไมโปรแกรมเมอร์บางคนถึงไม่เห็นด้วยกับเรื่องนี้? ฉันเชื่อว่าการดิ้นรนเพื่อความเป็นเลิศในสิ่งที่คุณทำคือลักษณะนิสัยพื้นฐานที่กำหนดไว้ระหว่างโปรแกรมเมอร์ที่ดีกับคนเลว ไม่มีใครมีตัวอย่างในโลกแห่งความจริงของสิ่งที่เขียนในภาษาระดับสูง - พูด …

8
กิจกรรมใช้สำหรับการเขียนโปรแกรม GUI เท่านั้นหรือไม่
กิจกรรมใช้สำหรับการเขียนโปรแกรม GUI เท่านั้นหรือไม่ คุณจัดการกับการเขียนโปรแกรมแบ็กเอนด์ปกติอย่างไรเมื่อมีบางอย่างเกิดขึ้นกับสิ่งอื่นนี้

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