คอมพิวเตอร์ Windows อินเทอร์เน็ต

ภาษาโปรแกรมต่างๆ ภาษาโปรแกรม

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

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

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

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

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

ภาษาโปรแกรมคืออะไร?

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

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

ภาษาโปรแกรมมีไว้ทำอะไร?

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

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

ภาษาโปรแกรมแบ่งออกเป็น 2 กลุ่ม

มีภาษาที่อยู่ในระดับต่ำและภาษาที่อยู่ในระดับสูง

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

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

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

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

เอาล่ะ มาถึงแล้ว เราสามารถพูดกับสิ่งสำคัญได้ ตอนนี้เราจะบอกคุณว่าภาษาโปรแกรมคืออะไร

มีภาษาโปรแกรมอะไรบ้าง

Fortran

ย้อนกลับไปในช่วงกลางทศวรรษที่ 50 นักวิทยาศาสตร์เริ่มสร้างภาษาโปรแกรม และภาษาแรกของประเภทนี้คือชื่อ Fortran และได้รับการพัฒนาในปี 2500 ใช้เพื่ออธิบายอัลกอริทึมสำหรับการแก้ปัญหาประเภททางวิทยาศาสตร์และทางเทคนิคโดยใช้คอมพิวเตอร์ดิจิทัล นอกจากนี้ เช่นเดียวกับหน่วยคำนวณแรก ภาษาประเภทนี้ถูกใช้เพื่อทำวิทยาศาสตร์ธรรมชาติและการคำนวณทางคณิตศาสตร์ ภาษาในรูปแบบที่ปรับปรุงแล้วนี้ยังคงมีอยู่จนถึงสมัยของเรา และเป็นหนึ่งในภาษาสมัยใหม่ที่มีระดับสูง ซึ่งส่วนใหญ่ใช้ในการวิจัยทางวิทยาศาสตร์ ตัวเลือกที่พบบ่อยที่สุดในปัจจุบัน ได้แก่ Fortran-I2, Fortran-I4, EASIC Fortran และลักษณะทั่วไป

ALGOL

เราดำเนินการต่อหัวข้อภาษาโปรแกรมของเรา ตามที่คุณเข้าใจแล้ว ตอนนี้เราจะพูดถึงภาษาการเขียนโปรแกรมเช่น Algol ซึ่งปรากฏในปี 2501-2503 ในปี 2507-2511 มีการปรับปรุงดังนั้น Algol - 68 จึงปรากฏขึ้น ภาษาประเภทนี้ได้รับการพัฒนาโดยคณะกรรมการซึ่งรวมถึงนักวิทยาศาสตร์จากอเมริกาและยุโรปและจำแนกเป็นภาษาที่มีระดับสูง การใช้ภาษาประเภทนี้ สามารถแปลสูตรพีชคณิตเป็นคำสั่งโปรแกรมได้อย่างง่ายดาย Algol ได้รับความนิยมไม่เพียง แต่ในยุโรป แต่ยังรวมถึงในรัสเซียด้วย สำหรับภาษาโปรแกรมทั้งหมดที่สร้างขึ้นหลังจากผ่านไประยะหนึ่ง ภาษาประเภทนี้มีผลกระทบที่เห็นได้ชัดเจน และโดยเฉพาะอย่างยิ่ง ภาษาดังกล่าวส่งผลต่อภาษาปาสกาล โดยหลักการแล้ว ภาษาประเภทนี้ เช่นเดียวกับภาษา FORTRAN ถูกสร้างขึ้นเพื่อแก้ปัญหาประเภททางวิทยาศาสตร์และทางเทคนิค นอกจากนี้ ภาษายังถูกใช้เป็นเครื่องมือในการสอนพื้นฐานของการเขียนโปรแกรม นั่นคือ ศิลปะการคอมไพล์ซอฟต์แวร์

โคบอล

ภาษาการเขียนโปรแกรม Cobol ถูกสร้างขึ้นในปี 2502-2503 และภาษานี้เป็นของคนรุ่นที่สาม ประการแรก มันมีไว้สำหรับการพัฒนาแอปพลิเคชันสำหรับธุรกิจและสำหรับการแก้ปัญหาประเภทเศรษฐกิจ สำหรับการประมวลผลข้อมูลการธนาคาร สำหรับบริษัทประกันภัยและสถาบันอื่นๆ "นักประดิษฐ์" ของโคบอลคือเกรซ ฮ็อปเปอร์ โดยปกติแล้ว COBOL จะถูกวิพากษ์วิจารณ์ถึงความยุ่งยากและการใช้คำฟุ่มเฟือย เนื่องจากหนึ่งในเป้าหมายของผู้สร้างภาษานี้คือค่าประมาณสูงสุด ภาษาอังกฤษ... ในเวลาเดียวกัน ภาษาโปรแกรมมิ่งมีเครื่องมือที่ยอดเยี่ยมสำหรับช่วงเวลานั้นในการดำเนินกิจกรรมที่มีโครงสร้างข้อมูลและไฟล์ และทำให้แอพพลิเคชั่นทางธุรกิจมีอายุการใช้งานยาวนาน อย่างน้อยในสหรัฐอเมริกาอย่างแน่นอน

Lisp

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

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

ขั้นพื้นฐาน

