การเขียนโปรแกรมคอมพิวเตอร์ ยุค ปัจจุบัน ใช้โปรแกรม อะไร

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

งานประกอบและที่เกี่ยวข้องกับการเขียนโปรแกรมรวมถึง: การทดสอบ , การแก้จุดบกพร่อง , รหัสแหล่งที่มาการบำรุงรักษา, การดำเนินงานของการสร้างระบบและการจัดการที่ได้รับสิ่งประดิษฐ์เช่นเครื่องรหัสโปรแกรมคอมพิวเตอร์ เหล่านี้อาจได้รับการพิจารณาเป็นส่วนหนึ่งของกระบวนการการเขียนโปรแกรม แต่บ่อยครั้งในระยะการพัฒนาซอฟแวร์ที่ใช้สำหรับกระบวนการขนาดใหญ่นี้กับระยะการเขียนโปรแกรม , การดำเนินการหรือการเข้ารหัสที่สงวนไว้สำหรับการเขียนที่แท้จริงของรหัส วิศวกรรมซอฟต์แวร์ผสมผสานเทคนิคทางวิศวกรรมเข้ากับแนวทางปฏิบัติในการพัฒนาซอฟต์แวร์ วิศวกรรมย้อนกลับเป็นกระบวนการที่เกี่ยวข้องที่นักออกแบบนักวิเคราะห์และโปรแกรมเมอร์ใช้เพื่อทำความเข้าใจและสร้างใหม่ / นำกลับมาใช้ใหม่ [3] : 3

ประวัติศาสตร์

การเขียนโปรแกรมคอมพิวเตอร์ ยุค ปัจจุบัน ใช้โปรแกรม อะไร

อุปกรณ์ที่ตั้งโปรแกรมได้มีมานานหลายศตวรรษ เป็นช่วงต้นของศตวรรษที่ 9 ซึ่งเป็นที่ตั้งโปรแกรมซีเควนเพลงถูกคิดค้นโดยเปอร์เซียนูมูซาพี่น้องผู้บรรยายอัตโนมัติกลขลุ่ยเล่นในหนังสือของอุปกรณ์แยบยล [4] [5]ใน 1206 วิศวกรอาหรับอัลจาซารีคิดค้นตั้งโปรแกรมกลองเครื่องที่กลดนตรีหุ่นยนต์อาจจะทำให้การเล่นจังหวะกลองแตกต่างกันและรูปแบบผ่านทางหมุดและกล้อง [6] [7]ในปี 1801 เครื่องทอผ้า Jacquardสามารถผลิตผ้าทอที่แตกต่างไปจากเดิมอย่างสิ้นเชิงโดยเปลี่ยน "โปรแกรม" ซึ่งเป็นชุดการ์ดกระดาษที่มีรูเจาะอยู่

อัลกอริธึมการทำลายรหัสมีมานานหลายศตวรรษแล้ว ในศตวรรษที่ 9 ที่นักคณิตศาสตร์อาหรับ อัลคินดี้อธิบายการเข้ารหัสลับอัลกอริทึมสำหรับรหัสเข้ารหัสถอดรหัสในต้นฉบับในข้อความถอดรหัสการเข้ารหัสลับเขาให้คำอธิบายแรกของการเข้ารหัสโดยการวิเคราะห์ความถี่ซึ่งเป็นอัลกอริธึมการทำลายรหัสที่เก่าแก่ที่สุด [8]

ครั้งแรกโปรแกรมคอมพิวเตอร์เป็นวันที่โดยทั่วไป 1843 เมื่อนักคณิตศาสตร์Ada Lovelaceการตีพิมพ์เป็นอัลกอริทึมในการคำนวณลำดับของหมายเลข Bernoulliตั้งใจที่จะดำเนินการโดยCharles Babbage 's วิเคราะห์ Engine [9]

ข้อมูลและคำแนะนำเคยถูกจัดเก็บไว้ในการ์ดเจาะภายนอก ซึ่งได้รับการจัดเก็บตามลำดับและจัดเรียงไว้ในชุดโปรแกรม

