วิทยาการคอมพิวเตอร์
วิทยาการคอมพิวเตอร์คือการศึกษาเกี่ยวกับการคำนวณข้อมูลและระบบอัตโนมัติ[ 1 ] [ 2 ] [ 3 ]วิทยาการคอมพิวเตอร์ซึ่งรวมอยู่ในสาขาวิทยาศาสตร์ อย่างกว้างขวาง ครอบคลุมตั้งแต่ สาขาทฤษฎี (เช่นอัลกอริทึมทฤษฎีการคำนวณและทฤษฎีสารสนเทศ ) ไปจนถึงสาขาประยุกต์ (รวมถึงการออกแบบและการใช้งานฮาร์ดแวร์และซอฟต์แวร์ ) [ 4 ] [ 5 ] [ 6 ]ผู้เชี่ยวชาญในสาขานี้เรียกว่า นัก วิทยาศาสตร์คอมพิวเตอร์
อัลกอริทึมและโครงสร้างข้อมูลเป็นหัวใจสำคัญของวิทยาศาสตร์คอมพิวเตอร์[ 7 ]ทฤษฎีการคำนวณเกี่ยวข้องกับแบบจำลองนามธรรมของการคำนวณและคลาสทั่วไปของปัญหา ที่สามารถแก้ไขได้โดยใช้แบบจำลอง เหล่านั้น สาขาการเข้ารหัสและการรักษาความปลอดภัยคอมพิวเตอร์เกี่ยวข้องกับการศึกษาถึงวิธีการสื่อสารที่ปลอดภัยและการป้องกันช่องโหว่ด้านความปลอดภัยกราฟิกคอมพิวเตอร์และเรขาคณิตเชิงคำนวณเกี่ยวข้องกับการสร้างภาพทฤษฎีภาษาโปรแกรมพิจารณาวิธีต่างๆ ในการอธิบายกระบวนการคำนวณ และ ทฤษฎี ฐานข้อมูลเกี่ยวข้องกับการจัดการคลังข้อมูลปฏิสัมพันธ์ระหว่างมนุษย์กับคอมพิวเตอร์ตรวจสอบอินเทอร์เฟซที่มนุษย์และคอมพิวเตอร์มีปฏิสัมพันธ์กัน และวิศวกรรมซอฟต์แวร์มุ่งเน้นไปที่การออกแบบและหลักการเบื้องหลังการพัฒนาซอฟต์แวร์ สาขาต่างๆ เช่นระบบปฏิบัติการเครือข่ายและระบบฝังตัวตรวจสอบหลักการและการออกแบบเบื้องหลังระบบที่ซับซ้อนสถาปัตยกรรมคอมพิวเตอร์อธิบายถึงการสร้างส่วนประกอบคอมพิวเตอร์และอุปกรณ์ที่ทำงานด้วยคอมพิวเตอร์ปัญญาประดิษฐ์และการเรียนรู้ของเครื่องมีเป้าหมายเพื่อสังเคราะห์กระบวนการที่มุ่งเน้นเป้าหมาย เช่น การแก้ปัญหา การตัดสินใจ การปรับตัวให้เข้ากับสิ่งแวดล้อมการวางแผนและการเรียนรู้ที่พบในมนุษย์และสัตว์ ในสาขาปัญญาประดิษฐ์การประมวลผลภาพด้วยคอมพิวเตอร์มีเป้าหมายเพื่อทำความเข้าใจและประมวลผลข้อมูลภาพและวิดีโอ ในขณะที่การประมวลผลภาษาธรรมชาติมีเป้าหมายเพื่อทำความเข้าใจและประมวลผลข้อมูลข้อความและภาษา
ความกังวลพื้นฐานของวิทยาศาสตร์คอมพิวเตอร์คือการพิจารณาว่าสิ่งใดสามารถทำให้เป็นระบบอัตโนมัติได้และสิ่งใดไม่สามารถทำให้เป็นระบบอัตโนมัติได้[ 2 ] [ 8 ] [ 3 ] [ 9 ] [ 10 ]รางวัลทัวริงได้รับการยอมรับโดยทั่วไปว่าเป็นรางวัลสูงสุดในวิทยาศาสตร์คอมพิวเตอร์[ 11 ] [ 12 ]
ประวัติศาสตร์