ภาษาโปรแกรม BASIC ได้รับการพัฒนาโดยโปรแกรมเมอร์ที่ Dartmouth College ในสหรัฐอเมริกาในช่วงกลางทศวรรษที่หกสิบ ภาษามีพื้นฐานมาจาก Fortran 2 และบางส่วนใช้ Algol - 60 นอกจากนี้ยังมีการเพิ่มเติมที่ทำให้การทำงานในโหมดแบ่งปันเวลาสะดวกยิ่งขึ้น และหลังจากผ่านไปหลายปี ภาษาก็สะดวกสำหรับการประมวลผลข้อความและเลขคณิตเมทริกซ์ ภาษาการเขียนโปรแกรมประเภทนี้เดิมใช้งานบนเมนเฟรม GE-265 ซึ่งรองรับเทอร์มินัลจำนวนมาก ในเวลาที่ปรากฏ ตรงกันข้ามกับความเชื่อที่นิยม เป็นภาษาที่รวบรวม

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

ป้อม

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

คุณสมบัติหลายอย่าง เช่น ความยืดหยุ่น การโต้ตอบ และความเรียบง่ายของ "การประดิษฐ์" ทำให้ Forth เป็นภาษาที่มีประสิทธิภาพและน่าสนใจในการวิจัยประยุกต์และในการสร้างเครื่องมือ ขอบเขตการใช้งานที่ชัดเจนสำหรับภาษาโปรแกรมประเภทนี้คือระบบควบคุมแบบฝัง นอกจากที่กล่าวมาทั้งหมด เขายังพบแอปพลิเคชั่นในการเขียนโปรแกรมพีซีภายใต้การควบคุมของระบบปฏิบัติการประเภทต่างๆ

ปาสกาล

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

คุณลักษณะทั้งหมดสามารถเรียกคุณสมบัติหลักได้ - นี่คือการพิมพ์ที่เข้มงวดที่สุดและความพร้อมใช้งานของเครื่องมือการเขียนโปรแกรมประเภทที่มีโครงสร้าง ปาสกาลเป็นหนึ่งในภาษาแรกๆ ดังกล่าว ภาษาโปรแกรม Pascal สอนความถูกต้องของการเขียนโปรแกรมและการพัฒนาวิธีการในการแก้ปัญหาที่ถูกต้อง และยังช่วยในการเรียนรู้วิธีการเลือกตัวเลือกที่เหมาะสมสำหรับการนำเสนอและจัดระเบียบข้อมูลที่ใช้ในงาน ภาษาปาสกาลตั้งแต่ปี 1983 ได้ถูกนำมาใช้เป็น หลักสูตรการฝึกอบรมวิทยาการคอมพิวเตอร์ในโรงเรียนมัธยมศึกษาของสหรัฐอเมริกา

ต่อหัวข้อภาษาโปรแกรม เราตัดสินใจที่จะพูดถึงภาษาประเภทอื่น - นี่คือภาษาของ Ada ภาษาโปรแกรม Ada ได้รับแรงบันดาลใจจาก Pascal ในวัยเจ็ดสิบปลายและตั้งชื่อตาม Ada Lovelace นักคณิตศาสตร์หญิงที่มีพรสวรรค์ ผู้หญิงที่มีความสามารถคนนี้ซึ่งในปี 1843 ได้อธิบายให้โลกทราบถึงความเป็นไปได้ของหน่วยวิเคราะห์ของ Charles Babbage ภาษาประเภทนี้ได้รับการพัฒนาตามคำสั่ง ซึ่งจัดทำโดยกระทรวงกลาโหมสหรัฐฯ และเดิมใช้เพื่อแก้ปัญหาการควบคุมการบินในอวกาศ

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

ภาษาโปรแกรม C เป็นที่นิยมและใช้งานมากที่สุดในหมู่โปรแกรมเมอร์ ภาษาโปรแกรมประเภทนี้มีต้นกำเนิดมาจาก 2 ภาษา คือ BCPL และ B. Martin Richards ในปี 1967 ได้สร้าง BCPL ขึ้นเป็นภาษาที่มีไว้สำหรับเขียนซอฟต์แวร์ระบบและคอมไพเลอร์ เราจะบอกคุณว่ามีอะไรอยู่ด้านล่าง Ken Thompson ใช้ DEC PDP-7 บนพีซีของเขาในปี 1970 เพื่อสร้าง UNIX เวอร์ชันก่อนหน้า ในภาษาที่หนึ่งและที่สอง ตัวแปรจะไม่ถูกแยกออกเป็นประเภท - ค่าข้อมูลแต่ละค่ามีหนึ่งคำในหน่วยความจำ

ภาษาการเขียนโปรแกรม C ถูกนำมาใช้ครั้งแรกในปี 1972 บนพีซี DEC PDP-11 แต่เขาได้รับความนิยมและชื่อเสียงในฐานะระบบปฏิบัติการยูนิกซ์ ระบบปฏิบัติการหลักทั้งหมดในปัจจุบันเขียนด้วย C หรือ C ++ ภาษาการเขียนโปรแกรม C มีให้ใช้งานบนพีซีจำนวนมากหลังจากผ่านไปหลายทศวรรษ และอีกอย่าง เป็นที่น่าสังเกตว่า มันไม่ขึ้นกับฮาร์ดแวร์เลย

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