ในช่วงทศวรรษที่ 1880 Herman Hollerithได้คิดค้นแนวคิดในการจัดเก็บข้อมูลในรูปแบบที่เครื่องอ่านได้ [10]ต่อมามีการเพิ่มแผงควบคุม (ปลั๊กบอร์ด) ใน 1906 Type I Tabulator ของเขาอนุญาตให้ตั้งโปรแกรมสำหรับงานที่แตกต่างกันและในช่วงปลายทศวรรษที่ 1940 อุปกรณ์บันทึกหน่วยเช่นIBM 602และIBM 604ได้รับการตั้งโปรแกรมโดยแผงควบคุมใน เช่นเดียวกับคอมพิวเตอร์อิเล็กทรอนิกส์เครื่องแรก แต่ด้วยแนวคิดของคอมพิวเตอร์ที่เก็บไว้โปรแกรมนำมาใช้ในปี 1949 ทั้งโปรแกรมและข้อมูลที่ถูกจัดเก็บและการจัดการในลักษณะเดียวกันในหน่วยความจำคอมพิวเตอร์ [ ต้องการอ้างอิง ]

ภาษาเครื่อง

รหัสเครื่องเป็นภาษาของโปรแกรมในยุคแรก ๆ ซึ่งเขียนในชุดคำสั่งของเครื่องนั้น ๆ มักจะอยู่ในสัญกรณ์ไบนารี ภาษาแอสเซมบลีได้รับการพัฒนาในไม่ช้าโดยให้โปรแกรมเมอร์ระบุคำสั่งในรูปแบบข้อความ (เช่น ADD X, TOTAL) โดยมีตัวย่อสำหรับรหัสการทำงานแต่ละรหัสและชื่อที่มีความหมายสำหรับระบุที่อยู่ อย่างไรก็ตามเนื่องจากภาษาแอสเซมบลีเป็นมากกว่าสัญกรณ์ที่แตกต่างกันเล็กน้อยสำหรับภาษาเครื่องสองเครื่องที่มีชุดคำสั่งต่างกันจึงมีภาษาแอสเซมบลีที่แตกต่างกัน

แผงควบคุมมีสายสำหรับ IBM 402 เครื่องบัญชี

ภาษาคอมไพเลอร์

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

