Matryoshka C. ระบบภาษาโปรแกรมแบบชั้น

ลองจินตนาการถึงเคมีที่ไม่มีตารางธาตุของเมนเดเลเยฟ (พ.ศ. 1869) ต้องคำนึงถึงองค์ประกอบกี่องค์ประกอบและไม่เรียงลำดับใดเป็นพิเศษ... (จากนั้น - 60.)

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

และตอนนี้ เราสามารถหวนนึกถึงความรู้สึกของนักเคมีในศตวรรษที่ XNUMX เมื่อพวกเขาได้รับความรู้ทั้งหมด และมากกว่านั้นอีกเล็กน้อยในตารางธาตุเดียว

Matryoshka C. ระบบภาษาโปรแกรมแบบชั้น


หนังสือ "Matryoshka C. Layered system of program language" นำเสนอหน่วยทั้งหมดของภาษา C ได้อย่างรวดเร็ว สิ่งนี้ช่วยให้คุณสามารถจัดระเบียบ แก้ไขข้อมูลที่ล้าสมัย และแม้แต่ชี้แจงแนวคิดของโปรแกรม

ปัจจุบัน ข้อมูลการเขียนโปรแกรมจำเป็นต้องมีการจัดระบบมากกว่าองค์ประกอบทางเคมีเมื่อ 150 ปีที่แล้ว

ความจำเป็นแรกคือการสอน Mendeleev เริ่มสร้างระบบของเขาเมื่อเขาเผชิญกับคำถามว่าองค์ประกอบใดที่จะเริ่มบรรยายด้วย: O, H, N, He, Au... ในขณะเดียวกันก็ง่ายกว่าสำหรับเขา - เขาสอนวิชาเคมีให้กับสิ่งที่ดีที่สุด - นักเรียนของ มหาวิทยาลัยเซนต์ปีเตอร์สเบิร์ก. และการเขียนโปรแกรมก็มีการสอนที่โรงเรียนแล้ว และจะเริ่มตั้งแต่ชั้นอนุบาลเร็วๆ นี้

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

ความต้องการประการที่สามคือการชี้แจงแนวคิดของโปรแกรม

การเขียนโปรแกรมสมัยใหม่ติดอยู่ในยุค 50 ของศตวรรษที่ XNUMX สมัยนั้นโปรแกรมมีความเรียบง่าย แต่เครื่องและภาษาเครื่องมีความซับซ้อน ดังนั้นทุกอย่างจึงวนเวียนอยู่กับเครื่องและภาษา

ตอนนี้ทุกอย่างกลับตรงกันข้าม: โปรแกรมมีความซับซ้อนและเป็นภาษาหลัก ภาษาเรียบง่ายและเป็นรอง นี้เรียกว่าแนวทางประยุกต์ที่ใครๆ ก็คุ้นเคย แต่นักศึกษาและนักพัฒนายังคงเชื่อมั่นว่าทุกอย่างยังเหมือนเดิม

ซึ่งนำเรากลับมาสู่การบรรยายครั้งแรกของ Privatdozent Mendeleev มีอะไรจะบอกน้องบ้าง? ความจริงอยู่ที่ไหน? นั่นคือคำถาม.

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

ต่อไปนี้เป็นบทสรุปของหนังสือ

1. บทนำ

ในปี พ.ศ. 1969 ภาษา C ถูกสร้างขึ้น ซึ่งต่อมาได้กลายเป็นภาษาการเขียนโปรแกรมพื้นฐานและยังคงอยู่มาเป็นเวลา 50 ปี ทำไมจึงเป็นเช่นนี้? ก่อนอื่นเลย เพราะ C คือ สมัครแล้ว ภาษาที่ให้โปรแกรมมา มีมนุษยธรรม ดูแทน เครื่องจักร. ความสำเร็จนี้ได้รับการรับรองโดยภาษาจากตระกูล C: C++, JavaScript, PHP, Java, C# และอื่นๆ ประการที่สองเป็นภาษาที่สั้นและสวยงาม

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

ความจริงอยู่ตรงกลาง และสำหรับภาษา C นั้นอยู่ตรงกลางระหว่างการรับรู้เชิงปรัชญาและการรับรู้ของเครื่องจักรอย่างเคร่งครัด

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

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