อารัมภบท

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

ทีนี้มาพูดถึงคอมไพเลอร์และล่ามกันก่อนว่าคืออะไร?

คอมไพเลอร์และล่าม

การพัฒนาภาษาที่สะดวกสำหรับการเขียนโปรแกรมไม่เพียงพอ แต่ละภาษาต้องมีนักแปลซึ่งเป็นโปรแกรมพิเศษ-นักแปล

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

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

ดังนั้น จากนี้ เราสามารถสรุปได้ว่าการล่ามเป็นโปรแกรมที่มีไว้สำหรับการแปลทีละบรรทัดและโปรแกรมต้นฉบับ

นั่นก็ดูจะหมดแล้วสำหรับวันนี้ ตอนนี้เธอรู้แล้วว่ามันคืออะไร ภาษาโปรแกรมและสิ่งที่พวกเขาเป็น

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

ฉันได้รับแจ้งให้เขียนบทความนี้จากการสนทนาที่ปะทุขึ้นในฟอรัม dotSITE หลังจากที่โพสต์ปรากฏขึ้นที่นั่น โดยวิพากษ์วิจารณ์ C # อย่างรุนแรง - หนึ่งในองค์ประกอบหลักของแพลตฟอร์ม .NET ใหม่จาก Microsoft ข้อความที่มีการวิพากษ์วิจารณ์ Microsoft โดยทั่วไปกลายเป็นเรื่องธรรมดาไปแล้วโดยเฉพาะอย่างยิ่ง (ฉันไม่ได้โต้เถียงที่นี่ว่าไม่มีอะไรจะวิพากษ์วิจารณ์ Microsoft เพียงเพราะคำวิจารณ์นี้ทำให้ฟันเฟืองอยู่แล้ว) รวมถึงข้อความบางส่วน โดยเฉพาะเกี่ยวกับ C # ในระหว่างการอภิปราย ก็มีข้อสังเกตที่น่าสนใจหลายประการ แต่บางประเด็นยังคงไม่ได้รับผลกระทบ ทั้งหมดนี้กระตุ้นให้ฉันเขียนบทความที่มีความพยายามในการ "ประนีประนอม" ในทางใดทางหนึ่งกับผู้ให้บริการความคิดเห็นเกี่ยวกับความพิเศษเฉพาะของภาษาโปรแกรมนั้นหรือภาษานั้น ฉันจะพยายามให้โครงร่างทางประวัติศาสตร์ของการพัฒนาภาษาต่างๆ และอธิบายแนวโน้มทั่วไปด้วยตัวอย่าง บางทีฉันสามารถโน้มน้าวใจใครบางคนถึงความไร้เหตุผลของการสนทนาในลักษณะข้างต้น ฉันไม่ได้แสร้งทำเป็นว่ามีวัตถุประสงค์ (แม้ว่าฉันจะพยายามเป็นอย่างนั้น) หรือเพื่อให้สมบูรณ์ นี่เป็นเพียงความพยายามที่จะ "ยืนเขย่งเท้ามองไปรอบๆ" ...

1. ภาษาสากลภาษาแรก

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

2. ผู้ประกอบ

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

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

3. ฟอร์ทราน

ในปี ค.ศ. 1954 กลุ่มนักพัฒนาที่นำโดย John Backus ได้สร้างภาษาโปรแกรม Fortran

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

ใน Fortran โครงสร้างต่อไปนี้อธิบาย "for loop up to label 10 เมื่อดัชนีเปลี่ยนจาก 1 เป็น 100": DO 10 I = 1,100 หากคุณแทนที่เครื่องหมายจุลภาคด้วยจุดที่นี่ คุณจะได้โอเปอเรเตอร์การมอบหมาย DO10I = 1.100 It ว่ากันว่าข้อผิดพลาดดังกล่าวทำให้จรวดระเบิดในช่วงเวลาเริ่มต้น!

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

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

4. โคบอล

ในปี 1960 ภาษาโปรแกรมภาษาโคบอลถูกสร้างขึ้น มันถูกมองว่าเป็นภาษาสำหรับการสร้างแอปพลิเคชันเชิงพาณิชย์ และมันได้กลายเป็นดังนั้น แอปพลิเคชันเชิงพาณิชย์หลายพันรายการเขียนด้วยภาษาโคบอล คุณลักษณะที่โดดเด่นของภาษาคือความสามารถในการทำงานกับข้อมูลจำนวนมากได้อย่างมีประสิทธิภาพ ซึ่งเป็นเรื่องปกติของแอปพลิเคชันเชิงพาณิชย์ ความนิยมของ Kobol นั้นสูงมากจนแม้แต่ตอนนี้ด้วยข้อบกพร่องทั้งหมด (ในแง่ของโครงสร้างและการออกแบบ Kobol ในหลาย ๆ ด้านคล้ายกับ Fortran) ภาษาถิ่นและการนำไปใช้ใหม่ก็ปรากฏขึ้น นี่คือลักษณะการใช้งานของ Cobol ซึ่งเข้ากันได้กับ Microsoft .NET เมื่อเร็ว ๆ นี้ ซึ่งอาจจำเป็นต้องมีการแนะนำคุณลักษณะบางอย่างของภาษาเชิงวัตถุในภาษา

