Matryoshka C. Hệ thống ngôn ngữ chương trình phân lớp

Chúng ta hãy thử tưởng tượng hóa học mà không có Bảng tuần hoàn Mendeleev (1869). Phải ghi nhớ bao nhiêu yếu tố và không theo thứ tự cụ thể nào... (Rồi - 60.)

Để làm điều này, chỉ cần nghĩ về một hoặc một số ngôn ngữ lập trình cùng một lúc. Cảm xúc giống nhau, sự hỗn loạn sáng tạo giống nhau.

Và bây giờ chúng ta có thể sống lại cảm xúc của các nhà hóa học thế kỷ XNUMX khi họ được cung cấp tất cả kiến ​​thức và hơn thế nữa trong một Bảng tuần hoàn.

Matryoshka C. Hệ thống ngôn ngữ chương trình phân lớp


Cuốn sách “Matryoshka C. Hệ thống ngôn ngữ chương trình phân lớp" trình bày sơ lược về tất cả các đơn vị của ngôn ngữ C. Điều này cho phép bạn sắp xếp chúng, sửa thông tin lỗi thời và thậm chí làm rõ chính khái niệm của chương trình.

Ngày nay, thông tin lập trình cần được hệ thống hóa thậm chí còn nhiều hơn cả những nguyên tố hóa học cách đây 150 năm.

Điều cần thiết đầu tiên là giảng dạy. Mendeleev bắt đầu tạo ra hệ thống của mình khi ông phải đối mặt với câu hỏi nên bắt đầu giảng bài với nguyên tố nào: O, H, N, He, Au... Đồng thời, điều đó còn dễ dàng hơn đối với ông - ông đã dạy hóa học cho những học sinh giỏi nhất - Đại học St. Petersburg. Và lập trình đã được dạy ở trường và sẽ sớm bắt đầu ở trường mẫu giáo.

Nhu cầu thứ hai là cách tiếp cận khoa học. Với sự trợ giúp của Bảng tuần hoàn, các nguyên tố mới đã được phát hiện và thông tin về những nguyên tố cũ đã được sửa chữa. Cô ấy đã giúp tạo ra mô hình nguyên tử (1911) Và như thế.

Nhu cầu thứ ba là làm rõ khái niệm về một chương trình.

Lập trình hiện đại đã mắc kẹt một chân vào những năm 50 của thế kỷ XNUMX. Hồi đó chương trình còn đơn giản nhưng máy móc và ngôn ngữ máy lại phức tạp nên mọi thứ đều xoay quanh máy móc và ngôn ngữ.

Bây giờ mọi thứ lại ngược lại: các chương trình phức tạp và cơ bản, các ngôn ngữ đơn giản và thứ yếu. Đây được gọi là phương pháp ứng dụng, mà dường như mọi người đều quen thuộc. Nhưng sinh viên và nhà phát triển vẫn tiếp tục tin rằng mọi thứ đều giống nhau.

Điều này đưa chúng ta trở lại bài giảng đầu tiên của Privatdozent Mendeleev. Nói gì với tân sinh viên? Đâu là sự thật? Đó là câu hỏi.

Cuốn sách “Matryoshka C” đưa ra câu trả lời cho câu hỏi này. Hệ thống phân lớp của ngôn ngữ chương trình". Hơn nữa, nó không chỉ dành cho sinh viên mà còn dành cho các lập trình viên đã được đào tạo, vì chính họ, tức là chúng ta, những người phải tìm kiếm sự thật và thay đổi thế giới quan.

Sau đây là phần tóm tắt của cuốn sách.

XUẤT KHẨU. Giới thiệu

Năm 1969, ngôn ngữ C được tạo ra, trở thành ngôn ngữ lập trình cơ bản và tồn tại trong 50 năm. Tại sao cái này rất? Trước hết, vì C là đã áp dụng ngôn ngữ đã cung cấp cho chương trình nhân đạo thay vào đó hãy xem Máy móc. Thành tích này được đảm bảo bởi các ngôn ngữ thuộc họ C: C++, JavaScript, PHP, Java, C# và các ngôn ngữ khác. Thứ hai, nó là một ngôn ngữ ngắn và đẹp.

