คำถามติดแท็ก history

สำหรับคำถามเกี่ยวกับประวัติของการเขียนโปรแกรมและการคำนวณ

4
กระบวนการพัฒนาใช้สำหรับโค้ดในภารกิจของ Apollo 11 หรือไม่?
ภารกิจของ Apollo นั้นมีเทคโนโลยีไม่ซับซ้อนกว่าเครื่องคิดเลขพกพา จากลิงค์ที่นี่มีข้อมูลเกี่ยวกับ Apollo Guidance Computer (AGC) คอมพิวเตอร์แนะนำ Apollo บนบอร์ด (AGC) มีขนาดประมาณ 1 ลูกบาศก์ฟุตพร้อม RAM ขนาด 16 บิต 2K และ 36K ของหน่วยความจำแกนเชือกแบบมีสายแข็งที่มีสายทองแดงเป็นเกลียวหรือไม่มีเกลียวผ่านแกนแม่เหล็กขนาดเล็ก คำ 16- บิตโดยทั่วไปคือ 14 บิตของข้อมูล (หรือสอง op-codes), 1 sign bit และ 1 parity bit รอบเวลาคือ 11.7 ไมโครวินาที การเขียนโปรแกรมทำในภาษาแอสเซมบลีและในภาษาที่สื่อความหมายในโปแลนด์กลับ ดังนั้นฉันจึงสะดุดกับซอร์สโค้ดบางอย่างเมื่อฉันค้นคว้าสิ่งที่เกิดขึ้นที่นั่นและฉันสังเกตเห็นความคิดเห็นที่ดี (เช่นชั่วคราวฉันหวังว่าจะเป็นความหวัง) VRTSTART TS WCHVERT # Page 801 CAF …

8
ทำไมวิธีหลักแบบคงที่ใน Java และ C # มากกว่าตัวสร้าง?
ฉันกำลังมองหาคำตอบที่ชัดเจนจากแหล่งที่มาหลักหรือรองสำหรับเหตุผลที่ (โดยเฉพาะ) Java และ C # ตัดสินใจที่จะมีวิธีการแบบคงที่เป็นจุดเริ่มต้นของพวกเขาแทนที่จะเป็นตัวแทนอินสแตนซ์ของโปรแกรมประยุกต์โดยอินสแตนซ์ของApplicationชั้นเรียน เป็นตัวสร้างที่เหมาะสม) ความเป็นมาและรายละเอียดของการวิจัยก่อนหน้าของฉัน สิ่งนี้เคยถูกถามมาก่อน แต่น่าเสียดายที่คำตอบที่มีอยู่เป็นเพียงการขอถาม โดยเฉพาะอย่างยิ่งคำตอบต่อไปนี้จะไม่ทำให้ฉันพึงพอใจเพราะฉันคิดว่าไม่ถูกต้อง: จะมีความกำกวมหากคอนสตรัคเตอร์มากเกินไป - ในความเป็นจริง C # (เช่นเดียวกับ C และ C ++) ช่วยให้ลายเซ็นที่แตกต่างกันเพื่อMainให้มีความกำกวมที่อาจเกิดขึ้นเหมือนกันและมีการจัดการ staticวิธีหมายถึงวัตถุที่ไม่สามารถ instantiated ก่อนเพื่อให้คำสั่งของ initialisation เป็นที่ชัดเจน - นี่เป็นเพียงความผิดจริงวัตถุบางอย่างจะถูกยกตัวอย่างก่อน (เช่นในตัวสร้างแบบคงที่) ดังนั้นจึงสามารถเรียกใช้โดยรันไทม์โดยไม่ต้องสร้างอินสแตนซ์ของวัตถุหลัก - นี่ไม่ใช่คำตอบเลย เพื่อให้เหตุผลเพิ่มเติมว่าทำไมฉันจึงคิดว่านี่เป็นคำถามที่ถูกต้องและน่าสนใจ: กรอบหลายคนไม่ใช้ชั้นเรียนเพื่อเป็นตัวแทนของการใช้งานและการก่อสร้างเป็นจุดเข้า ยกตัวอย่างเช่นกรอบใบสมัคร VB.NETใช้โต้ตอบเฉพาะหลัก (และตัวสร้างของมัน) เป็นจุดเริ่มต้นที่1 ทั้ง Java และ C # ในทางเทคนิคต้องการวิธีการหลัก ดี C # ต้องการคอมไพล์ …
54 java  c#  history  entry-point 