ในปี 1964 บริษัท IBM เดียวกันได้สร้างภาษา PL / 1 ซึ่งมีวัตถุประสงค์เพื่อแทนที่ Cobol และ Fortran ในแอปพลิเคชันส่วนใหญ่ ภาษามีความสมบูรณ์ของโครงสร้างวากยสัมพันธ์ เปิดตัวการจัดการข้อยกเว้นและการสนับสนุนการทำงานพร้อมกันเป็นครั้งแรก ควรสังเกตว่าโครงสร้างวากยสัมพันธ์ของภาษานั้นซับซ้อนมาก ช่องว่างถูกใช้เป็นตัวคั่นไวยากรณ์แล้ว แต่ คีย์เวิร์ดยังไม่ได้จอง โดยเฉพาะอย่างยิ่ง บรรทัดต่อไปนี้เป็นตัวดำเนินการ PL / 1 ปกติอย่างสมบูรณ์: IF ELSE = แล้วจากนั้น; อย่างอื่น

เนื่องจากคุณสมบัติเหล่านี้ การพัฒนาคอมไพเลอร์สำหรับ PL / 1 จึงเป็นเรื่องยากมาก ภาษาไม่เคยได้รับความนิยมนอกโลกของ IBM

6. พื้นฐาน

ในปีพ.ศ. 2506 ภาษาโปรแกรมพื้นฐาน (รหัสคำสั่งสัญลักษณ์อเนกประสงค์สำหรับผู้เริ่มต้นใช้งาน) ได้ถูกสร้างขึ้นที่วิทยาลัยดาร์ตมัธ ภาษาถูกมองว่าเป็นเครื่องมือการเรียนรู้และเป็นภาษาโปรแกรมการเรียนรู้ภาษาแรก ถือว่าง่ายต่อการตีความและเรียบเรียง ฉันต้องบอกว่า BASIC กลายเป็นภาษาที่ผู้คนเรียนรู้การเขียนโปรแกรมจริงๆ (อย่างน้อยก็เมื่อไม่กี่ปีที่ผ่านมา ตอนนี้ Pascal กำลังเล่นบทบาทนี้อยู่) มีการสร้างการใช้งาน BASIC ที่มีประสิทธิภาพหลายอย่างที่สนับสนุนแนวคิดการเขียนโปรแกรมที่ทันสมัยที่สุด (ตัวอย่างที่โดดเด่นที่สุดคือ Microsoft Visual Basic)

7. อัลกอล

ในปี 1960 ภาษาโปรแกรม Algol ถูกสร้างขึ้นโดยทีมที่นำโดย Peter Naur ภาษานี้ก่อให้เกิดภาษาคล้ายอัลกอลทั้งตระกูล (ตัวแทนที่สำคัญที่สุดคือปาสกาล) ในปี 2511 ปรากฏ รุ่นใหม่ภาษา. ไม่พบแอปพลิเคชันที่ใช้งานได้จริงเช่นเวอร์ชันแรก แต่เป็นที่นิยมอย่างมากในแวดวงนักทฤษฎี ภาษาค่อนข้างน่าสนใจ เนื่องจากในขณะนั้นมีลักษณะเฉพาะหลายอย่าง

8. พัฒนาต่อไปภาษาโปรแกรม

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

ฉันจะให้ข้อมูลเกี่ยวกับภาษาในภายหลังในรูปแบบของคำอธิบายของตระกูลภาษา วิธีนี้จะช่วยให้คุณติดตามความสัมพันธ์ระหว่างแต่ละภาษาได้ดียิ่งขึ้น

9. ภาษาปาสกาลเหมือน

ในปี 1970 Niklaus Wirth ได้สร้างภาษาโปรแกรม Pascal ภาษามีความโดดเด่นตรงที่เป็นภาษาแรกที่แพร่หลายสำหรับการเขียนโปรแกรมแบบมีโครงสร้าง (ภาษาแรกพูดอย่างเคร่งครัดคือ Algol แต่ไม่แพร่หลายมากนัก) เป็นครั้งแรกที่ตัวดำเนินการกระโดดแบบไม่มีเงื่อนไขได้หยุดแสดงบทบาทพื้นฐานในการควบคุมลำดับการดำเนินการตามคำสั่ง ภาษานี้ยังแนะนำการตรวจสอบประเภทที่รัดกุม ซึ่งช่วยให้คุณระบุข้อผิดพลาดจำนวนมากได้ในขณะรวบรวม

คุณลักษณะเชิงลบของภาษาคือการขาดวิธีการแบ่งโปรแกรมออกเป็นโมดูล Wirth ตระหนักถึงสิ่งนี้และพัฒนาภาษา Modula-2 (1978) ซึ่งความคิดของโมดูลกลายเป็นหนึ่งในแนวคิดหลักของภาษา ในปี 1988 Modula-3 ได้รับการแนะนำด้วยการเพิ่มคุณสมบัติเชิงวัตถุ Oberon และ Oberon-2 เป็นความต่อเนื่องทางตรรกะของ Pascal และ Modula ลักษณะเฉพาะคือการเคลื่อนที่เข้าหาวัตถุและการวางแนวองค์ประกอบ

10. ภาษา C-like

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