Tuy nhiên, bản thân ngôn ngữ C thường được trộn lẫn với trình biên dịch máy, do đó làm phức tạp và bóp méo nhận thức của nó. Một thái cực khác là việc áp đặt một “triết lý” nhất định lên ngôn ngữ: thủ tục, đối tượng, chức năng, biên dịch, diễn giải, gõ, v.v. Điều này làm tăng thêm cảm xúc nhưng không giúp mô tả ngôn ngữ tốt hơn.

Sự thật nằm ở giữa, và đối với ngôn ngữ C, nó hoàn toàn nằm ở giữa nhận thức triết học và nhận thức máy móc.

Ngôn ngữ C không độc lập, nó tuân theo ngôn ngữ viết thông thường, đồng thời nó điều khiển chính ngôn ngữ hợp ngữ. Vị trí này mô tả Mẫu lời nói của chương trình, theo đó chương trình được chia thành ba loại phụ: lời nói, mã, lệnh. Ngôn ngữ C chịu trách nhiệm về loại mã thứ hai.

Sau khi xác định được vị trí của ngôn ngữ trong chương trình, bạn có thể sắp xếp thông tin về ngôn ngữ đó, điều này khiến Hệ thống ngôn ngữ chương trình phân lớp, thể hiện ngôn ngữ C theo tinh thần của hệ thống tuần hoàn - trên một trang.

Hệ thống được xây dựng có tính đến cộng đồng ngôn ngữ ứng dụng, phát sinh từ sự phụ thuộc vào lời nói của họ. Một bộ đơn vị Matryoshka C cho phép bạn mô tả và so sánh các ngôn ngữ khác nhau, tạo ra một loạt Matryoshkas: C++, PHP, JavaScript, C#, MySQL, Python, v.v. Điều xứng đáng và chính xác là các ngôn ngữ khác nhau được mô tả bằng các đơn vị của ngôn ngữ cơ bản.

2. CHƯƠNG 1. Mẫu lời nói của chương trình. Xóa C

Chương đầu tiên trình bày mẫu lời nói của chương trình, phản ánh một cách tiếp cận được áp dụng. Theo ông, chương trình có ba loại tuần tự rõ ràng:

  1. lời nói - lời nói trực tiếp của lập trình viên giải quyết vấn đề,
  2. được mã hóa - mã hóa một giải pháp thành dạng toán học bằng ngôn ngữ C (hoặc bất kỳ ngôn ngữ nào khác)
  3. và lệnh - lệnh máy trực tiếp.

Mô hình giọng nói giải thích tại sao C là ngôn ngữ đơn giản và dễ hiểu. Xi được xây dựng theo hình ảnh và sự giống với lời nói của con người quen thuộc với chúng ta.

Loại chương trình đầu tiên là lời nói trực tiếp của người lập trình. Lời nói tương ứng với suy nghĩ của con người. Các lập trình viên mới bắt đầu viết chương trình bằng giọng nói - đầu tiên bằng tiếng Nga, sau đó dịch từng bước các hành động sang ngôn ngữ mã. Và chính trên mô hình này, ngôn ngữ C đã được tạo ra.

Kết luận của người lập trình, được thể hiện bằng lời nói, được chuyển thành dạng số được mã hóa. Sự chuyển đổi này nên được gọi là sự phản chiếu, vì lời nói và mã có cùng bản chất (phản ánh - sinh - giới tính). Điều này khá rõ ràng nếu chúng ta so sánh các loại giọng nói (ở bên trái) và mã (ở bên phải) của chương trình.

Matryoshka C. Hệ thống ngôn ngữ chương trình phân lớp

Điều đáng tò mò là sự phản chiếu diễn ra rất đơn giản - chỉ với hai loại biểu thức.

Tuy nhiên, mô tả hiện đại của ngôn ngữ C (từ năm 1978) không có danh sách đầy đủ các tên để mô tả ngôn ngữ nói chung hoặc cho nhiệm vụ phản ánh nói riêng. Vì vậy, chúng tôi buộc phải sáng tạo và giới thiệu những cái tên này.