รากฐานแรกเริ่มของสิ่งที่จะกลายเป็นวิทยาศาสตร์คอมพิวเตอร์นั้นมีมาก่อนการประดิษฐ์คอมพิวเตอร์ดิจิทัล สมัยใหม่ เครื่องจักรสำหรับการคำนวณงานตัวเลขคงที่ เช่นลูกคิดมีมาตั้งแต่สมัยโบราณ ช่วยในการคำนวณ เช่น การคูณและการหารอัลกอริทึมสำหรับการคำนวณมีมาตั้งแต่สมัยโบราณ แม้กระทั่งก่อนการพัฒนาอุปกรณ์คอมพิวเตอร์ที่ซับซ้อน[ 16 ]
วิลเฮล์ม ชิคการ์ด ออกแบบและสร้าง เครื่องคิดเลขเชิงกลเครื่องแรกที่ใช้งานได้จริงในปี 1623 [ 17 ]ในปี 1673 ก็อต ฟรีด ไลบ์นิซ ได้สาธิตเครื่องคิดเลขเชิงกลแบบดิจิทัลที่เรียกว่าStepped Reckoner [ 18 ] [ 19 ] ไลบ์นิซ อาจถือได้ว่าเป็นนักวิทยาศาสตร์คอมพิวเตอร์และนักทฤษฎีสารสนเทศคนแรก ด้วยเหตุผลหลายประการ รวมถึงข้อเท็จจริงที่ว่าเขาได้บันทึกระบบเลขฐานสองไว้ แม้ว่าโทมัส แฮร์ริออตจะได้ทำเช่นนั้นมาแล้วหลายทศวรรษก่อนหน้า[ 13 ]ในปี 1820 โทมัส เดอ โคลมา ร์ ได้ริเริ่มอุตสาหกรรมเครื่องคิดเลขเชิงกล[หมายเหตุ 1 ]เมื่อเขาประดิษฐ์ เครื่องคำนวณ เลขคณิต แบบง่าย ซึ่งเป็นเครื่องคำนวณเครื่องแรกที่มีความแข็งแรงและน่าเชื่อถือเพียงพอที่จะใช้ในสภาพแวดล้อมสำนักงานได้ทุกวันชาร์ลส์ แบ็บเบจเริ่มออกแบบเครื่องคิดเลขเชิงกลอัตโนมัติ เครื่องแรก คือ Difference Engineของเขา ในปี 1822 ซึ่งในที่สุดก็ทำให้ เขามีแนวคิดเกี่ยวกับเครื่องคิดเลขเชิงกลแบบตั้งโปรแกรมได้เครื่อง แรก คือ Analytical Engineของเขา[ 20 ]เขาเริ่มพัฒนาเครื่องนี้ในปี พ.ศ. 2477 และ "ในเวลาไม่ถึงสองปี เขาก็ได้ร่าง คุณสมบัติ เด่นๆ หลายอย่าง ของคอมพิวเตอร์สมัยใหม่" [ 21 ] "ขั้นตอนสำคัญคือการนำระบบบัตรเจาะรูที่ได้มาจากเครื่องทอผ้าจาการ์ดมา ใช้ " [ 21 ]ทำให้สามารถตั้งโปรแกรมได้อย่างไม่จำกัด[หมายเหตุ 2 ]ในปี พ.ศ. 2486 ระหว่างการแปลบทความภาษาฝรั่งเศสเกี่ยวกับ Analytical Engine เอดา โลฟเลซ ได้ เขียนอัลกอริทึมในการคำนวณ เลขเบอร์นูล ลี ไว้ในหมายเหตุหลายข้อซึ่งถือเป็นอัลกอริทึมที่ตีพิมพ์ครั้งแรกที่ออกแบบมาโดยเฉพาะสำหรับการใช้งานบนคอมพิวเตอร์[ 22 ]ประมาณปี พ.ศ. 2428 เฮอร์แมน โฮลเลอริธได้ประดิษฐ์แท็บเลเตอร์ซึ่งใช้บัตรเจาะรู ในการ ประมวลผลข้อมูลทางสถิติ ในที่สุดบริษัทของเขาก็กลายเป็นส่วนหนึ่งของIBMหลังจาก Babbage แม้จะไม่ทราบถึงงานก่อนหน้านี้ของเขาPercy Ludgate ก็ได้ตีพิมพ์ [ 23 ]การออกแบบเครื่องยนต์วิเคราะห์เชิงกลแบบที่สองในประวัติศาสตร์ในปี 1909 ฉบับที่สอง ในปี 1914 วิศวกรชาวสเปนLeonardo Torres Quevedoได้ตีพิมพ์บทความเรื่องEssays on Automatics [ 24 ]และออกแบบ เครื่องคำนวณ อิเล็กโทรเมคานิกส์ เชิงทฤษฎีโดยได้รับแรงบันดาลใจจาก Babbage ซึ่งจะถูกควบคุมโดยโปรแกรมแบบอ่านอย่างเดียว บทความนี้ยัง ได้แนะนำแนวคิดเรื่องเลขคณิตจุดลอยตัว อีกด้วย [ 25 ] [ 26 ]ในปี พ.ศ. 2463 เพื่อเฉลิมฉลองครบรอบ 100 ปีของการประดิษฐ์เครื่องคำนวณเลขคณิต Torres ได้นำเสนอElectromechanical Arithmometer ในปารีส ซึ่งเป็นต้นแบบที่แสดงให้เห็นถึงความเป็นไปได้ของเครื่องวิเคราะห์อิเล็กโทรเมคานิกส์[ 27 ]ซึ่งสามารถพิมพ์คำสั่งและพิมพ์ผลลัพธ์โดยอัตโนมัติได้[ 28 ]ในปี พ.ศ. 2480 หนึ่งร้อยปีหลังจากความฝันที่เป็นไปไม่ได้ของแบ็บเบจโฮเวิร์ด ไอเคนได้โน้มน้าวให้ IBM ซึ่งกำลังผลิตอุปกรณ์เจาะรูทุกชนิดและยังอยู่ในธุรกิจเครื่องคิดเลข[ 29 ]พัฒนาเครื่องคิดเลขโปรแกรมได้ขนาดยักษ์ASCC/Harvard Mark Iโดยอิงจาก Analytical Engine ของแบ็บเบจ ซึ่งใช้บัตรเจาะรูและหน่วยประมวลผลกลางเมื่อเครื่องเสร็จสมบูรณ์ บางคนยกย่องว่าเป็น "ความฝันของแบ็บเบจที่เป็นจริง" [ 30 ]
ในช่วงทศวรรษ 1940 ด้วยการพัฒนา เครื่อง คำนวณ รุ่นใหม่ที่มีประสิทธิภาพมากขึ้น เช่นคอมพิวเตอร์ Atanasoff–BerryและENIACคำว่าคอมพิวเตอร์จึงหมายถึงเครื่องจักรมากกว่าบรรพบุรุษที่เป็นมนุษย์[ 31 ]เมื่อเป็นที่ชัดเจนว่าคอมพิวเตอร์สามารถนำไปใช้ได้มากกว่าแค่การคำนวณทางคณิตศาสตร์ สาขาวิทยาการคอมพิวเตอร์จึงขยายขอบเขตไปศึกษาการคำนวณโดยทั่วไป ในปี 1945 IBM ได้ก่อตั้งห้องปฏิบัติการ Watson Scientific Computing Laboratoryที่มหาวิทยาลัยโคลัมเบียในนิวยอร์กซิตี้บ้านพักนักศึกษาที่ได้รับการปรับปรุงใหม่ทางฝั่งตะวันตกของแมนฮัตตันเป็นห้องปฏิบัติการแห่งแรกของ IBM ที่อุทิศให้กับวิทยาศาสตร์บริสุทธิ์ ห้องปฏิบัติการแห่งนี้เป็นต้นกำเนิดของแผนกวิจัยของ IBM ซึ่งปัจจุบันดำเนินงานสิ่งอำนวยความสะดวกด้านการวิจัยทั่วโลก[ 32 ]ในที่สุด ความสัมพันธ์ที่ใกล้ชิดระหว่าง IBM และมหาวิทยาลัยโคลัมเบียมีบทบาทสำคัญในการกำเนิดสาขาวิทยาศาสตร์ใหม่ โดยโคลัมเบียได้เปิดสอนหลักสูตรวิชาวิทยาการคอมพิวเตอร์หลักสูตรแรกๆ ในปี 1946 [ 33 ]วิทยาการคอมพิวเตอร์เริ่มได้รับการจัดตั้งเป็นสาขาวิชาการที่แยกต่างหากในช่วงทศวรรษ 1950 และต้นทศวรรษ 1960 [ 34 ] [ 35 ]หลักสูตรปริญญาวิทยาการคอมพิวเตอร์หลักสูตรแรกของโลก คือCambridge Diploma in Computer Scienceเริ่มต้นที่ห้องปฏิบัติการคอมพิวเตอร์ของมหาวิทยาลัยเคมบริดจ์ในปี 1953 ภาควิชาวิทยาการคอมพิวเตอร์แห่งแรกในสหรัฐอเมริกาก่อตั้งขึ้นที่มหาวิทยาลัย Purdueในปี 1962 [ 36 ]นับตั้งแต่มีคอมพิวเตอร์ใช้งานได้จริง การประยุกต์ใช้การคำนวณหลายอย่างได้กลายเป็นสาขาการศึกษาที่แยกต่างหากในสิทธิของตนเอง
ที่มาของคำและขอบเขต
แม้ว่าจะมีการเสนอคำว่า "วิทยาการคอมพิวเตอร์" ครั้งแรกในปี 1956 [ 37 ] แต่คำนี้ปรากฏในบทความปี 1959 ในCommunications of the ACM [ 38 ]ซึ่ง Louis Fein ได้เสนอให้จัดตั้งบัณฑิตวิทยาลัยวิทยาการคอมพิวเตอร์ในลักษณะเดียวกับการจัดตั้งHarvard Business Schoolในปี 1921 [ 39 ] Louis ให้เหตุผลในการตั้งชื่อนี้โดยกล่าวว่า เช่นเดียวกับวิทยาการจัดการวิชาดังกล่าวมีลักษณะประยุกต์และสหวิทยาการ ในขณะเดียวกันก็มีลักษณะทั่วไปของสาขาวิชาการ[ 38 ]ความพยายามนี้และของผู้อื่น เช่นนักวิเคราะห์เชิงตัวเลขGeorge Forsytheประสบความสำเร็จ และมหาวิทยาลัยต่างๆ ก็ได้จัดตั้งภาควิชาดังกล่าวขึ้น โดยเริ่มจาก Purdue ในปี 1962 [ 40 ]แม้จะมีชื่อเช่นนั้น แต่วิทยาการคอมพิวเตอร์ส่วนใหญ่ไม่ได้เกี่ยวข้องกับการศึกษาคอมพิวเตอร์โดยตรง ด้วยเหตุนี้ จึงมีการเสนอชื่อทางเลือกอื่นๆ อีกหลายชื่อ[ 41 ]บางภาควิชาของมหาวิทยาลัยใหญ่ๆ นิยมใช้คำว่าวิทยาการคำนวณเพื่อเน้นย้ำความแตกต่างดังกล่าว นักวิทยาศาสตร์ชาวเดนมาร์กปีเตอร์ นอร์เสนอคำว่าdatalogy [ 42 ]เพื่อสะท้อนให้เห็นว่าสาขาวิทยาศาสตร์นี้เกี่ยวข้องกับข้อมูลและการประมวลผลข้อมูล โดยไม่จำเป็นต้องเกี่ยวข้องกับคอมพิวเตอร์ สถาบันวิทยาศาสตร์แห่งแรกที่ใช้คำนี้คือภาควิชา Datalogy ที่มหาวิทยาลัยโคเปนเฮเกนซึ่งก่อตั้งขึ้นในปี 1969 โดยปีเตอร์ นอร์ เป็นศาสตราจารย์คนแรกในสาขา datalogy คำนี้ใช้กันเป็นหลักในประเทศแถบสแกนดิเนเวีย คำทางเลือกอีกคำหนึ่ง ซึ่งเสนอโดยนอร์เช่นกัน คือdata scienceซึ่งปัจจุบันใช้สำหรับ สาขา สหวิทยาการด้านการวิเคราะห์ข้อมูล รวมถึงสถิติและฐานข้อมูล
ในช่วงแรกเริ่มของการคำนวณ มีการเสนอคำศัพท์หลายคำสำหรับผู้ปฏิบัติงานในสาขาการคำนวณ (แม้ว่าจะพูดเล่นๆ ก็ตาม) ในวารสาร Communications of the ACMได้แก่turingineer , turologist , flow-charts-man , applied meta-mathematicianและapplied epistemologist [ 43 ]สามเดือนต่อมาในวารสารเดียวกัน มีการเสนอคำว่า comptologist ตามมาด้วย hypologistในปีถัดมา[ 44 ] นอกจากนี้ยังมีการเสนอคำว่าcomputicsด้วย[ 45 ] ในยุโรป มักใช้คำที่ได้มาจากคำแปลย่อของคำว่า "ข้อมูลอัตโนมัติ" (เช่น " informazione automatica " ในภาษาอิตาลี) หรือ "ข้อมูลและคณิตศาสตร์" เช่น informatique (ภาษาฝรั่งเศส), Informatik (ภาษาเยอรมัน), informatica (ภาษาอิตาลี, ภาษาดัตช์), informática (ภาษาสเปน, ภาษาโปรตุเกส), informatika ( ภาษาสลาฟและภาษาฮังการี ) หรือpliroforiki ( πληροφορικήซึ่งหมายถึง สารสนเทศ) ในภาษากรีกนอกจากนี้ยังมีการนำคำที่คล้ายกันมาใช้ในสหราชอาณาจักร (เช่น ในSchool of Informatics, University of Edinburgh ) [ 46 ] "อย่างไรก็ตาม ในสหรัฐอเมริกาสารสนเทศนั้นเชื่อมโยงกับการคำนวณประยุกต์ หรือการคำนวณในบริบทของโดเมนอื่น" [ 47 ]
คำกล่าวที่แพร่หลาย ซึ่งมักถูกอ้างถึงว่ามาจาก—แต่เกือบจะแน่นอนว่าไม่ได้ถูกกล่าวขึ้นครั้งแรกโดย— เอ็ดสเกอร์ ไดจ์กสตรากล่าวว่า "วิทยาศาสตร์คอมพิวเตอร์ไม่ได้เกี่ยวกับคอมพิวเตอร์มากไปกว่าที่ดาราศาสตร์เกี่ยวกับกล้องโทรทรรศน์" [หมายเหตุ 3 ]การออกแบบและการใช้งานคอมพิวเตอร์และระบบคอมพิวเตอร์โดยทั่วไปถือเป็นขอบเขตของสาขาวิชาอื่นที่ไม่ใช่วิทยาศาสตร์คอมพิวเตอร์ ตัวอย่างเช่น การศึกษาฮาร์ดแวร์คอมพิวเตอร์มักถูกพิจารณาว่าเป็นส่วนหนึ่งของวิศวกรรมคอมพิวเตอร์ในขณะที่การศึกษาระบบคอมพิวเตอร์เชิง พาณิชย์ และการใช้งานมักเรียกว่าเทคโนโลยีสารสนเทศหรือระบบสารสนเทศ อย่างไรก็ตาม มีการแลกเปลี่ยนความคิดเห็นระหว่างสาขาวิชาต่างๆ ที่เกี่ยวข้อง กับ คอมพิวเตอร์ การวิจัย วิทยาศาสตร์คอมพิวเตอร์มักตัดกับ สาขาวิชาอื่นๆ เช่นวิทยาศาสตร์การรู้คิดภาษาศาสตร์คณิตศาสตร์ฟิสิกส์ชีววิทยาวิทยาศาสตร์โลกสถิติปรัชญาและตรรกศาสตร์
บางคนมองว่าวิทยาศาสตร์คอมพิวเตอร์มีความสัมพันธ์ใกล้ชิดกับคณิตศาสตร์มากกว่าสาขาวิทยาศาสตร์อื่นๆ โดยบางคนกล่าวว่าการคำนวณเป็นวิทยาศาสตร์ทางคณิตศาสตร์[ 34 ]วิทยาศาสตร์คอมพิวเตอร์ในยุคแรกได้รับอิทธิพลอย่างมากจากผลงานของนักคณิตศาสตร์ เช่นKurt Gödel , Alan Turing , John von Neumann , Rózsa Péter , Stephen KleeneและAlonzo Church และยังคงมีการแลกเปลี่ยนความคิดที่เป็นประโยชน์ระหว่างสองสาขา นี้ในด้านต่างๆ เช่นตรรกศาสตร์ทางคณิตศาสตร์ทฤษฎีหมวดหมู่ทฤษฎีโดเมนและพีชคณิต[ 37 ]
ความสัมพันธ์ระหว่างวิทยาการคอมพิวเตอร์และวิศวกรรมซอฟต์แวร์เป็นประเด็นถกเถียง ซึ่งยิ่งซับซ้อนขึ้นไปอีกเนื่องจากข้อพิพาทเกี่ยวกับความหมายของคำว่า "วิศวกรรมซอฟต์แวร์" และนิยามของวิทยาการคอมพิวเตอร์[ 48 ]เดวิด พาร์นาสได้นำแนวคิดจากความสัมพันธ์ระหว่างสาขาวิศวกรรมและวิทยาศาสตร์อื่นๆ มาใช้ โดยอ้างว่าจุดเน้นหลักของวิทยาการคอมพิวเตอร์คือการศึกษาคุณสมบัติของการคำนวณโดยทั่วไป ในขณะที่จุดเน้นหลักของวิศวกรรมซอฟต์แวร์คือการออกแบบการคำนวณเฉพาะเพื่อให้บรรลุเป้าหมายในทางปฏิบัติ ทำให้ทั้งสองสาขาแยกจากกันแต่ก็เสริมซึ่งกันและกัน[ 49 ]
ด้านวิชาการ การเมือง และการจัดหาเงินทุนของวิทยาศาสตร์คอมพิวเตอร์มักขึ้นอยู่กับว่าภาควิชานั้นเน้นด้านคณิตศาสตร์หรือด้านวิศวกรรม ภาควิชาวิทยาศาสตร์คอมพิวเตอร์ที่เน้นคณิตศาสตร์และมีแนวทางเชิงตัวเลขมักพิจารณาความสอดคล้องกับวิทยาศาสตร์การคำนวณทั้งสองประเภทของภาควิชามักพยายามเชื่อมโยงสาขาวิชานี้เข้าด้วยกันทั้งในด้านการศึกษาและการวิจัย
ปรัชญา
ญาณวิทยาของวิทยาศาสตร์คอมพิวเตอร์
แม้จะมีคำว่าวิทยาศาสตร์อยู่ในชื่อ แต่ก็ยังมีการถกเถียงกันว่าวิทยาการคอมพิวเตอร์เป็นสาขาวิทยาศาสตร์[ 50 ]คณิตศาสตร์[ 51 ]หรือวิศวกรรมศาสตร์[ 52 ] หรือไม่ Allen NewellและHerbert A. Simonได้โต้แย้งในปี 1975 ว่า
วิทยาศาสตร์คอมพิวเตอร์เป็นสาขาวิชาเชิงประจักษ์ เราอาจเรียกมันว่าวิทยาศาสตร์เชิงทดลอง แต่เช่นเดียวกับดาราศาสตร์ เศรษฐศาสตร์ และธรณีวิทยา รูปแบบการสังเกตและประสบการณ์เฉพาะบางอย่างของมันไม่เข้ากับแบบแผนแคบๆ ของวิธีการทดลอง อย่างไรก็ตาม สิ่งเหล่านี้คือการทดลอง เครื่องจักรใหม่แต่ละเครื่องที่สร้างขึ้นคือการทดลอง การสร้างเครื่องจักรขึ้นจริง ๆ นั้นเป็นการตั้งคำถามต่อธรรมชาติ และเราฟังคำตอบโดยการสังเกตเครื่องจักรขณะทำงานและวิเคราะห์มันด้วยวิธีการวิเคราะห์และการวัดทั้งหมดที่มีอยู่[ 52 ]
มีการโต้แย้งกันในภายหลังว่าวิทยาศาสตร์คอมพิวเตอร์สามารถจัดอยู่ในประเภทวิทยาศาสตร์เชิงประจักษ์ได้ เนื่องจากใช้การทดสอบเชิงประจักษ์เพื่อประเมินความถูกต้องของโปรแกรมแต่ปัญหายังคงอยู่ที่การกำหนดกฎและทฤษฎีบทของวิทยาศาสตร์คอมพิวเตอร์ (ถ้ามีอยู่) และการกำหนดลักษณะของการทดลองในวิทยาศาสตร์คอมพิวเตอร์[ 52 ]ผู้สนับสนุนการจัดประเภทวิทยาศาสตร์คอมพิวเตอร์เป็นสาขาวิชาวิศวกรรมโต้แย้งว่าความน่าเชื่อถือของระบบการคำนวณได้รับการตรวจสอบในลักษณะเดียวกับสะพานในวิศวกรรมโยธาและเครื่องบินในวิศวกรรมการบินและอวกาศ [ 52 ] พวกเขายังโต้แย้งอีกว่าในขณะที่วิทยาศาสตร์เชิงประจักษ์สังเกตสิ่งที่ดำรงอยู่ในปัจจุบัน วิทยาศาสตร์คอมพิวเตอร์สังเกตสิ่งที่เป็นไปได้ที่จะมีอยู่ และในขณะที่นักวิทยาศาสตร์ค้นพบกฎจากการสังเกต ยังไม่มีการค้นพบกฎที่เหมาะสมในวิทยาศาสตร์คอมพิวเตอร์ และวิทยาศาสตร์คอมพิวเตอร์กลับมุ่งเน้นไปที่การสร้างปรากฏการณ์[ 52 ]
ผู้สนับสนุนการจัดประเภทวิทยาศาสตร์คอมพิวเตอร์เป็นสาขาวิชาคณิตศาสตร์โต้แย้งว่าโปรแกรมคอมพิวเตอร์เป็นการรับรู้ทางกายภาพของเอนทิตีทางคณิตศาสตร์และโปรแกรมที่สามารถให้เหตุผลแบบนิรนัยผ่านวิธีการทาง คณิตศาสตร์ที่เป็นทางการ ได้[ 52 ]นักวิทยาศาสตร์คอมพิวเตอร์Edsger W. DijkstraและTony Hoare ถือว่าคำสั่งสำหรับโปรแกรมคอมพิวเตอร์เป็นประโยคทางคณิตศาสตร์และตีความความหมายที่เป็นทางการสำหรับ ภาษาโปรแกรมว่าเป็นระบบสัจพจน์ ทางคณิตศาสตร์ [ 52 ]
กระบวนทัศน์ของวิทยาการคอมพิวเตอร์
นักวิทยาศาสตร์คอมพิวเตอร์จำนวนหนึ่งได้โต้แย้งถึงความแตกต่างของกระบวนทัศน์ที่แยกจากกันสามประการในวิทยาศาสตร์คอมพิวเตอร์ปีเตอร์ เวกเนอร์โต้แย้งว่ากระบวนทัศน์เหล่านั้นคือวิทยาศาสตร์ เทคโนโลยี และคณิตศาสตร์[ 53 ] กลุ่มทำงานของปีเตอร์ เดนนิง โต้แย้งว่ากระบวนทัศน์เหล่านั้นคือทฤษฎี นามธรรม (การสร้างแบบจำลอง) และการออกแบบ [ 34 ]แอมนอน เอช. อีเดน อธิบายว่าเป็น "กระบวนทัศน์เหตุผลนิยม" (ซึ่งถือว่าวิทยาศาสตร์คอมพิวเตอร์เป็นสาขาหนึ่งของคณิตศาสตร์ ซึ่งแพร่หลายในวิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี และส่วนใหญ่ใช้การให้เหตุผลแบบนิรนัย) "กระบวนทัศน์เทคโนแครต" (ซึ่งอาจพบได้ในแนวทางวิศวกรรม โดยเฉพาะอย่างยิ่งในวิศวกรรมซอฟต์แวร์) และ "กระบวนทัศน์วิทยาศาสตร์" (ซึ่งเข้าถึงสิ่งประดิษฐ์ที่เกี่ยวข้องกับคอมพิวเตอร์จากมุมมองเชิงประจักษ์ของวิทยาศาสตร์ธรรมชาติ [ 54 ]สามารถระบุได้ในบางสาขาของปัญญาประดิษฐ์ ) [ 55 ]วิทยาศาสตร์คอมพิวเตอร์มุ่งเน้นไปที่วิธีการที่เกี่ยวข้องกับการออกแบบ การกำหนดคุณสมบัติ การเขียนโปรแกรม การตรวจสอบ การนำไปใช้ และการทดสอบระบบคอมพิวเตอร์ที่มนุษย์สร้างขึ้น[ 56 ]
ฟิลด์
วิทยาศาสตร์คอมพิวเตอร์เป็นสาขาวิชาที่ครอบคลุมหัวข้อต่างๆ ตั้งแต่การศึกษาเชิงทฤษฎีเกี่ยวกับอัลกอริทึมและข้อจำกัดของการคำนวณ ไปจนถึงประเด็นเชิงปฏิบัติในการนำระบบคอมพิวเตอร์ไปใช้ในฮาร์ดแวร์และซอฟต์แวร์[ 57 ] [ 58 ] CSABซึ่งเดิมเรียกว่า Computing Sciences Accreditation Board—ซึ่งประกอบด้วยตัวแทนจากAssociation for Computing Machinery (ACM) และIEEE Computer Society (IEEE CS) [ 59 ] —ระบุสี่ด้านที่ถือว่ามีความสำคัญต่อสาขาวิชาวิทยาศาสตร์คอมพิวเตอร์ ได้แก่ทฤษฎีการคำนวณอั ลกอริทึม และโครงสร้างข้อมูลระเบียบวิธีและภาษาการเขียนโปรแกรมและองค์ประกอบและสถาปัตยกรรมคอมพิวเตอร์นอกจากสี่ด้านนี้แล้ว CSAB ยังระบุสาขาต่างๆ เช่น วิศวกรรมซอฟต์แวร์ ปัญญาประดิษฐ์ เครือข่ายและการสื่อสารคอมพิวเตอร์ ระบบฐานข้อมูล การคำนวณแบบขนาน การคำนวณแบบกระจาย ปฏิสัมพันธ์ระหว่างมนุษย์กับคอมพิวเตอร์ กราฟิกคอมพิวเตอร์ ระบบปฏิบัติการ และการคำนวณเชิงตัวเลขและเชิงสัญลักษณ์ว่าเป็นสาขาที่สำคัญของวิทยาศาสตร์คอมพิวเตอร์[ 57 ]
วิทยาการคอมพิวเตอร์เชิงทฤษฎี
วิทยาการคอมพิวเตอร์เชิงทฤษฎีมีลักษณะทางคณิตศาสตร์และนามธรรม แต่ได้รับแรงบันดาลใจจากการคำนวณในทางปฏิบัติและในชีวิตประจำวัน จุดมุ่งหมายคือการทำความเข้าใจธรรมชาติของการคำนวณ และด้วยความเข้าใจนี้ จึงนำไปสู่การพัฒนาวิธีการที่มีประสิทธิภาพมากขึ้น
ทฤษฎีการคำนวณ
ตามที่ปีเตอร์ เดนนิงกล่าวไว้ คำถามพื้นฐานที่อยู่เบื้องหลังวิทยาศาสตร์คอมพิวเตอร์คือ "อะไรสามารถทำให้เป็นระบบอัตโนมัติได้บ้าง" [ 3 ]ทฤษฎีการคำนวณมุ่งเน้นไปที่การตอบคำถามพื้นฐานเกี่ยวกับสิ่งที่สามารถคำนวณได้และปริมาณทรัพยากรที่จำเป็นในการดำเนินการคำนวณเหล่านั้น ในความพยายามที่จะตอบคำถามแรกทฤษฎีความสามารถในการคำนวณจะตรวจสอบว่าปัญหาการคำนวณใดบ้างที่สามารถแก้ไขได้บนแบบจำลองทางทฤษฎีต่างๆ ของการคำนวณคำถามที่สองได้รับการกล่าวถึงโดยทฤษฎีความซับซ้อนของการคำนวณซึ่งศึกษาต้นทุนด้านเวลาและพื้นที่ที่เกี่ยวข้องกับวิธีการต่างๆ ในการแก้ปัญหาการคำนวณจำนวนมาก
ปัญหา P = NP?ที่มีชื่อเสียงซึ่งเป็นหนึ่งในปัญหารางวัลแห่งสหัสวรรษ[ 60 ] เป็นปัญหาที่ยังเปิดอยู่ในทฤษฎีการคำนวณ
| ทฤษฎีออโตมาตา | ภาษาทางการ | ทฤษฎีความสามารถในการคำนวณ | ทฤษฎีความซับซ้อนในการคำนวณ |
| แบบจำลองการคำนวณ | ทฤษฎีการคำนวณควอนตัม | ทฤษฎีวงจรตรรกะ | ออโตมาตาเซลลูลาร์ |
ทฤษฎีสารสนเทศและการเข้ารหัส
ทฤษฎีสารสนเทศ ซึ่งมีความเกี่ยวข้องอย่างใกล้ชิดกับความน่าจะเป็นและสถิติเกี่ยวข้องกับการหาปริมาณของสารสนเทศ ทฤษฎีนี้ได้รับการพัฒนาโดยClaude Shannonเพื่อค้นหาข้อจำกัดพื้นฐานใน การดำเนินการ ประมวลผลสัญญาณเช่น การบีบอัดข้อมูล และการจัดเก็บและการสื่อสารข้อมูลอย่างน่าเชื่อถือ[ 61 ]ทฤษฎีการเข้ารหัสคือการศึกษาคุณสมบัติของรหัส (ระบบสำหรับการแปลงข้อมูลจากรูปแบบหนึ่งไปเป็นอีกรูปแบบหนึ่ง) และความเหมาะสมของรหัสสำหรับการใช้งานเฉพาะ รหัสถูกใช้สำหรับ การ บีบอัดข้อมูลการเข้ารหัส การ ตรวจจับ และแก้ไขข้อผิดพลาดและเมื่อไม่นานมานี้ยังใช้สำหรับการเข้ารหัสเครือข่าย อีกด้วย มีการศึกษารหัสเพื่อวัตถุประสงค์ในการออกแบบวิธีการส่งข้อมูล ที่มีประสิทธิภาพและน่าเชื่อถือ [ 62 ]
| ทฤษฎีการเข้ารหัส | ความจุช่องทาง | ทฤษฎีสารสนเทศเชิงอัลกอริทึม | ทฤษฎีการตรวจจับสัญญาณ | ความซับซ้อนของโคลโมโกรอฟ |
โครงสร้างข้อมูลและอัลกอริธึม
โครงสร้างข้อมูลและอัลกอริธึม คือการศึกษาเกี่ยวกับวิธีการคำนวณที่ใช้กันทั่วไปและประสิทธิภาพในการคำนวณของวิธีการเหล่านั้น
| O ( n 2 ) | |||||
| การวิเคราะห์อัลกอริทึม | การออกแบบอัลกอริทึม | โครงสร้างข้อมูล | การเพิ่มประสิทธิภาพเชิงการจัดเรียง | เรขาคณิตเชิงคำนวณ | อัลกอริทึมแบบสุ่ม |
ทฤษฎีภาษาโปรแกรมและวิธีการที่เป็นทางการ
ทฤษฎีภาษาโปรแกรมเป็นสาขาหนึ่งของวิทยาการคอมพิวเตอร์ที่เกี่ยวข้องกับการออกแบบ การนำไปใช้ การวิเคราะห์ การกำหนดลักษณะ และการจำแนกประเภทของภาษาโปรแกรมและคุณสมบัติ เฉพาะของแต่ละ ภาษา ทฤษฎีนี้อยู่ในขอบเขตของวิทยาการคอมพิวเตอร์ โดยทั้งขึ้นอยู่และได้รับผลกระทบจากคณิตศาสตร์ วิศวกรรมซอฟต์แวร์ และภาษาศาสตร์เป็นสาขาการวิจัยที่กำลังดำเนินอยู่และมีวารสารวิชาการเฉพาะทางมากมาย
วิธีการที่เป็นทางการเป็นเทคนิคเฉพาะทางคณิตศาสตร์สำหรับการกำหนดคุณสมบัติ การพัฒนา และการตรวจสอบระบบซอฟต์แวร์และฮาร์ดแวร์[ 63 ]การใช้วิธีการที่เป็นทางการสำหรับการออกแบบซอฟต์แวร์และฮาร์ดแวร์นั้นมีแรงจูงใจมาจากความคาดหวังว่า เช่นเดียวกับในสาขาวิศวกรรมอื่นๆ การวิเคราะห์ทางคณิตศาสตร์ที่เหมาะสมสามารถช่วยเพิ่มความน่าเชื่อถือและความแข็งแกร่งของการออกแบบได้ วิธีการเหล่านี้เป็นพื้นฐานทางทฤษฎีที่สำคัญสำหรับวิศวกรรมซอฟต์แวร์ โดยเฉพาะอย่างยิ่งในกรณีที่เกี่ยวข้องกับความปลอดภัยหรือการรักษาความปลอดภัย วิธีการที่เป็นทางการเป็นส่วนเสริมที่มีประโยชน์สำหรับการทดสอบซอฟต์แวร์ เนื่องจากช่วยหลีกเลี่ยงข้อผิดพลาดและยังสามารถให้กรอบสำหรับการทดสอบได้อีกด้วย สำหรับการใช้งานในอุตสาหกรรม จำเป็นต้องมีการสนับสนุนเครื่องมือ อย่างไรก็ตาม ต้นทุนที่สูงของการใช้วิธีการที่เป็นทางการหมายความว่าโดยปกติแล้วจะใช้เฉพาะในการพัฒนาระบบที่มีความสมบูรณ์สูงและมีความสำคัญต่อชีวิตซึ่งความปลอดภัยหรือการรักษาความปลอดภัยมีความสำคัญสูงสุด วิธีการเชิงรูปธรรม (Formal methods) สามารถอธิบายได้ดีที่สุดว่าเป็นการประยุกต์ใช้ พื้นฐานทางทฤษฎีของวิทยาการคอมพิวเตอร์ที่หลากหลาย โดยเฉพาะอย่างยิ่ง แคลคูลัสเชิงตรรกะภาษาเชิงรูปธรรมทฤษฎีออโตมาตาและความหมายของโปรแกรมรวมถึงระบบประเภทและประเภทข้อมูลเชิงพีชคณิตกับปัญหาในการกำหนดคุณสมบัติและการตรวจสอบซอฟต์แวร์และฮาร์ดแวร์
| ความหมายเชิงรูปธรรม | ทฤษฎีประเภท | การออกแบบคอมไพเลอร์ | ภาษาโปรแกรม | การตรวจสอบอย่างเป็นทางการ | การพิสูจน์ทฤษฎีบทอัตโนมัติ |
วิทยาการคอมพิวเตอร์ประยุกต์
กราฟิกคอมพิวเตอร์และการแสดงภาพ
คอมพิวเตอร์กราฟิกส์คือการศึกษาเนื้อหาภาพดิจิทัล ซึ่งเกี่ยวข้องกับการสังเคราะห์และการจัดการข้อมูลภาพ การศึกษาสาขานี้เชื่อมโยงกับสาขาอื่นๆ ในวิทยาการคอมพิวเตอร์หลายสาขา เช่นคอมพิวเตอร์วิชั่นการประมวลผลภาพและเรขาคณิตเชิงคำนวณและมีการประยุกต์ใช้อย่างกว้างขวางในสาขาเทคนิคพิเศษและวิดีโอเกม
| กราฟิกคอมพิวเตอร์ 2 มิติ | แอนิเมชั่นคอมพิวเตอร์ | การเรนเดอร์ | ความเป็นจริงผสม | ความเป็นจริงเสมือน | การสร้างแบบจำลองของแข็ง |
การประมวลผลภาพและเสียง
ข้อมูลสามารถอยู่ในรูปแบบของภาพ เสียง วิดีโอ หรือมัลติมีเดียอื่นๆบิตของข้อมูลสามารถส่งผ่านสัญญาณได้การประมวลผลข้อมูลเป็นแนวคิดหลักของสารสนเทศศาสตร์ ซึ่งเป็นมุมมองด้านการคำนวณของยุโรป ที่ศึกษาอัลกอริธึมการประมวลผลข้อมูลโดยไม่ขึ้นอยู่กับประเภทของตัวกลางในการส่งข้อมูล ไม่ว่าจะเป็นไฟฟ้า เครื่องกล หรือชีวภาพ สาขานี้มีบทบาทสำคัญในทฤษฎีสารสนเทศโทรคมนาคมวิศวกรรมสารสนเทศและมีการประยุกต์ใช้ในด้านการประมวลผลภาพทางการแพทย์และการสังเคราะห์เสียงพูดเป็นต้นขีดจำกัดล่างของความซับซ้อนของ อัลกอริธึม การแปลงฟูริเยร์แบบเร็ว คืออะไร ?เป็นหนึ่งในปัญหาที่ยังแก้ไม่ตกในวิทยาการคอมพิวเตอร์เชิงทฤษฎี
| อัลกอริทึม FFT | การประมวลผลภาพ | การรู้จำเสียงพูด | การบีบอัดข้อมูล | การประมวลผลภาพทางการแพทย์ | การสังเคราะห์เสียงพูด |
วิทยาศาสตร์การคำนวณ การเงิน และวิศวกรรม
การคำนวณทางวิทยาศาสตร์ (หรือวิทยาศาสตร์การคำนวณ) เป็นสาขาการศึกษาที่เกี่ยวข้องกับการสร้างแบบจำลองทางคณิตศาสตร์และเทคนิคการวิเคราะห์เชิงปริมาณ และการใช้คอมพิวเตอร์เพื่อวิเคราะห์และแก้ปัญหา ทางวิทยาศาสตร์การใช้งานหลักของการคำนวณทางวิทยาศาสตร์คือการจำลองกระบวนการต่างๆ รวมถึงพลศาสตร์ของไหล เชิง คำนวณ ระบบและวงจรทางกายภาพ ไฟฟ้า และอิเล็กทรอนิกส์ สังคมและสถานการณ์ทางสังคม (โดยเฉพาะเกมสงคราม) พร้อมกับที่อยู่อาศัย และปฏิสัมพันธ์ระหว่างเซลล์ชีวภาพ คอมพิวเตอร์สมัยใหม่ช่วยให้สามารถเพิ่มประสิทธิภาพการออกแบบต่างๆ เช่น เครื่องบินทั้งลำ สิ่งที่โดดเด่นในการออกแบบวงจรไฟฟ้าและอิเล็กทรอนิกส์คือ SPICE [ 64 ]เช่นเดียวกับซอฟต์แวร์สำหรับการสร้างทางกายภาพของการออกแบบใหม่ (หรือที่แก้ไขแล้ว) ซึ่งรวมถึงซอฟต์แวร์การออกแบบที่จำเป็นสำหรับวงจรรวม[ 65 ]
| การวิเคราะห์เชิงตัวเลข | ฟิสิกส์เชิงคำนวณ | เคมีเชิงคำนวณ | ชีวสารสนเทศ | ประสาทสารสนเทศ | จิตสารสนเทศ | สารสนเทศทางการแพทย์ | วิศวกรรมการคำนวณ | ดนตรีวิทยาเชิงคำนวณ |
ปฏิสัมพันธ์ระหว่างมนุษย์กับคอมพิวเตอร์
ปฏิสัมพันธ์ระหว่างมนุษย์กับคอมพิวเตอร์ (HCI) คือสาขาการศึกษาและการวิจัยที่เกี่ยวข้องกับการออกแบบและการใช้งานระบบคอมพิวเตอร์โดยส่วนใหญ่เน้นการวิเคราะห์ปฏิสัมพันธ์ระหว่างมนุษย์กับส่วนต่อประสานของคอมพิวเตอร์ HCI มีสาขาย่อย หลายสาขา ที่มุ่งเน้นความสัมพันธ์ระหว่างอารมณ์พฤติกรรมทางสังคมและกิจกรรมของสมองกับคอมพิวเตอร์
| การประมวลผลทางอารมณ์ | อินเทอร์เฟซระหว่างสมองกับคอมพิวเตอร์ | การออกแบบที่เน้นมนุษย์เป็นศูนย์กลาง | การคำนวณทางกายภาพ | การประมวลผลทางสังคม |
วิศวกรรมซอฟต์แวร์
วิศวกรรมซอฟต์แวร์คือการศึกษาเกี่ยวกับการออกแบบ การพัฒนา และการปรับปรุงซอฟต์แวร์เพื่อให้มั่นใจได้ว่าซอฟต์แวร์นั้นมีคุณภาพสูง ราคาไม่แพง บำรุงรักษาได้ และสร้างได้รวดเร็ว เป็นแนวทางที่เป็นระบบในการออกแบบซอฟต์แวร์ โดยเกี่ยวข้องกับการประยุกต์ใช้หลักการทางวิศวกรรมกับซอฟต์แวร์ วิศวกรรมซอฟต์แวร์เกี่ยวข้องกับการจัดระเบียบและการวิเคราะห์ซอฟต์แวร์ ไม่ได้เกี่ยวข้องแค่กับการสร้างหรือผลิตซอฟต์แวร์ใหม่เท่านั้น แต่ยังรวมถึงการจัดวางภายในและการบำรุงรักษาด้วย ตัวอย่างเช่นการทดสอบซอฟต์แวร์วิศวกรรมระบบหนี้ทางเทคนิคและกระบวนการพัฒนาซอฟต์แวร์
ปัญญาประดิษฐ์
ปัญญาประดิษฐ์ (AI) มีเป้าหมายหรือจำเป็นต้องสังเคราะห์กระบวนการที่มุ่งเน้นเป้าหมาย เช่น การแก้ปัญหา การตัดสินใจ การปรับตัวให้เข้ากับสิ่งแวดล้อม การเรียนรู้ และการสื่อสาร ที่พบในมนุษย์และสัตว์ นับตั้งแต่จุดเริ่มต้นใน สาขา ไซเบอร์เนติกส์และการประชุมดาร์ทมัธ (1956) การวิจัยปัญญาประดิษฐ์จึงจำเป็นต้องเป็นสหวิทยาการ โดยดึงเอาความเชี่ยวชาญจากสาขาต่างๆ เช่นคณิตศาสตร์ประยุกต์ตรรกศาสตร์เชิงสัญลักษณ์ สัญศาสตร์วิศวกรรมไฟฟ้าปรัชญาจิตวิทยาสรีรวิทยาประสาทและปัญญาทางสังคมในความคิดของคนทั่วไป AI มักเกี่ยวข้องกับการพัฒนาหุ่นยนต์แต่สาขาการประยุกต์ใช้ในทางปฏิบัติหลักๆ คือการฝังตัวเป็นส่วนประกอบในด้านการพัฒนาซอฟต์แวร์ซึ่งต้องการความเข้าใจเชิงคำนวณ จุดเริ่มต้นในช่วงปลายทศวรรษ 1940 คือคำถามของอลัน ทัวริงที่ว่า " คอมพิวเตอร์คิดได้หรือไม่? " และคำถามนี้ยังคงไม่มีคำตอบอย่างแท้จริง แม้ว่าการทดสอบทัวริงยังคงใช้เพื่อประเมินผลลัพธ์ของคอมพิวเตอร์ในระดับสติปัญญาของมนุษย์ก็ตาม แต่การใช้ระบบอัตโนมัติในการประเมินผลและทำนายผลนั้นประสบความสำเร็จมากขึ้นเรื่อยๆ ในฐานะตัวทดแทนการตรวจสอบและการแทรกแซงของมนุษย์ในด้านการประยุกต์ใช้คอมพิวเตอร์ที่เกี่ยวข้องกับข้อมูลจริงที่ซับซ้อน
ระบบคอมพิวเตอร์
สถาปัตยกรรมคอมพิวเตอร์และสถาปัตยกรรมไมโคร
สถาปัตยกรรมคอมพิวเตอร์ หรือการจัดระเบียบคอมพิวเตอร์ดิจิทัล คือการออกแบบเชิงแนวคิดและโครงสร้างการทำงานพื้นฐานของระบบคอมพิวเตอร์ โดยเน้นไปที่วิธีการที่หน่วยประมวลผลกลางทำงานภายในและเข้าถึงที่อยู่ในหน่วยความจำ[ 66 ]วิศวกรคอมพิวเตอร์ศึกษาตรรกะการคำนวณและการออกแบบฮาร์ดแวร์คอมพิวเตอร์ ตั้งแต่ส่วนประกอบโปรเซสเซอร์ แต่ละตัว ไมโครคอนโทรลเลอร์คอมพิวเตอร์ส่วนบุคคลไปจนถึงซูเปอร์คอมพิวเตอร์และระบบฝังตัวคำว่า "สถาปัตยกรรม" ในวรรณกรรมคอมพิวเตอร์สามารถสืบย้อนไปถึงผลงานของ Lyle R. Johnson และFrederick P. Brooks Jr.สมาชิกของแผนกการจัดระเบียบเครื่องจักรในศูนย์วิจัยหลักของ IBM ในปี 1959
| หน่วยประมวลผล | สถาปัตยกรรมไมโคร | การประมวลผลแบบมัลติโปรเซสซิ่ง | การออกแบบโปรเซสเซอร์ |
| การประมวลผลแบบยูบิควิตัส | สถาปัตยกรรมระบบ | ระบบปฏิบัติการ | อินพุต/เอาต์พุต |
| ระบบฝังตัว | การประมวลผลแบบเรียลไทม์ | ความน่าเชื่อถือ | ล่าม |
การประมวลผลพร้อมกัน การประมวลผลแบบขนาน และการประมวลผลแบบกระจาย
การทำงานพร้อมกันเป็นคุณสมบัติของระบบที่มีการคำนวณหลายอย่างเกิดขึ้นพร้อมกัน และอาจมีการโต้ตอบกัน[ 67 ]มีการพัฒนารูปแบบทางคณิตศาสตร์หลายแบบสำหรับการคำนวณพร้อมกันทั่วไป รวมถึงPetri nets , process calculiและแบบจำลองเครื่องเข้าถึงแบบสุ่มแบบขนาน[ 68 ]เมื่อคอมพิวเตอร์หลายเครื่องเชื่อมต่อกันในเครือข่ายขณะใช้การทำงานพร้อมกัน จะเรียกว่าระบบกระจาย คอมพิวเตอร์ภายในระบบกระจายนั้นมีหน่วยความจำส่วนตัวของตนเอง และสามารถแลกเปลี่ยนข้อมูลเพื่อให้บรรลุเป้าหมายร่วมกันได้[ 69 ]
เครือข่ายคอมพิวเตอร์
สาขาวิทยาการคอมพิวเตอร์นี้มุ่งเน้นการศึกษาการสร้างและพฤติกรรมของเครือข่ายคอมพิวเตอร์ โดยจะกล่าวถึงประสิทธิภาพ ความยืดหยุ่น ความปลอดภัย ความสามารถในการขยายขนาด และความคุ้มค่า รวมถึงบริการต่างๆ ที่เครือข่ายเหล่านี้สามารถให้บริการได้[ 70 ]
ความปลอดภัยของคอมพิวเตอร์และการเข้ารหัส
ความปลอดภัยของคอมพิวเตอร์เป็นสาขาหนึ่งของเทคโนโลยีคอมพิวเตอร์ โดยมีวัตถุประสงค์เพื่อปกป้องข้อมูลจากการเข้าถึง การรบกวน หรือการแก้ไขโดยไม่ได้รับอนุญาต ในขณะเดียวกันก็รักษาความสามารถในการเข้าถึงและการใช้งานของระบบสำหรับผู้ใช้งานที่ตั้งใจไว้
การเข้ารหัสลับในอดีตคือศิลปะในการเขียนและถอดรหัสข้อความลับ การเข้ารหัสลับสมัยใหม่คือการศึกษาทางวิทยาศาสตร์เกี่ยวกับปัญหาที่เกี่ยวข้องกับการคำนวณแบบกระจายที่สามารถถูกโจมตีได้[ 71 ] เทคโนโลยีที่ศึกษาในการเข้ารหัสลับสมัยใหม่ ได้แก่ การเข้ารหัสแบบสมมาตรและอสมมาตร ลายเซ็นดิจิทัลฟังก์ชันแฮชการเข้ารหัสโปรโตคอลการตกลงคีย์บล็อกเชนการพิสูจน์ความรู้เป็นศูนย์และวงจรเข้ารหัส
ฐานข้อมูลและการทำเหมืองข้อมูล
ฐานข้อมูลมีจุดประสงค์เพื่อจัดระเบียบ จัดเก็บ และเรียกใช้ข้อมูลจำนวนมากได้อย่างง่ายดาย ฐานข้อมูลดิจิทัลได้รับการจัดการโดยใช้ระบบจัดการฐานข้อมูลเพื่อจัดเก็บ สร้าง บำรุงรักษา และค้นหาข้อมูล ผ่านแบบจำลองฐานข้อมูลและภาษาการสอบถามการขุดค้นข้อมูลคือกระบวนการค้นหารูปแบบในชุดข้อมูลขนาดใหญ่
การค้นพบ
บิล ราพาพอร์ตนักปรัชญาด้านคอมพิวเตอร์ได้บันทึกข้อคิดสำคัญสามประการของวิทยาศาสตร์คอมพิวเตอร์ ไว้ดังนี้ : [ 72 ]
- แนวคิดของ Gottfried Wilhelm Leibniz , George Boole , Alan Turing , Claude ShannonและSamuel Morseคือ มีเพียงสองวัตถุ เท่านั้น ที่คอมพิวเตอร์ต้องจัดการเพื่อแสดง "สิ่งใดๆ" [หมายเหตุ 4 ]
- ข้อมูลทั้งหมดเกี่ยวกับปัญหาที่สามารถคำนวณได้นั้น สามารถแสดงได้โดยใช้เพียง 0 และ 1 (หรือคู่สถานะสองสถานะอื่น ๆ ที่สามารถสลับไปมาระหว่างสองสถานะที่แยกแยะได้ง่าย เช่น "เปิด/ปิด", "มีสนามแม่เหล็ก/ไม่มีสนามแม่เหล็ก", "แรงดันสูง/แรงดันต่ำ" เป็นต้น)
- แนวคิดของ อลัน ทัวริง : มีเพียงห้าขั้นตอน เท่านั้น ที่คอมพิวเตอร์ต้องดำเนินการเพื่อให้ "สิ่งใดสิ่งหนึ่ง" สำเร็จ
- อัลกอริทึมทุกตัวสามารถแสดงได้ในภาษาสำหรับคอมพิวเตอร์ซึ่งประกอบด้วยคำสั่งพื้นฐานเพียงห้าคำสั่งเท่านั้น: [ 73 ]
- เลื่อนไปทางซ้ายหนึ่งตำแหน่ง;
- เลื่อนไปทางขวาหนึ่งตำแหน่ง;
- อ่านสัญลักษณ์ ณ ตำแหน่งปัจจุบัน;
- พิมพ์ 0 ที่ตำแหน่งปัจจุบัน;
- พิมพ์ 1 ครั้ง ณ ตำแหน่งปัจจุบัน
- อัลกอริทึมทุกตัวสามารถแสดงได้ในภาษาสำหรับคอมพิวเตอร์ซึ่งประกอบด้วยคำสั่งพื้นฐานเพียงห้าคำสั่งเท่านั้น: [ 73 ]
- ความเข้าใจของ Corrado Böhmและ Giuseppe Jacopini: มีเพียงสามวิธีในการรวมการกระทำเหล่านี้ (ให้กลายเป็นการกระทำที่ซับซ้อนมากขึ้น) ที่จำเป็นเพื่อให้คอมพิวเตอร์สามารถทำ "สิ่งใดๆ" ได้[ 74 ]
- ใช้เพียงสามกฎเท่านั้นในการนำชุดคำสั่งพื้นฐานใดๆ มาประกอบกันเป็นชุดคำสั่งที่ซับซ้อนยิ่งขึ้น:
- ลำดับขั้นตอน : ทำสิ่งนี้ก่อน แล้วค่อยทำสิ่งนั้น;
- การเลือก : ถ้าเป็นเช่นนั้น ให้ทำอย่างนี้ มิฉะนั้นให้ทำอย่างนั้น
- การทำซ้ำ : ในขณะที่สถานการณ์เป็นเช่นนั้นเช่นนี้ ให้ทำสิ่งนี้
- กฎสามข้อของ Boehm และ Jacopini สามารถทำให้ง่ายขึ้นได้อีกโดยใช้คำสั่งgoto (ซึ่งหมายความว่ามันเป็นพื้นฐานกว่าการเขียนโปรแกรมเชิงโครงสร้าง )
- ใช้เพียงสามกฎเท่านั้นในการนำชุดคำสั่งพื้นฐานใดๆ มาประกอบกันเป็นชุดคำสั่งที่ซับซ้อนยิ่งขึ้น:
รูปแบบการเขียนโปรแกรม
ภาษาโปรแกรมสามารถใช้เพื่อทำงานต่างๆ ได้หลายวิธี รูปแบบการเขียนโปรแกรมทั่วไป ได้แก่:
- การเขียนโปรแกรมเชิงฟังก์ชันเป็นรูปแบบการสร้างโครงสร้างและองค์ประกอบของโปรแกรมคอมพิวเตอร์ที่ถือว่าการคำนวณเป็นการประเมินฟังก์ชันทางคณิตศาสตร์และหลีกเลี่ยงสถานะและข้อมูลที่เปลี่ยนแปลงได้ เป็นกระบวนทัศน์การเขียนโปรแกรมเชิงประกาศ ซึ่งหมายความว่าการเขียนโปรแกรมจะทำด้วยนิพจน์หรือการประกาศแทนที่จะใช้คำสั่ง[ 75 ]
- การเขียนโปรแกรมเชิงคำสั่ง ซึ่งเป็นกระบวนทัศน์การเขียนโปรแกรมที่ใช้คำสั่งที่เปลี่ยนแปลงสถานะของโปรแกรม[ 76 ]ในทำนองเดียวกันกับที่กริยาในรูปคำสั่งในภาษาธรรมชาติแสดงคำสั่ง โปรแกรมเชิงคำสั่งประกอบด้วยคำสั่งให้คอมพิวเตอร์ดำเนินการ การเขียนโปรแกรมเชิงคำสั่งมุ่งเน้นไปที่การอธิบายว่าโปรแกรมทำงานอย่างไร
- การเขียนโปรแกรมเชิงวัตถุเป็นกระบวนทัศน์การเขียนโปรแกรมที่อิงตามแนวคิดของ "วัตถุ" ซึ่งอาจประกอบด้วยข้อมูลในรูปแบบของฟิลด์ ซึ่งมักเรียกว่าแอตทริบิวต์ และโค้ดในรูปแบบของขั้นตอน ซึ่งมักเรียกว่าเมธอด คุณลักษณะของวัตถุคือขั้นตอนของวัตถุสามารถเข้าถึงและมักจะแก้ไขฟิลด์ข้อมูลของวัตถุที่เกี่ยวข้องได้ ดังนั้นโปรแกรมคอมพิวเตอร์เชิงวัตถุจึงสร้างขึ้นจากวัตถุที่โต้ตอบกัน[ 77 ]
- การเขียนโปรแกรมเชิงบริการ (Service-oriented programming ) คือรูปแบบการเขียนโปรแกรมที่ใช้ "บริการ" เป็นหน่วยการทำงานของคอมพิวเตอร์ เพื่อออกแบบและใช้งานแอปพลิเคชันทางธุรกิจแบบบูรณาการและโปรแกรมซอฟต์แวร์ที่สำคัญต่อภารกิจ
ภาษาหลายภาษาสนับสนุนรูปแบบ หลายแบบ ทำให้ความแตกต่างเป็นเรื่องของสไตล์มากกว่าความสามารถทางเทคนิค[ 78 ]
วิจัย
การประชุมเป็นกิจกรรมสำคัญสำหรับการวิจัยด้านวิทยาศาสตร์คอมพิวเตอร์ ในระหว่างการประชุมเหล่านี้ นักวิจัยจากภาครัฐและเอกชนจะนำเสนอผลงานล่าสุดและพบปะกัน แตกต่างจากสาขาวิชาการอื่นๆ ส่วนใหญ่ ในสาขาวิทยาศาสตร์คอมพิวเตอร์บทความที่นำเสนอในการประชุม มี ชื่อเสียงมากกว่าบทความที่ตีพิมพ์ในวารสาร[ 79 ] [ 80 ]คำอธิบายหนึ่งที่เสนอสำหรับเรื่องนี้คือ การพัฒนาอย่างรวดเร็วของสาขาใหม่นี้ต้องการการตรวจสอบและการเผยแพร่ผลลัพธ์อย่างรวดเร็ว ซึ่งเป็นงานที่การประชุมทำได้ดีกว่าวารสาร[ 81 ]
ดูเพิ่มเติม
หมายเหตุ
- ↑ในปี ค.ศ. 1851
- "การนำบัตรเจาะรูมาใช้ในเครื่องคำนวณรุ่นใหม่มีความสำคัญไม่เพียงเพราะเป็นรูปแบบการควบคุมที่สะดวกกว่าดรัม หรือเพราะโปรแกรมสามารถมีขอบเขตไม่จำกัด และสามารถจัดเก็บและทำซ้ำได้โดยไม่ต้องเสี่ยงต่อการเกิดข้อผิดพลาดในการตั้งค่าเครื่องด้วยมือ แต่ยังมีความสำคัญเพราะมันช่วยตอกย้ำความรู้สึกของแบ็บเบจว่าเขาได้ประดิษฐ์สิ่งใหม่ที่แท้จริง ซึ่งเป็นสิ่งที่เหนือกว่าเครื่องคำนวณที่ซับซ้อน"บรูซ คอลลิเออร์ , 1970
- ↑ดูประวัติความเป็นมาของคำคมนี้ได้ในหัวข้อ "วิทยาศาสตร์คอมพิวเตอร์ " บน Wikiquote
- ↑คำว่า "อะไรก็ตาม" ถูกใส่เครื่องหมายอัญประกาศไว้ เพราะมีบางสิ่งที่คอมพิวเตอร์ทำไม่ได้ ตัวอย่างเช่น การตอบคำถามว่าโปรแกรมคอมพิวเตอร์ที่กำหนดมาจะสิ้นสุดลงในที่สุดหรือจะทำงานไปเรื่อยๆ ตลอดไป (ปัญหาการหยุดทำงาน )
อ่านเพิ่มเติม
- Tucker, Allen B. (2004). คู่มือวิทยาการคอมพิวเตอร์ ( ฉบับที่ 2). Chapman and Hall/CRC. ISBN 978-1-58488-360-9.
- Ralston, Anthony ; Reilly, Edwin D.; Hemmendinger, David (2000). สารานุกรมวิทยาการคอมพิวเตอร์ ( ฉบับที่ 4). พจนานุกรม Grove. ISBN 978-1-56159-248-7เก็บถาวรจากต้นฉบับเมื่อวันที่ 8 มิถุนายน 2020 เรียกดูเมื่อวันที่ 6 กุมภาพันธ์ 2011
- เอ็ดวิน ดี. ไรลีย์ (2003). เหตุการณ์สำคัญในวิทยาศาสตร์คอมพิวเตอร์และเทคโนโลยีสารสนเทศ . สำนักพิมพ์กรีนวูด. ISBN 978-1-57356-521-9.
- Knuth, Donald E. (1996). บทความคัดสรรเกี่ยวกับวิทยาการคอมพิวเตอร์ . สำนักพิมพ์ CSLI, สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์ .
- คอลลิเออร์, บรูซ (1990). เครื่องจักรเล็ก ๆ ที่ทำได้: เครื่องคำนวณของชาร์ลส์ แบ็บเบจ . สำนักพิมพ์การ์แลนด์ อิงค์. ISBN 978-0-8240-0043-1เก็บถาวรจากต้นฉบับเมื่อวันที่ 20 มกราคม 2550 เรียกดูเมื่อวันที่ 4 พฤษภาคม 2556
- โคเฮน, เบอร์นาร์ด (2000). โฮเวิร์ด ไอเคน, ภาพเหมือนของผู้บุกเบิกด้านคอมพิวเตอร์ . สำนักพิมพ์ MIT. ISBN 978-0-262-53179-5.
- Tedre, Matti (2014). วิทยาศาสตร์แห่งการคำนวณ: การกำหนดรูปแบบของสาขาวิชา . สำนักพิมพ์ CRC Press, Taylor & Francis .
- แรนเดลล์, ไบรอัน (1973). ที่มาของคอมพิวเตอร์ดิจิทัล บทความคัดสรร . สปริงเกอร์-เวอร์แลก. ISBN 978-3-540-06169-4.
- Randell, Brian (ตุลาคม–ธันวาคม 1982). "จาก Analytical Engine สู่ Electronic Digital Computer: ผลงานของ Ludgate, Torres และ Bush" (PDF) . IEEE Annals of the History of Computing . 4 (4): 327– 341. Bibcode : 1982IAHC....4d.327R . doi : 10.1109/mahc.1982.10042 . S2CID 1737953.เก็บถาวรจากต้นฉบับ(PDF)เมื่อวันที่ 21 กันยายน 2013.
- Peter J. Denning. วิทยาศาสตร์คอมพิวเตอร์เป็นวิทยาศาสตร์หรือไม่? , Communications of the ACM, เมษายน 2548.
- ปีเตอร์ เจ. เดนนิง, หลักการสำคัญในหลักสูตรการเรียนการสอนด้านคอมพิวเตอร์ , การประชุมวิชาการด้านการศึกษาทางวิทยาการคอมพิวเตอร์, 2004
ลิงก์ภายนอก
- บรรณานุกรมวิทยาการคอมพิวเตอร์ DBLP
- สมาคมเครื่องจักรคำนวณ
- สถาบันวิศวกรรมไฟฟ้าและอิเล็กทรอนิกส์