ภาษาที่คอมไพล์เหล่านี้ช่วยให้โปรแกรมเมอร์สามารถเขียนโปรแกรมในรูปแบบที่มีความสมบูรณ์ทางวากยสัมพันธ์มากขึ้นและสามารถแยกโค้ดออกเป็นนามธรรมได้มากขึ้นทำให้สามารถกำหนดเป้าหมายไปยังชุดคำสั่งของเครื่องที่แตกต่างกันได้ผ่านการประกาศคอมไพล์และฮิวริสติก ครั้งแรกที่คอมไพเลอร์สำหรับการเขียนโปรแกรมภาษาได้รับการพัฒนาโดยเกรซกระโดด [12]เมื่อ Hopper ไปทำงานในUNIVACในปีพ. ศ. 2492 เธอได้นำแนวคิดในการใช้คอมไพเลอร์ร่วมกับเธอ [13] [14]คอมไพเลอร์ใช้ประโยชน์จากพลังของคอมพิวเตอร์เพื่อให้การเขียนโปรแกรมง่ายขึ้น[11]โดยอนุญาตให้โปรแกรมเมอร์ระบุการคำนวณโดยการป้อนสูตรโดยใช้สัญกรณ์ infix (เช่นY = X * 2 + 5 * X + 9 ) FORTRANซึ่งเป็นภาษาระดับสูงที่ใช้กันอย่างแพร่หลายเป็นภาษาแรกที่มีการนำไปใช้งานซึ่งอนุญาตให้มีการใช้บล็อกโค้ดที่ใช้ซ้ำได้ออกมาในปี 2500 [11]และในไม่ช้าก็มีการพัฒนาภาษาอื่น ๆ อีกมากมายโดยเฉพาะภาษาโคบอลที่มุ่งเป้าไปที่การประมวลผลข้อมูลเชิงพาณิชย์ และเสียงกระเพื่อมสำหรับการวิจัยทางคอมพิวเตอร์ ในปี 1951 ฟรานเซสอี Holbertonพัฒนาคนแรกที่กำเนิดเรียงผสานซึ่งวิ่งบนยูนิแวกผม [15]ผู้หญิงอีกคนหนึ่งที่ทำงานที่ยูนิแวก, Adele Mildred Kossพัฒนาโปรแกรมที่เป็นสารตั้งต้นให้กับเครื่องกำเนิดไฟฟ้ารายงาน [15]แนวคิดในการสร้างภาษาโคบอลเริ่มต้นในปี 2502 เมื่อMary K. Hawesซึ่งทำงานให้กับBurroughs Corporationได้จัดการประชุมเพื่อหารือเกี่ยวกับการสร้างภาษาทางธุรกิจทั่วไป [16]เธอเชิญหกคนรวมทั้งเกรซฮอปเปอร์ [16] Hopper มีส่วนร่วมในการพัฒนาภาษาโคบอลเป็นภาษาธุรกิจและสร้างโปรแกรม "จัดทำเอกสารด้วยตนเอง" [17] [18]ผลงานของถังเพื่อ COBOL อยู่บนพื้นฐานของการเขียนโปรแกรมภาษาของเธอเรียกว่ากระแส-MATIC [14]ในปี 1961 Jean E. Sammet ได้พัฒนาFORMACและตีพิมพ์Programming Languages: History and Fundamentalsซึ่งเป็นงานมาตรฐานเกี่ยวกับภาษาโปรแกรม [16] [19]

รายการซอร์สโค้ด

โปรแกรมส่วนใหญ่ยังคงเข้ามาใช้บัตรเจาะหรือเทปกระดาษ ดูการเขียนโปรแกรมคอมพิวเตอร์ในยุคบัตรเจาะ ในช่วงปลายทศวรรษที่ 1960 อุปกรณ์จัดเก็บข้อมูลและขั้วคอมพิวเตอร์มีราคาไม่แพงพอที่จะสร้างโปรแกรมได้โดยการพิมพ์ลงในคอมพิวเตอร์โดยตรง Frances Holberton สร้างรหัสเพื่ออนุญาตให้ป้อนข้อมูลทางแป้นพิมพ์ขณะที่เธอทำงานที่ UNIVAC [20]

โปรแกรมแก้ไขข้อความได้รับการพัฒนาขึ้นซึ่งอนุญาตให้ทำการเปลี่ยนแปลงและแก้ไขได้ง่ายกว่าการใช้การ์ดเจาะรู ซิสเตอร์แมรีเคนเน็ ธ เคลเลอร์ทำงานเกี่ยวกับการพัฒนาภาษาโปรแกรมพื้นฐานในขณะที่เธอเป็นนักศึกษาระดับบัณฑิตศึกษาที่ดาร์ทเมาท์ในปี 1960 [21]หนึ่งในภาษาโปรแกรมเชิงวัตถุภาษาแรกSmalltalkได้รับการพัฒนาโดยโปรแกรมเมอร์เจ็ดคนรวมถึงAdele Goldbergในปี 1970 [22]

การเขียนโปรแกรมสมัยใหม่

ข้อกำหนดด้านคุณภาพ

ไม่ว่าแนวทางในการพัฒนาจะเป็นอย่างไรโปรแกรมสุดท้ายจะต้องเป็นไปตามคุณสมบัติพื้นฐานบางประการ คุณสมบัติต่อไปนี้เป็นคุณสมบัติที่สำคัญที่สุด: [23] [24]

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

ความสามารถในการอ่านซอร์สโค้ด

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

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