Việc lựa chọn từ ngữ phải chính xác và rõ ràng. Điều này đòi hỏi một cách tiếp cận đặc biệt, được diễn đạt ngắn gọn như sau: sử dụng nghiêm ngặt ngôn ngữ bản địa. Đối với người Anh thì đó sẽ là tiếng Anh, nhưng chúng tôi không phải là người Anh. Vì vậy, chúng tôi sẽ sử dụng những gì chúng tôi có và cố gắng nói tiếng Nga.

Sự phản ánh được thực hiện bởi hai loại biểu thức:

  1. phép tính (HF) - phản ánh sự thay đổi tính chất của một đối tượng. Thuộc tính của một đối tượng được thể hiện bằng một số, khi đó một thao tác đối với một thuộc tính là một thao tác đối với một số - một thao tác.
  2. sự phục tùng (Pch) - phản ánh sự thay đổi trong thứ tự hành động. Nguyên mẫu của Pch là một câu phức hợp lời nói, do đó hầu hết các loại Pch đều bắt đầu bằng các liên từ phụ thuộc “if”, “otherwise”, “while”, “for”. Các loại PC khác bổ sung cho chúng.

Nhân tiện, bạn có tin được rằng trong mô tả C không có tên cho các biểu thức tính toán - chúng được gọi đơn giản là “biểu thức” không? Sau này, sẽ không còn ngạc nhiên nữa khi không có tên gọi và mối liên hệ nào cho loại phụ thuộc, và thực sự là có rất ít tên gọi, định nghĩa và khái quát hóa nói chung. Điều này là do K/R nổi tiếng (“Ngôn ngữ C”, Kernighan/Ritchie, 1978) không phải là một mô tả mà là một hướng dẫn sử dụng ngôn ngữ.

Tuy nhiên, tôi vẫn muốn có một mô tả về ngôn ngữ. Vì thế anh ta được đề nghị Hệ thống ngôn ngữ chương trình phân lớp.

3. CHƯƠNG 2. Hệ thống lớp. Tóm tắt C

Mọi mô tả đều phải chính xác và cực kỳ ngắn gọn. Trong trường hợp ngôn ngữ chương trình, việc mô tả trực diện là rất khó.

Ở đây chúng tôi có một chương trình. Nó bao gồm các mô-đun. Các mô-đun bao gồm các chương trình con và bộ sưu tập (cấu trúc). Các chương trình con bao gồm các biểu thức riêng lẻ: khai báo, tính toán, cấp dưới. Có tới mười loại lệ thuộc. Sự phụ thuộc kết nối các cấp độ con và các chương trình con. Ngoài ra còn có một số quảng cáo. Tuy nhiên, các khai báo không chỉ có trong các chương trình con và cấp độ con mà còn có trong các mô-đun và bộ sưu tập. Và hầu hết các cách diễn đạt đều bao gồm những từ rất khó mô tả nên chúng thường được đưa ra đơn giản trong hai danh sách - từ gốc và từ phái sinh, mà bạn sẽ làm quen trong suốt quá trình học và sử dụng ngôn ngữ. Hãy thêm dấu chấm câu và một số biểu thức khác vào đây.

Trong cách trình bày như vậy, không dễ để hiểu ai đứng trên ai.

Cách tiếp cận phân cấp trực tiếp để mô tả một ngôn ngữ sẽ quá phức tạp. Tìm kiếm vòng vo dẫn đến mô tả ngôn ngữ dựa trên bản chất lời nói và mặt mệnh lệnh của nó. Do đó, Hệ thống lớp ra đời, một phần trùng khớp với Hệ thống tuần hoàn của Mendeleev, cũng là Hệ thống lớp lớp. Hoá ra là 42 năm sau khi nó được xuất bản (1869), tính tuần hoàn của hệ thống gắn liền với các hệ thống điện tử. lớp (1911, mô hình nguyên tử Bohr-Rutherford). Ngoài ra, hệ thống Lớp và Định kỳ tương tự nhau ở cách sắp xếp dạng bảng của tất cả các đơn vị trên một trang.