6
ใครเป็นผู้สร้างแนวคิดของการสร้างลูปแรก
while (1) { if (1+1==2) { print "Yes, you paid attention in Preschool!"; } else { print "Wait... I thought 1+1=2"; } } ในฐานะนักพัฒนาเราทุกคนต้องใช้ลูปบ่อยมาก เรารู้ว่า. สิ่งที่ฉันสงสัยคือใครคิดว่าความคิดที่จะมีลูป? ภาษาใดบ้างที่มีการแนะนำลูป โครงสร้างลูปแรกคืออะไร มันเป็นwhileวงไหม forห่วง? etc?
53 history  loops 

4
ความเฉลียวฉลาดที่แน่นอนของ Unix pipe คืออะไร
ฉันได้ยินเรื่องราวของดักลาสแมครอยรอยที่มาพร้อมกับแนวคิดและวิธีที่เคน ธ อมป์สันใช้มันในคืนเดียว เท่าที่ฉันเข้าใจไปป์คือการเรียกของระบบซึ่งใช้หน่วยความจำร่วมกันระหว่างสองโพรเซสโดยที่โพรเซสหนึ่งเขียนและอ่านอย่างอื่น ในฐานะคนที่ไม่คุ้นเคยกับระบบปฏิบัติการภายในหรือแนวคิดฉันสงสัยว่า "อัจฉริยะ" ในเรื่องนี้คืออะไร? มันเป็นความคิดของสองกระบวนการที่ใช้หน่วยความจำร่วมกันหรือไม่? หรือเป็นการนำไปปฏิบัติ หรือทั้งคู่? PS: ฉันตระหนักถึงประโยชน์ของท่อหรือวิธีการใช้ในเปลือก คำถามเกี่ยวกับแนวคิดและการดำเนินการของ|

8
ทำไมโปรเซสเซอร์ Itanium จึงยากที่จะเขียนคอมไพเลอร์
โดยทั่วไประบุว่าสถาปัตยกรรม Itanium 64- บิตโปรเซสเซอร์ของ Intel ล้มเหลวเนื่องจากชุดคำสั่งการปฏิวัติEPICเป็นเรื่องยากมากในการเขียนคอมไพเลอร์ที่ดีซึ่งหมายถึงการขาดเครื่องมือสำหรับนักพัฒนาที่ดีสำหรับ IA64 ซึ่งหมายความว่าผู้พัฒนาโปรแกรมสร้างสถาปัตยกรรมขาด ดังนั้นจึงไม่มีใครต้องการใช้ฮาร์ดแวร์โดยไม่ต้องใช้ซอฟต์แวร์มากดังนั้นแพลตฟอร์มจึงล้มเหลวและทุกอย่างต้องการเล็บเกือกม้า คอมไพเลอร์ที่ดี แต่ทำไมคอมไพเลอร์จึงเป็นปัญหาทางเทคนิคที่ยาก? สำหรับฉันแล้วดูเหมือนว่าหากการขนานอย่างชัดเจนใน EPIC นั้นเป็นเรื่องยากสำหรับผู้ขายคอมไพเลอร์ที่จะใช้ ... ทำไมต้องวางภาระนั้นไว้กับพวกเขาตั้งแต่แรก มันไม่ได้เป็นวิธีแก้ปัญหาที่ดีและเข้าใจกันดีในปัญหานี้ไม่ได้มีอยู่แล้ว: วางภาระให้กับ Intel แทนและให้เป้าหมายที่เรียบง่ายแก่นักเขียนคอมไพเลอร์ Itanium ออกมาในปี 1997 โดยจุดนี้ระบบรหัสไบต์UCSD P-Codeอายุเกือบ 20 ปีเครื่อง Zอายุน้อยกว่าเล็กน้อยและ JVM เป็นดาวรุ่งพุ่งแรงใหม่ในโลกของภาษาโปรแกรม มีเหตุผลใดบ้างที่ Intel ไม่ได้ระบุภาษา "Itanium bytecode แบบง่าย" และให้เครื่องมือที่แปลง bytecode นี้เป็นรหัส EPIC ที่ได้รับการปรับปรุงโดยใช้ประโยชน์จากความเชี่ยวชาญของพวกเขาในฐานะผู้ออกแบบระบบตั้งแต่แรก?
50 history  compiler 

