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

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

8
การเรียนรู้ C ++ ผ่าน Qt Framework จริง ๆ การเรียนรู้ C ++ [ปิด]
ปัญหาที่ฉันมีคือหนังสือ C ++ ส่วนใหญ่ที่ฉันอ่านใช้เวลาเกือบตลอดไปในเรื่องของไวยากรณ์และพื้นฐานของภาษาเช่นforลูปwhile, อาร์เรย์, รายการ, ตัวชี้ ฯลฯ แต่ดูเหมือนว่าพวกเขาไม่เคยสร้างสิ่งใดที่เรียบง่ายพอที่จะใช้สำหรับการเรียนรู้ แต่ยังมีประโยชน์พอที่จะทำให้คุณเข้าใจปรัชญาและพลังของภาษา จากนั้นฉันก็สะดุดกับQTซึ่งเป็นห้องสมุดที่น่าทึ่ง! แต่ทำงานผ่านการสาธิตที่พวกเขามีดูเหมือนว่าตอนนี้ฉันอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออก ฉันรู้สึกเหมือนลูกชายของเศรษฐีขับรถรอบในรถสปอร์ตที่ได้รับเงินอุดหนุนจากพ่อ เช่นฉันสามารถสร้างซอฟต์แวร์ที่ยอดเยี่ยม แต่ไม่มีเงื่อนงำสิ่งที่เกิดขึ้นภายใต้ประทุน ตัวอย่างของภาวะที่กลืนไม่เข้าคายไม่ออกของฉันใช้งานในการสร้างเว็บเบราว์เซอร์ที่เรียบง่าย ใน C ++ บริสุทธิ์ฉันไม่รู้ด้วยซ้ำว่าจะเริ่มต้นยังไงกับไลบรารี่ Qt ที่สามารถทำได้ภายในโค้ดไม่กี่บรรทัด ฉันไม่ได้บ่นเกี่ยวกับเรื่องนี้ ฉันแค่สงสัยว่าจะเติมความรู้ที่ว่างเปล่าระหว่างโครงสร้างพื้นฐานของภาษาและอินเทอร์เฟซระดับสูงที่กรอบ Qt ให้ได้อย่างไร