ระบบถูกสร้างขึ้นโดยคำนึงถึง ชุมชนของภาษาประยุกต์เกิดจากการอยู่ใต้บังคับบัญชาทางวาจาของตน หน่วย Matryoshka C หนึ่งชุดช่วยให้คุณสามารถอธิบายและเปรียบเทียบภาษาต่างๆ สร้างชุด Matryoshkas: C++, PHP, JavaScript, C#, MySQL, Python และอื่นๆ เป็นเรื่องสมควรและถูกต้องที่หน่วยของภาษาพื้นฐานอธิบายภาษาต่าง ๆ

2. บทที่ 1 รูปแบบคำพูดของโปรแกรม เคลียร์ ซี

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

  1. คำพูด - คำพูดโดยตรงของโปรแกรมเมอร์ในการแก้ปัญหา
  2. coded - เข้ารหัสโซลูชันให้เป็นรูปแบบทางคณิตศาสตร์ในภาษา C (หรืออื่น ๆ )
  3. และคำสั่ง - คำสั่งเครื่องโดยตรง

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

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

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

Matryoshka C. ระบบภาษาโปรแกรมแบบชั้น

เป็นเรื่องน่าแปลกที่การสะท้อนกลับเกิดขึ้นได้ง่ายๆ โดยมีการแสดงออกเพียงสองประเภทเท่านั้น

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

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

การสะท้อนกลับทำได้โดยการแสดงออกสองประเภท:

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

คุณเชื่อไหมว่าในคำอธิบาย C ไม่มีชื่อสำหรับนิพจน์การคำนวณ - เรียกง่ายๆว่า "นิพจน์"? หลังจากนี้จะไม่น่าแปลกใจอีกต่อไปที่ไม่มีชื่อและความเกี่ยวข้องสำหรับประเภทของการอยู่ใต้บังคับบัญชา และแท้จริงแล้วความขาดแคลนของชื่อ คำจำกัดความ และลักษณะทั่วไปโดยทั่วไป เนื่องจาก K/R ที่มีชื่อเสียง (“The C Language”, Kernighan/Ritchie, 1978) ไม่ใช่คำอธิบาย แต่เป็นแนวทางในการใช้ภาษา

แต่ฉันยังคงต้องการคำอธิบายของภาษา ดังนั้นเขาจึงถูกเสนอ ระบบภาษาโปรแกรมแบบชั้น.

3. บทที่ 2. ระบบเลเยอร์ สั้น ๆ ค

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

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

ในการนำเสนอเช่นนี้ ไม่ใช่เรื่องง่ายที่จะเข้าใจว่าใครยืนอยู่เหนือใคร

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

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

หน่วยภาษาแบ่งออกเป็น 6 ระดับ:

  1. หน่วย - แถวของตาราง
  2. แผนก - กลุ่มพิเศษจำพวก (บางส่วนของบรรทัดแรก)
  3. สกุล - เซลล์ (ระดับการแบ่งหลัก)
  4. superspecies - ตัวแยกสายพันธุ์ (ระดับที่หายาก)
  5. ประเภท - สูตรหน่วยที่ด้านล่างของเซลล์หรือแยกกัน
  6. รูปแบบ - หน่วยของตัวเอง (สำหรับคำเท่านั้น)

คำตัวอย่างอธิบาย พจนานุกรม - ระบบย่อยที่แยกจากกันประกอบด้วยหกระดับเดียวกัน

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

4. บทต่อไปนี้ สุดหล่อครับ

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

สีเสนออะไรกันแน่? รูปภาพและเลเยอร์

คำว่า "รูปภาพ" เป็นคำแปลของคำภาษาอังกฤษ "type" ซึ่งมาจากภาษากรีก "ต้นแบบ" - "type" ในภาษารัสเซีย คำว่า "ประเภท" ไม่ได้สื่อถึงรากฐานสำคัญของแนวคิดที่กำลังแสดงออก ยิ่งไปกว่านั้น ยังสับสนกับความหมายเสริม "ประเภท"

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

เลเยอร์แก้ไขปัญหาต่าง ๆ ได้ทันที - ทั้งเครื่องจักรและการใช้งาน ดังนั้น การพิจารณาจะเริ่มต้นด้วยรูปภาพงานเดียวและไปยังเลเยอร์ที่มีหลายงาน