4
คอมไพเลอร์ C ++ ตัวแรกสามารถเขียนเป็น C ++ ได้อย่างไร?
Stroustrup อ้างว่า Cfront ซึ่งเป็นคอมไพเลอร์ C ++ ตัวแรกเขียนด้วย C ++ ( คำถามที่พบบ่อยของ Stroustrup ) อย่างไรก็ตามเป็นไปได้อย่างไรที่คอมไพเลอร์ C ++ แรกจะถูกเขียนใน C ++ โค้ดที่ประกอบเป็นคอมไพเลอร์จำเป็นต้องถูกคอมไพล์ด้วยและทำให้คอมไพเลอร์ C ++ ตัวแรกไม่สามารถเขียนใน C ++ ได้ใช่ไหม

13
ทำไมโอเปอเรเตอร์ที่ได้รับมอบหมายจึงอยู่ทางซ้ายมือ
ฉันเริ่มสอนการเขียนโปรแกรมเพื่อนเมื่อเร็ว ๆ นี้ (เรากำลังใช้ Python) และเมื่อเราเริ่มพูดคุยเกี่ยวกับการสร้างตัวแปรและผู้ดำเนินการที่ได้รับมอบหมายเธอถามว่าทำไมค่าทางด้านขวาถูกกำหนดให้กับชื่อทางด้านซ้ายไม่ใช่ในทางกลับกัน . ก่อนหน้านี้ฉันไม่ได้คิดมากเพราะมันดูเป็นธรรมชาติสำหรับฉัน แต่เธอบอกว่าซ้าย - ขวาดูเหมือนจะดูเป็นธรรมชาติมากกว่าสำหรับเธอเพราะนั่นเป็นวิธีที่พวกเราส่วนใหญ่อ่านภาษาธรรมชาติ ฉันคิดเกี่ยวกับมันและสรุปว่ามันทำให้การอ่านรหัสง่ายขึ้นมากเนื่องจากชื่อที่กำหนดให้ (ซึ่งโปรแกรมเมอร์จะต้องนำมาใช้ใหม่) สามารถมองเห็นได้ง่ายจัดเรียงชิดซ้าย aligned = 2 on = 'foo' + 'bar' + 'foobar' the = 5.0 / 2 left = 2 + 5 ตรงข้ามกับ: 2 = aligned 'foo' + 'bar' + 'foobar' = on 5.0 / 2 = the …