ในปี 1986 Bjarne Stroustrup ได้สร้างเวอร์ชันแรกของภาษา C ++ โดยเพิ่มคุณลักษณะเชิงวัตถุที่นำมาจาก Simula (ดูด้านล่าง) เป็นภาษา C และแก้ไขจุดบกพร่องและการตัดสินใจที่ไม่ดีของภาษา C ++ ยังคงปรับปรุงอย่างต่อเนื่องในปัจจุบัน ดังนั้นในปี 1998 เวอร์ชันมาตรฐานใหม่ (ที่สาม) ได้รับการเผยแพร่ ซึ่งมีการเปลี่ยนแปลงที่ค่อนข้างสำคัญบางอย่าง ภาษาได้กลายเป็นพื้นฐานสำหรับการพัฒนาโครงการขนาดใหญ่และซับซ้อนที่ทันสมัย เขามีอย่างไรก็ตามและ ด้านที่อ่อนแอที่เกิดจากความต้องการด้านประสิทธิภาพ

ในปี 1995 ที่ Sun Microsystems Ken Arnold และ James Gosling ได้ก่อตั้ง ภาษาจาวา... มันสืบทอดไวยากรณ์ของ C และ C ++ และกำจัดคุณสมบัติที่น่ารำคาญบางอย่างของหลัง คุณลักษณะที่โดดเด่นของภาษาคือการรวบรวมลงในโค้ดของเครื่องที่เป็นนามธรรม ซึ่งโปรแกรมจำลอง (Java Virtual Machine) จะถูกเขียนขึ้นสำหรับระบบจริง นอกจากนี้ Java ไม่มีพอยน์เตอร์และการสืบทอดหลายรายการ ซึ่งช่วยเพิ่มความน่าเชื่อถือในการเขียนโปรแกรมอย่างมาก

ในปี 2542-2543 Microsoft ได้สร้างภาษา C # มันค่อนข้างคล้ายกับ Java (และถูกมองว่าเป็นทางเลือกแทน) แต่ก็มีคุณสมบัติที่โดดเด่นเช่นกัน มุ่งเน้นไปที่การพัฒนาแอพพลิเคชั่นอินเทอร์เน็ตแบบหลายองค์ประกอบเป็นหลัก

11. ภาษา Ada และ Ada 95

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

12. ภาษาของการประมวลผลข้อมูล

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

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

14. Snobol และ Icon

ในปีพ. ศ. 2505 ภาษา Snobol ปรากฏขึ้น (และในปีพ. ศ. 2517 ไอคอนผู้สืบทอด) ซึ่งมีไว้สำหรับการประมวลผลสตริง ไวยากรณ์ของไอคอนคล้ายกับ C และ Pascal ในเวลาเดียวกัน ความแตกต่างอยู่ที่การมีฟังก์ชันในตัวที่มีประสิทธิภาพสำหรับการทำงานกับสตริงและความหมายพิเศษที่เกี่ยวข้องกับฟังก์ชันเหล่านี้ คู่หูที่ทันสมัยของ Icon และ Snobol คือ Perl ซึ่งเป็นภาษาการประมวลผลสตริงและข้อความที่เพิ่มคุณสมบัติเชิงวัตถุบางอย่าง ถือว่าเป็นภาษาที่ใช้งานได้จริง แต่ขาดความสง่างาม

15. SET

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

16. เสียงกระหึ่มและภาษาที่คล้ายกัน

ในปี 1958 ภาษา Lisp ปรากฏขึ้น - ภาษาสำหรับการประมวลผลรายการ ค่อนข้างแพร่หลายในระบบปัญญาประดิษฐ์ มีลูกหลานหลายคน: ผู้วางแผน (1967), Scheme (1975), Common Lisp (1984) คุณลักษณะหลายอย่างของเขาได้รับการสืบทอด ภาษาสมัยใหม่การเขียนโปรแกรมการทำงาน

17. ภาษาสคริปต์

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

18. JavaScript

ภาษานี้สร้างขึ้นโดย Netscape Communications เพื่อใช้อธิบายพฤติกรรมที่ซับซ้อนของหน้าเว็บ เดิมเรียกว่า LiveScript เปลี่ยนชื่อด้วยเหตุผลทางการตลาด ตีความโดยเบราว์เซอร์เมื่อแสดงหน้าเว็บ ไวยากรณ์คล้ายกับ Java และ (จากระยะไกล) ถึง C / C ++ มีความสามารถในการใช้ฟังก์ชันการทำงานของวัตถุที่สร้างขึ้นในเบราว์เซอร์ แต่ไม่ใช่ภาษาเชิงวัตถุอย่างแท้จริง

19. VBScript

Microsoft เป็นผู้สร้างสรรค์ภาษาขึ้นในหลาย ๆ ทางเพื่อเป็นทางเลือกแทน JavaScript มีขอบเขตการใช้งานที่คล้ายคลึงกัน คล้ายกับ Visual Basic ทางวากยสัมพันธ์ เช่นเดียวกับ JacaScript เบราว์เซอร์จะทำงานเมื่อแสดงหน้าเว็บและมีระดับของการวางแนววัตถุเหมือนกัน

20. เพิร์ล

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

21. งูหลาม

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

22. ภาษาเชิงวัตถุ