Mô tả các đơn vị ngôn ngữ rất ngắn gọn - chỉ có 10 loại biểu thức và 8 loại đơn vị khác, cũng như có ý nghĩa và trực quan. Mặc dù không bình thường đối với lần đầu làm quen.

Đơn vị ngôn ngữ được chia thành 6 cấp độ:

  1. đơn vị - hàng của bảng
  2. khoa - nhóm chi đặc biệt (các phần của dòng đầu tiên)
  3. chi - tế bào (cấp độ phân chia chính)
  4. siêu loài - phân tách loài (mức độ hiếm)
  5. loại - công thức đơn vị ở cuối ô hoặc riêng biệt
  6. mẫu - chính các đơn vị (chỉ dành cho từ)

Từ mẫu mô tả từ điển - một hệ thống con riêng biệt được tạo thành từ sáu cấp độ giống nhau.

Thành phần lời nói của ngôn ngữ C khá rõ ràng, mặc dù nó vẫn đáng được mô tả. Nhưng phần lệnh của ngôn ngữ có liên quan chính xác đến việc kiểm soát biên dịch, trong đó loại chương trình thứ ba được tạo ra - lệnh. Ở đây chúng ta đến với khía cạnh thú vị nhất của ngôn ngữ C: vẻ đẹp.

4. CÁC CHƯƠNG SAU ĐÂY. Sĩ đẹp trai

Ngôn ngữ C là nền tảng của lập trình hiện đại. Tại sao? Thứ nhất, do sự tương ứng lớn nhất với lời nói. Thứ hai, bởi vì nó đã vượt qua được những hạn chế trong việc xử lý số máy một cách tuyệt vời.

Chính xác thì ông Tập đã đề xuất điều gì? Hình ảnh và lớp.

Từ "hình ảnh" là bản dịch của từ "loại" trong tiếng Anh, xuất phát từ "nguyên mẫu" - "loại" trong tiếng Hy Lạp. Trong tiếng Nga, từ “loại” không truyền tải được nền tảng của khái niệm được thể hiện mà còn bị nhầm lẫn với nghĩa phụ trợ “loại”.

Ban đầu, hình ảnh giải quyết được vấn đề tính toán thuần túy bằng máy, sau đó trở thành đường băng cho sự ra đời của ngôn ngữ đối tượng.

Lớp này ngay lập tức giải quyết được một số vấn đề - cả về máy và ứng dụng. Do đó, việc xem xét sẽ bắt đầu bằng hình ảnh một tác vụ và chuyển sang lớp đa tác vụ.

Một trong những đặc điểm khó chịu của lập trình lịch sử là hầu hết các khái niệm, kể cả những khái niệm cơ bản, đều được đưa ra mà không có định nghĩa. “Ngôn ngữ lập trình (tên sông) có kiểu số nguyên và số thực…” và họ lại viết tiếp. Không cần thiết phải xác định “loại” (hình ảnh) là gì, vì bản thân các tác giả cũng chưa hiểu hết về điều này và sẽ giấu nó đi “để cho rõ ràng”. Nếu ghim vào tường, chúng sẽ đưa ra một định nghĩa mơ hồ và vô dụng. Nó giúp ích rất nhiều cho việc che giấu đằng sau các từ nước ngoài: đối với các tác giả Nga - đằng sau tiếng Anh (loại), đối với người Anh - đằng sau tiếng Pháp (chương trình con), tiếng Hy Lạp (đa hình), tiếng Latin (đóng gói) hoặc sự kết hợp của chúng (đa hình ad-hoc).

Nhưng đây không phải là định mệnh của chúng ta. Sự lựa chọn của chúng tôi là các định nghĩa có tấm che nâng cao bằng tiếng Nga thuần túy.

Hình ảnh

Hình ảnh là tên gọi tượng hình của một đại lượng, xác định 1) các đặc tính nội tại của đại lượng và 2) việc lựa chọn các thao tác cho đại lượng.

Từ “loại” (loại) tương ứng với phần đầu tiên của định nghĩa: “tính chất nội tại của một đại lượng”. Nhưng ý nghĩa chính của hình ảnh nằm ở phần thứ hai: “lựa chọn các thao tác theo số lượng”.