การทำตามรูปแบบการเขียนโปรแกรมที่สอดคล้องกันมักจะช่วยให้อ่านง่าย อย่างไรก็ตามความสามารถในการอ่านเป็นมากกว่ารูปแบบการเขียนโปรแกรม หลายปัจจัยการมีเพียงเล็กน้อยหรือไม่มีอะไรเกี่ยวข้องกับความสามารถของคอมพิวเตอร์ในการคอมไพล์และรันโค้ดได้อย่างมีประสิทธิภาพมีส่วนช่วยในการอ่าน [27]ปัจจัยเหล่านี้บางส่วน ได้แก่ :

  • รูปแบบการเยื้องที่แตกต่างกัน(ช่องว่าง)
  • ความคิดเห็น
  • การสลายตัว
  • หลักการตั้งชื่อสำหรับออบเจ็กต์ (เช่นตัวแปรคลาสโพรซีเดอร์ ฯลฯ )

นำเสนอแง่มุมของการนี้ (เช่นเยื้องแบ่งเส้นไฮไลต์สีและอื่น ๆ ) มักจะถูกจัดการโดยแก้ไขรหัสต้นฉบับแต่ด้านเนื้อหาสะท้อนให้เห็นถึงความสามารถและทักษะของโปรแกรมเมอร์

ภาษาโปรแกรมภาพต่างๆยังได้รับการพัฒนาโดยมีจุดประสงค์เพื่อแก้ไขปัญหาด้านความสามารถในการอ่านโดยการนำแนวทางที่ไม่ใช่แบบดั้งเดิมมาใช้กับโครงสร้างโค้ดและการแสดงผล สภาพแวดล้อมการพัฒนาแบบบูรณาการ (IDEs) มีจุดมุ่งหมายเพื่อรวมความช่วยเหลือดังกล่าวทั้งหมด เทคนิคเช่นการปรับโครงสร้างโค้ดสามารถเพิ่มความสามารถในการอ่าน

ความซับซ้อนของอัลกอริทึม

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

อัลกอริทึมหมากรุกเป็นตัวอย่าง

"การเขียนโปรแกรมคอมพิวเตอร์สำหรับเล่นหมากรุก" เป็นเอกสารในปี 1950 ที่ประเมินอัลกอริทึม "minimax" ซึ่งเป็นส่วนหนึ่งของประวัติศาสตร์ของความซับซ้อนของอัลกอริทึม หลักสูตรของไอบีเอ็มในDeep Blue (หมากรุกคอมพิวเตอร์)เป็นส่วนหนึ่งของหลักสูตรวิทยาศาสตร์คอมพิวเตอร์ที่มหาวิทยาลัยสแตนฟอ [28]

ระเบียบวิธี

ขั้นตอนแรกในกระบวนการพัฒนาซอฟต์แวร์ที่เป็นทางการส่วนใหญ่คือการวิเคราะห์ข้อกำหนดตามด้วยการทดสอบเพื่อกำหนดการสร้างแบบจำลองมูลค่าการนำไปใช้และการกำจัดความล้มเหลว (การดีบัก) มีวิธีการที่แตกต่างกันมากมายสำหรับแต่ละงานเหล่านั้น แนวทางหนึ่งที่นิยมสำหรับการวิเคราะห์ความต้องการคือการวิเคราะห์กรณีใช้ โปรแกรมเมอร์หลายคนใช้รูปแบบของการพัฒนาซอฟต์แวร์แบบAgileซึ่งขั้นตอนต่างๆของการพัฒนาซอฟต์แวร์อย่างเป็นทางการจะรวมเข้าด้วยกันเป็นรอบสั้น ๆ ซึ่งใช้เวลาไม่กี่สัปดาห์แทนที่จะเป็นปี มีหลายวิธีในกระบวนการพัฒนาซอฟต์แวร์

เทคนิคการสร้างแบบจำลองที่เป็นที่นิยม ได้แก่ การวิเคราะห์และออกแบบเชิงวัตถุ ( OOAD ) และสถาปัตยกรรมที่ขับเคลื่อนด้วยโมเดล ( MDA ) Unified Modeling Language ( UML ) เป็นสัญกรณ์ที่ใช้สำหรับทั้ง OOAD และ MDA