วิธีการเชิงวัตถุซึ่งแทนที่โครงสร้างที่มีโครงสร้างไม่ปรากฏใน C ++ เป็นครั้งแรกอย่างที่บางคนเชื่อ มีภาษาเชิงวัตถุจำนวนมากที่มีอยู่โดยที่การสำรวจของเราจะไม่สมบูรณ์

23. Simula

ภาษาเชิงวัตถุภาษาแรกคือ Simula (1967) ภาษานี้มีไว้สำหรับการสร้างแบบจำลองวัตถุและกระบวนการต่าง ๆ และคุณลักษณะเชิงวัตถุปรากฏขึ้นอย่างแม่นยำเพื่ออธิบายคุณสมบัติของวัตถุแบบจำลอง

24. สมอลทอล์ค

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

25. ไอเฟล

มีภาษาหนึ่งที่ใช้การวางแนววัตถุได้ดีมากซึ่งไม่ได้สร้างทับภาษาอื่น นี่คือภาษาของไอเฟล (1986) ในฐานะที่เป็นภาษาการเขียนโปรแกรมเชิงวัตถุอย่างแท้จริง มันยังปรับปรุงความน่าเชื่อถือของโปรแกรมด้วยการใช้ "การยืนยันการควบคุม"

26. ภาษาโปรแกรมแบบขนาน

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

27. ภาษาอ็อกแคม

ภาษา Occam ถูกสร้างขึ้นในปี 1982 และมีไว้สำหรับการเขียนโปรแกรมทรานส์พุต - ระบบมัลติโปรเซสเซอร์สำหรับการประมวลผลข้อมูลแบบกระจาย อธิบายการทำงานร่วมกันของกระบวนการคู่ขนานในรูปแบบของช่องทาง - วิธีการถ่ายโอนข้อมูลจากกระบวนการหนึ่งไปยังอีกกระบวนการหนึ่ง สังเกตลักษณะเฉพาะของไวยากรณ์ของภาษา Шccam - ในนั้น ลำดับการดำเนินการของตัวดำเนินการแบบต่อเนื่องและแบบขนานนั้นเท่ากัน และต้องระบุอย่างชัดเจนด้วยคำหลัก PAR และ SEQ

28. Linda Parallel Computing Model

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

29. ภาษาที่ไม่จำเป็น

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

30. ภาษาที่ใช้งานได้

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