22
Classical BASIC เคยใช้สำหรับการพัฒนาซอฟต์แวร์เชิงพาณิชย์หรือไม่และถ้าเป็นเช่นนั้น
พวกเราหลายคนรวมถึงฉันเริ่มชีวิตการเขียนโปรแกรมด้วยโปรแกรมที่เขียนบนคอมพิวเตอร์ที่บ้านบางอย่างเช่น 10 PRINT "ENTER RADIUS" 20 INPUT R 30 PRINT "CIRCUMFERENCE="; 2 * R * PI 40 PRINT "AGAIN?" 50 INPUT A$ 60 IF A$="Y" THEN GOTO 10 70 END แน่นอนบรรทัดจำนวนตามขั้นพื้นฐานมีแนวโน้มสำหรับการสร้างรหัส Spagetti ยังเพราะส่วนใหญ่ภาษา BASIC พลาดงบโครงสร้างชอบWHILEทำทุกอย่าง แต่FOR-loop ด้วยIF, และGOTO GOSUBฉันกำลังพูดถึงภาษาเบสิกก่อนปี 1991 เมื่อ QBASIC และVisual Basicปรากฏขึ้น ในขณะที่ภาษาเบสิกอาจส่งเสริมรูปแบบที่ไม่ดีในหมู่โปรแกรมเมอร์ที่ต้องการมีโครงการเชิงพาณิชย์ขนาดใหญ่ที่สร้างขึ้นในภาษาเบสิกดังกล่าวหรือไม่? ถ้าเป็นเช่นนั้นพวกเขาจะจัดการกับข้อบกพร่องที่เห็นได้ชัดอย่างไร โดย "ร้ายแรง" ฉันหมายถึง: ไม่ใช่เกม …
46 history  basic 

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

4
ทำไมโครงสร้างและคลาสแยกแนวคิดใน C #
ในขณะที่การเขียนโปรแกรมใน C # ฉันสะดุดกับการตัดสินใจออกแบบภาษาแปลก ๆ ที่ฉันไม่เข้าใจ ดังนั้น C # (และ CLR) มีชนิดข้อมูลรวมสองประเภท: struct(ค่าประเภทเก็บไว้ในสแต็กไม่มีการสืบทอด) และclass(อ้างอิงประเภทเก็บไว้ในกองมีมรดก) การตั้งค่านี้ฟังดูดีในตอนแรก แต่จากนั้นคุณสะดุดวิธีที่ใช้พารามิเตอร์ของชนิดรวมและเพื่อหาว่าจริง ๆ แล้วเป็นประเภทค่าหรือประเภทอ้างอิงคุณต้องค้นหาการประกาศของประเภทนั้น บางครั้งอาจทำให้สับสนได้ วิธีแก้ปัญหาที่เป็นที่ยอมรับโดยทั่วไปดูเหมือนว่าจะประกาศstructว่า "ไม่เปลี่ยนรูป" (ตั้งค่าเขตข้อมูลไว้readonly) เพื่อป้องกันความผิดพลาดที่อาจเกิดขึ้นโดย จำกัดstructประโยชน์ของ ตัวอย่างเช่น C ++ ใช้โมเดลที่สามารถใช้งานได้มากขึ้น: ช่วยให้คุณสร้างอินสแตนซ์ของวัตถุบนสแต็กหรือบนฮีปและส่งผ่านตามค่าหรือโดยการอ้างอิง (หรือโดยตัวชี้) ฉันได้ยินอยู่เสมอว่า C # ได้รับแรงบันดาลใจจาก C ++ และฉันก็ไม่เข้าใจว่าทำไมมันไม่ใช้เทคนิคนี้ การรวมclassและสร้างstructเป็นหนึ่งเดียวกับตัวเลือกการจัดสรรที่แตกต่างกันสองตัว (ฮีปและสแต็ค) และส่งต่อให้เป็นค่าหรือ (อย่างชัดเจน) เนื่องจากการอ้างอิงผ่านทางrefและoutคำหลักดูเหมือนเป็นสิ่งที่ดี คำถามคือทำไมclassและstructกลายเป็นแนวคิดที่แยกต่างหากใน C # และ CLR แทนที่จะเป็นประเภทรวมหนึ่งที่มีสองตัวเลือกการจัดสรร?