คุณลักษณะที่ไม่พึงประสงค์อย่างหนึ่งของการเขียนโปรแกรมเชิงประวัติศาสตร์ก็คือ แนวคิดส่วนใหญ่ รวมถึงแนวคิดพื้นฐาน ถูกกำหนดไว้โดยไม่มีคำจำกัดความ “ภาษาโปรแกรม (ชื่อแม่น้ำ) มีทั้งประเภทจำนวนเต็มและตัวเลขลอยตัว…” และยังมีรอยขีดข่วนเพิ่มเติมอีก ไม่จำเป็นต้องกำหนดว่า "ประเภท" (รูปภาพ) คืออะไร เนื่องจากผู้เขียนเองยังไม่เข้าใจสิ่งนี้อย่างถ่องแท้ และจะปิดบังไว้ "เพื่อความชัดเจน" หากปักหมุดไว้กับผนังก็จะให้คำจำกัดความที่คลุมเครือและไร้ประโยชน์ การซ่อนอยู่เบื้องหลังคำต่างประเทศช่วยได้มาก: สำหรับผู้เขียนชาวรัสเซีย - หลังภาษาอังกฤษ (ประเภท) สำหรับชาวอังกฤษ - หลังฝรั่งเศส (รูทีนย่อย), กรีก (ความหลากหลาย), ละติน (การห่อหุ้ม) หรือการผสมผสานของพวกเขา (ความหลากหลายเฉพาะกิจ)

แต่นี่ไม่ใช่ชะตากรรมของเรา ทางเลือกของเราคือคำจำกัดความที่มีกระบังหน้ายกสูงในภาษารัสเซียล้วนๆ

ภาพ

ภาพ เป็นชื่อที่กำหนดไว้ล่วงหน้าของปริมาณ ซึ่งกำหนด 1) คุณสมบัติที่แท้จริงของปริมาณ และ 2) การเลือกการดำเนินการสำหรับปริมาณ

คำว่า "ประเภท" (ประเภท) สอดคล้องกับส่วนแรกของคำจำกัดความ: "คุณสมบัติที่แท้จริงของปริมาณ" แต่ความหมายหลักของภาพอยู่ในส่วนที่สอง: "การเลือกการดำเนินการตามปริมาณ"

จุดเริ่มต้นในการแนะนำรูปภาพในภาษา C คือการคำนวณตามปกติ เช่น การดำเนินการบวก

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

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

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

คำจำกัดความที่ชัดเจนของภาพแนวคิดช่วยให้เราสามารถพูดถึงแนวคิดอื่นอีกสองแนวคิดได้อย่างแน่นอน: ความคุ้มค่า и การดำเนินการ.

ขนาดและการดำเนินงาน

ความคุ้มค่า — หมายเลขที่กำลังดำเนินการ

การทำงาน — ประมวลผลค่าเริ่มต้น (อาร์กิวเมนต์) เพื่อให้ได้ตัวเลขสุดท้าย (รวม)

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

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

นอกจากนี้ ทีมยังถูกแบ่งออกเป็นการดำเนินการสองประเภท: คณิตศาสตร์และการบริการ การกระทำทางคณิตศาสตร์ - การดำเนินการ เราจะเข้าสู่สิ่งที่เป็นทางการในภายหลัง

ในภาษา C กระดาษและเครื่องปกติที่ไม่คลุมเครือหรือการดำเนินการทางคณิตศาสตร์เดียวแทบจะกลายเป็นพหุคูณ

การดำเนินการหลายอย่างคือการดำเนินการหลายอย่างที่มีชื่อเดียวกันซึ่งมีอาร์กิวเมนต์ประเภทต่างๆ และมีการกระทำที่แตกต่างกันและมีความหมายคล้ายกัน

อาร์กิวเมนต์จำนวนเต็มสอดคล้องกับการดำเนินการทั้งหมด และอาร์กิวเมนต์เศษส่วนสอดคล้องกับการดำเนินการเศษส่วน ความแตกต่างนี้ชัดเจนเป็นพิเศษในระหว่างการดำเนินการหาร เมื่อนิพจน์ 1/2 ให้ผลรวมเป็น 0 ไม่ใช่ 0,5 สัญกรณ์ดังกล่าวไม่สอดคล้องกับกฎของคณิตศาสตร์กระดาษ แต่ภาษา C ไม่ได้พยายามที่จะปฏิบัติตามกฎเหล่านั้น (ต่างจาก Fortran) - มันเล่นตามตัวมันเอง สมัครแล้ว กฎ.

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

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

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

ความช่วยเหลือ

ความช่วยเหลือ - การกระทำที่มาพร้อมกับการดำเนินการ