เทคนิคที่คล้ายกันที่ใช้สำหรับการออกแบบฐานข้อมูลคือ Entity-Relationship Modeling ( ER Modeling )

เทคนิคการใช้งานรวมถึงภาษาที่จำเป็น ( object-orientedหรือขั้นตอน ) ภาษาการทำงานและภาษาตรรกะ

การวัดการใช้ภาษา

เป็นการยากมากที่จะระบุว่าภาษาโปรแกรมสมัยใหม่ที่เป็นที่นิยมมากที่สุดคืออะไร วิธีการวัดความนิยมของภาษาโปรแกรม ได้แก่ การนับจำนวนโฆษณางานที่กล่าวถึงภาษา[29]จำนวนหนังสือที่ขายได้และหลักสูตรการสอนภาษา (ซึ่งเป็นการประเมินความสำคัญของภาษาที่ใหม่กว่า) และการประมาณจำนวนบรรทัดที่มีอยู่ ของรหัสที่เขียนในภาษา (ซึ่งจะประเมินจำนวนผู้ใช้ภาษาธุรกิจเช่น COBOL ต่ำเกินไป)

บางภาษาได้รับความนิยมอย่างมากสำหรับแอปพลิเคชันบางประเภทในขณะที่บางภาษามักใช้ในการเขียนแอปพลิเคชันประเภทต่างๆ ยกตัวอย่างเช่นภาษาโคบอลยังคงแข็งแกร่งในศูนย์ข้อมูลขององค์กร[30]มักจะมีขนาดใหญ่เมนเฟรมคอมพิวเตอร์ , Fortranในการใช้งานวิศวกรรมภาษาสคริปต์ในเว็บการพัฒนาและCในซอฟต์แวร์ฝังตัว แอปพลิเคชันจำนวนมากใช้หลายภาษาผสมกันในการสร้างและใช้งาน โดยทั่วไปภาษาใหม่ได้รับการออกแบบโดยใช้ไวยากรณ์ของภาษาก่อนหน้าพร้อมกับฟังก์ชันใหม่ที่เพิ่มเข้ามา (เช่นC ++เพิ่มการวางแนววัตถุให้กับ C และJavaจะเพิ่มการจัดการหน่วยความจำและbytecodeให้กับ C ++ แต่ส่งผลให้สูญเสียประสิทธิภาพและความสามารถในการทำงานต่ำ การจัดการระดับ)

การแก้จุดบกพร่อง

ข้อบกพร่องที่เกิดขึ้นจริงเป็นครั้งแรกที่ทำให้เกิดปัญหาในคอมพิวเตอร์คือมอดซึ่งติดอยู่ในเมนเฟรมของฮาร์วาร์ดซึ่งบันทึกไว้ในรายการสมุดบันทึกลงวันที่ 9 กันยายน พ.ศ. 2490 [31] "บั๊ก" เป็นคำที่ใช้กันทั่วไปสำหรับข้อบกพร่องของซอฟต์แวร์เมื่อเป็นเช่นนี้ พบข้อผิดพลาด

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

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

แก้จุดบกพร่องมักจะทำกับIDEsเช่นEclipse , Visual Studio , Xcode , KDevelop , NetBeansและรหัส :: บล็อก แก้จุดบกพร่องแบบสแตนด์อโลนเช่นGDBยังใช้และสิ่งเหล่านี้มักจะให้น้อยของสภาพแวดล้อมในภาพมักจะใช้บรรทัดคำสั่ง โปรแกรมแก้ไขข้อความบางอย่างเช่นEmacsอนุญาตให้เรียกใช้ GDB ผ่านทางโปรแกรมเหล่านี้เพื่อจัดเตรียมสภาพแวดล้อมที่มองเห็นได้

ภาษาโปรแกรม

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

Allen DowneyในหนังสือHow To Think Like A Computer Scientistเขียนว่า:

รายละเอียดมีลักษณะแตกต่างกันไปในภาษาต่างๆ แต่มีคำแนะนำพื้นฐานบางประการปรากฏในทุกภาษา:
  • อินพุต: รวบรวมข้อมูลจากแป้นพิมพ์ไฟล์หรืออุปกรณ์อื่น ๆ
  • เอาต์พุต: แสดงข้อมูลบนหน้าจอหรือส่งข้อมูลไปยังไฟล์หรืออุปกรณ์อื่น ๆ
  • เลขคณิต: ดำเนินการทางคณิตศาสตร์พื้นฐานเช่นการบวกและการคูณ
  • การดำเนินการตามเงื่อนไข: ตรวจสอบเงื่อนไขบางประการและดำเนินการตามลำดับของคำสั่งที่เหมาะสม
  • การทำซ้ำ: ดำเนินการบางอย่างซ้ำ ๆ โดยปกติจะมีการเปลี่ยนแปลงบางอย่าง

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

โปรแกรมเมอร์

นักเขียนโปรแกรมคอมพิวเตอร์คือผู้ที่เขียนซอฟต์แวร์คอมพิวเตอร์ งานของพวกเขามักเกี่ยวข้องกับ:

  • การสร้างต้นแบบ
  • การเข้ารหัส
  • การแก้จุดบกพร่อง
  • เอกสารประกอบ
  • บูรณาการ
  • ซ่อมบำรุง
  • การวิเคราะห์ความต้องการ
  • สถาปัตยกรรมซอฟต์แวร์
  • การทดสอบซอฟต์แวร์
  • ข้อมูลจำเพาะ

ดูสิ่งนี้ด้วย

  • ACCU
  • สมาคมเครื่องจักรคอมพิวเตอร์
  • ระบบเครือข่ายคอมพิวเตอร์
  • โปรแกรมสวัสดีชาวโลก
  • สถาบันนักวิเคราะห์และโปรแกรมเมอร์
  • สัปดาห์แห่งการเข้ารหัสแห่งชาติ
  • การเขียนโปรแกรมระบบ
  • การเขียนโปรแกรมคอมพิวเตอร์ในยุคบัตรเจาะรู
  • ศิลปะการเขียนโปรแกรมคอมพิวเตอร์
  • ผู้หญิงในการใช้คอมพิวเตอร์
  • ไทม์ไลน์ของผู้หญิงในการใช้คอมพิวเตอร์