Điểm bắt đầu để giới thiệu một hình ảnh trong C là một phép tính thông thường, chẳng hạn như phép cộng.

Giấy Toán học, dù viết tay hay in, không phân biệt nhiều giữa các loại số, thường cho rằng chúng là số thực. Vì vậy, hoạt động xử lý của họ là rõ ràng.

Máy Toán học phân chia nghiêm ngặt các số thành số nguyên và phân số. Các loại số khác nhau được lưu trữ khác nhau trong bộ nhớ và được xử lý bằng các lệnh xử lý khác nhau. Ví dụ: lệnh cộng số nguyên và phân số là hai lệnh khác nhau tương ứng với hai nút xử lý khác nhau. Nhưng không có lệnh nào để cộng các đối số nguyên và phân số.

Đã áp dụng toán học, tức là ngôn ngữ C, phân tách các loại số, nhưng kết hợp các phép toán: phép cộng cho số nguyên và/hoặc phân số được viết bằng một dấu hiệu hành động.

Một định nghĩa rõ ràng về hình ảnh khái niệm cho phép chúng ta nói rõ ràng về hai khái niệm khác: cường độ и hoạt động.

Độ lớn và hoạt động

Giá trị - số đang được xử lý.

Hoạt động — xử lý các giá trị ban đầu (đối số) để thu được số cuối cùng (tổng).

Độ lớn và hoạt động có mối liên hệ với nhau. Mỗi phép toán là một đại lượng vì nó có kết quả bằng số. Và mỗi giá trị là kết quả của việc truyền một giá trị đến/từ thanh ghi bộ xử lý, tức là kết quả của thao tác. Bất chấp mối quan hệ này, vấn đề chính là khả năng mô tả riêng biệt của chúng, mặc dù có sự lặp lại của một từ trong các phần khác nhau của từ điển, đó là những gì xảy ra trong MA3.

Phương pháp máy chia tất cả các số được lập trình viên sử dụng thành đội и dữ liệu. Trước đây, cả hai đều là số, chẳng hạn các lệnh được viết bằng mã số. Tuy nhiên, trong các ngôn ngữ ứng dụng, lệnh không còn là số nữa mà trở thành bằng lời и dấu hiệu hành động. Chỉ có “dữ liệu” vẫn là số, nhưng thật vô lý nếu tiếp tục gọi chúng như vậy, bởi vì trong quá trình chuyển đổi từ máy sang quan điểm toán học, số là đại lượng được chia cho số gốc (dữ liệu) và cuối cùng (yêu cầu). “Dữ liệu không xác định” nghe có vẻ ngu ngốc.

Các đội cũng được chia thành hai loại hành động: toán học và dịch vụ. Các hành động toán học - phép tính. Chúng ta sẽ đề cập đến nội dung chính thức sau.

Trong các ngôn ngữ C, các phép toán trên giấy và máy thông thường rõ ràng hoặc đơn lẻ hầu như trở thành bội số.

Nhiều thao tác là một số thao tác có cùng tên với các loại đối số khác nhau và các hành động khác nhau, giống nhau về ý nghĩa.

Đối số nguyên tương ứng với toàn bộ phép toán và đối số phân số tương ứng với phép toán phân số. Sự khác biệt này đặc biệt rõ ràng trong thao tác chia, khi biểu thức 1/2 cho tổng là 0 chứ không phải 0,5. Ký hiệu như vậy không tương ứng với các quy tắc của toán học trên giấy, nhưng ngôn ngữ C không cố gắng tuân thủ chúng (không giống như Fortran) - nó chơi theo cách riêng của nó áp dụng quy tắc.

Trong trường hợp trộn số nguyên và phân số thì chỉ đưa ra số nguyên đúng truyền giá trị đối số - chuyển đổi có chọn lọc một giá trị từ hình ảnh này sang hình ảnh khác. Thật vậy, khi cộng một số nguyên và một số phân số thì kết quả là phân số nên hình ảnh của phép toán nhặt lên hoạt động chuyển đổi một đối số số nguyên thành một giá trị phân số.