หากเราถือว่าการดำเนินการเป็นการดำเนินการหลัก เราก็สามารถแยกแยะความแตกต่างสองประการที่ให้การดำเนินการและแตกต่างจากการดำเนินการนั้นได้ เหล่านี้คือ 1) การควบคุมตัวแปรและ 2) การอยู่ใต้บังคับบัญชา การดำเนินการนี้เรียกว่า ความช่วยเหลือ.

ที่นี่เราต้องพูดนอกเรื่องและพูดแยกกันเกี่ยวกับการแปลตำราการเขียนโปรแกรมภาษารัสเซีย มีการแนะนำคำใหม่ในข้อความของ K/R เพื่อบันทึกการกระทำ คำสั่ง (นิพจน์) ซึ่งพยายามแบ่งแนวคิดของคำสั่งเครื่องจักรออกเป็นการดำเนินการต่างๆ: 1) การดำเนินการ 2) การประกาศ และ 3) การอยู่ใต้บังคับบัญชา (เรียกว่า "โครงสร้างการควบคุม") ความพยายามนี้ถูกฝังโดยนักแปลภาษารัสเซีย โดยแทนที่ "การแสดงออก" ด้วยคำว่า "ผู้ดำเนินการ" ซึ่ง:

  1. กลายเป็นคำพ้องกับคำว่าเครื่อง "คำสั่ง"
  2. กลายเป็นตรงกันกับวลี "สัญลักษณ์ของการกระทำ"
  3. และยังได้รับมูลค่าเพิ่มไม่จำกัดจำนวนอีกด้วย นั่นก็กลายเป็นเรื่องคล้ายๆ กับบทความภาษาอังกฤษ “uhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh”

พิจารณาการดำเนินการประกอบหรือ ความช่วยเหลือ.

การควบคุมตัวแปร

การควบคุมตัวแปร (UP) - การสร้าง/การลบเซลล์ตัวแปร
UE เกิดขึ้นโดยปริยายเมื่อประกาศตัวแปรซึ่งมีการเขียนไว้แล้วด้วยเหตุผลอื่น - เพื่อระบุภาพของค่า มีการจัดการมุมมองเดียวเท่านั้นอย่างชัดเจน ตัวแปรเพิ่มเติม ใช้ฟังก์ชัน malloc() และ free()

ควรสังเกตว่าการกระทำโดยนัยนั้นสะดวกกว่าในการเขียนเนื่องจากไม่จำเป็นต้องเขียนอะไรเลย แต่เข้าใจยากกว่า - พิจารณาและตีความได้ยากกว่า

การอยู่ใต้บังคับบัญชา

การอยู่ใต้บังคับบัญชา — เชื่อมต่อ/ปิดการใช้งานส่วนของเลเยอร์

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

ทั้งการประกาศและการยื่นคำร้องถูกสร้างขึ้นบนแนวคิดทั้งหมด слой.

ชั้น

ชั้น เป็นชุดนิพจน์แบบเลือกระดับเดียวที่จำกัด

เลเยอร์ทำงานหลายอย่างพร้อมกันทั้งอย่างชัดเจนและโดยปริยาย:

  1. จัดโปรแกรม
  2. การจำกัดการเปิดเผยชื่อ (โดยปริยาย)
  3. การจัดการตัวแปร (เซลล์หน่วยความจำ) (โดยนัย)
  4. คำจำกัดความของประโยครองสำหรับการอยู่ใต้บังคับบัญชา
  5. คำจำกัดความของฟังก์ชันและการเลือกและอื่นๆ

ไม่มีแนวคิดเรื่องเลเยอร์ในภาษาเครื่อง ดังนั้นจึงไม่ปรากฏใน K/R และหากไม่มีสิ่งใดอยู่ที่นั่น การแนะนำให้รู้จักกับหนังสือเล่มต่อๆ ไปจะเป็นการนอกรีตและคิดอย่างอิสระ ดังนั้นแนวคิดของเลเยอร์จึงไม่ปรากฏเลยแม้ว่าจะมีประโยชน์อย่างยิ่งและค่อนข้างชัดเจนก็ตาม

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