อ้างอิง

  1. ^ Bebbington ฌอน (2014) "การเข้ารหัสคืออะไร" . Tumblrที่เก็บถาวรจากเดิมเมื่อวันที่ 29 เมษายน 2020 สืบค้นเมื่อ3 มีนาคม 2557 .
  2. ^ เบ็บบิงตัน, ฌอน (2014). "การเขียนโปรแกรมคืออะไร" . Tumblr ที่เก็บถาวรจากเดิมเมื่อวันที่ 29 เมษายน 2020 สืบค้นเมื่อ3 มีนาคม 2557 .
  3. ^ Eilam, Eldad (2005). ย้อนกลับ: ความลับของวิศวกรรมผันกลับ จอห์นไวลีย์แอนด์ซันส์ ISBN 978-0-7645-7481-8.CS1 maint: ใช้พารามิเตอร์ผู้เขียน ( ลิงค์ )
  4. ^ Koetsier, Teun (2001), "ในยุคก่อนประวัติศาสตร์ของเครื่องจักรที่ตั้งโปรแกรมได้: หุ่นยนต์ดนตรี, เครื่องทอผ้า, เครื่องคิดเลข", กลไกและทฤษฎีเครื่องจักร , Elsevier, 36 (5): 589–603, ดอย : 10.1016 / S0094-114X (01) 00005 -2 .
  5. ^ คาปูร์, อาจาย์; คาร์เนกี, เดล; เมอร์ฟี่จิม; ลองเจสัน (2017). "ลำโพงตัวเลือก: ประวัติศาสตร์ไม่ใช่ลำโพงตามการฟังเพลง" จัดเสียงมหาวิทยาลัยเคมบริดจ์ 22 (2): 195–205 ดอย : 10.1017 / S1355771817000103 . ISSN  1355-7718
  6. ^ Fowler, Charles B. (ตุลาคม 2510). "พิพิธภัณฑ์ดนตรี: ประวัติศาสตร์เครื่องมือกล". วารสารการศึกษาดนตรี . 54 (2): 45–49. ดอย : 10.2307 / 3391092 . JSTOR  3391092 S2CID  190524140
  7. ^ ประสานเสียงชาร์กี้ (2007), 13 ศตวรรษตั้งโปรแกรมหุ่นยนต์ , University of Sheffield
  8. ^ Dooley, John F. (2013). ประวัติโดยย่อของ Cryptology และการเข้ารหัสลับอัลกอริทึม Springer Science & Business Media หน้า 12–3 ISBN 9783319016283.
  9. ^ ฟูกี, เจ.; ฟรานซิสเจ. (2546). "Lovelace & Babbage and the Creation of the 1843 'notes ' ". IEEE พงศาวดารประวัติศาสตร์ของคอมพิวเตอร์ 25 (4): 16. ดอย : 10.1109 / MAHC.2003.1253887 .
  10. ^ da Cruz, Frank (10 มีนาคม 2020) "ประวัติศาสตร์คอมพิวเตอร์มหาวิทยาลัยโคลัมเบีย - เฮอร์แมนฮอลเลอริ ธ " . มหาวิทยาลัยโคลัมเบียColumbia.edu. ที่เก็บถาวรจากเดิมเมื่อวันที่ 29 เมษายน 2020 สืบค้นเมื่อ25 เมษายน 2553 .
  11. ^ ก ข ค Bergstein, Brian (20 มีนาคม 2550). "Fortran สร้างจอห์นคัตาย" NBC News . ที่เก็บถาวรจากเดิมเมื่อวันที่ 29 เมษายน 2020 สืบค้นเมื่อ25 เมษายน 2553 .
  12. ^ สมิ ธ 2013พี 6.
  13. ^ Ceruzzi 1998พี 84-85.
  14. ^ a b Gürer 1995 , p. 176.
  15. ^ a b Gürer 1995 , p. 177.
  16. ^ a b c Gürer 1995 , p. 179.
  17. ^ สมิ ธ 2013พี 7.
  18. ^ Ceruzzi 1998พี 92.
  19. ^ "ผู้มีอำนาจคอมพิวเตอร์ให้มาพูดที่นี่" ไทม์ส . 9 เมษายน 1972 สืบค้นเมื่อ13 ตุลาคม 2561 - ทาง Newspapers.com.
  20. ^ "ฟรานเซส Holberton ไพโอเนียร์ในภาษาคอมพิวเตอร์ตาย" ผู้ส่งสารวารสาร12 ธันวาคม 2001 สืบค้นเมื่อ13 ตุลาคม 2561 - ทาง Newspapers.com.
  21. ^ Gurer 1995พี 180-181.
  22. ^ "อเดลโกลด์เบิร์ก" . มหาวิทยาลัยแมรี่แลนด์คอลเลจพาร์ค สืบค้นเมื่อ14 ตุลาคม 2561 .
  23. ^ "NIST การพัฒนา Cloud Roadmap" InformationWeek . 5 พฤศจิกายน 2553 ความคิดริเริ่มด้านคอมพิวเตอร์พยายามขจัดอุปสรรคในการนำระบบคลาวด์มาใช้ในด้านความปลอดภัยความสามารถในการทำงานร่วมกันการพกพาและความน่าเชื่อถือ
  24. ^ "มันขึ้นอยู่กับอะไร". ComputerWorld9 เมษายน 2527 น. 13. ขึ้นอยู่กับ ... ความน่าเชื่อถือ ความเข้ากันได้
  25. ^ "Programming 101: เคล็ดลับที่จะกลายเป็นโปรแกรมเมอร์ที่ดี - ภูมิปัญญา Geek" ภูมิปัญญา Geek 19 พฤษภาคม 2016 สืบค้นเมื่อ23 พฤษภาคม 2559 .
  26. ^ เอลชอฟเจมส์แอล; Marcotty, Michael (1982). "การปรับปรุงความสามารถในการอ่านโปรแกรมคอมพิวเตอร์เพื่อช่วยในการปรับเปลี่ยน". การติดต่อสื่อสารของพลอากาศเอก25 (8): 512–521 ดอย : 10.1145 / 358589.358596 . S2CID  30026641
  27. ^ หลาย (wiki) "ความสามารถในการอ่าน" . Docforgeที่เก็บถาวรจากเดิมเมื่อวันที่ 29 เมษายน 2020 สืบค้นเมื่อ30 มกราคม 2553 .
  28. ^ Piech, Chris "สีน้ำเงินเข้ม" . ในปี 1950 Claude Shannon ได้ตีพิมพ์ ... "Programming a Computer for Playing Chess", ... "minimax" algorithm
  29. ^ Enticknap, Nicholas (11 กันยายน 2550). "SSL / คอมพิวเตอร์ไอทีรายสัปดาห์สำรวจเงินเดือน: การเงินบูมไดรฟ์ไอทีเติบโตของงาน"
  30. ^ มิตเชลล์โรเบิร์ต (21 พฤษภาคม 2555) “ สมองโคโบลเดรน” . โลกคอมพิวเตอร์. สืบค้นเมื่อ9 พฤษภาคม 2558 .
  31. ^ ถ่ายภาพ Naval Surface Warfare Center, Dahlgren, Virginia จาก National Geographic กันยายน 1947

