ฉันอยากรู้เกี่ยวกับวันเกิดของผู้รวบรวม การเขียนโปรแกรมเริ่มต้นอย่างไร คนแรกสร้างฮาร์ดแวร์ที่รู้จักชุดคำสั่งบางอย่างหรือคนกำหนดภาษาแล้วสร้างฮาร์ดแวร์รอบ ๆ และในบันทึกที่เกี่ยวข้องภาษาโปรแกรมแรกคืออะไร
ฉันอยากรู้เกี่ยวกับวันเกิดของผู้รวบรวม การเขียนโปรแกรมเริ่มต้นอย่างไร คนแรกสร้างฮาร์ดแวร์ที่รู้จักชุดคำสั่งบางอย่างหรือคนกำหนดภาษาแล้วสร้างฮาร์ดแวร์รอบ ๆ และในบันทึกที่เกี่ยวข้องภาษาโปรแกรมแรกคืออะไร
คำตอบ:
นี่เป็นคำตอบที่ชัดเจนมากจริง ๆ แล้ว: ซอร์สโค้ดมาก่อน - ด้วยกำไรขั้นต้นที่มาก
ก่อนที่จะให้รายละเอียดทางเทคนิคมุมมองเล็กน้อย:
ภาษาโปรแกรมแรกที่ถูกทั้งหมดแปลเป็นภาษาเครื่องหรือประกอบด้วยมือ แนวคิดของการใช้ชิ้นส่วนของซอฟต์แวร์เพื่อทำให้การแปลนี้เป็นไปโดยอัตโนมัติ (ไม่ว่าจะผ่านทางคอมไพเลอร์หรือผู้ประเมิน) มาในภายหลังและอยู่ไกลจากสัญชาตญาณ
พิจารณาข้อความอ้างอิงของบทความ Wikipedia เกี่ยวกับFORTRANซึ่งแสดงให้เห็นว่าคอมไพเลอร์ฝืนต้องเผชิญ:
... ตัวแปลภาษา FORTRAN ตัวแรกถูกส่งมอบในเดือนเมษายน 1957 นี่เป็นตัวแปลที่เหมาะสมที่สุดเพราะลูกค้าไม่เต็มใจที่จะใช้ภาษาโปรแกรมระดับสูงเว้นแต่ว่าคอมไพเลอร์สามารถสร้างรหัสที่มีประสิทธิภาพเทียบเท่ากับภาษาแอสเซมบลีที่เขียนด้วยมือ . [เน้นเหมือง]
=> เมื่อถึงเวลาที่คอมไพเลอร์ FORTRAN บุกตลาด (1957) ผู้คนกำลังเขียนโปรแกรมอย่างมีความสุขทั้งในภาษาแอสเซมบลีและฟอร์แทรน
กรณีนี้คล้ายคลึงกับLISP (จากแฮกเกอร์และจิตรกร ):
Steve Russell พูดดูสิทำไมฉันไม่ตั้งโปรแกรม eval นี้…และฉันก็บอกเขาว่า ho, ho, คุณกำลังสับสนกับการฝึกฝนทฤษฎี eval นี้มีไว้สำหรับการอ่านไม่ใช่สำหรับการคำนวณ แต่เขาไปข้างหน้าและทำมัน นั่นคือเขารวบรวม eval ในกระดาษของฉันเป็นรหัสเครื่อง IBM 704, แก้ไขข้อผิดพลาดและจากนั้นโฆษณาสิ่งนี้เป็นล่าม Lisp ซึ่งมันแน่นอน เมื่อถึงจุดนั้น Lisp ก็มีรูปแบบที่เป็นอยู่ในปัจจุบัน ...
อีกครั้งไม่เพียง แต่ซอร์สโค้ด (ใน LISP) ลงวันที่ก่อนวันล่ามเท่านั้นแต่ทว่าหลังไม่ได้มีความหมายโดยนัยในอดีต
แต่การพัฒนาเหล่านี้ค่อนข้างล่าช้า แม้ว่าจะไม่ได้พิจารณาโปรแกรมการวิเคราะห์ของ Charles Babbage และโปรแกรมแรกที่เกี่ยวข้องกับ Ada Lovelace แต่ก็มีภาษาโปรแกรมในศตวรรษที่ 20 ซึ่งรวบรวมคอมไพเลอร์ไว้ล่วงหน้า:
Plankalkülของ Konrad Zuse และโครงสร้างทางคณิตศาสตร์ของcalcul-แคลคูลัสแนะนำโดย Alonzo Church ทั้งสองนี้เป็นภาษาการเขียนโปรแกรมที่ระบุอย่างไม่เป็นทางการ แต่ไม่มีคอมไพเลอร์ในเวลานั้น
เพื่อนำสิ่งนี้ไปสู่มุมมอง calcul-แคลคูลัสมาจากช่วงทศวรรษที่ 1930 และPlankalkülได้รับการพัฒนารอบปี 1945 ในทางตรงกันข้ามคอมไพเลอร์ FORTRAN ตัวแรกออกมาในปี 1957 (แต่อีกสามปีหลังจากระบุ FORTRAN)
การเขียนโปรแกรมเริ่มต้นด้วยคนที่เขียนรหัสเครื่องลงในหน่วยความจำโดยตรงลงบนการ์ดเจาะรูและเทปกระดาษหรือแม้กระทั่งการย่อลิงค์บนแผงแพทช์ ไม่ว่าฮาร์ดแวร์จะถูกสร้างขึ้นตามความต้องการของซอฟต์แวร์หรือในทางกลับกันก็ยากที่จะบอก แน่นอนการออกแบบที่เก่าแก่ที่สุดสำหรับทัวริงสมบูรณ์คอมพิวเตอร์โปรแกรมของ Babbage เครื่องมือวิเคราะห์ล่วงหน้าลงวันที่เอดาเลิฟเลซของโปรแกรมแรกเอกสาร
สำหรับภาษาโปรแกรมแรกฉันได้แย้งว่ามันเป็นภาษาเครื่องของเครื่องมือวิเคราะห์ของ Babbage (จากคำถามภาษาโปรแกรมแรกที่เขียนขึ้นสำหรับคอมพิวเตอร์คืออะไร )
ในการตอบคำถามในชื่อคำถามของคุณเนื่องจากภาษาแอสเซมบลีเป็นซอร์สโค้ดและภาษาแอสเซมบลีก่อนวันภาษาระดับสูงซึ่งสามารถรวบรวมเป็นแอสเซมเบลอร์ซอร์สโค้ดมาก่อน
นอกจากนี้คอมไพเลอร์ไม่จำเป็นต้องสะดวกสบาย
เป็นไปได้อย่างสมบูรณ์ที่จะเขียนซอฟต์แวร์ลงในหน่วยความจำโดยตรงหากคุณจำตารางop-code ที่เหมาะสม ในความเป็นจริงแล้วคอมพิวเตอร์ยุคต้นบางรุ่นต้องการให้ผู้ใช้ต่อยรหัส bootstrap บนแผงปุ่มกดเลขฐานสิบหกด้านหน้าเพื่อให้สามารถบูตได้ แต่คุณสามารถแตะที่รหัสที่คุณชอบและมันจะทำงาน
เป็นที่ยอมรับว่า CPU มีความซับซ้อนมากขึ้นซึ่งจะยากขึ้น แต่ชุดคำสั่งอย่างง่ายเช่น6809หรือZ80 (ไม่สนใจทุกโหมดการจัดทำดัชนีแปลก) ค่อนข้างง่ายในการเขียนโปรแกรมได้โดยไม่ต้องประกอบให้อยู่คนเดียวเรียบเรียงจากภาษาระดับสูง
ถ้าเครื่องมือวิเคราะห์ของ Babbage สร้างขึ้นมาฉันแน่ใจว่าคงมีsteampunk Melเขียนโปรแกรมที่ดีที่สุดลงบนการ์ดทอโดยตรง
movl $0, -20(%rbp)
ในขณะที่รหัสเครื่องคือC745EC00000000
และเป็นสิ่งหลัง (ดีอะไรอย่างนั้น) ที่ถูกป้อนหรืออ่านด้วยตนเองจากเทปกระดาษเป็นครั้งแรก ว่ารหัสเครื่องนับเป็นซอร์สโค้ดหรือไม่ฉันก็อยากจะพูดว่า "อะไรก็ตามที่ลอยอยู่ในเรือของคุณ" ถ้าคุณสลับมันด้วยตนเองใช่แล้วฉันจะบอกว่ามันนับ
คอมไพเลอร์เป็นครั้งแรกครั้งแรกมันถูกเขียนโดยตรงในรหัสเครื่องสำหรับแหล่งที่ไม่สามารถรวบรวมโดยไม่ต้องรวบรวม
บทความ Wikipedia เช่นนี้เกี่ยวกับภาษาคอมพิวเตอร์สามารถตอบคำถามส่วนใหญ่ได้ ถ้าไม่ใช่เพียงเลือกหนังสือเล่มใดเล่มหนึ่งจาก Tanenbaum เช่นStructured Computer Organizationซึ่งสามารถตอบคำถามได้มากกว่าที่คุณจะถาม :)
ฉันไม่สามารถพูดอะไรที่เฉพาะเจาะจงมากขึ้นสำหรับคำถามของคุณกว้างเกินไป
มีล่ามอยู่ก่อนคอมไพเลอร์ดังนั้นจึงมีซอร์สโค้ดต่อหน้าคอมไพเลอร์
มีบางเอกสารที่น่าสนใจมากในประวัติศาสตร์ของการคำนวณที่มีที่นี่ ซอร์สโค้ดสำหรับคอมไพเลอร์ FORTRAN II น่าจะพร้อมใช้งาน แต่ลิงก์เหล่านั้นไม่ทำงาน
เอกสารนี้จากปี 1954 อธิบายล่าม Whirlwhind
คำถามนี้เป็นสาระสำคัญอย่างยิ่งในการตีความความหมายของ 'รหัสต้นฉบับ' ของเรา หากเรากำหนดว่า 'คำสั่งคอมพิวเตอร์ตามข้อความที่รวบรวม' แปลว่าน่าจะเป็นคอมไพเลอร์มาก่อน
ฉันมีแนวโน้มที่จะไปกับบางสิ่งที่เชื่อถือได้มากกว่าเช่นกระดาษของมาร์คฮาร์แมนว่า "ทำไมการวิเคราะห์ซอร์สโค้ดและการจัดการจะมีความสำคัญเสมอ"นำเสนอในการประชุมนานาชาติครั้งที่สิบ IEEE เกี่ยวกับการวิเคราะห์และการจัดการซอร์สโค้ด
รายละเอียด 1 (ซอร์สโค้ด): เพื่อความชัดเจน 'ซอร์สโค้ด' ถูกนำมาใช้เพื่อหมายถึงคำอธิบายที่ปฏิบัติการได้อย่างสมบูรณ์ของระบบซอฟต์แวร์ ดังนั้นจึงถูกตีความว่าเป็นการรวมรหัสเครื่องภาษาระดับสูงมากและการแสดงภาพกราฟิกที่เรียกใช้งานได้ของระบบ
และฉันคิดว่าคำตอบของคุณมีความหมายโดยนัยในคำนิยามนั้น - ซอร์สโค้ดส่วนใหญ่มาก่อนแน่นอน
อัลกอริธึมถูกคัดแยกออกมาบนกระดาษจากนั้นอะลัสนั้นถูกต่อสายทางกายภาพ / กลไก (สายที่กำลังเคลื่อนที่) เพื่อเปลี่ยนโปรแกรมที่คุณย้ายสายและเรียกใช้อีกครั้ง
ต่อมาภาษาแอสเซมบลีที่เรียงลำดับบนกระดาษแปลเป็นรหัสเครื่องจักรด้วยมือจากนั้นใช้สวิตช์ ฯลฯ เพื่อป้อนลงใน ram หรือต่อยบัตร ฯลฯ ในที่สุดคุณสามารถสร้างแอสเซมเบลอร์จากนั้นคุณสามารถตั้งโปรแกรมในแอสเซมบลีไม่ใช่รหัสเครื่องจากนั้นคุณสามารถคอมไพเลอร์ ในที่สุดคุณสามารถ bootstrap คอมไพเลอร์นั้น และสร้างภาษาใหม่และคอมไพเลอร์ใหม่เป็นต้น
ภาษาแรกไม่ใช่ภาษาหลังจากนั้นภาษาแรกเป็นภาษาแอสเซมบลี สำหรับโปรเซสเซอร์ทุกภาษาภาษาแรกคือภาษาแอสเซมบลี (มาจากรหัสเครื่อง) ชุดการเรียนการสอนได้รับการออกแบบก่อนจากนั้นฮาร์ดแวร์ที่จะใช้มันจากนั้นประกอบแล้วคอมไพเลอร์