15
ภาษามีอิทธิพลต่อการออกแบบ CPU อย่างไร [ปิด]
เรามักจะบอกว่าฮาร์ดแวร์ไม่สนใจภาษาที่โปรแกรมเขียนเนื่องจากเห็นเฉพาะรหัสไบนารี่ที่คอมไพล์ แต่นี่ไม่ใช่ความจริงทั้งหมด ยกตัวอย่างเช่นพิจารณา Z80 ผู้ต่ำต้อย ส่วนขยายไปยังชุดคำสั่ง 8080 มีคำแนะนำเช่น CPIR ซึ่งจะเป็นประโยชน์สำหรับการสแกนแบบ C (NULL สิ้นสุด) strlen()สตริงเช่นการดำเนินการ ผู้ออกแบบจะต้องระบุว่าการรันโปรแกรม C (ตรงข้ามกับ Pascal ที่ความยาวของสตริงอยู่ในส่วนหัว) เป็นสิ่งที่การออกแบบของพวกเขาน่าจะใช้ อีกตัวอย่างที่คลาสสิกเป็นเครื่องเสียงกระเพื่อม มีตัวอย่างอะไรอีกบ้าง? เช่นคำแนะนำจำนวนและประเภทของการลงทะเบียนโหมดการกำหนดแอดเดรสที่ทำให้ตัวประมวลผลเฉพาะสนับสนุนหลักการของภาษาเฉพาะหรือไม่ ฉันสนใจเป็นพิเศษในการแก้ไขครอบครัวเดียวกัน

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

3
ต้นกำเนิดและความหมายของวลี“ แลมบ์ดาที่สุดคืออะไร”
ฉันยุ่งกับภาษาการเขียนโปรแกรมที่ใช้งานได้ไม่กี่ปีที่ผ่านมาและฉันก็พบกับวลีนี้ ตัวอย่างเช่นมันเป็นบทของ "The Little Schemer ซึ่งแน่นอนว่าบล็อกนี้มีมาก่อนชื่อนี้ (ไม่บทไม่ได้ช่วยตอบคำถามของฉัน) ฉันเข้าใจความหมายของแลมบ์ดาความคิดของฟังก์ชั่นนิรนามนั้นเรียบง่ายและทรงพลัง แต่ฉันไม่เข้าใจว่า "ที่สุด" หมายถึงอะไรในบริบทนี้ สถานที่ที่ฉันได้เห็นวลีนี้: ชื่อของบทที่ 8 ของ The Little Schemer บล็อก: http://lambda-the-ultimate.org/ ชุดเอกสาร "แลมบ์ดาสุดยอด X": http://library.readscheme.org/page1.html ฉันรู้สึกว่าฉันไม่มีข้อมูลอ้างอิงที่นี่ใครช่วยได้บ้าง

2
คำว่า "ต้นไม้สีแดง / ดำ" มาจากไหน
แดง / ดำต้นไม้เป็นวิธีหนึ่งที่จะใช้ค้นหาต้นไม้ไบนารีสมดุล หลักการที่อยู่เบื้องหลังว่ามันทำงานได้เหมาะสมกับฉัน แต่สีที่เลือกไม่ได้ ทำไมสีแดงและดำตรงข้ามกับสีอื่น ๆ หรือคุณลักษณะโดยทั่วไป? เมื่อฉันได้ยิน "แดงและดำ" สิ่งแรกที่นึกถึงก็คือกระดานตรวจสอบและLes Misérablesซึ่งทั้งสองอย่างนี้ดูเหมือนจะไม่สามารถใช้ได้ในบริบทนี้

3
ทำไม `main` ไม่สามารถคืนค่า double หรือ String แทน int หรือ void ได้
ในหลายภาษาเช่น C, C ++ และ Java ที่mainวิธีการ / ฟังก์ชั่นมีประเภทการกลับมาของvoidหรือintแต่ไม่ได้หรือdouble Stringอะไรคือเหตุผลเบื้องหลัง ฉันรู้ว่านิด ๆ หน่อย ๆ ว่าเราไม่สามารถทำเช่นนั้นเพราะmainถูกเรียกโดยห้องสมุดรันไทม์และคาดว่าไวยากรณ์บางอย่างเช่นint main()หรือint main(int,char**)ดังนั้นเราจึงต้องติดว่า ดังนั้นคำถามของฉันคือ: ทำไมmainมีลายเซ็นประเภทที่มีและไม่แตกต่างกันอย่างไร

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