Một số hoạt động vẫn còn số nhiềuĐộc thân. Các phép toán như vậy chỉ được xác định cho một loại đối số: phần còn lại - đối số số nguyên, xếp chồng (các phép toán theo bit) - số nguyên tự nhiên. Ma3 biểu thị tính đa dạng của các thao tác với các dấu hiệu (#^) biểu thị các hình ảnh mà thao tác được xác định. Đây là một thuộc tính quan trọng nhưng trước đây bị bỏ qua trong mọi hoạt động.

Tất cả các chức năng là hoạt động đơn vị tùy ý. Ngoại lệ là các toán tử - hàm không có khung, được tích hợp vào ngôn ngữ (hoạt động ban đầu).

Hỗ trợ

Hỗ trợ - hành động đi kèm với hoạt động.

Nếu chúng ta coi thao tác là hành động chính thì chúng ta có thể phân biệt hai thao tác đi kèm cung cấp thao tác và khác với thao tác đó. Đó là 1) kiểm soát thay đổi và 2) sự phụ thuộc. Hành động này được gọi là hỗ trợ.

Ở đây chúng ta cần phải lạc đề và nói riêng về bản dịch tiếng Nga của sách giáo khoa lập trình. Một từ mới được giới thiệu trong văn bản K/R để ghi lại hành động tuyên bố (biểu thức), cố gắng phân chia các khái niệm về lệnh máy thành các hành động khác nhau: 1) thao tác, 2) khai báo và 3) cấp dưới (được gọi là "cấu trúc điều khiển"). Nỗ lực này đã bị các dịch giả người Nga chôn vùi, thay thế “biểu thức” bằng từ “người điều hành”, trong đó:

  1. đã trở thành đồng nghĩa với từ máy “lệnh”,
  2. hóa ra lại đồng nghĩa với cụm từ “dấu hiệu hành động”,
  3. và cũng nhận được vô số giá trị bổ sung. Tức là nó đã biến thành một thứ tương tự như bài viết tiếng Anh “uhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh”

Hãy xem xét các hành động đi kèm, hoặc hỗ trợ.

Kiểm soát biến

Kiểm soát biến (UP) - tạo/xóa các ô biến.
UE xảy ra ngầm khi khai báo một biến, biến này đã được viết vì một lý do khác - để biểu thị hình ảnh của giá trị. Chỉ có một chế độ xem được quản lý rõ ràng biến bổ sung sử dụng hàm malloc() và free().

Cần lưu ý rằng các hành động ngầm sẽ thuận tiện hơn cho việc viết, vì chúng không yêu cầu viết bất cứ điều gì, nhưng chúng khó hiểu hơn - chúng khó tính đến và diễn giải hơn.

Sự phục tùng

Sự phục tùng - kết nối/vô hiệu hóa các phần lớp.

Ngôn ngữ C đưa ra một phương pháp ứng dụng để kiểm soát thứ tự các hành động, khác với phương pháp hợp ngữ - phụ thuộc. Nó phản ánh và phát triển một câu nói phức tạp với sự phân chia rõ ràng thành phần chính (mệnh đề phụ) và phần phụ (phần cấp dưới/chương trình con).

Cả việc khai báo và nộp hồ sơ đều được xây dựng hoàn toàn trên khái niệm lớp.

Lớp

Lớp là một tập hợp các biểu thức chọn lọc một cấp có giới hạn.

Lớp này đảm nhận một cách rõ ràng và ngầm một số nhiệm vụ cùng một lúc:

  1. tổ chức chương trình
  2. hạn chế khả năng hiển thị của tên (ngầm),
  3. quản lý các biến (ô nhớ) (ẩn),
  4. định nghĩa các mệnh đề phụ cho sự phụ thuộc,
  5. định nghĩa về các hàm và các lựa chọn và những thứ khác.

Không có khái niệm về lớp trong ngôn ngữ máy, vì vậy nó không xuất hiện trong K/R, và nếu thứ gì đó không có ở đó, thì việc giới thiệu nó trong các cuốn sách tiếp theo sẽ là dị giáo và suy nghĩ tự do. Do đó, khái niệm về một lớp hoàn toàn không xuất hiện, mặc dù nó cực kỳ hữu ích và khá rõ ràng.