แหล่งที่มา

  • Ceruzzi, Paul E. (1998). ประวัติความเป็นมาของคอมพิวเตอร์เคมบริดจ์แมสซาชูเซตส์: MIT Press ISBN 9780262032551 - ผ่าน EBSCOhost
  • อีแวนส์, แคลร์แอล. (2018). วงกว้าง: บอกเล่าเรื่องราวของผู้หญิงที่ทำให้อินเทอร์เน็ต นิวยอร์ก: ผลงาน / เพนกวิน. ISBN 9780735211759.
  • เกอร์เรอร์, เดนิส (1995). "ผู้บุกเบิกผู้หญิงในสาขาวิทยาศาสตร์คอมพิวเตอร์" (PDF)การติดต่อสื่อสารของพลอากาศเอก38 (1): 45–54 ดอย : 10.1145 / 204865.204875 . S2CID  6626310
  • Smith, Erika E. (2013). "ตระหนักถึงมรดก Collective ผ่านประวัติศาสตร์ของผู้หญิงในคอมพิวเตอร์" CLCWeb: วรรณกรรมและวัฒนธรรมเปรียบเทียบ: การ WWWeb วารสาร 15 (1): 1–9 - ผ่าน EBSCOhost

อ่านเพิ่มเติม

  • AK Hartmann, คู่มือเชิงปฏิบัติสำหรับการจำลองคอมพิวเตอร์ , สิงคโปร์: World Scientific (2009)
  • A. Hunt, D. Thomas และ W. Cunningham, The Pragmatic Programmer จาก Journeyman to Master , Amsterdam: Addison-Wesley Longman (1999)
  • Brian W.Kernighan, The Practice of Programming , Pearson (1999)
  • Weinberg, Gerald M. , จิตวิทยาการเขียนโปรแกรมคอมพิวเตอร์ , นิวยอร์ก: Van Nostrand Reinhold (1971)
  • Edsger W. Dijkstra , วินัยในการเขียนโปรแกรม , Prentice-Hall (1976)
  • O.-J. Dahl, EWDijkstra , CAR Hoare, Structured Programming , Academic Press (1972)
  • David Gries , ศาสตร์แห่งการเขียนโปรแกรม , Springer-Verlag (1981)

ลิงก์ภายนอก