16
คุณคิดว่าการเปิดรับ BASIC สามารถทำลายจิตใจของคุณหรือไม่? [ปิด]
มันเป็นไปไม่ได้ในทางปฏิบัติที่จะสอนการเขียนโปรแกรมที่ดีให้กับนักเรียนที่มีการเปิดเผยก่อนหน้าพื้นฐาน: เป็นโปรแกรมเมอร์ที่มีศักยภาพพวกเขาจะถูกทำลายจิตใจจิตใจเกินความหวังของการฟื้นฟู - Edsger W. Dijkstra ฉันมีความเคารพอย่างลึกซึ้งต่อ Dijkstra แต่ฉันไม่เห็นด้วยกับทุกสิ่งที่เขาพูด / เขียน ฉันไม่เห็นด้วยเป็นพิเศษกับใบเสนอราคานี้ในบทความที่เชื่อมโยงเขียนเมื่อ 35 ปีที่แล้วเกี่ยวกับการใช้งานดาร์ทเมาท์เบสิค เพื่อนร่วมงานหรือโปรแกรมเมอร์ของฉันหลายคนเริ่มต้นด้วย BASIC คำถามด้านล่างมีคำตอบที่ระบุว่าโปรแกรมเมอร์หลายคนมีประสบการณ์ครั้งแรกในการเขียนโปรแกรมที่ BASIC AFAIK โปรแกรมเมอร์ที่ดีหลายคนเริ่มต้นที่การเขียนโปรแกรมพื้นฐาน ฉันไม่ได้พูดถึง Visual Basic หรือภาษา "ทันสมัย" อื่น ๆ ของ BASIC ที่ทำงานบนเครื่องที่เต็มไปด้วยทรัพยากร ฉันกำลังพูดถึง BASIC รุ่นเก่าที่ทำงานบนคอมพิวเตอร์ "ของเล่น" ที่โปรแกรมเมอร์ต้องกังวลเกี่ยวกับการบันทึกตัวเลขขนาดเล็กที่ไม่จำเป็นต้องคำนวณเป็นสตริงเพื่อบันทึกไบต์ที่เลวร้ายเพราะคอมพิวเตอร์มีเพียงไม่กี่ร้อยหรือ ต้องใช้ goto ที่คำนวณได้เนื่องจากขาดคุณสมบัติที่มีประสิทธิภาพมากกว่าและสิ่งอื่น ๆ อีกมากมายที่ผู้เขียนโปรแกรมต้องคิดมากก่อนที่จะทำอะไรบางอย่างและบังคับให้โปรแกรมเมอร์มีความคิดสร้างสรรค์ หากคุณเคยมีประสบการณ์กับ BASIC แบบเก่าบนเครื่องที่มีทรัพยากร จำกัด (จำไว้ว่าไมโครคอนโทรลเลอร์ที่เรียบง่ายในปัจจุบันมีทรัพยากรมากกว่าคอมพิวเตอร์ในปี 1975 คุณคิดว่า BASIC ช่วยให้จิตใจของคุณหาวิธีแก้ปัญหาที่ดีกว่า เช่นวิศวกรหรือเบสิกลากคุณไปยังด้านมืดของการเขียนโปรแกรมและทำลายจิตใจคุณไหม? …

1
ทำไมเครื่องหมายรูปหมวกใช้สำหรับ XOR แทนการยกกำลัง?
ไม่ว่ามันจะเป็นปัญหาสำหรับทุกคนที่เคยประสบปัญหาเกี่ยวกับวากยสัมพันธ์นี้มาก่อน แต่ฉันเห็นความสับสนจำนวนมากที่เกิดขึ้นจากการใช้คาเร็ต ( ^) เนื่องจากการทำงานของ XOR แทนการปฏิบัติการยกกำลังทางคณิตศาสตร์ที่ยอมรับกันอย่างกว้างขวาง แน่นอนว่ามีหลายแห่งที่อธิบายและแก้ไขการใช้คาเร็ต (mis-) แต่ฉันไม่ได้เจอแหล่งข้อมูลที่ชัดเจนว่าทำไมคาเร็ตได้รับความหมายที่แตกต่างกัน มันเป็นเรื่องของความสะดวกสบายหรือไม่? อุบัติเหติ? เห็นได้ชัดว่าการใช้เหตุผลอาจแตกต่างกันไปในแต่ละภาษาดังนั้นข้อมูลใด ๆ ก็ตามจะมีความเฉียบแหลม

5
เหตุใด C # และ Java จึงใช้การอ้างอิงที่เท่าเทียมกันเป็นค่าเริ่มต้นสำหรับ '=='
ฉันได้รับการขบคิดในขณะที่ว่าทำไม Java และ C # (และฉันแน่ใจว่าภาษาอื่น ๆ ) ==เริ่มต้นความเสมอภาคอ้างอิงสำหรับ ในการเขียนโปรแกรมที่ฉันทำ (ซึ่งแน่นอนเป็นเพียงส่วนเล็ก ๆ ของปัญหาการเขียนโปรแกรม) ฉันมักจะต้องการความเสมอภาคเชิงตรรกะเมื่อเปรียบเทียบวัตถุแทนการอ้างอิงความเท่าเทียมกัน ฉันพยายามคิดว่าเพราะเหตุใดทั้งสองภาษานี้จึงใช้เส้นทางนี้แทนการย้อนกลับและมี==ความเท่าเทียมทางตรรกะและใช้.ReferenceEquals()เพื่อความเท่าเทียมกันในการอ้างอิง เห็นได้ชัดว่าการใช้ความเท่าเทียมกันของข้อมูลอ้างอิงนั้นง่ายมากที่จะนำไปใช้และมันก็มีพฤติกรรมที่สอดคล้องกันมาก ฉันไม่ต้องการที่จะรู้ปัญหาของการพยายามเปรียบเทียบเชิงตรรกะและมันจะต้องถูกนำไปใช้ในทุกชั้น ฉันยังตระหนักว่าภาษาเหล่านี้ได้รับการออกแบบมานานแล้ว แต่คำถามทั่วไปยืนอยู่ มีประโยชน์ที่สำคัญของการเริ่มต้นสิ่งนี้ที่ฉันเพิ่งหายไปหรือไม่หรือดูเหมือนว่ามีเหตุผลว่าพฤติกรรมเริ่มต้นควรเป็นความเท่าเทียมกันทางตรรกะและการเริ่มต้นกลับไปอ้างอิงความเท่าเทียมกันมันไม่มีความเสมอภาคเชิงตรรกะสำหรับชั้นเรียน?

6
ทำไมภาษาการเขียนโปรแกรมอนุญาตให้แชโดว์ / การซ่อนตัวแปรและฟังก์ชั่น?
ภาษาการเขียนโปรแกรมที่นิยมมากที่สุด (เช่น C ++, Java, Python ฯลฯ ) มีแนวคิดของการซ่อน / แชโดว์ของตัวแปรหรือฟังก์ชั่น เมื่อฉันพบการซ่อนหรือเงาพวกเขาเป็นสาเหตุของข้อบกพร่องที่หายากและฉันไม่เคยเห็นกรณีที่ฉันพบว่าจำเป็นต้องใช้คุณสมบัติเหล่านี้ของภาษา สำหรับฉันมันจะเป็นการดีกว่าถ้าหากไม่อนุญาตให้ซ่อนและซ่อนเงา มีใครรู้บ้างเกี่ยวกับการใช้แนวคิดเหล่านี้ อัปเดต: ฉันไม่ได้อ้างถึงการห่อหุ้มของสมาชิกในชั้นเรียน (ส่วนตัว / สมาชิกที่ได้รับความคุ้มครอง)

7
“ ภาษา A เขียนด้วยภาษา B” หมายความว่าอะไร?
ผมมักจะได้ยินคำว่าภาษาเป็นสิ่งที่เขียนในภาษา B. ตัวอย่างเช่นPHPได้รับการเขียนC , C #จะถูกเขียนในภาษา C ++ ใครช่วยกรุณาอธิบายสิ่งนั้นหมายความว่าและถ้ามันถูกต้อง? สิ่งนี้เกี่ยวข้องกับการแปลของล่ามที่ใช้โดยภาษาหรือไม่? นอกจากนี้ปัจจัยอะไรบ้างที่ทำให้ภาษาที่ใช้ในการเลือกใช้ถูกสร้างขึ้น

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

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

7
ทำไมมาโครไม่รวมอยู่ในภาษาการเขียนโปรแกรมที่ทันสมัยที่สุด?
ฉันรู้ว่าพวกเขานำมาใช้อย่างไม่ปลอดภัยใน C / C ++ พวกเขาไม่สามารถนำไปใช้ในทางที่ปลอดภัยยิ่งขึ้น? ข้อเสียของมาโครนั้นแย่มากพอที่จะเทียบกับพลังมหาศาลที่พวกเขามีให้หรือไม่?

10
ทำไม Math.Sqrt () เป็นฟังก์ชันคงที่
ในการอภิปรายเกี่ยวกับวิธีการแบบคงที่และอินสแตนซ์ฉันคิดเสมอว่าSqrt()ควรเป็นวิธีการแบบอินสแตนซ์ของชนิดตัวเลขแทนวิธีแบบคงที่ ทำไมถึงเป็นอย่างนั้น? เห็นได้ชัดว่ามันทำงานกับค่า // looks wrong to me var y = Math.Sqrt(x); // looks better to me var y = x.Sqrt(); ToString()ชนิดของมูลค่าชัดสามารถมีวิธีการเช่นเดียวกับในหลายภาษามีวิธีการเช่น เพื่อตอบคำถามจากความคิดเห็น: ทำไม1.Sqrt()ไม่ควรถูกกฎหมาย? 1.ToString()คือ. บางภาษาไม่อนุญาตให้มีวิธีการในประเภทค่า แต่บางภาษาสามารถ ฉันกำลังพูดถึงสิ่งเหล่านี้รวมถึง Java, ECMAScript, C # และ Python (พร้อมคำ__str__(self)จำกัดความ) เช่นเดียวกับฟังก์ชั่นอื่น ๆ เช่นceil(), floor()ฯลฯ

10
เหตุใดไลบรารีมาตรฐานจึงไม่เขียนโปรแกรมภาษาดั้งเดิม [ปิด]
ฉันคิดว่าเหตุใดจึงมี (ในภาษาการเขียนโปรแกรมทั้งหมดที่ฉันได้เรียนรู้เช่น C ++, Java, Python) ไลบรารีมาตรฐานอย่าง stdlib แทนที่จะมี "ฟังก์ชั่น" ที่คล้ายคลึงกันซึ่งเป็นภาษาดั้งเดิมของตัวเอง

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

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

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

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

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