Nếu không có lớp thì không thể giải thích ngắn gọn và rõ ràng nhiều hành động và quy tắc của chương trình. Ví dụ, tại sao goto đơn giản như ba kopecks lại xấu, còn while khó khăn lại tốt. Bạn chỉ có thể chửi thề một cách bất lực, như Dijkstra đã làm (“kỹ năng của lập trình viên là một chức năng phụ thuộc nghịch đảo vào tần suất xuất hiện của câu lệnh goto trong chương trình của họ.” Nói tóm lại, chỉ có dê mới sử dụng goto. Mức độ biện minh là Chúa.) Đúng, điều này không quá đáng sợ nếu những cuốn sách của bạn Chúng tôi không phải giải thích bất cứ điều gì, nhưng, như chúng tôi đã nói, đây không phải là số phận của chúng tôi.

Nhân tiện, có thể giả định rằng Dan Ritchie để lại goto chính xác như một chìa khóa để tìm kiếm một khái niệm không tên nào đó, bởi vì không có nhu cầu hay vẻ đẹp nào trong cách diễn đạt goto. Nhưng cần có một lời giải thích đơn giản và dễ hiểu về những nguyên tắc mới của ngôn ngữ, điều mà bản thân Richie không muốn đưa ra và lại hoàn toàn dựa trên khái niệm này. lớp.

Độ lệch

Độ lệch — thay đổi các thuộc tính thông thường của tên mới.

Độ lệch quan trọng nhất liên quan chính xác đến thuộc tính lớp của chương trình và được mô tả bằng một từ “tĩnh”, có nghĩa khác nhau đối với từng loại lớp.

5. CHƯƠNG CUỐI CÙNG. Điểm chung của các ngôn ngữ ứng dụng

Ngôn ngữ được áp dụng là tượng hình ngôn ngữ (có hình ảnh, “đã gõ”). Chúng dựa trên việc sử dụng hình ảnh một cách rõ ràng hoặc ngầm định. Hơn nữa, ở đây lại xuất hiện mâu thuẫn: một hình ảnh rõ ràng thì dễ hiểu hơn nhưng kém tiện lợi hơn và ngược lại.

Matryoshka C. Hệ thống ngôn ngữ chương trình phân lớp

(Bố cục bảng vẫn chưa được giao nên bảng được hiển thị kèm theo hình ảnh.)

Sau C, sự phát triển của các ngôn ngữ ứng dụng đã đi theo con đường tăng tính tượng hình của chúng. Điều quan trọng nhất để hiểu được hình ảnh cao là hậu duệ trực tiếp của C - ngôn ngữ C++. Ông phát triển ý tưởng về việc lựa chọn các phép toán tùy ý cho các số lượng và thể hiện nó trên cơ sở lựa chọn biểu thức tổng hợp, nhận được một tên mới - đối tượng. Tuy nhiên, C++ không ngắn gọn và biểu cảm như C do có quá nhiều loại bộ sưu tập mới và các quy tắc liên quan của chúng. Nhân tiện, hãy nói về "quá tải".

Quá tải và đa hình

Từ "quá tải" là một thuật ngữ máy học lỗi thời để tạo ra nhiều hoạt động.

Lập trình viên máy (hệ thống) số nhiều các thao tác có thể gây khó chịu: “Dấu (+) này có nghĩa là gì: cộng số nguyên, cộng phân số hay thậm chí dịch chuyển?! Ở thời chúng ta người ta không viết như vậy!” Do đó, ý nghĩa tiêu cực của từ được chọn (“quá mức cần thiết”, “mệt mỏi”). Đối với một lập trình viên ứng dụng, nhiều thao tác là nền tảng, thành tựu và di sản chính của ngôn ngữ C, tự nhiên đến mức chúng thường không được công nhận.