ในบรรดาภาษาที่มีความหมายที่กระฉับกระเฉง เราพูดถึง ML และภาษาถิ่นสมัยใหม่สองภาษา - Standard ML (SML) และ CaML หลังมีลูกหลานเชิงวัตถุ - Objective CaML (O'CaML)

ในบรรดาภาษาที่มีความหมายขี้เกียจ มีสองภาษาที่ใช้บ่อยที่สุด ได้แก่ Haskell และภาษาถิ่นที่ง่ายกว่า Clean

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับภาษาที่ใช้งานได้ โปรดดูที่นี่:

31. ภาษาการเขียนโปรแกรมลอจิก

โปรแกรมในภาษาการเขียนโปรแกรมเชิงตรรกะจะแสดงเป็นสูตรของตรรกะทางคณิตศาสตร์และคอมไพเลอร์พยายามที่จะได้รับผลที่ตามมา

บรรพบุรุษของภาษาการเขียนโปรแกรมเชิงตรรกะส่วนใหญ่คือภาษา Prolog (1971) มันมีทายาทจำนวนหนึ่ง - Parlog (1983 เน้นการประมวลผลแบบขนาน), Delta Prolog ฯลฯ การเขียนโปรแกรมลอจิกเช่นการเขียนโปรแกรมเชิงฟังก์ชันเป็นพื้นที่แยกต่างหากของการเขียนโปรแกรมและอื่น ๆ รายละเอียดเราอ้างอิงผู้อ่านถึงวรรณกรรมเฉพาะทาง

32. แทนที่จะเป็นข้อสรุป

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

จุดประสงค์ของการทบทวนนี้คือความพยายามที่จะให้ผู้อ่านได้ทราบถึงความหลากหลายทั้งหมด ภาษาที่มีอยู่การเขียนโปรแกรม มักมีความคิดเห็นในหมู่โปรแกรมเมอร์เกี่ยวกับ "การบังคับใช้ทั่วไป" ของภาษาใดภาษาหนึ่งโดยเฉพาะ (C, C ++, Pascal เป็นต้น) ความคิดเห็นนี้เกิดขึ้นได้จากหลายสาเหตุ ได้แก่ การขาดข้อมูล นิสัย ความเฉื่อยในการคิด ฉันพยายามชดเชยปัจจัยแรกเล็กน้อย สำหรับส่วนที่เหลือ ฉันสามารถพูดได้ว่ามืออาชีพที่แท้จริงควรพยายามปรับปรุงคุณสมบัติทางวิชาชีพของเขาอย่างต่อเนื่อง และสำหรับสิ่งนี้คุณไม่จำเป็นต้องกลัวที่จะทดลอง แล้วถ้าทุกคนรอบตัวพวกเขาเขียนใน C / C ++ / VB / Pascal / Perl / Java / ... (ขีดเส้นใต้ความจำเป็น)? ทำไมไม่ลองอะไรใหม่ๆ เกิดอะไรขึ้นถ้ามันกลายเป็นว่ามีประสิทธิภาพมากขึ้น? แน่นอน ก่อนตัดสินใจใช้ภาษาใหม่ คุณต้องศึกษาคุณลักษณะทั้งหมดอย่างละเอียด รวมถึงการมีการใช้งานที่มีประสิทธิภาพ ความสามารถในการโต้ตอบกับโมดูลที่มีอยู่ ฯลฯ จากนั้นจึงตัดสินใจ แน่นอนว่ามีความเสี่ยงที่จะไปในทางที่ผิดอยู่เสมอ แต่ ... คนที่ไม่ได้ทำอะไรเลยเท่านั้นที่ไม่ผิด

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

บทความนี้จัดทำขึ้นเพื่อตอบผู้ที่ตะโกนว่า "ภาษา X MUST DIE" ฉันหวังว่าคำตอบจะค่อนข้างเพียงพอและน่าเชื่อถือ ฉันหวังว่าบทความนี้จะมีคุณค่านอกเหนือจากการโต้แย้งและความรู้ความเข้าใจ

เนื้อหาจาก Wikipedia

ภาษาโปรแกรม- เป็นทางการ ระบบสัญญาณมีไว้สำหรับบันทึก โปรแกรมคอมพิวเตอร์... ภาษาโปรแกรมกำหนด set คำศัพท์ , วากยสัมพันธ์และ ความหมายกฎที่กำหนดลักษณะที่ปรากฏของโปรแกรมและการกระทำที่ผู้ดำเนินการ (โดยปกติคือคอมพิวเตอร์) จะดำเนินการภายใต้การควบคุม

ในเวลาเดียวกันในปี 1940 คอมพิวเตอร์ดิจิตอลไฟฟ้าก็ปรากฏตัวขึ้นและภาษาได้รับการพัฒนาที่ถือได้ว่าเป็นภาษาการเขียนโปรแกรมคอมพิวเตอร์ระดับสูงภาษาแรก -“ Plankalkül"สร้างสรรค์โดยวิศวกรชาวเยอรมัน คุณซูเซ่จากการ 2488 ปี.

ตั้งแต่กลางทศวรรษ 1950 ภาษายุคที่สามเช่น Fortran , Lispและ โคบอล... ภาษาโปรแกรมประเภทนี้มีความเป็นนามธรรมมากกว่า (เรียกอีกอย่างว่า "ภาษาระดับสูง") และเป็นสากล ไม่มีการพึ่งพาเฉพาะอย่างเข้มงวด แพลตฟอร์มฮาร์ดแวร์และคู่มือการใช้งานเครื่อง โปรแกรมในภาษาระดับสูงสามารถดำเนินการได้ (อย่างน้อยในทางทฤษฎี ในทางปฏิบัติมักจะมีเวอร์ชันเฉพาะหรือภาษาถิ่นของการนำภาษาไปใช้) บนคอมพิวเตอร์เครื่องใดก็ได้ที่มีนักแปลสำหรับภาษานี้ (ก เครื่องมือที่แปลโปรแกรมเป็นภาษาของเครื่อง หลังจากนั้นโปรเซสเซอร์ก็สามารถทำได้)

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

ความสมบูรณ์แบบ

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

มาตรฐานของภาษาโปรแกรม

สำหรับภาษาโปรแกรมที่แพร่หลายมากมาย มาตรฐานสากล... องค์กรเฉพาะอัปเดตและเผยแพร่ข้อกำหนดและคำจำกัดความอย่างเป็นทางการของภาษาที่เกี่ยวข้องเป็นประจำ ภายในกรอบของคณะกรรมการดังกล่าว การพัฒนาและความทันสมัยของภาษาโปรแกรมยังคงดำเนินต่อไป และประเด็นของการขยายหรือสนับสนุนการสร้างภาษาที่มีอยู่และใหม่

ชนิดข้อมูล

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

ระบบพิเศษที่จัดข้อมูลในโปรแกรมคือ ระบบพิมพ์ ภาษาโปรแกรม การพัฒนาและศึกษาระบบประเภทเรียกว่า ทฤษฎีประเภท... ภาษาสามารถแบ่งออกเป็นมี การพิมพ์แบบคงที่ และ การพิมพ์แบบไดนามิก , และ ภาษาที่ไม่มีการพิมพ์ (ตัวอย่างเช่น, Forth ).

ภาษาที่พิมพ์แบบคงที่สามารถแบ่งย่อยเป็นภาษาอื่นได้ด้วย ประกาศบังคับโดยที่การประกาศตัวแปรและฟังก์ชันทุกรายการมีการประกาศประเภทบังคับและภาษาด้วย ประเภทอนุมาน... บางครั้งเรียกภาษาที่พิมพ์แบบไดนามิก แอบพิมพ์.

โครงสร้างข้อมูล

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

โครงสร้างข้อมูลพื้นฐาน (รายการ คิว ตารางแฮช ไบนารีทรี และคู่) มักจะแสดงด้วยไวยากรณ์พิเศษในภาษาระดับสูง ข้อมูลดังกล่าวมีโครงสร้างโดยอัตโนมัติ

ความหมายของภาษาโปรแกรม

มีหลายวิธีในการกำหนดความหมายของภาษาโปรแกรม

ความหลากหลายที่แพร่หลายที่สุดในสามประเภทต่อไปนี้ ได้แก่ ปฏิบัติการ อนุพันธ์ (axiomatic) และ denotational (คณิตศาสตร์)

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

กระบวนทัศน์การเขียนโปรแกรม

ภาษาโปรแกรมถูกสร้างขึ้นตามพื้นฐานอย่างใดอย่างหนึ่งหรืออย่างอื่น แบบจำลองการคำนวณและ กระบวนทัศน์การเขียนโปรแกรม

แม้ว่าภาษาส่วนใหญ่จะเน้นที่ แบบจำลองการคำนวณที่จำเป็นกำหนดโดยสถาปัตยกรรมคอมพิวเตอร์ฟอนนอยมันน์มีแนวทางอื่น ๆ เราสามารถพูดถึงภาษาด้วยแบบจำลองการคำนวณแบบเรียงซ้อน ( ป้อม , ปัจจัย , PostScriptเป็นต้น) รวมทั้ง การทำงาน (Lisp , Haskell , , , REFALตามรูปแบบการคำนวณที่แนะนำโดยนักคณิตศาสตร์โซเวียต A.A. Markov Jr.) และ การเขียนโปรแกรมลอจิก (อารัมภบท).

ปัจจุบันพวกเขากำลังพัฒนาอย่างแข็งขัน ประกาศและ ภาษาโปรแกรมภาพตลอดจนวิธีและเครื่องมือในการพัฒนา ภาษาเฉพาะปัญหา(ซม. การเขียนโปรแกรมเชิงภาษา).

วิธีการใช้ภาษา

ภาษาโปรแกรมสามารถนำไปใช้เป็น เรียบเรียง , ตีความและ ฝังตัว.

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

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

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

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

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

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

อย่างไรก็ตาม โปรแกรมที่แปลแล้วสามารถดำเนินการได้ช้ากว่าโปรแกรมที่คอมไพล์อย่างเห็นได้ชัด นอกจากนี้ โปรแกรมเหล่านี้ไม่สามารถดำเนินการได้หากไม่มีโปรแกรมล่าม

วิธีนี้ทำให้คุณสามารถใช้ข้อดีของทั้งล่ามและคอมไพเลอร์ได้ ควรกล่าวถึงว่ามีภาษาที่มีทั้งล่ามและคอมไพเลอร์ ( ป้อม).

ภาษาโปรแกรมระดับต่ำ

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

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

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

ภาษาโปรแกรมระดับสูง

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

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

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

สัญลักษณ์ที่ใช้

ภาษาโปรแกรมสมัยใหม่ออกแบบมาเพื่อใช้งาน ASCIIนั่นก็คือความพร้อมของทั้งหมด กราฟิกอักขระ ASCII เป็นเงื่อนไขที่จำเป็นและเพียงพอสำหรับการบันทึกโครงสร้างภาษาใดๆ ผู้จัดการ อักขระ ASCIIใช้ในขอบเขตที่จำกัด: อนุญาตให้ใช้เฉพาะ CR ส่งคืน CR, ฟีดบรรทัด LF และแท็บแนวนอน HT เท่านั้น (บางครั้งก็ใช้แท็บแนวตั้ง VT และเปลี่ยนเป็น FF หน้าถัดไปด้วย)

ภาษายุคแรก ๆ ที่โผล่มาในสมัยนั้น อักขระ 6 บิตใช้ชุดที่จำกัดมากขึ้น ตัวอย่างเช่น ตัวอักษร Fortran ประกอบด้วยอักขระ 49 ตัว (รวมช่องว่าง): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () , $ ":

ข้อยกเว้นที่โดดเด่นคือภาษา APLซึ่งใช้อักขระพิเศษมากมาย

การใช้อักขระที่ไม่ใช่ ASCII (เช่น อักขระ KOI8-R หรืออักขระ Unicode) ขึ้นอยู่กับการใช้งาน: บางครั้งจะได้รับอนุญาตเฉพาะในความคิดเห็นและค่าคงที่อักขระ / สตริง และบางครั้งอนุญาตเฉพาะในตัวระบุเท่านั้น วี สหภาพโซเวียตมีภาษาที่คำหลักทั้งหมดเขียนด้วยตัวอักษรรัสเซีย แต่ภาษาดังกล่าวไม่ได้รับความนิยมอย่างมาก (ข้อยกเว้นคือ ภาษาโปรแกรมในตัว 1C: Enterprise).

การขยายชุดอักขระถูกจำกัดโดยข้อเท็จจริงที่ว่าโครงการพัฒนาซอฟต์แวร์หลายโครงการเป็นสากล คงจะยากมากที่จะทำงานกับรหัสที่ชื่อของตัวแปรบางตัวเขียนด้วยตัวอักษรรัสเซีย ตัวอื่นๆ เป็นภาษาอาหรับ และบางตัวเป็นตัวอักษรจีน ในเวลาเดียวกันเพื่อทำงานกับข้อมูลข้อความภาษาโปรแกรมยุคใหม่ ( เดลฟี 2006 , , Java) สนับสนุน Unicode.

หมวดหมู่ของภาษาโปรแกรม

ภาษาการเขียนโปรแกรมเสียงทางคณิตศาสตร์

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