อย่างไรก็ตาม สามารถสันนิษฐานได้ว่า Dan Ritchie ทิ้ง goto ไว้เป็นกุญแจสำคัญในการค้นหาแนวคิดที่ไม่มีชื่อ เนื่องจากไม่มีความจำเป็นหรือความสวยงามในสำนวน goto แต่จำเป็นต้องมีคำอธิบายที่เรียบง่ายและเข้าใจได้เกี่ยวกับหลักการภาษาใหม่ซึ่งริชชี่เองไม่ต้องการให้และมีพื้นฐานอยู่บนแนวคิดนั้นอย่างแม่นยำ слой.

เบี่ยงเบน

เบี่ยงเบน – การเปลี่ยนแปลงคุณสมบัติปกติของชื่อใหม่

ค่าเบี่ยงเบนที่สำคัญที่สุดนั้นสัมพันธ์กับคุณสมบัติของเลเยอร์ของโปรแกรมอย่างแม่นยำ และอธิบายได้ด้วยคำว่า "คงที่" ซึ่งมีความหมายที่แตกต่างกันในเลเยอร์แต่ละประเภท

5. บทสุดท้าย ความธรรมดาของภาษาประยุกต์

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

Matryoshka C. ระบบภาษาโปรแกรมแบบชั้น

(ยังไม่ได้จัดส่งแบบตาราง จึงแสดงตารางเป็นรูปภาพ)

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

การบรรทุกเกินพิกัดและความหลากหลาย

คำว่า "โอเวอร์โหลด" เป็นคำที่ใช้เรียนรู้เกี่ยวกับเครื่องจักรที่ล้าสมัยสำหรับการสร้าง การดำเนินการหลายอย่าง.

โปรแกรมเมอร์เครื่องจักร (ระบบ) ส่วนใหญ่ การดำเนินการอาจสร้างความรำคาญได้: “เครื่องหมาย (+) นี้หมายถึงอะไร: การบวกจำนวนเต็ม การบวกเศษส่วน หรือแม้แต่การขยับ! สมัยของเราพวกเขาไม่ได้เขียนแบบนั้น!” ดังนั้นความหมายเชิงลบของคำที่เลือก (“ overkill”, “เหนื่อย”) สำหรับแอปพลิเคชันโปรแกรมเมอร์ การดำเนินการหลายอย่างถือเป็นรากฐานที่สำคัญ ซึ่งเป็นความสำเร็จหลักและมรดกตกทอดของภาษา C เป็นเรื่องปกติที่มักไม่เป็นที่รู้จัก

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

การประกาศในรูปแบบ "เกินพิกัด" จะแสดงออกมาได้ดีกว่าในคำ ประกาศเพิ่มเติม — เพิ่มการประกาศฟังก์ชันชื่อเดียวกันพร้อมอาร์กิวเมนต์ของรูปภาพอื่น

การประกาศรูปแบบ "ความหลากหลาย" เรียกว่าดีกว่า ประกาศอีกครั้ง — การประกาศที่ทับซ้อนกันในเลเยอร์ส่วนขยายใหม่ของฟังก์ชันชื่อเดียวกันพร้อมอาร์กิวเมนต์ของรูปภาพเดียวกัน

จากนั้นจะเข้าใจได้ง่ายว่าวิธีการเดียวกันของรูปภาพต่าง ๆ (อาร์กิวเมนต์) - ประกาศเพิ่มเติมและหนึ่งภาพ - ประกาศอีกครั้ง.

คำภาษารัสเซียตัดสินใจ

รันเวย์

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

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

ดังนั้นคุณควรเริ่มเรียนรู้ภาษาการเขียนโปรแกรมด้วยภาษา C และก้าวต่อไปตามลำดับที่ภาษาของตระกูล C ปรากฏ

เช่นเดียวกับการอธิบายภาษา ภาษาที่ต่างกันมีชุดเพศของหน่วยที่เหมือนกันหรือเล็กกว่าภาษา C จำนวนประเภทและตัวอย่างอาจแตกต่างกันในทั้งสองทิศทาง: C++ มีประเภทมากกว่า C ในขณะที่ JavaScript มีน้อยกว่า

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

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

ความคิดเห็นของคุณจะได้รับการรับฟังอย่างเอาใจใส่ ความช่วยเหลือของคุณในการสร้างเว็บไซต์ตุ๊กตาทำรังจะได้รับความขอบคุณอย่างยิ่ง ข้อมูลที่สมบูรณ์เพิ่มเติมเกี่ยวกับหนังสือเล่มนี้อยู่บนเว็บไซต์ซึ่งซ่อนไว้อย่างชาญฉลาดใน Matryoshka C.

ที่มา: will.com

เพิ่มความคิดเห็น