Trong ngôn ngữ C++ số nhiều mở rộng không chỉ cho các hoạt động ban đầu mà còn cho các hàm - cả riêng lẻ và kết hợp thành các lớp - phương thức. Với nhiều phương thức đã có khả năng ghi đè chúng trong các lớp mở rộng, được gọi một cách mơ hồ là "đa hình". Sự kết hợp giữa tính đa hình và tình trạng quá tải đã tạo ra một hỗn hợp bùng nổ chia thành hai dạng đa hình: “true” và “ad-hoc”. Chỉ có thể hiểu điều này bất chấp những cái tên được chỉ định. Con đường đến với quảng cáo được trải bằng những tên tuổi nước ngoài.

Một tuyên bố có dạng “quá tải” được thể hiện tốt hơn bằng từ thông báo bổ sung — thêm một khai báo về một hàm cùng tên với các đối số của một hình ảnh khác.

Một tuyên bố có dạng “đa hình” tốt hơn nên được gọi là thông báo lại - một khai báo chồng chéo trong lớp mở rộng mới của hàm cùng tên với các đối số của cùng một hình ảnh.

Khi đó sẽ dễ hiểu rằng các phương pháp giống nhau của các hình ảnh (đối số) khác nhau - công bố bổ sungvà một hình ảnh - công bố lại.

Lời nói tiếng Nga quyết định.

Đường băng

Việc xem xét các khái niệm của các ngôn ngữ có tính tượng hình cao khẳng định tầm quan trọng của việc xác định rõ ràng các khái niệm cơ bản. Với C được mô tả chính xác, việc học các ngôn ngữ có tính tượng hình cao sẽ trở nên dễ dàng và thú vị.

Điều này đặc biệt quan trọng đối với ngôn ngữ ẩn chứa nhiều tính tượng hình (PHP, JavaScript). Đối với họ, tầm quan trọng của các đối tượng (hình ảnh tổng hợp) thậm chí còn cao hơn trong C++, nhưng chính khái niệm về hình ảnh lại trở nên tiềm ẩn và khó nắm bắt. Xét về mặt thuận tiện thì chúng đã trở nên đơn giản hơn nhưng xét về mặt dễ hiểu thì chúng lại trở nên khó khăn hơn.

Vì vậy, bạn nên bắt đầu học các ngôn ngữ lập trình với ngôn ngữ C và tiến xa hơn theo thứ tự xuất hiện của các ngôn ngữ thuộc họ C.

Việc mô tả ngôn ngữ cũng vậy. Các ngôn ngữ khác nhau có tập hợp giới tính đơn vị giống nhau hoặc nhỏ hơn ngôn ngữ C. Số lượng loại và mẫu có thể khác nhau theo cả hai hướng: C++ có nhiều loại hơn C, trong khi JavaScript có ít loại hơn.

Ngôn ngữ MySQL xứng đáng được đề cập đặc biệt. Có vẻ như không có gì chung, nhưng Matryoshka đã mô tả anh ấy một cách hoàn hảo và việc làm quen với anh ấy trở nên nhanh chóng và dễ dàng hơn. Điều này rất quan trọng vì tầm quan trọng của nó đối với web - con đường ăn uống của lập trình hiện đại. Và ở đâu có MySQL thì ở đó có các SQL khác. Chà, tất cả các loại Fortran-Pascal-Pythons cũng được Matryoshka mô tả ngay khi họ chạm tay vào nó.

Vì vậy, những điều tuyệt vời đang chờ đợi chúng ta - mô tả ứng dụng của ngôn ngữ C và mô tả thống nhất về các ngôn ngữ theo sau nó. “Mục tiêu của chúng tôi rất rõ ràng, nhiệm vụ của chúng tôi được xác định. Hãy bắt tay vào làm việc thôi các đồng chí! (Tiếng vỗ tay như vũ bão, kéo dài, chuyển thành hoan hô. Mọi người đều đứng dậy.)"

Ý kiến ​​​​của bạn sẽ được lắng nghe một cách tận tình, sự giúp đỡ của bạn trong việc tạo ra trang web búp bê làm tổ sẽ được đón nhận với lòng biết ơn sâu sắc. Thông tin đầy đủ hơn về cuốn sách có trên trang web, được giấu khéo léo trong Matryoshka C.

Nguồn: www.habr.com

Thêm một lời nhận xét