ประวัติศาสตร์การคำนวณน่าจะเริ่มต้นจากมนุษย์ยุคแรกที่ใช้ก้อนกรวดในการคำนวณผลรวมของจำนวนสองจำนวน Marshack (แห่ง Harvard) ค้นพบว่าสิ่งที่เคยเชื่อกันว่าเป็นแค่รอยขีดบนกระดูกเก่าแก่จากยุคถ้ำนั้นแท้จริงแล้วเป็นเส้นที่ถูกจารึกอย่างระมัดระวัง ซึ่งดูเหมือนจะเกี่ยวข้องกับข้างขึ้นข้างแรมของดวงจันทร์ สโตนเฮนจ์ (Stonehenge) อันโด่งดังบนที่ราบซอลส์บรีในอังกฤษมีช่วงการก่อสร้างสามช่วงคือ 1900–1700, 1700–1500 และ 1500–1400 bc และดูเหมือนจะเกี่ยวข้องอย่างใกล้ชิดกับการสังเกตการณ์ทางดาราศาสตร์ ซึ่งบ่งบอกถึงความซับซ้อนทางดาราศาสตร์ในระดับสูง งานวิจัยด้านโบราณดาราศาสตร์ (archeoastronomy) เผยให้เห็นว่าชนเผ่าดึกดำบรรพ์จำนวนมากมีความรู้เกี่ยวกับเหตุการณ์ทางดาราศาสตร์อย่างมาก จีน อินเดีย และเม็กซิโกมีความโดดเด่นในเรื่องนี้ และเรายังคงมีสิ่งก่อสร้างของพวกเขา ซึ่งเราเรียกว่าหอดูดาว แม้ว่าเราจะมีความเข้าใจน้อยเกินไปเกี่ยวกับวิธีการใช้งานของมัน ที่ราบทางตะวันตกของเรามีร่องรอยมากมายของหอดูดาวทางดาราศาสตร์ที่ชาวอินเดียนแดงใช้
Sand pan และ ลูกคิด (abacus) เป็นเครื่องมือที่เกี่ยวข้องกับการคำนวณโดยตรงมากขึ้น และการมาถึงของตัวเลขอารบิกจากอินเดียถือเป็นก้าวสำคัญในด้านการคำนวณบริสุทธิ์ การต่อต้านอย่างรุนแรงต่อการนำตัวเลขอารบิกมาใช้ (ซึ่งไม่ใช่ในรูปแบบภาษาอาหรับดั้งเดิม) เกิดขึ้นจากกลุ่มข้าราชการ ถึงขนาดทำให้มันผิดกฎหมาย แต่ในที่สุด (ช่วงคริสต์ทศวรรษ 1400) ความเป็นประโยชน์และข้อได้เปรียบทางเศรษฐกิจก็ชนะเหนือการใช้ตัวอักษรโรมันที่ยุ่งยากกว่า (และกรีกยุคก่อนหน้านั้น) ที่ใช้ตัวอักษรแทนตัวเลข
การประดิษฐ์ลอการิทึม (logarithms) โดย Napier (1550–1617) คือก้าวสำคัญครั้งถัดมา จากนั้นก็เกิดไม้บรรทัดคำนวณ (slide rule) ซึ่งมีตัวเลขบนส่วนต่าง ๆ เป็นความยาวที่ proportional กับ log ของตัวเลข ดังนั้นการบวกความยาวสองช่วงจึงเท่ากับการคูณตัวเลขสองตัว อุปกรณ์อนาล็อกนี้คือไม้บรรทัดคำนวณ ถือเป็นอีกก้าวสำคัญ แต่ในด้านคอมพิวเตอร์แบบอนาล็อก ไม่ใช่ดิจิทัล ผมเคยใช้ไม้บรรทัดคำนวณที่ซับซ้อนมากในรูปแบบทรงกระบอกเส้นผ่านศูนย์กลาง 6–8 นิ้ว ยาวประมาณสองฟุต มีสเกลมากมายทั้งบนผิวด้านนอกและด้านในของทรงกระบอก และติดตั้งแว่นขยายเพื่อให้อ่านสเกลได้แม่นยำยิ่งขึ้น
ไม้บรรทัดคำนวณในช่วงทศวรรษ 1930 และ 1940 เป็นอุปกรณ์มาตรฐานของวิศวกร มักพกในกระเป๋าหนังที่คาดกับเข็มขัดเพื่อเป็นเครื่องหมายแสดงตัวตนบนมหาวิทยาลัย ไม้บรรทัดคำนวณมาตรฐานของวิศวกรคือ "ten-inch log log decitrig slide rule" หมายถึงสเกลยาวสิบนิ้ว รวมถึงสเกล log log สเกลกำลังสองและกำลังสาม รวมถึงสเกลตรีโกณมิติอีกมากมายในหน่วยทศนิยมขององศา ปัจจุบันมันไม่ได้ผลิตอีกแล้ว!
ตามเส้นทางอนาล็อกต่อไป ขั้นสำคัญถัดมาคือ differential analyzer ซึ่งช่วงแรกใช้เครื่องมืออินทิเกรตแบบกลไกในรูปแบบอนาล็อก เครื่องที่ประสบความสำเร็จในช่วงแรกถูกสร้างขึ้นราวปี 1930 โดย Vannevar Bush แห่ง mit ต่อมา rda #2 ซึ่งยังคงเป็นอนาล็อกและใช้กลไกเป็นหลัก มีการเชื่อมต่อทางอิเล็กทรอนิกส์จำนวนมาก ผมใช้มันอยู่ช่วงหนึ่ง (1947–1948) ในการคำนวณ วิถีขีปนาวุธนำวิถี Nike ในช่วงการออกแบบเบื้องต้น
ในช่วง wwii คอมพิวเตอร์อนาล็อกแบบอิเล็กทรอนิกส์เริ่มเข้าสู่การใช้งานทางทหาร พวกมันใช้คอนเดนเซอร์เป็นอินทิเกรเตอร์แทนล้อและลูกบอลกลไกรุ่นก่อนหน้า (ดังนั้นจึงสามารถอินทิเกรตเทียบกับเวลาได้เท่านั้น) นี่คือก้าวสำคัญในทางปฏิบัติ และผมใช้เครื่องประเภทนี้ที่ Bell Telephone Laboratories อยู่หลายปี มันถูกสร้างขึ้นจากชิ้นส่วนของ m9 gun directors เก่า ๆ อันที่จริงเราใช้ชิ้นส่วนจาก m9 ที่ปลดประจำการแล้วเพื่อสร้างคอมพิวเตอร์เครื่องที่สอง ที่จะใช้แยกกันหรือใช้ร่วมกับเครื่องแรกเพื่อขยายความสามารถในการจัดการปัญหาที่ใหญ่ขึ้น
กลับมาที่การคำนวณแบบดิจิทัล Napier ยังได้ออกแบบ "Napier's bones" ซึ่งเป็นแท่งงาช้างที่มีตัวเลขที่ช่วยให้คูณตัวเลขได้ง่าย นี่เป็นแบบดิจิทัล ไม่ใช่ไม้บรรทัดคำนวณแบบอนาล็อก
จาก Napier's bones น่าจะนำไปสู่เครื่องคิดเลขตั้งโต๊ะที่ทันสมัยมากขึ้น Schickard เขียนจดหมาย (20 ธ.ค. 1623) ถึง Kepler (ผู้มีชื่อเสียงทางดาราศาสตร์) ว่าไฟไหม้ในห้องทดลองของเขาได้ทำลายเครื่องที่เขากำลังสร้างให้ Kepler การตรวจสอบบันทึกและภาพร่างของเขาบ่งชี้ว่าเครื่องนั้นสามารถทำการคำนวณพื้นฐานสี่อย่างได้—ถ้าคุณพอจะยืดหยุ่นในเรื่องความหมายของการคูณและการหารในเครื่องจักรแบบนั้น Pascal (1623–1662) ซึ่งเกิดในปีเดียวกัน มักได้รับเครดิตว่าเป็นผู้ประดิษฐ์เครื่องคิดเลขตั้งโต๊ะ แต่เครื่องของเขาทำได้แค่บวกและลบ—แค่การดำเนินการเหล่านั้นก็เพียงพอที่จะช่วยพ่อของเขาที่ทำงานด้านประเมินภาษี Leibnitz (ผู้มีชื่อเสียงด้านแคลคูลัส) ก็ได้ทดลองสร้างคอมพิวเตอร์และเพิ่มการคูณและการหารเข้าไปด้วย แม้ว่าเครื่องของเขาจะไม่น่าเชื่อถือนัก
Babbage (1791–1871) คือชื่อสำคัญถัดมาในวงการคอมพิวเตอร์ดิจิทัล และเขามักถูกมองว่าเป็นบิดาแห่งการคำนวณสมัยใหม่ การออกแบบแรกของเขาคือ difference engine ซึ่งมีพื้นฐานจากแนวคิดง่าย ๆ ที่ว่า polynomial สามารถคำนวณค่าที่จุดที่ห่างเท่า ๆ กันโดยใช้เพียงการบวกและการลบต่อเนื่องกัน และเนื่องจากฟังก์ชันส่วนใหญ่ในระดับท้องถิ่นสามารถแทนด้วย polynomial ที่เหมาะสม จึงสามารถสร้าง "ตารางที่ผลิตโดยเครื่องจักร" (machine-made tables) ได้ (Babbage ยืนกรานให้เครื่องจักรเป็นผู้พิมพ์เพื่อป้องกันข้อผิดพลาดของมนุษย์) รัฐบาลอังกฤษให้การสนับสนุนทางการเงิน แต่เขาไม่เคยสร้างมันสำเร็จ พ่อลูกนามสกุล Scheutz ชาวนอร์เวย์สามารถสร้างเครื่องที่ใช้งานได้หลายเครื่อง และ Babbage ก็แสดงความยินดีกับความสำเร็จของพวกเขา เครื่องหนึ่งของพวกเขาถูกขายให้กับหอดูดาว Albany ในนิวยอร์ก และถูกใช้สร้างตารางทางดาราศาสตร์บางส่วน
ดังที่เกิดขึ้นบ่อยครั้งในวงการคอมพิวเตอร์ Babbage ยังไม่ทันเสร็จสิ้น difference engine เขาก็ได้คิดค้น analytical engine ที่ทรงพลังกว่ามาก ซึ่งไม่แตกต่างจาก การออกแบบคอมพิวเตอร์แบบ von Neumann ในปัจจุบันมากนัก เขาไม่เคยทำให้มันทำงานได้สำเร็จ กลุ่มหนึ่งในอังกฤษสร้างเครื่องจากแบบร่างที่ใช้งานได้จริงของเขา (ปี 1992) และสามารถเดินเครื่องได้สำเร็จตามที่เขาออกแบบไว้!
ขั้นสำคัญในทางปฏิบัติถัดมาคือ comptometer ซึ่งเป็นเพียงอุปกรณ์บวกเลข แต่ด้วยการบวกซ้ำ ๆ ควบคู่กับการเลื่อนตำแหน่ง ก็เทียบเท่ากับการคูณ และถูกใช้อย่างแพร่หลายเป็นเวลาหลายปี
จากนั้นก็เกิดลำดับของเครื่องคิดเลขตั้งโต๊ะที่ทันสมัยยิ่งขึ้น เริ่มจาก Millionaire ตามด้วย Marchant, Friden และ Monroe ในช่วงแรกเป็นแบบควบคุมด้วยมือและใช้แรงคน แต่ค่อย ๆ มีระบบควบคุมในตัวมากขึ้น โดยหลักเป็นคานกลไก เริ่มตั้งแต่ราวปี 1937 พวกมันค่อย ๆ ได้รับมอเตอร์ไฟฟ้าเพื่อช่วยในส่วนที่ต้องใช้แรงในการคำนวณ ก่อนปี 1944 อย่างน้อยหนึ่งรุ่นมีการคำนวณรากที่สอง (square root) ในตัวเครื่อง (ยังคงเป็นคานกลไกที่ถูกจัดเรียงอย่างซับซ้อน) เครื่องคิดเลขมือเหล่านี้เป็นพื้นฐานของกลุ่มคนที่ทำงานคำนวณ ตัวอย่างเช่น เมื่อผมมาที่ Bell Telephone Laboratories ในปี 1946 มีกลุ่มแบบนี้สี่กลุ่มในห้องปฏิบัติการ แต่ละกลุ่มมีผู้หญิงประมาณหกถึงสิบคน: กลุ่มเล็กในแผนกคณิตศาสตร์ กลุ่มใหญ่กว่าในแผนกเครือข่าย กลุ่มหนึ่งในแผนกสวิตชิ่ง และอีกกลุ่มในแผนกควบคุมคุณภาพ
การคำนวณด้วยบัตรเจาะรู (punched-card) เริ่มขึ้นเพราะคนที่มองการณ์ไกลคนหนึ่งเห็นว่าสำมะโนประชากรของรัฐบาลกลาง ซึ่งตามกฎหมายต้องทำทุก 10 ปี ใช้เวลานานมากจนครั้งถัดไป (ปี 1890) จะไม่เสร็จก่อนที่ครั้งต่อมาจะเริ่ม ยกเว้น จะใช้วิธีทางเครื่องจักร Hollerith รับงานนี้และสร้างเครื่องจักรบัตรเจาะรูเครื่องแรก และในการสำรวจสำมะโนประชากรครั้งต่อ ๆ มา เขาสร้างเครื่องจักรที่ทรงพลังยิ่งขึ้นเพื่อให้ทันกับทั้งจำนวนประชากรที่เพิ่มขึ้นและจำนวนคำถามที่เพิ่มขึ้นในการสำรวจ ในปี 1928 ibm เริ่มใช้บัตรที่มีรูสี่เหลี่ยมเพื่อให้แปรงไฟฟ้าสามารถตรวจจับการมีหรือไม่มีรูบนบัตรในตำแหน่งที่กำหนดได้ง่าย Powers ซึ่งออกจากกลุ่มสำมะโนประชากรเช่นกัน ยังคงใช้บัตรรูปแบบรูกลม ซึ่งออกแบบมาให้ตรวจจับด้วยแท่งกลไกที่เรียกว่า "นิ้ว" (fingers)
ราวปี 1935 ibm สร้างเครื่องเจาะกลไก 601 ซึ่งสามารถคูณและเพิ่มการบวกสองค่าเข้ากับผลคูณได้ในเวลาเดียวกัน มันกลายเป็นหนึ่งในหลักสำคัญของการคำนวณ—มีประมาณ 1,500 เครื่องให้เช่า และโดยเฉลี่ยแล้วอาจคูณได้หนึ่งครั้งในทุกสองถึงสามวินาที เครื่องเหล่านี้พร้อมกับเครื่องคูณสามเท่าและเครื่องหารพิเศษบางรุ่น ถูกใช้ที่ Los Alamos เพื่อคำนวณการออกแบบ ระเบิดปรมาณูลูกแรก
ในด้านกลไกแบบรีเลย์ George Stibitz สร้าง (1939) คอมพิวเตอร์จำนวนเชิงซ้อน (Complex Number Computer) และจัดแสดงที่ Dartmouth (1940) โดยที่เครื่องหลักอยู่ในนิวยอร์ก จึงถือเป็นเครื่อง remote terminal ยุคแรก และเนื่องจากปกติมีสถานีอินพุตสามแห่งในตำแหน่งที่แตกต่างกันในห้องปฏิบัติการ มันจึงเป็น "เครื่องแบบแบ่งเวลา" (time-shared machine) ถ้าจะพูดอย่างใจดี
Konrad Zuse ในเยอรมนีและ Howard Aitken ที่ Harvard เช่นเดียวกับ Stibitz ต่างก็ผลิตชุดคอมพิวเตอร์รีเลย์ที่มีความซับซ้อนมากขึ้นเรื่อย ๆ รุ่น Model 5 ของ Stibitz มีคอมพิวเตอร์สองเครื่องในเครื่องเดียวกัน และสามารถแบ่งปันงานเมื่อจำเป็น—เรียกได้ว่าเป็นเครื่อง multiprocessor ถ้าคุณต้องการ ในสามคนนี้ Zuse น่าจะยิ่งใหญ่ที่สุด เมื่อพิจารณาทั้งความยากลำบากที่เขาต้องเผชิญและผลงานด้านซอฟต์แวร์ของเขาในภายหลัง
มักมีการอ้างว่ายุคคอมพิวเตอร์อิเล็กทรอนิกส์เริ่มต้นด้วย eniac ที่สร้างให้กองทัพสหรัฐฯ และส่งมอบในปี 1946 มันมีหลอดสุญญากาศประมาณ 18,000 หลอด มีขนาดใหญ่โตมโหฬาร และตามการออกแบบดั้งเดิม มันถูกเดินสายคล้ายกับ ibm plug boards แต่การเชื่อมต่อระหว่างกันเพื่ออธิบายโจทย์แต่ละปัญหาล้อมรอบทั้งห้องเครื่อง! ตราบใดที่มันถูกใช้ตามวัตถุประสงค์เดิม คือการคำนวณวิถี ballistic ข้อบกพร่องนี้ก็ไม่ร้ายแรงนัก ท้ายที่สุด เช่นเดียวกับ ibm cpc ในยุคหลัง มันถูกจัดเรียงใหม่โดยผู้ใช้อย่างชาญฉลาดเพื่อให้ทำงานเสมือนถูกโปรแกรมด้วยคำสั่ง (ตัวเลขบนตาราง ballistic) แทนที่จะเดินสายเชื่อมต่อ
Mauchly และ Eckert ผู้สร้าง eniac พบว่าเช่นเดียวกับที่ Babbage เคยพบ ว่าก่อนที่เครื่องแรกของพวกเขาจะเสร็จสมบูรณ์ พวกเขาก็มองเห็นเครื่องที่ใหญ่กว่าและถูกโปรแกรมภายในตัวแล้ว นั่นคือ edvac Von Neumann ในฐานะที่ปรึกษาของโครงการ ได้เขียนรายงานขึ้นมา และด้วยเหตุนี้นวัตกรรมการโปรแกรมภายในจึงมักถูกยกเครดิตให้เขา แม้ว่าเท่าที่ผมรู้เขาไม่เคยอ้างหรือปฏิเสธเครดิตนั้น ในฤดูร้อนปี 1946 Mauchly และ Eckert ได้จัดคอร์ส เปิดให้ทุกคนเข้าเรียน เกี่ยวกับวิธีการออกแบบและสร้างคอมพิวเตอร์อิเล็กทรอนิกส์ และส่งผลให้ผู้เข้าอบรมจำนวนมากไปสร้างเครื่องของตัวเอง Wilkes แห่ง Cambridge ประเทศอังกฤษ เป็นคนแรกที่ทำให้เครื่องทำงานได้อย่างมีประโยชน์ นั่นคือ edsac
ในช่วงแรกแต่ละเครื่องเป็นรุ่นเฉพาะ แม้หลายเครื่องจะถูกคัดลอกมาจาก (แต่มักสร้างเสร็จก่อน) เครื่องของ Institute for Advanced Studies ภายใต้การดูแลของ von Neumann เนื่องจากงานวิศวกรรมของเครื่องนั้นดูเหมือนจะล่าช้า ส่งผลให้เครื่องที่เรียกว่าสำเนาหลายเครื่อง เช่น maniac-i (1952) ซึ่งตั้งชื่อเพื่อกำจัดการตั้งชื่อเครื่องแบบไร้สาระและสร้างภายใต้การดูแลของ N.C. Metropolis เสร็จก่อนเครื่องของ Institute เสียอีก เครื่องนี้และ maniac-ii (1955) ถูกสร้างที่ Los Alamos ในขณะที่ maniac-iii (1959) ถูกสร้างที่ University of Chicago รัฐบาลกลาง โดยเฉพาะผ่านทางกองทัพ สนับสนุนเครื่องจักรในยุคแรกส่วนใหญ่ และเราต้องขอขอบคุณพวกเขาอย่างยิ่งที่ช่วยเริ่มต้นการปฏิวัติคอมพิวเตอร์
การผลิตคอมพิวเตอร์อิเล็กทรอนิกส์เชิงพาณิชย์ครั้งแรกก็อยู่ภายใต้ Mauchly และ Eckert อีกครั้ง และเนื่องจากบริษัทที่พวกเขาก่อตั้งถูกรวมกับอีกบริษัทหนึ่ง เครื่องของพวกเขาจึงถูกเรียกในที่สุดว่า univac โดยเฉพาะเครื่องของสำนักงานสำมะโนประชากรที่โดดเด่นเป็นพิเศษ ibm เข้ามาช้าไปหน่อยด้วยเครื่อง ibm 701 จำนวน 18 เครื่อง (20 ถ้านับผู้ใช้ด้านการเข้ารหัสลับ) ผมจำได้ดีว่าพวกเรากลุ่มหนึ่งหลังจากฟังเซสชันเกี่ยวกับ ibm 701 ในการประชุมที่พูดถึงแผนการ 18 เครื่องนี้ ต่างเชื่อว่ามันจะอิ่มตัวตลาดไปอีกหลายปี! ข้อผิดพลาดของเราคือเราคิดถึงแต่สิ่งที่เรากำลังทำอยู่ในขณะนั้น และไม่ได้คิดไปในทิศทางของแอปพลิเคชันใหม่ทั้งหมดของเครื่องจักร ผู้เชี่ยวชาญชั้นนำในเวลานั้นผิดอย่างสิ้นเชิง! และไม่ใช่ผิดนิดเดียวด้วย! และไม่ใช่ครั้งสุดท้ายด้วย!
ขอผมเปรียบเทียบให้ดูบ้าง:
| เครื่องคิดเลขมือ | 1/20 ops. ต่อวินาที |
| เครื่องรีเลย์ | 1 op. ต่อวินาที โดยทั่วไป |
| เครื่อง Magnetic drum | 15–1,000 ขึ้นอยู่กับ fixed หรือ floating point |
| ประเภท 701 | 1,000 ops. ต่อวินาที |
| ปัจจุบัน (1990) | 10 9 (ประมาณค่าสูงสุดของแบบ von Neumann) |
การเปลี่ยนแปลงด้านความเร็วและความจุในการจัดเก็บที่ผมต้องเผชิญในชีวิตการทำงาน น่าจะทำให้คุณพอเห็นภาพสิ่งที่คุณจะต้องเจอในอาชีพของคุณ แม้แต่สำหรับเครื่องแบบ von Neumann ก็ยังมีปัจจัยด้านความเร็วอีกประมาณ 100 เท่าก่อนถึงความเร็วอิ่มตัว
เนื่องจากตัวเลขแบบนี้อยู่นอกเหนือประสบการณ์ของมนุษย์ส่วนใหญ่ ผมจึงจำเป็นต้องแนะนำมิติของมนุษย์ให้กับความเร็วที่คุณจะได้ยิน ก่อนอื่น สัญกรณ์ (วงเล็บคือสัญลักษณ์มาตรฐาน):
| milli (m) | 10 –3 | kilo (k) | 10 3 |
| micro (µ) | 10 –6 | mega (M) | 10 6 |
| nano (n) | 10 –9 | giga (G) | 10 9 |
| pico (p) | 10 –12 | terra (T) | 10 12 |
| femto (f) | 10 –15 | ||
| atto (a) | 10 –18 |
ต่อไปคือมิติของมนุษย์ ในหนึ่งวันมี 60 × 60 × 24 = 86,400 วินาที ในหนึ่งปีมีประมาณ 3.15 × 10 7 วินาที และใน 100 ปี ซึ่งอาจยาวนานกว่าช่วงชีวิตของคุณ มีประมาณ 3.15 × 10 9 วินาที ดังนั้นในสามวินาที เครื่องที่ทำ 10 9 floating-point operations ต่อวินาที (flops) จะดำเนินการมากกว่าจำนวนวินาทีในชีวิตคุณทั้งหมด และเกือบแน่นอนว่าทำได้ถูกต้องทั้งหมด!
สำหรับอีกมุมมองหนึ่งเกี่ยวกับมิติของมนุษย์ ความเร็วแสงในสุญญากาศคือประมาณ 3 × 10 10 ซม./วินาที (ตามเส้นลวดจะช้ากว่าประมาณ 7/10 เท่า) ดังนั้นในหนึ่งนาโนวินาทีแสงเดินทางได้ 30 ซม. ประมาณหนึ่งฟุต ที่ระดับพิโควินาที ระยะทางก็คือประมาณ 1/100 นิ้ว ค่าเหล่านี้คือระยะทางที่สัญญาณสามารถเดินทางได้ (อย่างดีที่สุด) ใน ic ดังนั้นที่อัตราพัลส์บางอย่างที่เราใช้ในปัจจุบัน ชิ้นส่วนต่าง ๆ ต้องอยู่ใกล้กันมาก—ใกล้ในมิติของมนุษย์—ไม่อย่างนั้นความเร็วที่อาจเป็นไปได้ส่วนใหญ่จะสูญเสียไปในการเดินทางระหว่างชิ้นส่วน นอกจากนี้เราไม่สามารถใช้การวิเคราะห์วงจรแบบ lumped ได้อีกต่อไป
แล้วถ้าเป็น มิติธรรมชาติ ของความยาวแทนที่จะเป็นมิติของมนุษย์ล่ะ? อะตอมมีขนาดต่างกัน โดยทั่วไปอยู่ที่ประมาณ 1 ถึง 3 อังสตรอม (หนึ่งอังสตรอมคือ 10 -8 ซม.) และในผลึกจะห่างกันประมาณ 10 อังสตรอมโดยทั่วไป แม้จะมีข้อยกเว้น ใน 1 เฟมโตวินาที แสงเดินทางผ่านได้ประมาณ 300 อะตอม ดังนั้นชิ้นส่วนในคอมพิวเตอร์ที่เร็วมากต้องมีขนาดเล็กและอยู่ใกล้กันมาก!
ถ้าคุณคิดถึงทรานซิสเตอร์ที่ใช้สารเจือปน (impurities) และโดยทั่วไปสารเจือปนมีประมาณหนึ่งในล้านอะตอม คุณคงไม่เชื่อว่ามีทรานซิสเตอร์ที่มีอะตอมเจือปนเพียงอะตอมเดียว แต่ถ้าคุณลดอุณหภูมิเพื่อลดสัญญาณรบกวนพื้นหลัง 1,000 อะตอมเจือปนก็พอจะอยู่ในจินตนาการได้—ดังนั้นอุปกรณ์โซลิดสเตตต้องมีขนาดอย่างน้อยประมาณ 1,000 อะตอมในแต่ละด้าน และเมื่อการเชื่อมต่อระหว่างกันบางครั้งต้องใช้ระยะอย่างน้อยสิบเท่าของระยะอุปกรณ์ คุณก็คงเข้าใจว่าทำไมการลดระยะระหว่างอุปกรณ์ที่เชื่อมต่อกันให้ต่ำกว่า 100,000 อะตอมจึงเป็นเรื่องที่กดดันมาก ( 3 พิโควินาที)
แล้วก็มีเรื่องการระบายความร้อน แม้จะมีการพูดถึงคอมพิวเตอร์ที่ย้อนกลับได้ทางอุณหพลศาสตร์ (thermodynamically reversible computers) แต่จนถึงตอนนี้ก็เป็นแค่การพูดคุยและบทความที่ตีพิมพ์ ความร้อนยังคงเป็นปัญหา ยิ่งมีชิ้นส่วนต่อพื้นที่มาก และยิ่งอัตราการเปลี่ยนสถานะเร็วเท่าไหร่ ก็ยิ่งเกิดความร้อนในพื้นที่เล็ก ๆ มากขึ้น ซึ่งต้องระบายออกก่อนที่ทุกอย่างจะละลาย เพื่อชดเชยบางส่วน เราได้ลดแรงดันไฟฟ้าลงเรื่อย ๆ และตอนนี้กำลังไปที่ 2 1/2 หรือ 3 โวลต์สำหรับการทำงานของ ic ความเป็นไปได้ในการใช้ชั้นเพชรที่ฐานของชิปกำลังถูกตรวจสอบอยู่ในขณะนี้ เนื่องจากเพชรเป็นตัวนำความร้อนที่ดีเยี่ยม ดีกว่าทองแดงมาก ตอนนี้มีโอกาสที่ดีสำหรับโครงสร้างผลึกที่คล้ายกันซึ่งอาจมีราคาถูกกว่าเพชรและมีคุณสมบัติการนำความร้อนที่ดีมาก
เพื่อเพิ่มความเร็วให้คอมพิวเตอร์ เราได้เพิ่มหน่วยคำนวณเลขเป็นสอง สี่ หรือมากกว่าในเครื่องเดียวกัน และยังได้คิดค้น pipeline และ cache memory อีกด้วย สิ่งเหล่านี้คือก้าวเล็ก ๆ ที่มุ่งสู่คอมพิวเตอร์แบบขนานสูง (highly parallel computers)
ดังนั้นคุณคงเห็นลางบอกเหตุสำหรับเครื่อง single-processor—เรากำลังเข้าใกล้จุดอิ่มตัว จึงไม่น่าแปลกใจที่เราหลงใหลในเครื่องแบบขนานสูง (highly parallel machines) น่าเสียดายที่ยังไม่มีโครงสร้างมาตรฐานเดียวสำหรับเครื่องเหล่านี้ แต่กลับมีการออกแบบที่แข่งขันกันมากมาย ซึ่งแต่ละแบบต้องการกลยุทธ์ที่แตกต่างกันเพื่อใช้ประโยชน์จากความเร็วที่อาจเป็นไปได้ และมีข้อดีข้อเสียต่างกัน ไม่น่าเป็นไปได้ที่การออกแบบเดียวจะกลายเป็นมาตรฐานสำหรับสถาปัตยกรรมคอมพิวเตอร์แบบขนาน ดังนั้นจึงจะเกิดปัญหาและการสูญเสียความพยายามในการไล่ตามทิศทางที่มีแนวโน้มดีต่าง ๆ เหล่านี้
จากแผนภูมิที่วาดไว้นานแล้วโดย Los Alamos ( lanl ) โดยใช้ข้อมูลของคอมพิวเตอร์ที่เร็วที่สุดในตลาด ณ เวลาต่าง ๆ พวกเขาพบสมการสำหรับจำนวน operations ต่อวินาทีคือ
และมันก็เข้ากับข้อมูลได้ค่อนข้างดี โดยเวลาเริ่มต้นที่ปี 1943 ในปี 1987 ค่าที่ extrapolate ได้ทำนายไว้ (ล่วงหน้าประมาณ 20 ปี!) ที่ประมาณ 3 × 10 8 และตรงกับเป้าหมาย ค่า asymptote ที่จำกัดคือ 3.585 × 10 9 สำหรับ คอมพิวเตอร์แบบ von Neumann ที่มี single processor
ในประวัติศาสตร์การเติบโตของคอมพิวเตอร์นี้ คุณจะเห็นการเกิดขึ้นจริงของเส้นโค้งการเติบโตแบบ S (S-type growth curve): การเริ่มต้นที่ช้ามาก การพุ่งขึ้นอย่างรวดเร็ว ช่วงยาวของการเติบโตเกือบเป็นเส้นตรงในอัตรา และจากนั้นการเผชิญหน้ากับจุดอิ่มตัวที่หลีกเลี่ยงไม่ได้
ขอย้ำอีกครั้งเพื่อลดทอนให้เห็นภาพในระดับมนุษย์ ช่วงที่ผมเริ่มใช้คอมพิวเตอร์ดิจิทัลอย่างจริงจังภายใน Bell Telephone Laboratories ผมเริ่มต้นด้วยการเช่าเครื่องคอมพิวเตอร์จากภายนอกเป็นเวลาหลายชั่วโมงจนหัวหน้าแผนกคณิตศาสตร์คิดได้เองว่าการมีเครื่องไว้ภายในจะถูกกว่า—เป็นแผนการที่ผมตั้งใจเพื่อหลีกเลี่ยงการเถียงกับเขา เพราะผมคิดว่ามันไร้ประโยชน์และจะทำให้เขา ต่อต้านมากขึ้น ต่อคอมพิวเตอร์ดิจิทัล เมื่อหัวหน้าพูดว่า "ไม่!" แล้ว มันยากมากที่จะเปลี่ยนคำตัดสิน ดังนั้นอย่าให้พวกเขาพูดว่า "ไม่!" กับข้อเสนอของคุณ ผมพบว่าในช่วงแรก ๆ ผมสามารถเพิ่มจำนวนการคำนวณเป็นสองเท่าทุก ๆ ประมาณ 15 เดือน หลายปีต่อมาผมช้าลงเหลือการเพิ่มเป็นสองเท่าทุก ๆ ประมาณ 18 เดือน หัวหน้าแผนกบอกผมอยู่เรื่อยว่าผมจะทำแบบนี้ไปตลอดกาลไม่ได้ และคำตอบที่สุภาพของผมก็คือ "คุณพูดถูกแน่นอน แต่คุณก็แค่ดูผมเพิ่มปริมาณการคำนวณเป็นสองเท่าทุก 18–20 เดือนสิ!" เพราะเครื่องจักรที่มีอยู่ก็เพิ่มอัตราที่สอดคล้องกัน ทำให้ผมและผู้สืบทอดสามารถเพิ่มปริมาณการคำนวณเป็นสองเท่าได้ต่อเนื่องหลายปี เราอาศัยอยู่บนส่วนที่เกือบเป็นเส้นตรงของเส้นโค้ง S ตลอดหลายปีนั้น
อย่างไรก็ตาม ขอบอกตามตรงถึงหัวหน้าแผนกว่า เป็นคำพูดของเขาที่ทำให้ผมตระหนักว่าสิ่งที่สำคัญไม่ใช่จำนวน operations ที่ทำได้ แต่เป็นจำนวนรางวัล micro-Nobel ที่ผมคำนวณได้ต่างหาก นั่นคือคติประจำใจของหนังสือที่ผมตีพิมพ์ในปี 1961:
จุดประสงค์ของการคำนวณคือข้อมูลเชิงลึก (insight) ไม่ใช่ตัวเลข
เพื่อนสนิทของผมแก้เป็น:
จุดประสงค์ของการคำนวณตัวเลขยังคงมองไม่เห็น
ถึงเวลาแล้วที่จะต้องดูรายละเอียดบางอย่างว่าคอมพิวเตอร์ถูกสร้างขึ้นมาอย่างไรในช่วงหลายปีที่ผ่านมา ส่วนประกอบที่เล็กที่สุดที่เราจะพิจารณาคืออุปกรณ์สองสถานะ (two-state devices) สำหรับเก็บ bits ของข้อมูล และสำหรับ gate ที่จะยอมให้สัญญาณผ่านหรือปิดกั้น ทั้งสองเป็นอุปกรณ์ binary และในสถานะความรู้ปัจจุบัน อุปกรณ์เหล่านี้เป็นวิธีการคำนวณที่ง่ายและเร็วที่สุดที่เรารู้จัก
จากส่วนประกอบเหล่านี้ เราสร้างชุดค่าผสมที่ทำให้เราเก็บชุด bits ที่ยาวขึ้นได้ ชุดข้อมูลเหล่านี้มักเรียกว่า number register การควบคุมเชิงตรรกะ (logical control) เป็นเพียงการรวมกันของหน่วยเก็บข้อมูลรวมถึง gate เราสร้าง adder จากอุปกรณ์เหล่านี้ เช่นเดียวกับทุกหน่วยที่ใหญ่ขึ้นในคอมพิวเตอร์
เมื่อมองไปที่หน่วยที่ใหญ่ขึ้น เรามีเครื่องที่ประกอบด้วย: (1) อุปกรณ์จัดเก็บข้อมูล (storage device), (2) หน่วยควบคุมกลาง (central control), (3) หน่วย alu ซึ่งย่อมาจาก arithmetic and logic unit ในหน่วยควบคุมกลางมี register เดียว ซึ่งเราจะเรียกว่า Current Address Register ( car ) มันเก็บ address ของคำสั่งถัดไปที่จะถูกเรียกใช้ Figure 3.1
Figure 3.1—Computer structure (โครงสร้างคอมพิวเตอร์)
รอบการทำงานของคอมพิวเตอร์คือ:
- รับ address ของคำสั่งถัดไปจาก car
- ไปที่ address นั้นใน storage และรับคำสั่งนั้นมา
- ถอดรหัสและดำเนินการตามคำสั่งนั้น
- เพิ่ม 1 ให้กับ address ใน car และเริ่มต้นใหม่
เราจะเห็นว่าเครื่องไม่รู้ว่ามันเคยไปที่ไหนมา หรือกำลังจะไปที่ไหน มันมีเพียงมุมมองที่แคบ (myopic view) ของการทำรอบเดิมซ้ำ ๆ อย่างไม่รู้จบ ต่ำกว่าระดับนี้ gate แต่ละตัวและอุปกรณ์เก็บข้อมูลสองทางไม่รู้ความหมายใด ๆ—พวกมันแค่ตอบสนองต่อสิ่งที่ควรทำ พวกมันก็ไม่มีความรู้โดยรวมเกี่ยวกับสิ่งที่เกิดขึ้น หรือความหมายใด ๆ ที่จะ attach กับ bit ไม่ว่าจะเป็นการเก็บข้อมูลหรือ gate
มีคำสั่งบางอย่างที่ ขึ้นอยู่กับสถานะบางอย่างของเครื่อง จะใส่ address ของคำสั่งนั้นลงใน car (และในกรณีนี้จะไม่เพิ่ม 1) จากนั้นเครื่องเมื่อเริ่มรอบการทำงาน ก็จะพบ address ที่ไม่ใช่ตำแหน่งถัดไปใน storage ของคำสั่งก่อนหน้า แต่เป็นตำแหน่งที่ถูกใส่เข้าไปใน car
ผมทบทวนเรื่องนี้เพื่อให้คุณเข้าใจชัดเจนว่าเครื่องจักรประมวลผล bits ของข้อมูลตาม bits อื่น และในมุมมองของเครื่องจักรนั้นไม่มี ความหมาย ใด ๆ ต่อสิ่งที่เกิดขึ้น— เป็นเราต่างหากที่เป็นผู้กำหนดความหมายให้กับ bits เครื่องจักรคือ "เครื่องจักร" ในความหมายคลาสสิก มันทำในสิ่งที่มันทำและไม่ทำอย่างอื่น (นอกจากจะทำงานผิดปกติ) แน่นอนว่ามี real-time interrupt และวิธีอื่น ๆ ที่ bits ใหม่ ๆ จะเข้ามาสู่เครื่อง แต่สำหรับเครื่องแล้ว พวกมันก็แค่ bits
แต่ก่อนที่เราจะออกจากหัวข้อนี้ ขอให้ระลึกถึงในกรีกโบราณ Democritus (460–362 bc ) กล่าวว่า "ทุกสิ่งคืออะตอมและความว่างเปล่า" เขาจึงแสดงมุมมองของนักฟิสิกส์ยุคปัจจุบันหลายคน: โลกรวมถึงคุณและฉัน ล้วนประกอบด้วยโมเลกุล และเราดำรงอยู่ในสนามพลังงานรังสี ไม่มีอะไรอื่นอีกแล้ว! เราคือเครื่องจักรหรือไม่? พวกคุณหลายคนไม่อยากยอมรับสิ่งนี้ แต่รู้สึกว่ามีอะไรในตัวคุณมากกว่าแค่โมเลกุลจำนวนมากที่ชนกันอย่างไร้สติ ซึ่งเราเห็นว่าเป็นมุมมองหนึ่งของคอมพิวเตอร์ เราจะพิจารณาประเด็นนี้ในบทที่ 6–8 ภายใต้หัวข้อปัญญาประดิษฐ์ (Artificial Intelligence, ai )
การมองคอมพิวเตอร์ในมุมมองแบบเครื่องจักรนั้นมีประโยชน์—ว่ามันเป็นแค่กลุ่มของอุปกรณ์เก็บข้อมูลและ gate ที่ประมวลผล bits และไม่มีอะไรเพิ่มเติม มุมมองนี้มีประโยชน์ในบางเวลาเมื่อ debugging (การหาข้อผิดพลาด) ในโปรแกรม อันที่จริงนี่คือสิ่งที่คุณต้องสมมติเมื่อคุณพยายาม debug คุณสมมติว่าเครื่องปฏิบัติตามคำสั่งทีละคำสั่ง และไม่ทำอะไรเพิ่มเติม—มันไม่มี "เจตจำนงเสรี" (free will) หรือคุณลักษณะอื่น ๆ เช่นการรู้จักตนเอง (self-awareness) และ การมีสำนึกตนเอง (self-consciousness) ที่เรามักเชื่อมโยงกับมนุษย์
ในทางปฏิบัติเราต่างจากเครื่องจักรแค่ไหน? เราทุกคนอยากคิดว่าเราแตกต่างจากเครื่องจักร แต่มันแตกต่างโดยพื้นฐานหรือไม่? นี่เป็นประเด็นที่ละเอียดอ่อนสำหรับคนส่วนใหญ่ และแง่มุมทางอารมณ์และศาสนามักครอบงำการโต้แย้งส่วนใหญ่ เราจะกลับมาที่ประเด็นนี้ในบทที่ 6–8 เรื่อง ai เมื่อเรามีพื้นฐานมากขึ้นที่จะพูดคุยอย่างมีเหตุผล