Lập trình hệ thống, chọn ngôn ngữ lập trình nào? Khái niệm, chức năng và thành phần chính của nó

HỆ THỐNG LẬP TRÌNH VÀ NGÔN NGỮ

1. Hệ thống lập trình

Hệ thống lập trình là một bộ công cụ phần mềm được thiết kế để hoạt động với các chương trình bằng một trong các ngôn ngữ lập trình. Hệ thống lập trình cung cấp dịch vụ cho các lập trình viên để phát triển chương trình máy tính của riêng họ.

Hiện tại, việc phát triển bất kỳ phần mềm hệ thống và ứng dụng nào đều được thực hiện bằng các hệ thống lập trình, bao gồm:

    người dịch từ các ngôn ngữ cấp cao;

    công cụ chỉnh sửa, soạn thảo và tải chương trình;

    trình biên dịch macro (ngôn ngữ hướng máy);

    trình gỡ lỗi chương trình máy.

Hệ thống lập trình thường bao gồm

    trình soạn thảo văn bản (Chỉnh sửa), thực hiện các chức năng ghi và chỉnh sửa văn bản nguồn của chương trình;

    trình tải chương trình (Tải), cho phép bạn chọn tệp văn bản chương trình mong muốn từ thư mục;

    trình khởi chạy chương trình (Run), thực hiện quá trình thực hiện chương trình;

    trình biên dịch (Biên dịch), được thiết kế để biên dịch hoặc giải thích văn bản nguồn của chương trình thành mã máy với chẩn đoán lỗi cú pháp và ngữ nghĩa (logic);

    trình gỡ lỗi (Debug), thực hiện các chức năng dịch vụ để gỡ lỗi và kiểm tra chương trình;

    trình quản lý tệp (Tệp), cung cấp khả năng thực hiện các thao tác với tệp: lưu, tìm kiếm, xóa, v.v.

Cốt lõi của một hệ thống lập trình là ngôn ngữ.

Hệ thống lập trình "Turbo" của Borland, cốt lõi là các trình dịch từ các ngôn ngữ lập trình BASIC, Pascal, C, Prolog, v.v., được sử dụng rộng rãi trong số các nhà phát triển chương trình cũng như khi dạy lập trình. các hệ thống lập trình hoàn toàn giống nhau và cung cấp cho người dùng một bộ chức năng và lệnh tiêu chuẩn.

Công nghệ phát triển chương trình sử dụng hệ thống lập trình Turbo Pascal 7 phổ biến sẽ được thảo luận sau. Trong các hệ thống lập trình tích hợp như vậy, người ta cố gắng cung cấp cho nhà phát triển chương trình khả năng dịch vụ tối đa.

2. Phân loại ngôn ngữ lập trình

Vào buổi bình minh của kỷ nguyên máy tính, mã máy là phương tiện giao tiếp duy nhất giữa con người và máy tính. Thành tựu to lớn của những người tạo ra ngôn ngữ lập trình là họ có thể khiến chính máy tính hoạt động như một công cụ dịch từ các ngôn ngữ này sang mã máy.

Các ngôn ngữ lập trình hiện tại có thể được chia thành hai nhóm: thủ tục và phi thủ tục (xem Hình 1).

Các chương trình thủ tục (hoặc thuật toán) là một hệ thống hướng dẫn để giải quyết một vấn đề cụ thể. Vai trò của máy tính được giảm xuống thành việc thực hiện các lệnh này một cách máy móc.

Ngôn ngữ thủ tục được chia thành ngôn ngữ cấp thấp và ngôn ngữ cấp cao.

Các loại bộ xử lý khác nhau có các tập lệnh khác nhau. Nếu một ngôn ngữ lập trình tập trung vào một loại bộ xử lý cụ thể và tính đến các tính năng của nó thì nó được gọi là ngôn ngữ lập trình cấp thấp.Điều này có nghĩa là các toán tử ngôn ngữ gần với mã máy và tập trung vào các lệnh xử lý cụ thể.

Ngôn ngữ cấp thấp (hướng máy) cho phép bạn tạo chương trình từ mã máy, thường ở dạng thập lục phân. Rất khó để làm việc với chúng, nhưng các chương trình được tạo ra với sự trợ giúp của một lập trình viên có tay nghề cao sẽ chiếm ít dung lượng bộ nhớ hơn và chạy nhanh hơn. Sử dụng các ngôn ngữ này sẽ thuận tiện hơn cho việc phát triển các chương trình hệ thống, trình điều khiển (chương trình điều khiển thiết bị máy tính) và một số loại chương trình khác.

Ngôn ngữ cấp thấp (hướng máy) là Trình biên dịch, đơn giản biểu thị từng lệnh mã máy, không phải dưới dạng số mà sử dụng các ký hiệu tượng trưng được gọi là sự ghi nhớ.

Các ngôn ngữ cấp thấp tạo ra các chương trình rất hiệu quả và nhỏ gọn vì nhà phát triển có quyền truy cập vào tất cả các khả năng của bộ xử lý.

Ngôn ngữ lập trình cấp cao gần gũi và dễ hiểu hơn với con người hơn là với máy tính. Chúng không tính đến các tính năng của kiến ​​​​trúc máy tính cụ thể, do đó, các chương trình được tạo ở cấp độ văn bản nguồn có thể dễ dàng di chuyển sang các nền tảng khác mà trình dịch ngôn ngữ này đã được tạo. Việc phát triển chương trình bằng ngôn ngữ cấp cao sẽ dễ dàng hơn nhiều bằng cách sử dụng các lệnh rõ ràng và mạnh mẽ, đồng thời ít mắc lỗi hơn khi tạo chương trình.

Ưu điểm chính của ngôn ngữ thuật toán cấp cao là khả năng mô tả các chương trình giải quyết vấn đề ở dạng thuận tiện nhất có thể cho nhận thức của con người. Nhưng vì mỗi họ máy tính có ngôn ngữ (máy) nội bộ cụ thể của riêng mình và chỉ có thể thực thi các lệnh được viết bằng ngôn ngữ này, nên các chương trình dịch đặc biệt được sử dụng để dịch chương trình nguồn sang ngôn ngữ máy.

Công việc của tất cả các dịch giả đều dựa trên một trong hai nguyên tắc: diễn giải hoặc biên soạn.

Diễn dịch ngụ ý dịch từng câu lệnh và thực hiện tiếp theo câu lệnh đã dịch của chương trình nguồn. Về vấn đề này, có thể lưu ý hai nhược điểm của phương pháp phiên dịch: thứ nhất, chương trình phiên dịch phải nằm trong bộ nhớ máy tính trong toàn bộ quá trình thực thi chương trình gốc, tức là. chiếm một lượng bộ nhớ nhất định; thứ hai, quá trình dịch cùng một toán tử được lặp lại nhiều lần khi lệnh này phải được thực thi trong chương trình, điều này làm giảm đáng kể hiệu suất của chương trình.

Bất chấp những thiếu sót này, biên dịch viênđã trở nên khá phổ biến vì chúng thuận tiện cho việc phát triển và gỡ lỗi các chương trình nguồn.

Tại biên soạn Quá trình dịch và thực thi được phân tách theo thời gian: đầu tiên, chương trình nguồn được dịch hoàn toàn sang ngôn ngữ máy (sau đó sự hiện diện của trình dịch trong RAM trở nên không cần thiết), sau đó chương trình đã dịch có thể được thực thi nhiều lần. Do đó, đối với cùng một chương trình, việc dịch bằng phương pháp biên dịch sẽ mang lại hiệu suất cao hơn cho hệ thống máy tính đồng thời giảm lượng RAM cần thiết.

Sự phức tạp hơn trong việc phát triển trình biên dịch so với trình thông dịch từ cùng một ngôn ngữ được giải thích bởi thực tế là việc biên dịch chương trình bao gồm hai hành động: phân tích, tức là. xác định tính đúng đắn của việc ghi chương trình nguồn theo quy tắc xây dựng cấu trúc ngôn ngữ của ngôn ngữ đầu vào và tổng hợp - tạo ra chương trình tương đương trong mã máy. Việc phát sóng bằng phương pháp biên dịch yêu cầu phải "xem" nhiều lần chương trình phát sóng, tức là. biên dịch-biên dịch là nhiều lượt: ở lượt đầu tiên, họ kiểm tra tính đúng đắn về cú pháp của các cấu trúc ngôn ngữ của các toán tử riêng lẻ độc lập với nhau, ở lượt tiếp theo - tính chính xác của các mối quan hệ cú pháp giữa các toán tử, v.v.

Chương trình thu được nhờ dịch thuật bằng phương pháp biên dịch được gọi là mô-đun đối tượng, là một chương trình tương đương trong mã máy, nhưng không được “gắn” với các địa chỉ RAM cụ thể. Do đó, trước khi thực thi, mô-đun đối tượng phải được xử lý bằng chương trình hệ điều hành đặc biệt (Trình soạn thảo liên kết) và chuyển đổi thành tải mô-đun, I E. mô-đun phần mềm với các địa chỉ tương đối.

Cùng với các trình biên dịch-thông dịch và trình biên dịch-biên dịch đã thảo luận ở trên, trình biên dịch cũng được sử dụng trong thực tế. trình thông dịch-biên dịch, kết hợp ưu điểm của cả hai nguyên tắc dịch: ở giai đoạn phát triển và gỡ lỗi chương trình, trình dịch hoạt động ở chế độ trình thông dịch và sau khi hoàn thành quá trình gỡ lỗi, chương trình nguồn được dịch lại thành mô-đun đối tượng (tức là sử dụng phương pháp biên dịch) . Điều này cho phép bạn đơn giản hóa và tăng tốc đáng kể quá trình soạn thảo và gỡ lỗi chương trình, đồng thời bằng cách lấy mô-đun đối tượng sau đó, đảm bảo thực thi chương trình hiệu quả hơn.

Cơm. 1. Phân loại chung các ngôn ngữ lập trình

Lập trình thủ tục cổ điển yêu cầu người lập trình mô tả chi tiết cách giải quyết vấn đề, tức là. xây dựng thuật toán và ký hiệu đặc biệt của nó. Trong trường hợp này, các thuộc tính dự kiến ​​​​của kết quả thường không được chỉ định. Khái niệm cơ bản về ngôn ngữ của các nhóm này là toán tử và dữ liệu. Trong cách tiếp cận thủ tục, các toán tử được kết hợp thành các nhóm - thủ tục. Lập trình có cấu trúc nói chung không đi xa hơn hướng này; nó chỉ nắm bắt thêm một số kỹ thuật hữu ích của công nghệ lập trình.

Một hướng khác về cơ bản trong lập trình gắn liền với các phương pháp luận (đôi khi được gọi là “mô hình”) của lập trình phi thủ tục. Chúng bao gồm lập trình hướng đối tượng và khai báo. Ngôn ngữ hướng đối tượng tạo ra một môi trường dưới dạng nhiều đối tượng độc lập. Mỗi đối tượng hoạt động giống như một máy tính riêng biệt; chúng có thể được sử dụng để giải quyết vấn đề dưới dạng “hộp đen” mà không cần đi sâu vào cơ chế hoạt động bên trong của chúng. Trong số các ngôn ngữ lập trình đối tượng phổ biến trong giới chuyên môn, C++ nên được nhắc đến đầu tiên; đối với nhiều lập trình viên hơn, các môi trường như Delphi và Visual Basic được ưu tiên hơn

Khi sử dụng ngôn ngữ khai báo, lập trình viên chỉ định cấu trúc thông tin ban đầu, mối quan hệ giữa chúng và những thuộc tính mà kết quả cần có. Đồng thời, lập trình viên không xây dựng quy trình để lấy nó (“thuật toán”) (ít nhất là lý tưởng). Những ngôn ngữ này không có khái niệm “toán tử” (“lệnh”). Ngôn ngữ khai báo có thể được chia thành hai họ - logic (đại diện điển hình là Prolog) và chức năng (Lisp).

Hãy để chúng tôi mô tả các ngôn ngữ lập trình nổi tiếng nhất.

    Fortran(Hệ thống DỊCH CÔNG THỨC - hệ thống dịch công thức); ngôn ngữ lâu đời nhất vẫn được sử dụng tích cực để giải các bài toán định hướng toán học. Nó là một ngôn ngữ cổ điển để lập trình máy tính về các vấn đề toán học và kỹ thuật.

    NỀN TẢNG(Mã hướng dẫn ký hiệu đa năng dành cho người mới bắt đầu - mã hướng dẫn ký hiệu phổ quát dành cho người mới bắt đầu), mặc dù còn nhiều thiếu sót và có rất nhiều phiên bản kém tương thích nhưng nó là phiên bản phổ biến nhất xét về số lượng người dùng và được sử dụng rộng rãi khi viết các chương trình đơn giản.

    ALGOL(Ngôn ngữ thuật toán - ngôn ngữ thuật toán); đóng một vai trò quan trọng trong lý thuyết nhưng hiện nay hầu như không bao giờ được sử dụng trong lập trình thực tế.

    PL/1(Ngôn ngữ lập trình PL/1 - ngôn ngữ lập trình đầu tiên); ngôn ngữ đa năng; bây giờ hầu như không bao giờ được sử dụng.

    Pascal(Pascal - được đặt theo tên của nhà khoa học Blaise Pascal); cực kỳ phổ biến cả khi học lập trình và trong giới chuyên gia. Được tạo ra vào đầu những năm 70 bởi nhà khoa học Thụy Sĩ Niklaus Wirth. Ngôn ngữ Pascal ban đầu được phát triển như một ngôn ngữ giáo dục và thực sự, hiện nay nó là một trong những ngôn ngữ chính để giảng dạy lập trình trong các trường phổ thông và đại học. Tuy nhiên, chất lượng tổng thể của nó hóa ra cao đến mức các lập trình viên chuyên nghiệp sẵn sàng sử dụng nó. Không kém phần ấn tượng, bao gồm cả thành công về mặt tài chính, đã đạt được thành công nhờ Philip Kahn, người Pháp đã phát triển hệ thống Turbo Pascal. Bản chất ý tưởng của ông là kết hợp các giai đoạn xử lý chương trình liên tiếp - biên dịch, chỉnh sửa liên kết, gỡ lỗi và chẩn đoán lỗi - trong một giao diện duy nhất. Các phiên bản Turbo Pascal đã có mặt ở hầu hết các cơ sở giáo dục, trung tâm lập trình và các công ty tư nhân. Một số ngôn ngữ mạnh hơn đã được tạo dựa trên ngôn ngữ Pascal (Modula, Ada, Delphi).

    COBOL(Ngôn ngữ định hướng kinh doanh phổ thông - ngôn ngữ định hướng kinh doanh nói chung); phần lớn đã không còn được sử dụng nữa. Nó được hình thành như ngôn ngữ chính để xử lý dữ liệu hàng loạt trong lĩnh vực quản lý và kinh doanh.

    ADA;là ngôn ngữ đã giành chiến thắng (tháng 5 năm 1979) trong cuộc thi phát triển ngôn ngữ phổ quát do Lầu Năm Góc tổ chức từ năm 1975. Các nhà phát triển là một nhóm các nhà khoa học do Jean Ihbia đứng đầu. Ngôn ngữ chiến thắng được đặt tên là ADA, để vinh danh Augusta Ada Lovelace. Ngôn ngữ ADA là hậu duệ trực tiếp của ngôn ngữ Pascal. Ngôn ngữ này dành cho việc tạo và bảo trì lâu dài (dài hạn) các hệ thống phần mềm lớn; nó cho phép xử lý song song, kiểm soát quy trình theo thời gian thực và hơn thế nữa, những điều khó hoặc không thể đạt được khi sử dụng các ngôn ngữ đơn giản hơn.

    (C - “si”); được sử dụng rộng rãi trong việc tạo ra phần mềm hệ thống. Ông đã để lại dấu ấn lớn cho lập trình hiện đại (phiên bản đầu tiên - 1972), và rất được các nhà phát triển hệ thống phần mềm (bao gồm cả hệ điều hành) ưa chuộng. C kết hợp các tính năng của cả ngôn ngữ cấp cao và ngôn ngữ hướng máy, cho phép lập trình viên truy cập vào tất cả tài nguyên máy mà các ngôn ngữ như BASIC và Pascal không cung cấp.

    C++(C++); một phần mở rộng hướng đối tượng của ngôn ngữ C được tạo bởi Bjarne Stroustrup vào năm 1980. Nhiều tính năng mạnh mẽ mới giúp tăng năng suất của lập trình viên một cách đáng kể đã được áp dụng trên một tính chất cấp thấp nhất định được kế thừa từ ngôn ngữ C.

    Delphi(Delphi); ngôn ngữ lập trình “trực quan” hướng đối tượng; cực kỳ phổ biến ở thời điểm hiện tại. Được tạo ra trên cơ sở ngôn ngữ Pascal bởi các chuyên gia Borland, ngôn ngữ Delphi, có sức mạnh và tính linh hoạt của ngôn ngữ C và C++, vượt trội hơn chúng về sự tiện lợi và đơn giản của giao diện khi phát triển các ứng dụng cung cấp khả năng tương tác với cơ sở dữ liệu và hỗ trợ nhiều loại cơ sở dữ liệu khác nhau. các loại công việc trong mạng công ty và Internet.

    Java(Java); Ngôn ngữ lập trình hướng đối tượng độc lập với nền tảng cực kỳ hiệu quả để tạo các trang web tương tác. Ngôn ngữ này được Sun tạo ra vào đầu những năm 90 dựa trên SI++. Nó được thiết kế để đơn giản hóa việc phát triển các ứng dụng dựa trên C++ bằng cách loại bỏ tất cả các tính năng cấp thấp khỏi nó.

    nói ngọng(Lisp) là một ngôn ngữ lập trình chức năng. Tập trung vào cấu trúc dữ liệu dưới dạng danh sách và cho phép bạn tổ chức xử lý hiệu quả khối lượng lớn thông tin văn bản.

    Lời mở đầu(Lập trình logic - lập trình logic). Mục đích chính của ngôn ngữ là phát triển các chương trình và hệ thống thông minh. Prolog là ngôn ngữ lập trình được tạo riêng để làm việc với các cơ sở tri thức dựa trên các sự kiện và quy tắc (một trong những yếu tố của hệ thống trí tuệ nhân tạo). Ngôn ngữ thực hiện cơ chế quay lui để thực hiện một chuỗi lý luận ngược, trong đó những suy luận hoặc kết luận nhất định được coi là đúng và sau đó những giả định này được kiểm tra dựa trên cơ sở tri thức chứa các sự kiện và quy tắc suy luận. Nếu giả định không được xác nhận, thì kết quả trả về sẽ được thực hiện và một giả định mới sẽ được thực hiện. Ngôn ngữ này dựa trên mô hình toán học của lý thuyết tính toán vị từ.

Ngôn ngữ lập trình cho Internet:

    HTML. Một ngôn ngữ nổi tiếng để chuẩn bị tài liệu. Nó rất đơn giản và chứa các lệnh cơ bản để định dạng văn bản, thêm hình ảnh, đặt phông chữ và màu sắc, sắp xếp các liên kết và bảng.

    PERL. Nó được thiết kế như một phương tiện để xử lý hiệu quả các tệp văn bản lớn, tạo báo cáo văn bản và quản lý tác vụ. Perl mạnh hơn nhiều so với các ngôn ngữ như C. Nó bao gồm nhiều hàm được sử dụng thường xuyên để làm việc với chuỗi, mảng, quản lý bộ xử lý và làm việc với thông tin hệ thống.

    tcl/ Tk. Ngôn ngữ này tập trung vào việc tự động hóa các quy trình thông thường và bao gồm các lệnh mạnh mẽ. Nó độc lập với hệ thống và vẫn cho phép bạn tạo các chương trình có giao diện đồ họa.

    VRML. Được tạo ra để tổ chức các giao diện ba chiều ảo trên Internet. Nó cho phép bạn mô tả các cảnh ba chiều, ánh sáng và bóng tối cũng như kết cấu khác nhau ở dạng văn bản.

Các ngôn ngữ lập trình phổ biến nhất hiện nay là:

    BASIC - yêu cầu đào tạo ban đầu để thành thạo;

    Pascal – yêu cầu đào tạo đặc biệt;

    C++, Java - yêu cầu đào tạo chuyên nghiệp.

Đối với mỗi ngôn ngữ lập trình này ngày nay có rất nhiều hệ thống lập trình được sản xuất bởi nhiều công ty khác nhau và nhắm đến các mẫu PC và hệ điều hành khác nhau. Các môi trường trực quan sau đây để thiết kế chương trình nhanh chóng cho Windows là phổ biến nhất:

      Cơ bản: Microsoft Visual Basic

      Pascal: Borland Delphi

      C++: Borland C++Bulder

      Java: Quán cà phê Symantec

Để phát triển máy chủ và ứng dụng phân tán, bạn có thể sử dụng hệ thống lập trình Microsoft VisualC++, sản phẩm của Inprise mang thương hiệu Borland. Hầu như bất kỳ công cụ lập trình nào trong Java.

Việc lựa chọn ngôn ngữ lập trình phụ thuộc vào nhiều yếu tố: mục đích, tính dễ viết chương trình nguồn, hiệu quả của chương trình đối tượng thu được, v.v. Sự đa dạng của các vấn đề được máy tính giải quyết quyết định sự đa dạng của ngôn ngữ lập trình. Rõ ràng, trong lập trình, kết quả tốt nhất đạt được bằng cách tiếp cận riêng lẻ dựa trên loại vấn đề, trình độ và sở thích của người lập trình.

Lời giới thiệu……………………………………..2

1 Ngôn ngữ và hệ thống lập trình – khái niệm, bản chất………….4

2 Phân loại ngôn ngữ lập trình……………………….6

2.1 Ngôn ngữ hướng máy……………………….6

2.1.1 Ngôn ngữ máy……………………………….6

2.1.2 Ngôn ngữ mã hóa ký hiệu…………..7

2.1.3 Mã tự động……………………….8

2.1.4 Vĩ mô…………………………………………………….9

2.2 Ngôn ngữ độc lập với máy………………………..9

2.2.1 Ngôn ngữ độc lập với máy…………………………10

2.2.2 Ngôn ngữ phổ quát …………………………………10

2.2.3 Ngôn ngữ hội thoại………………………..11

2.2.4 Ngôn ngữ phi thủ tục ……………………………………12

3 Ngôn ngữ và hệ thống lập trình hiện đại…………13

3.1 Cơ bản ………………………………………13

3.2 Pascal……………………………….14

3.3 Delphi ………………………………..15

3.4 Fortran…………………………….17

3.5 C++……………………………….18

3.6 Java………………………………..20

Kết luận……………………………………..22

Danh sách các nguồn được sử dụng.................................................................. ............................23

Giới thiệu

Sự tiến bộ của công nghệ máy tính đã quyết định quá trình xuất hiện các hệ thống ký hiệu mới và đa dạng để ghi lại các thuật toán - ngôn ngữ lập trình. Ý nghĩa của sự xuất hiện của một ngôn ngữ như vậy là một tập hợp các công thức tính toán được trang bị với thông tin bổ sung để biến tập hợp này thành một thuật toán. Ngôn ngữ lập trình phục vụ hai mục đích liên quan đến nhau: nó cung cấp cho người lập trình một công cụ để chỉ định các hành động sẽ được thực hiện và nó hình thành các khái niệm mà người lập trình viên sử dụng khi nghĩ về những việc cần làm. Mục tiêu đầu tiên được đáp ứng một cách lý tưởng bằng một ngôn ngữ “gần gũi với máy” đến mức tất cả các khía cạnh cơ bản của máy có thể được vận hành dễ dàng và đơn giản theo cách đủ rõ ràng đối với người lập trình. Mục tiêu thứ hai được đáp ứng một cách lý tưởng bằng một ngôn ngữ “gần gũi với vấn đề trước mắt” đến mức các khái niệm để giải quyết nó có thể được diễn đạt một cách trực tiếp và ngắn gọn. Mối liên hệ giữa ngôn ngữ chúng ta suy nghĩ/lập trình với các vấn đề và giải pháp mà chúng ta có thể tưởng tượng ra trong đầu là rất chặt chẽ. Vì lý do này, việc giới hạn các thuộc tính của một ngôn ngữ chỉ nhằm mục đích loại bỏ các lỗi của lập trình viên là điều nguy hiểm nhất. Giống như các ngôn ngữ tự nhiên, ít nhất có thể sử dụng được song ngữ sẽ mang lại những lợi ích to lớn. Ngôn ngữ cung cấp cho người lập trình một bộ công cụ khái niệm; nếu chúng không đáp ứng được nhiệm vụ thì chúng sẽ bị bỏ qua. Ví dụ, những hạn chế nghiêm trọng của khái niệm con trỏ buộc người lập trình phải sử dụng vectơ và số học số nguyên để triển khai các cấu trúc, con trỏ và những thứ tương tự. Thiết kế tốt và không có lỗi không thể được đảm bảo hoàn toàn bằng ngôn ngữ.Điều này có vẻ đáng ngạc nhiên, nhưng một máy tính nhất định có khả năng chạy các chương trình được viết bằng ngôn ngữ máy nguyên gốc của nó. Hầu như có nhiều ngôn ngữ máy khác nhau như máy tính, nhưng chúng đều là những biến thể của cùng một ý tưởng: các thao tác đơn giản được thực hiện với tốc độ cực nhanh trên số nhị phân. Máy tính cá nhân của IBM sử dụng ngôn ngữ máy của họ bộ vi xử lý 8086 vì phần cứng của họ đặc biệt dựa trên các bộ vi xử lý này. Có thể viết chương trình trực tiếp bằng ngôn ngữ máy, mặc dù điều này rất khó. Vào buổi bình minh của tin học hóa (đầu những năm 1950), ngôn ngữ máy là ngôn ngữ duy nhất; vào thời điểm đó con người chưa phát minh ra thứ gì khác. Để cứu các lập trình viên khỏi sự khắc nghiệt của ngôn ngữ lập trình máy, các ngôn ngữ cấp cao (tức là ngôn ngữ không phải máy) đã được tạo ra, trở thành một loại cầu nối giữa con người và ngôn ngữ máy của máy tính. Các ngôn ngữ cấp cao hoạt động thông qua các chương trình dịch nhập "mã nguồn" (sự kết hợp giữa các từ tiếng Anh và biểu thức toán học được máy đọc) và cuối cùng khiến máy tính thực thi các lệnh tương ứng được đưa ra bằng ngôn ngữ máy. Có hai loại trình dịch chính: trình thông dịch quét và kiểm tra mã nguồn trong một bước và trình biên dịch quét mã nguồn để tạo ra văn bản chương trình ngôn ngữ máy, sau đó được thực thi riêng biệt.

1 Ngôn ngữ và hệ thống lập trình - khái niệm, bản chất

Hiện nay, ngành khoa học được gọi là lập trình đang có sự phát triển nhanh chóng. Đồng thời, không chỉ những ngôn ngữ mới xuất hiện, những ý tưởng mới cũng xuất hiện làm tăng sức mạnh và hiệu quả của ngôn ngữ. Không đi sâu vào chi tiết về bất kỳ ngôn ngữ hiện có hoặc mới phát triển nào, chúng ta có thể lưu ý xu hướng sau: sự phát triển của ngôn ngữ đang hướng tới việc tăng tính biểu cảm của văn bản nguồn của chương trình. Điều này giúp giảm kích thước chương trình và tăng độ tin cậy của nó.

Để tăng tính biểu cảm của một ngôn ngữ, điều cần thiết là ngôn ngữ đó phải chứa đựng các phương tiện để diễn đạt các khái niệm trừu tượng. Điều này giúp làm cho các chương trình lớn dễ hiểu hơn. Vì vậy, hỗ trợ trừu tượng hóa là điều kiện tiên quyết cho bất kỳ ngôn ngữ lập trình hiện đại nào. Trong trường hợp này, cơ sở của ngôn ngữ (tập hợp các khả năng và cấu trúc ngữ nghĩa do ngôn ngữ cung cấp) phải có sức mạnh tối thiểu.

Các khái niệm chung nhất mà lập trình viên vận hành khi sử dụng một ngôn ngữ lập trình cụ thể bao gồm các khái niệm về chương trình và máy ảo. Chương trình phải đáp ứng các yêu cầu (thông số kỹ thuật) của một ngôn ngữ lập trình cụ thể và đóng vai trò là nơi lưu trữ một chuỗi hành động và một tập hợp dữ liệu. Máy ảo hoạt động như một trình thông dịch các khái niệm cơ bản được sử dụng trong ngôn ngữ lập trình và là môi trường để chương trình tồn tại. Tất cả các khái niệm trừu tượng khác được thảo luận trong bài viết đều được nhóm xung quanh các khái niệm trừu tượng cơ bản này.

Trong một số trường hợp, quy trình lập trình có thể được coi là quy trình mô hình hóa. Trong trường hợp này, một chương trình mẫu được tạo ra có khả năng thực hiện hành vi của chương trình gốc được mô tả trong báo cáo vấn đề. Do đó, trong tương lai, khái niệm về mô hình sẽ thay thế khái niệm chương trình và khái niệm về máy ảo - khái niệm về môi trường mô hình hóa.

2 Phân loại ngôn ngữ lập trình

2.1 Ngôn ngữ hướng máy

Ngôn ngữ hướng máy là ngôn ngữ có bộ toán tử và phương tiện trực quan phụ thuộc đáng kể vào đặc điểm của máy tính (ngôn ngữ bên trong, cấu trúc bộ nhớ, v.v.). Ngôn ngữ hướng máy cho phép bạn sử dụng tất cả các khả năng và tính năng của ngôn ngữ phụ thuộc vào máy:

Chất lượng cao của các chương trình được tạo ra (nhỏ gọn và tốc độ

chấp hành);

Khả năng sử dụng tài nguyên phần cứng cụ thể;

Khả năng dự đoán mã đối tượng và thứ tự bộ nhớ;

Để tạo ra các chương trình hiệu quả bạn cần biết về hệ thống

các lệnh và tính năng hoạt động của máy tính này;

Sự phức tạp của quá trình phát triển chương trình (đặc biệt đối với

ngôn ngữ máy và Công ty cổ phần), được bảo vệ kém khỏi vẻ ngoài

Tốc độ lập trình thấp;

Không thể sử dụng trực tiếp các chương trình

được biên dịch bằng các ngôn ngữ này trên các loại máy tính khác.

Ngôn ngữ hướng máy được chia thành các lớp theo mức độ lập trình tự động.

2.1.1 Ngôn ngữ máy

Như tôi đã đề cập ở phần giới thiệu, một máy tính riêng biệt có Ngôn ngữ máy riêng (sau đây gọi là ML), nó được hướng dẫn thực hiện các thao tác xác định trên các toán hạng mà chúng xác định, vì vậy ML là ngôn ngữ lệnh. Tuy nhiên, một số họ máy tính (ví dụ: Máy tính ES, IBM/370/, v.v.) có một ME duy nhất cho các máy tính có công suất khác nhau. Lệnh của bất kỳ lệnh nào trong số chúng đều báo cáo thông tin về vị trí của các toán hạng và loại hoạt động đang được thực hiện.

Trong các mô hình máy tính mới, có xu hướng cải thiện ngôn ngữ nội bộ bằng các phương tiện phần cứng máy để thực hiện các lệnh phức tạp hơn, gần gũi hơn trong các hành động chức năng của chúng với người vận hành các ngôn ngữ lập trình thuật toán.

2.1.2 Ngôn ngữ mã hóa tượng trưng

Hãy tiếp tục câu chuyện về ngôn ngữ lệnh, Ngôn ngữ mã hóa tượng trưng (sau đây gọi tắt là YSC), giống như ML, là ngôn ngữ lệnh. Tuy nhiên, mã hoạt động và địa chỉ trong lệnh máy, là một chuỗi các chữ số nhị phân (trong mã nội bộ) hoặc bát phân (thường được sử dụng khi viết chương trình), được thay thế trong YSC bằng các ký hiệu (mã định danh), dạng viết của chúng giúp ích cho người lập trình. dễ dàng ghi nhớ nội dung ngữ nghĩa của thao tác hơn. Điều này đảm bảo giảm đáng kể số lỗi khi biên dịch chương trình.

Sử dụng địa chỉ tượng trưng là bước đầu tiên để tạo YASK. Lệnh máy tính chứa địa chỉ tượng trưng thay vì địa chỉ thực (vật lý). Dựa trên kết quả của chương trình đã biên dịch, số lượng ô cần thiết để lưu trữ các giá trị trung gian và kết quả ban đầu được xác định. Việc gán địa chỉ, được thực hiện riêng biệt với việc biên dịch chương trình theo địa chỉ tượng trưng, ​​​​có thể được thực hiện bởi một lập trình viên kém trình độ hơn hoặc một chương trình đặc biệt, điều này hỗ trợ rất nhiều cho công việc của lập trình viên.

2.1.3 Mã tự động

Ngoài ra còn có các ngôn ngữ bao gồm tất cả các khả năng của YSC, thông qua việc giới thiệu mở rộng các lệnh macro - chúng được gọi là Autocodes.

Trong các chương trình khác nhau, có một số chuỗi lệnh được sử dụng khá thường xuyên tương ứng với các quy trình nhất định để chuyển đổi thông tin. Việc thực hiện hiệu quả các quy trình như vậy được đảm bảo bằng thiết kế của chúng dưới dạng các lệnh macro đặc biệt và đưa chúng vào ngôn ngữ lập trình mà người lập trình có thể truy cập được. Lệnh macro được dịch thành lệnh máy theo hai cách - sắp xếp và tạo. Hệ thống dàn chứa "bộ xương" - một loạt lệnh thực hiện chức năng cần thiết, được biểu thị bằng lệnh macro. Các lệnh macro cung cấp khả năng truyền các tham số thực tế, trong quá trình dịch thuật, các tham số này được chèn vào “bộ khung” của chương trình, biến nó thành một chương trình máy thực.

Ngôn ngữ lập trình là ngôn ngữ hình thức được thiết kế để giao tiếp giữa người và máy tính. Thuật toán xử lý thông tin và dữ liệu được xác định bằng ngôn ngữ lập trình. Máy tính điện tử (máy tính) trực tiếp nhận biết một chương trình được trình bày bằng ngôn ngữ máy, việc lập trình trong đó rất bất tiện cho con người.

Sự phát triển của công nghệ máy tính kéo theo sự ra đời của các ngôn ngữ lập trình. Mục đích của ngôn ngữ như vậy là trang bị cho một tập hợp các công thức tính toán những thông tin bổ sung để biến tập hợp này thành một thuật toán. Sau đây, ngôn ngữ lập trình được hiểu là ngôn ngữ soạn thảo chương trình, tức là một ngôn ngữ trong đó thuật toán được viết để giải quyết vấn đề trên máy tính.

Việc lập trình cho máy tính thế hệ đầu tiên được thực hiện độc quyền bằng ngôn ngữ máy. Ngôn ngữ máy là một tập hợp các quy tắc để mã hóa dưới dạng số một số phép toán nhất định (chủ yếu là số học). Đối với tất cả các máy, chỉ có hệ thống số nhị phân là có thể hiểu được, tuy nhiên, hệ thống này đã được các lập trình viên thay thế bằng hệ bát phân để rút ngắn ký hiệu.

Hệ thống số thường được hiểu là một tập hợp các kỹ thuật đặt tên, ký hiệu số. Hệ thống viết số thông thường là hệ thống số thập phân vị trí phù hợp với thực tế là giá trị số của nó phụ thuộc vào vị trí của bất kỳ chữ số nào được sử dụng trong hệ thống này. Hệ thống số nhị phân là đơn giản nhất vì nó chỉ sử dụng hai chữ số: 0 và 1, và hệ thống số bát phân thuận tiện ở chỗ cơ số của nó, cụ thể là giá trị số 8, là lũy thừa của cơ số của hệ thống số nhị phân 2. Ví dụ: số thập phân 65 có thể được giới thiệu

· Trong hệ thập phân:

6 × 101 + 5 × 100 = 65;

trong hệ bát phân như

1 × 82 + 0 × 81 + 1 × 80 = 101;

· và trong hệ thống số nhị phân dưới dạng

1 × 26 + 0 × 25 + 0 × 24 + 0 × 23 + 0 × 22 + 0 × 2l + 1 × 20 = 100.001.

Mỗi hành động phải được thực hiện bởi máy tính sẽ được chỉ định bằng ngôn ngữ máy dưới dạng lệnh. Lệnh là thông tin được trình bày dưới dạng cho phép nhập lệnh vào máy và xác định hành động của máy tính trong một khoảng thời gian nhất định. Do đó, nói chung, mỗi lệnh xác định một phần cơ bản nào đó của quá trình xử lý thông tin, được gọi là thao tác máy. Thông tin ban đầu để xử lý được cung cấp, theo quy luật, bởi một tập hợp các giá trị cụ thể, thường được gọi là dữ liệu. Dữ liệu ban đầu để thực hiện bất kỳ hành động nào, bao gồm cả thao tác của máy, sẽ được gọi là toán hạng.

Trong trường hợp chung, lệnh phải chỉ ra loại hành động, vị trí lưu trữ trong máy (địa chỉ) của thông tin ban đầu mà thao tác máy được thực hiện, địa chỉ của kết quả, cũng như lệnh tiếp theo phải được thực hiện. được thực hiện sau cái này. Đối với các phép tính (hoặc các phép tính) số học, thông tin ban đầu được đưa ra, theo quy luật, ở dạng hai số; do đó, phải chỉ định hai địa chỉ cho nó trong lệnh. Do đó, lệnh phải chứa một opcode xác định loại hoạt động của máy sẽ được thực hiện và bốn địa chỉ: hai địa chỉ toán hạng, một địa chỉ kết quả và địa chỉ của lệnh tiếp theo. Theo quy định, số lượng địa chỉ cần thiết trong một lệnh ít hơn bốn.

Trong máy tính có lệnh ba địa chỉ, địa chỉ của lệnh tiếp theo không được chỉ định, nhưng lệnh từ ô nhớ tiếp theo (với số lớn hơn một, là địa chỉ của lệnh tiếp theo) sẽ tự động được thực thi. Ví dụ: nếu chúng ta lấy mã 01 cho thao tác cộng, sau đó để cộng hai số từ các ô được đánh số 2051 và 2052 với kết quả được đặt trong ô được đánh số 2345, trong máy ba địa chỉ, lệnh sẽ như sau:

01 2051 2052 2345 26

Cải tiến đầu tiên trong quá trình lập trình là sự ra đời của các địa chỉ tượng trưng, ​​cho phép soạn thảo các lệnh và phân bổ bộ nhớ riêng biệt. Bản chất của kỹ thuật này là chia RAM của máy thành các mảng, số ô trong đó không biết trước và số ô trong mảng được xác định bằng ký hiệu chữ và số như ai+1, ai+2,... . ., được gọi là địa chỉ tượng trưng. Việc phân bổ bộ nhớ được thực hiện bằng cách gán các giá trị số cho tất cả ai sau khi chương trình được biên dịch. Quá trình sau hoàn toàn là cơ học và có thể được tự động hóa, tức là. việc gán địa chỉ thực có thể được giao cho chính máy tính.

Sự cải tiến trong quy trình lập trình này đã sớm dẫn đến việc tạo ra các ngôn ngữ lập trình biểu tượng hoặc mã tự động. Ngôn ngữ như vậy chỉ khác với ngôn ngữ máy ở chỗ thay vì các giá trị số biểu thị mã lệnh và địa chỉ của nó, các ký hiệu tượng trưng (chữ cái) được sử dụng. Do đó, trong các mã tự động đầu tiên, có sự tương ứng 1-1 giữa các thao tác được viết bằng ngôn ngữ lập trình (hoặc mã hóa) tượng trưng và các lệnh bằng ngôn ngữ máy, như được biểu thị bằng ký hiệu 1:1 được viết sau tên của ngôn ngữ. Ví dụ: AUTOCODE 1:1 – AUTOCODE 1-1.

Sự cải tiến hơn nữa của mã tự động được thể hiện qua sự xuất hiện của các công cụ bổ sung được thiết lập, theo các quy tắc thông thường, thứ tự các hành động trong công thức số học hoặc cung cấp, trong các điều kiện cần thiết, phân nhánh quy trình tính toán, lặp lại theo chu kỳ của các phần chương trình và các hoạt động khác phát sinh từ điều kiện của bài toán. Do đó, mã tự động dần dần mất đi tiền tố 1:1 và ngôn ngữ nhập của chúng không hoàn toàn là máy mà là hướng máy. Hướng máy có nghĩa là các ngôn ngữ này tiếp tục dựa trên hệ thống lệnh của một máy tính cụ thể. Các ngôn ngữ hướng máy đầu tiên nhìn chung không hoàn hảo. Trong một số ngôn ngữ, việc mô tả trình tự tính toán đã tách khỏi bản thân các công thức, những ngôn ngữ khác có các ký hiệu phức tạp không trực quan hoặc quá chuyên biệt, trong khi những ngôn ngữ khác chỉ được điều chỉnh để giải quyết một số vấn đề hạn chế. Hạn chế chính là việc gắn ngôn ngữ vào máy này.

Với sự ra đời của máy móc thế hệ thứ hai, nhu cầu tạo ra các ngôn ngữ hoàn toàn tập trung vào các chi tiết cụ thể của nhiệm vụ và không phụ thuộc vào một máy cụ thể đã nảy sinh. Yêu cầu này càng trở nên trầm trọng hơn bởi thực tế là các máy tính của các nhãn hiệu khác nhau nhanh chóng thay thế nhau hoặc được sử dụng cùng nhau. Ngôn ngữ lập trình hướng vấn đề trở thành biểu tượng của thế hệ máy tính thứ hai. Sự phát triển của chúng ngày càng được xác định bởi tính đặc thù của nhiệm vụ chứ không phải bởi đặc điểm của máy móc. Điều nổi bật nhất là điểm chung trong các tác vụ khác nhau và điều này tập hợp các ngôn ngữ khác nhau được tạo ra trong thời đại thống trị của các tác vụ điện toán. Những ngôn ngữ này thường được gọi là ngôn ngữ thuật toán hình thức hoặc đơn giản là ngôn ngữ thuật toán.

Rất nhiều yêu cầu đối với một ngôn ngữ thuật toán hình thức. Đầu tiên, nó phải mang tính trực quan, có thể đạt được bằng cách sử dụng các ký hiệu toán học hiện có và các phương tiện trực quan dễ hiểu khác. Thứ hai, nó phải linh hoạt để có thể mô tả bất kỳ thuật toán nào mà không có sự phức tạp không cần thiết do không đủ phương tiện trực quan. Thứ ba, ngôn ngữ được yêu cầu phải rõ ràng - việc ghi lại bất kỳ thuật toán nào, được thực hiện tuân thủ tất cả các quy tắc của ngôn ngữ, không được phép diễn giải khác nhau. Thứ tư, nhiều giai đoạn - một thuật toán phức tạp có thể được mô tả là sự kết hợp của các thuật toán đơn giản hơn. Và cuối cùng, ngôn ngữ phải thống nhất - một mặt, số lượng phương tiện trực quan không được quá lớn, mặt khác, cần phải sử dụng cùng một phương tiện để diễn đạt các khái niệm giống nhau hoặc liên quan. trong các phần khác nhau (theo mục đích của chúng) của thuật toán. Ngôn ngữ này phục vụ:

· phương tiện tư duy - sự không hoàn hảo về mặt logic của phương pháp giải quyết vấn đề được đề xuất thường bộc lộ trong quá trình viết phương pháp này bằng ngôn ngữ thuật toán;

· một phương tiện giao tiếp giữa mọi người - một mô tả về quá trình được hoàn thành bởi một người phải có thể truy cập được đối với những người khác;

· Trung gian giữa người và máy - trong trường hợp này, việc dịch từ ngôn ngữ thuật toán sang ngôn ngữ máy được thực hiện bởi chính máy bằng một chương trình đặc biệt - trình dịch.

Một trong những ngôn ngữ đầu tiên và thành công nhất thuộc loại này là Fortran, do IBM phát triển. Năm 1954, một nhóm chuyên gia lập trình người Mỹ đã công bố báo cáo đầu tiên về ngôn ngữ Fortran. Tên của ngôn ngữ xuất phát từ cụm từ công thức DỊCH - chuyển đổi công thức. Ngôn ngữ Fortran không chỉ tồn tại cho đến ngày nay mà còn tự tin giữ vị trí đầu tiên trên thế giới về mức độ phổ biến. Trong số những lý do cho sự tồn tại lâu dài như vậy, người ta có thể lưu ý đến cấu trúc đơn giản của cả Fortran và những người dịch dành cho nó. Chương trình Fortran được viết dưới dạng một chuỗi các câu hoặc toán tử (toán tử là mô tả về một số chuyển đổi thông tin) và được định dạng theo các quy tắc nhất định. Các quy tắc này áp đặt các hạn chế, đặc biệt, về hình thức ghi và vị trí của các bộ phận của toán tử trong dòng biểu mẫu dành cho toán tử ghi. Một chương trình viết bằng Fortran bao gồm một hoặc nhiều đoạn (chương trình con) câu lệnh. Đoạn điều khiển hoạt động của toàn bộ chương trình được gọi là chương trình chính.

Fortran được hình thành để sử dụng trong điện toán khoa học và kỹ thuật. Tuy nhiên, ngôn ngữ này dễ dàng mô tả các nhiệm vụ bằng logic phân nhánh (mô hình hóa quy trình sản xuất, giải quyết các tình huống trò chơi, v.v.), một số nhiệm vụ kinh tế và đặc biệt là các nhiệm vụ chỉnh sửa (biên soạn bảng, tóm tắt, báo cáo, v.v.).

Một sửa đổi của ngôn ngữ Fortran, xuất hiện vào năm 1958, được gọi là Fortran II và chứa các khái niệm về chương trình con và các biến chung để cung cấp giao tiếp giữa các phân đoạn.

Đến năm 1962, sự xuất hiện của ngôn ngữ được gọi là Fortran IV, ngôn ngữ được sử dụng phổ biến nhất hiện nay, đã có từ đầu. Công việc của ủy ban tại Hiệp hội Tiêu chuẩn Hoa Kỳ (ASA) bắt đầu từ cùng thời điểm, cơ quan này đã phát triển (đến năm 1966) hai tiêu chuẩn - ngôn ngữ FORTRAN ​​và FORTRAN cơ bản. Các ngôn ngữ này gần tương ứng với sửa đổi IV và II, nhưng Fortran cơ bản là một tập hợp con của Fortran, trong khi Fortran II không phải là tập hợp con của Fortran IV.

Ngôn ngữ Fortran tiếp tục phát triển và cải tiến cho đến ngày nay, ảnh hưởng đến sự hình thành và phát triển của các ngôn ngữ khác. Ví dụ: Fortran là nền tảng cho ngôn ngữ tương tác BASIC và phần mở rộng BASIC Plus của nó, các ngôn ngữ được sử dụng rộng rãi trong tất cả các hệ thống chia sẻ thời gian, các ngôn ngữ để dạy kỹ năng sử dụng ngôn ngữ thuật toán trong thực hành lập trình. Những ngôn ngữ này được triển khai đặc biệt trên máy tính cá nhân. Hiện tại, một tiêu chuẩn mới đã được tạo ra - Fortran 77.

Ngay sau khi Fortran ra đời (1957), Ngôn ngữ ALGOritmic (ngôn ngữ thuật toán) đã xuất hiện, được tạo ra trên cơ sở hợp tác quốc tế sâu rộng. Năm 1960, một thông báo chính thức được công bố về một ngôn ngữ thuật toán có tên ALGOL-60, trong đó số 60 biểu thị năm ngôn ngữ được phê duyệt.

ALGOL-60 được tạo ra sau sự phát triển và ứng dụng thực tế của Fortran, do đó được đặc trưng bởi cả việc giới thiệu các công trình mới và khái quát hóa các khái niệm có trong Fortran. Ví dụ: nếu các toán tử trong Fortran theo quan điểm chức năng được chia thành có thể thực thi và không thể thực thi, thì trong Algol không có sự phân chia như vậy và vai trò của các toán tử Fortran không thể thực thi được thực hiện bởi các cấu trúc được gọi là mô tả.

Có những khác biệt khác. Tuy nhiên, điểm chung của Fortran và Algol là cả hai ngôn ngữ đều dựa trên khái niệm biểu thức, gần như trùng khớp với khái niệm biểu thức toán học chỉ sử dụng các phép toán đại số và các hàm cơ bản. Các đối tượng đơn giản nhất để tạo nên các biểu thức là số nguyên, số thực gần đúng và giá trị Boolean.

ALGOL được công nhận rộng rãi như một công cụ rất thuận tiện để xuất bản các thuật toán và giảng dạy những kiến ​​thức cơ bản về lập trình.

Cho đến gần đây, cả Fortran và Algol-60 đều xứng đáng với cái tên ngôn ngữ phổ quát, vì chúng cung cấp chương trình cho phần lớn các vấn đề khoa học và kỹ thuật (chủ yếu là các vấn đề tính toán). Nhưng tất nhiên, không có ngôn ngữ nào trong số này có thể mô tả được tất cả các vấn đề nảy sinh mà không có ngoại lệ. Do đó, cùng lúc đó, các ngôn ngữ thuật toán với định hướng khác đã xuất hiện, đáp ứng nhu cầu của những lĩnh vực khoa học và công nghệ mới bắt đầu phát triển mạnh mẽ trong những năm tiếp theo.

Một ví dụ là nhiệm vụ kinh tế - nhiệm vụ kế toán tài sản vật chất, sản phẩm sản xuất, nhân sự, tài chính, v.v. doanh nghiệp hoặc các ngành công nghiệp. Đối với các tác vụ như vậy, hành động chính là các thao tác đầu vào và đầu ra với số lượng phép tính đơn giản tương đối nhỏ, cũng như xử lý tuần tự các mảng dữ liệu. Việc mô tả các hành động thuộc loại này có thể được thực hiện bằng COBOL (Ngôn ngữ định hướng kinh doanh chung), do IBM đề xuất vào năm 1959.

Các vấn đề xử lý thông tin mang tính biểu tượng phát sinh chủ yếu trong lĩnh vực nghiên cứu khoa học. Ví dụ, đây là việc chuyển đổi các công thức, giải phương trình (không phải bằng số mà ở dạng phân tích), phân tích và tổng hợp văn bản bằng ngôn ngữ nhân tạo hoặc tự nhiên (đặc biệt là lập trình tự động và dịch máy), v.v.

Trong số các ngôn ngữ để xử lý thông tin tượng trưng, ​​ngôn ngữ Lisp, được tạo ra bởi một nhóm các nhà nghiên cứu tại Viện Công nghệ Massachusetts vào năm 1960, rất phổ biến, chủ yếu là trong số các đại diện của khoa học vật lý và toán học. Trong ngôn ngữ này, tất cả thông tin đang được xử lý, bao gồm cả chính chương trình, được sắp xếp thành cái gọi là danh sách - chuỗi các phần tử. Một phần tử có thể là phần tử chính (một chữ cái hoặc một số) hoặc một danh sách. Bằng cách này, các cấu trúc phức tạp tùy ý có thể phát sinh.

Một ngôn ngữ khác, Snobol, được sử dụng chủ yếu để phân tích máy các văn bản được viết bằng ngôn ngữ tự nhiên. Khái niệm chính trong đó là một chuỗi - một chuỗi các chữ cái, số và các ký tự khác tùy ý. Thao tác chính là tìm kiếm một phần của chuỗi được xây dựng theo một hình ảnh nhất định trong chuỗi và thay thế phần này bằng một chuỗi khác. Cả hình ảnh và các dòng thay thế nó đều bao gồm các phần tử riêng lẻ thuộc loại đơn giản. Kết quả tìm kiếm xác định chuỗi hành động tiếp theo. Ngôn ngữ Snoball rất dễ học.

Ưu điểm chính của các ngôn ngữ thuật toán độc lập với máy, hướng vấn đề là chúng được xây dựng với sự xem xét tối đa các ý tưởng của con người, nếu không phải về bản chất thì về dạng của vấn đề đang được giải quyết, với sự gần đúng tối đa với dạng trong mà mọi người quen với việc mô tả những vấn đề này và tính đến những mối liên hệ logic mà anh ta đã học được để xác định trong các hiện tượng đang nghiên cứu.

Ví dụ, Algol được đặc trưng bởi sự gần đúng với biểu tượng toán học thông thường. Fortran, không giống như Algol, gần với ngôn ngữ máy hơn là ngôn ngữ của con người. Lisp được đặc trưng bởi việc sử dụng bộ máy được gọi là mô tả đệ quy, được sử dụng rộng rãi trong logic toán học, trong nghiên cứu về nền tảng của toán học, v.v.

Một mặt, sự phong phú của các ngôn ngữ thuật toán xuất hiện trong thế hệ máy tính thứ hai phần lớn được giải thích là do thời trang, mặt khác là do bất kỳ ngôn ngữ được đề xuất nào không có khả năng mô tả một cách thuận tiện tất cả các vấn đề. điều đó đã nảy sinh. Thế hệ máy tính thứ ba đưa vào chương trình nghị sự phát triển một cách tiếp cận mới để tạo ra một ngôn ngữ thuật toán thực sự phổ quát.

Một trong những nỗ lực thuộc loại này là việc IBM tạo ra ngôn ngữ thuật toán PL/1 (Ngôn ngữ lập trình/1 - một ngôn ngữ lập trình). Nó dựa trên các ngôn ngữ Fortran và Cobol, một số công cụ và khái niệm trực quan được lấy từ Algol và các ngôn ngữ khác, đặc biệt là các ngôn ngữ để xử lý thông tin tượng trưng. Sau đó, một số phiên bản của ngôn ngữ được xuất bản liên tiếp, rất khác nhau, nhưng dần dần ngôn ngữ đã ổn định và hiện nay các phiên bản mới khác với các phiên bản trước chỉ ở chỗ sửa đổi biên tập, loại bỏ những điểm không chính xác hoặc cải thiện các yếu tố riêng lẻ.

Các thành phần chính của một chương trình được viết bằng ngôn ngữ PL/1 là các toán tử, với sự trợ giúp của chúng, cả dữ liệu và các hoạt động xử lý của chúng đều được mô tả. Tương tự với Fortran, chương trình nguồn là tập hợp chương trình chính và các chương trình con ở dạng khối. Khái niệm khối trong PL/l dựa trên khái niệm khối trong ngôn ngữ ALGOL-60. Do đó, ngôn ngữ này được xây dựng rộng rãi dựa trên các khái niệm của các ngôn ngữ thuật toán hiện có và theo truyền thống của chúng.

Một nỗ lực khác có liên quan đến sự phát triển hơn nữa của Algol. Năm 1968, một tài liệu được xuất bản phác thảo nền tảng của một ngôn ngữ thuật toán phổ quát mới, được gọi là ALGOL-68. Trong ngôn ngữ này, số lượng khái niệm cơ bản được giảm xuống mức tối thiểu hợp lý nhằm đạt được sức mạnh hình tượng cao của ngôn ngữ, đảm bảo sự tự do kết hợp và tương tác giữa các khái niệm này với nhau.

Ngôn ngữ ALGOL-68 là ngôn ngữ truyền thống vì nó cố gắng cung cấp cho tất cả người dùng các công cụ làm sẵn để mô tả thuật toán của họ. Cho đến nay, cách tiếp cận này không thể ngăn cản sự xuất hiện ngày càng nhiều ngôn ngữ chuyên biệt. Vì vậy, vào năm 1971, ngôn ngữ thuật toán Pascal đã được xuất bản, được đặt theo tên của nhà khoa học vĩ đại người Pháp của thế kỷ 17, người đầu tiên trên thế giới phát minh ra thiết bị tự động cho phép cộng số. Ngôn ngữ Pascal là ngôn ngữ kế thừa của Algol-60; nó có cấu trúc tương tự như ngôn ngữ PL/l và Algol-68, nhưng Pascal ngắn gọn hơn. Ngôn ngữ Pascal gần như đơn giản như BASIC, nhưng Pascal góp phần giới thiệu công nghệ lập trình hiện đại dựa trên việc xây dựng dần dần một chương trình bao gồm các thủ tục nhỏ, được xác định rõ ràng, tức là. Các ý tưởng về lập trình có cấu trúc được thực hiện một cách nhất quán. Một tính năng quan trọng khác của Pascal là khái niệm cấu trúc dữ liệu là một trong những khái niệm cơ bản, cùng với khái niệm thuật toán, làm nền tảng cho lập trình.

Dựa trên ngôn ngữ Pascal, ngôn ngữ Ada được tạo ra vào cuối những năm 70, có phạm vi ứng dụng rất rộng. Ngôn ngữ này được đặt theo tên của nữ lập trình viên đầu tiên, Ada Lovelace. Ngôn ngữ thuật toán của Địa ngục đã trải qua những thay đổi nhất định trong quá trình tiến hóa và hiện nay có đầy đủ những nét đặc trưng của một ngôn ngữ tiêu chuẩn. Nó là một ngôn ngữ có cấu trúc cao và đặc biệt thích hợp để phát triển các hệ thống thời gian thực. Tuy nhiên, ngôn ngữ Ada quá cồng kềnh, dài dòng và không mang lại cho người lập trình đủ tự do.

Không giống như các ngôn ngữ cấp cao được liệt kê xuất hiện vào đầu những năm 80, ngôn ngữ lập trình C là ngôn ngữ cấp cao tương đối thấp. Nhưng điều đó không có nghĩa là ngôn ngữ không đủ mạnh. Ngôn ngữ C là ngôn ngữ phổ quát có liên quan chặt chẽ với hệ điều hành UNIX phổ biến (cả hệ thống UNIX và phần mềm của nó đều được viết bằng C). Ngôn ngữ thuật toán C phản ánh khá đầy đủ khả năng của máy tính hiện đại, cho phép bạn viết chương trình rất hiệu quả mà không cần dùng đến ngôn ngữ hợp ngữ, chủ yếu là nhờ thiết kế luồng điều khiển tuần tự, đơn giản. Kiểm tra, vòng lặp, nhóm và chương trình con được cung cấp, nhưng không cung cấp đa chương trình, hoạt động song song, đồng bộ hóa và coroutines - những thuộc tính không thể thiếu của các ngôn ngữ mạnh mẽ (Ada, PL/1, Algol-68).

Gần đây, có xu hướng tạo ra cái gọi là ngôn ngữ phổ quát có thể mở rộng. Ý tưởng chính của hướng đi này không phải là tránh các ngôn ngữ phương ngữ chuyên biệt mà là tạo cơ sở chung cho “lập trình phương ngữ”.

Ngôn ngữ được mở rộng phải có phương tiện phân tích văn bản của bất kỳ phần mở rộng nào để tìm ra văn bản nào đúng ngữ pháp cho một phương ngữ nhất định và chúng có cấu trúc gì. Một ngôn ngữ như vậy sẽ cung cấp cho người tiêu dùng tương lai một số khả năng quan trọng: ví dụ: xây dựng các mô hình ngữ nghĩa (tức là giới thiệu các thuật ngữ mới để mô tả các khái niệm mà chúng thể hiện, mối quan hệ của chúng với một số khái niệm cơ bản, ban đầu và với các khái niệm được giới thiệu trước đó), mô tả việc triển khai các phần mở rộng – cách trình bày phù hợp nhất bằng cách sử dụng các công cụ có sẵn cho máy tính hiện đại. Có thể lưu ý các tính năng đặc trưng khác của các ngôn ngữ mở rộng.

Xin chào, tôi sẽ trả lời một phần câu hỏi:
Mình chưa từng tham gia lập trình nên mong nhận được câu trả lời chi tiết nên bắt đầu từ đâu và học những gì để dễ dàng hơn, xin cảm ơn trước.

Mình viết nhanh nên có thể có sai sót.
Hoặc, Chọn ngôn ngữ nào để sau này có thể dễ dàng viết bằng 10 ngôn ngữ. (quan trọng, hãy kiểm tra, không lãng phí thời gian).

************************************************************************************************************

Tôi đã dạy ngôn ngữ lập trình được vài năm.
Tôi đã quan sát những người khác nhau. Theo quy luật, chủ đề được chọn sẽ dẫn con người đến với ngôn ngữ.
Một số người thích trò chơi, những người khác thích chương trình. ai đó muốn viết bot, v.v.

Thông thường, sau khi bắt đầu học một ngôn ngữ sẽ đến lúc một người học nhiều hơn về ngôn ngữ và anh ta muốn viết các ứng dụng hoàn toàn khác.
Điều này không có nghĩa là anh ấy đã thay đổi quyết định, anh ấy chỉ mới bắt đầu hiểu được những khả năng có thể xảy ra.

Sau đó bắt đầu nghi ngờ về việc liệu bạn có chọn đúng ngôn ngữ lập trình hay không, v.v.

Tôi đã suy nghĩ về câu hỏi này trong nhiều năm và đi đến kết luận này.

1. Lỗi. Bạn không thể chọn ngôn ngữ cấu hình hẹp.
Trước tiên, bạn cần chọn một ngôn ngữ có mục đích chung để học. Python phù hợp hơn cho việc này.
Python sẽ mở đường cho bất kỳ phần mềm nào vì nó chứa một số lượng lớn thư viện.
Ví dụ: bạn có thể viết trang web bằng Django. Hoặc bạn có thể viết các chương trình đồ họa, chẳng hạn như sử dụng PyQt (thư viện viết bằng C++, chạy Python).
Bạn có thể thực hiện thử nghiệm hoặc học máy (nghĩa là làm cho các trang web và chương trình trở nên thông minh hơn để có thể tự đưa ra quyết định. Tất cả các gói này đều sử dụng thư viện NumPy được viết bằng C. Và có một số lượng lớn trong số đó.
Skipy là một gói chứa tập hợp các chương trình để xử lý mọi thứ, bất kể phức tạp đến đâu.

Tôi hy vọng các khả năng là rõ ràng.

Python là một ngôn ngữ được gõ động. nghĩa là, một nửa công việc đã được thực hiện cho bạn.
Sau khi học Python, nhìn chung bạn sẽ bắt đầu học lập trình và sẽ tạo ra phần mềm và có thể kiếm tiền.

Nếu bạn nhận ra rằng bạn quan tâm, thì bạn có thể tiếp tục.
Hãy nhớ rằng tôi đã nói ngay từ đầu rằng điều quan trọng là chọn một ngôn ngữ có mục đích chung.

Vì vậy, đây là quy tắc thứ hai, Nếu bạn vẫn quyết định trở thành một chuyên gia cấp cao, bạn cần chọn ngôn ngữ thứ hai, ngôn ngữ làm nền tảng cho hầu hết các ngôn ngữ khác.

Đây là ngôn ngữ C.
C khá đơn giản, ngôn ngữ rõ ràng, rất ngắn gọn và nhanh chóng.
Nó cần thiết để mở đường cho tất cả các ngôn ngữ giống C khác.
Trên thực tế, chẳng hạn, để hiểu C++, bạn chỉ cần nhìn vào sự khác biệt.

Tôi đã tự mình tìm ra điều này trong nhiều năm, cách đây không lâu tôi xem được một đoạn video của Harvard, tôi rất vui vì mình đã đúng.
Nhiều trường đại học sử dụng phương pháp này.

Tại sao kế hoạch này hoạt động?

1. Python là ngôn ngữ có mục đích chung sẽ giới thiệu cho bạn về các phần mềm khác nhau.
Bạn sẽ tìm ra những gì bạn muốn mà không cần vượt quá ngôn ngữ. Tôi đang nói cụ thể về thời gian, vì mất nó thì quá đắt.

2. Bạn sẽ làm quen với các mô hình có trong mọi ngôn ngữ, loại đối tượng (ví dụ: danh sách, chuỗi, v.v.).
Bạn sẽ làm quen với các biến. với các thao tác trên đồ vật và bạn sẽ hiểu rằng có một ngôn ngữ từ bên trong.

Tôi sẽ giải thích nó đơn giản hơn. Hàng ngày chúng ta sử dụng đầu mình như một chiếc máy tính.
Ví dụ, vợ tôi bảo tôi đến cửa hàng vì cô ấy định nấu món borscht.
Theo quy định, hầu hết mọi người đều viết ra, mua củ cải, cà rốt, v.v.
Tức là bạn đã nhanh chóng sắp xếp mọi hành động trong đầu.
Đi đến một cửa hàng. Lấy danh sách, đọc nó, tìm quầy bán đồ ăn, cho vào giỏ hàng, thanh toán rồi mang về nhà. Hãy đưa thứ này cho vợ anh.

Đã có rất nhiều hoạt động trong đầu của bạn.

Với máy tính cũng vậy, chỉ có máy tính cần được giải thích.
Ví dụ: nếu chúng ta đang viết một chương trình. đi đến cửa hàng, chúng ta sẽ cần thứ gì đó có thể cho máy tính biết phải làm gì.

Đây chính xác là lý do tại sao ngôn ngữ lập trình được phát minh.

Tôi thường nói với học trò của mình rằng rằng mọi người đều đã là lập trình viên vì họ thực hiện một số hành động nhất định hàng ngày.
Đối với chương trình, có cùng một danh sách, hay đúng hơn là một kiểu dữ liệu hoặc một kiểu đối tượng, được gọi là danh sách.
Nó chỉ được biểu thị bằng ngôn ngữ, chẳng hạn như trong Python bằng hai dấu ngoặc vuông [“củ cải đường”, “cà rốt”]

Xin lưu ý rằng ngôn ngữ lập trình, theo quy luật, đã được phát minh để phù hợp với nhu cầu của mọi người.
Bạn có thể thêm bất cứ thứ gì vào danh sách, chẳng hạn như muối.
Khu vực này được gọi là hoạt động đối tượng.
Nếu chúng ta tính toán nhanh trong đầu, chúng ta sẽ đi đến quầy, đưa tay ra và bỏ cà rốt vào giỏ chẳng hạn.
Vâng, máy tính cần được giải thích. Tức là chúng tôi hiểu. rằng bạn cần thêm những củ cà rốt giống nhau vào giỏ hàng, nhưng máy tính sẽ chỉ hiểu lệnh của nó, ví dụ như add in Python sẽ phát ra âm thanh thêm vào.

Tôi nghĩ rằng quá trình này là rõ ràng.

Sau đó tôi sẽ quay lại những phát biểu trên.
Vì vậy Python sẽ cho bạn cơ hội bắt đầu viết bất cứ thứ gì, chương trình. trò chơi, chương trình dành cho Android, trang web.
Nếu ai đó nói với bạn (tôi nhắc lại) rằng Python chậm, đừng tin điều đó.
Bạn có sử dụng YouTube không? Vì vậy, hầu hết nó được viết bằng Python. (nguồn M. Lutz).
Thứ hai, như tôi đã nói trước đó, Python có một số lượng lớn các thư viện, ví dụ như PyQt, viết chương trình đồ họa. Bản thân thư viện được viết bằng C++ (ngôn ngữ nhanh nhất hiện nay). Và chúng tôi quản lý nó bằng Python.
Bản chất của lập trình rất đơn giản. Tôi lấy một tiện ích đã có sẵn nhiều hành động và chương trình đã sẵn sàng.

Nhưng có một điều quan trọng hơn bạn cần.
Trước khi bắt đầu lập trình, bạn chỉ có một mong muốn, nhưng bên trong vẫn còn câu hỏi, chọn ngôn ngữ nào, rồi lại nghi ngờ, liệu ngôn ngữ đó có phù hợp không?
Đây là lý do tại sao việc học Python đầu tiên lại quan trọng. Đây sẽ là ngôn ngữ giống hệt nhau vì nó sẽ giúp bạn hiểu những gì bạn thực sự sẽ lập trình.

Sau khi viết ứng dụng bằng Python, sau khoảng 1-1,5 năm, bạn sẽ bắt đầu hiểu bản thân mình, tức là hiểu mình thực sự muốn gì.

Bạn sẽ bắt đầu phát triển những mong muốn thực sự, cụ thể.
Ví dụ, bạn chắc chắn sẽ hiểu rằng bạn sẽ viết trang web. Django Framework sẽ là quá đủ cho bạn.

Tôi sẽ dừng lại ở đây.
Liên kết Django Python là một cách tiếp cận rất nguy hiểm.
vì Django là một thế giới rộng lớn đến mức khi bị nó cuốn đi, một người bắt đầu mắc chứng nghiện như nghiện khuôn khổ. Nó là gì?
Một người bắt đầu mất khả năng viết bằng Python, vì Django là một khung hoàn toàn tự trị có các mô-đun, lớp, kiến ​​​​trúc và cấu trúc riêng.

Và bản thân Python bắt đầu bị lãng quên.

Quan trọng. Nghiên cứu ví dụ Django và PyQt. Vấn đề ở đây là gì?
Hãy chắc chắn nghiên cứu những gì sẽ phát triển bạn bằng Python thuần túy. Tôi khuyên dùng Android vì nó không chỉ hữu ích mà còn đầy hứa hẹn.

Nhân tiện, nhân đây tôi sẽ trả lời câu hỏi, có cần thiết phải học Python cho Django không?
Có cần. Bạn nên học gì? Tối thiểu là các loại đối tượng và hiểu biết ban đầu về OOP.
Các loại đối tượng là cần thiết để giảm thiểu lãng phí thời gian.
Ví dụ, tôi đã chứng kiến ​​một người mới gặp khó khăn trong một tuần. và sau đó tuyên bố rằng ông không đưa ra một câu trích dẫn nào.

Nếu nghiên cứu các loại đối tượng, anh ta sẽ thấy ngay rằng trong đoạn mã, chuỗi (loại đối tượng) chúng được biểu thị bằng dấu ngoặc đơn hoặc dấu ngoặc kép.

Thứ hai, trợ giúp của Django sẽ không rõ ràng vì nó giải thích các kiểu dữ liệu.

Và cuối cùng tôi sẽ kết thúc. Vì tôi đã thất bại VK C vài lần rồi nhưng tôi cứ trì hoãn.

Khi bạn viết Python, bạn sẽ có ý tưởng về những gì bạn muốn.
Do đó, bạn sẽ chọn ngôn ngữ lập trình tiếp theo của mình một cách có ý thức.

Để không mắc lỗi sau Python, bạn cần học C.
Bởi vì những ngôn ngữ như vậy. như PHP, Java. C++, C Sharp và nhiều ngôn ngữ khác có cú pháp C tương tự.
Việc nghiên cứu Ngôn ngữ tiếp theo chỉ đơn giản là xem xét và áp dụng ngay những điểm khác biệt.

Đây là cách chỉ học hai ngôn ngữ sẽ giúp bạn tiếp cận được hàng tá ngôn ngữ.

Tôi nhắc lại, điều quan trọng trong cách tiếp cận này là sự tiến bộ mà không lãng phí thời gian.

Bạn có thể bắt đầu bằng cách xem khóa học miễn phí,
một kỹ thuật để hiểu ngay lập tức về Python.
Đọc trong hình nó là gì

Ở trên tôi đã mô tả quá trình đi đến cửa hàng. Và vì một lý do. Nhiều người không hiểu rằng ngôn ngữ được phát minh ra để làm cho cuộc sống dễ dàng hơn. (đây là những gì cô gái Anna đã viết, như cô ấy nói, nó đã lảng tránh cô ấy.).

Nhưng sự hiểu lầm về điểm đơn giản này đã ngăn cản hầu hết mọi người học một ngôn ngữ. Họ bị rối loạn trong đầu, ngôn ngữ tự nó và tư duy của học sinh cũng tự nó. Và người đó bắt đầu suy nghĩ, làm sao mình có thể suy nghĩ như một lập trình viên vào thời điểm đó? anh ấy đã suy nghĩ như một lập trình viên như thế nào.

Tôi bày tỏ quan điểm của mình, tùy bạn quyết định.
Tôi đã cho bạn thấy nhiều yếu tố. mà trước đây bạn chưa tính đến..
Nhưng ít nhất nó có tác dụng với tôi.

Tôi hy vọng bài viết sẽ đơn giản và toàn diện.

Một chi tiết nữa.
Điều quan trọng là biến ngôn ngữ thành một phần của cuộc sống.
Làm thế nào để hiểu một ngôn ngữ từ đầu đến lập trình công nghiệp? ()

Chúc các bạn thành công.

Cảm ơn bạn đã tin tưởng.

Trang chủ > Bài giảng

Bài học7 . Ngôn ngữ lập trình và hệ thống.
Cấu trúc dữ liệu.

Ngôn ngữ lập trình và phân loại của chúng. Khái niệm về hệ thống lập trình, các chức năng và thành phần chính của nó. Nguyên lý hoạt động của môi trường lập trình. Môi trường lập trình "hoạt động" và "mô-đun": ưu điểm và nhược điểm. Trình thông dịch và trình biên dịch. Các chương trình phát sóng và các quy trình liên quan.

Dữ liệu và quá trình xử lý chúng. Đơn giản (kiểu dữ liệu phi cấu trúc). Các kiểu dữ liệu có cấu trúc.

Ngôn ngữ lập trình và phân loại của chúng.

Ngôn ngữ lập trình- một hệ thống ký hiệu chính thức được thiết kế để mô tả các thuật toán ở dạng thuận tiện cho người thực hiện (ví dụ: máy tính). Ngôn ngữ lập trình xác định một tập hợp các quy tắc từ vựng, cú pháp và ngữ nghĩa được sử dụng để soạn thảo một chương trình máy tính. Nó cho phép lập trình viên xác định chính xác những sự kiện nào máy tính sẽ phản ứng, cách dữ liệu sẽ được lưu trữ và truyền đi cũng như những hành động nào sẽ được thực hiện trên máy tính trong các trường hợp khác nhau.

Kể từ khi tạo ra những cỗ máy lập trình đầu tiên, nhân loại đã nghĩ ra hơn hai nghìn rưỡi ngôn ngữ lập trình. Mỗi năm số lượng của họ được bổ sung thêm những cái mới. Một số ngôn ngữ chỉ được sử dụng bởi một số ít nhà phát triển của riêng họ, trong khi những ngôn ngữ khác được hàng triệu người biết đến. Các lập trình viên chuyên nghiệp đôi khi sử dụng hơn chục ngôn ngữ lập trình khác nhau trong công việc của mình.

Người sáng tạo ngôn ngữ diễn giải khái niệm này theo cách khác ngôn ngữ lập trình. Trong số các cộng đồng địa điểm được hầu hết các nhà phát triển công nhận là:

    Chức năng: Ngôn ngữ lập trình được dùng để viết các chương trình máy tính được sử dụng để truyền hướng dẫn đến máy tính nhằm thực hiện một quy trình tính toán cụ thể và tổ chức điều khiển các thiết bị riêng lẻ.

    Nhiệm vụ: Ngôn ngữ lập trình khác với ngôn ngữ tự nhiên ở chỗ nó được thiết kế để truyền lệnh và dữ liệu từ người sang máy tính, trong khi ngôn ngữ tự nhiên chỉ được sử dụng để con người giao tiếp với nhau. Về nguyên tắc, chúng ta có thể khái quát định nghĩa về “ngôn ngữ lập trình” - đây là một cách truyền tải mệnh lệnh, mệnh lệnh, hướng dẫn hành động rõ ràng; trong khi ngôn ngữ của con người cũng dùng để trao đổi thông tin.

    Chấp hành: Ngôn ngữ lập trình có thể sử dụng các cấu trúc đặc biệt để xác định và thao tác các cấu trúc dữ liệu cũng như kiểm soát quá trình tính toán.

Các ngôn ngữ lập trình đầu tiên rất nguyên thủy và khác rất ít so với các chuỗi số 1 và số 0 được chính thức hóa, có thứ tự mà máy tính có thể hiểu được. Theo quan điểm của người lập trình, việc sử dụng những ngôn ngữ như vậy là vô cùng bất tiện, vì anh ta phải biết mã số của tất cả các lệnh máy và phải tự mình phân bổ bộ nhớ cho các lệnh chương trình và dữ liệu.

Để tạo điều kiện giao tiếp giữa người và máy tính, các ngôn ngữ lập trình như Trình biên dịch. Các đại lượng thay đổi bắt đầu được biểu diễn bằng những tên tượng trưng. Mã hoạt động số đã được thay thế bằng cách ghi nhớ dễ nhớ hơn. Ngôn ngữ lập trình đã tiến gần hơn đến ngôn ngữ của con người và rời xa ngôn ngữ ra lệnh của máy.

Ngôn ngữ lập trình bắt đầu xuất hiện vào giữa những năm 50. Một trong những ngôn ngữ đầu tiên thuộc loại này là ngôn ngữ Fortran(tiếng Anh FORTRAN từ FORmula TRANslator - trình dịch công thức), được phát triển vào năm 1957. Fortran được sử dụng để mô tả một thuật toán giải quyết các vấn đề khoa học và kỹ thuật bằng máy tính kỹ thuật số. Cũng giống như những chiếc máy tính đầu tiên, ngôn ngữ này chủ yếu nhằm mục đích thực hiện các phép tính toán học và khoa học tự nhiên. Ở dạng cải tiến, ngôn ngữ này đã tồn tại cho đến ngày nay. Trong số các ngôn ngữ cấp cao hiện đại, nó là một trong những ngôn ngữ được sử dụng nhiều nhất trong nghiên cứu khoa học. Các biến thể phổ biến nhất là Fortran II, Fortran IV, EASIC Fortran và các dạng tổng quát của chúng.

Sau Fortran, ngôn ngữ này xuất hiện vào năm 1958-1960 ALGOL(Algol-58, Algol-60) (ALGOL tiếng Anh từ Ngôn ngữ thuật toán - ngôn ngữ thuật toán). ALGOL được cải tiến vào năm 1964-1968 - ALGOL-68. ALGOL được phát triển bởi một ủy ban bao gồm các nhà khoa học châu Âu và Mỹ. Nó thuộc về các ngôn ngữ cấp cao và cho phép bạn dễ dàng dịch các công thức đại số thành các lệnh chương trình. Algol phổ biến ở châu Âu, bao gồm cả Liên Xô, trong khi Fortran tương đương lại phổ biến ở Mỹ và Canada. Algol có ảnh hưởng đáng kể đến tất cả các ngôn ngữ lập trình được phát triển sau này và đặc biệt là ngôn ngữ Pascal. Ngôn ngữ này, giống như Fortran, nhằm giải quyết các vấn đề khoa học và kỹ thuật. Ngoài ra, ngôn ngữ này còn được sử dụng như một phương tiện giảng dạy kiến ​​thức cơ bản về lập trình - nghệ thuật viết chương trình.

Thông thường thuật ngữ ALGOL có nghĩa là ngôn ngữ ALGOL-60, trong khi ALGOL-68được coi là một ngôn ngữ độc lập. Ngay cả khi Algol gần như không còn được sử dụng để lập trình, nó vẫn là ngôn ngữ chính thức để xuất bản các thuật toán.

Năm 1959 – 1960 ngôn ngữ được phát triển COBOL(Tiếng Anh COBOL từ Ngôn ngữ định hướng kinh doanh COMmom - một ngôn ngữ định hướng kinh doanh phổ biến). Đây là ngôn ngữ lập trình thế hệ thứ ba chủ yếu dành cho việc phát triển các ứng dụng kinh doanh. Cobol cũng nhằm mục đích giải quyết các vấn đề kinh tế, xử lý dữ liệu cho các ngân hàng, công ty bảo hiểm và các tổ chức khác thuộc loại này. Nhà phát triển tiêu chuẩn Cobol thống nhất đầu tiên là Grace Hopper ( bà ngoại cobola).

COBOL thường bị chỉ trích vì dài dòng và cồng kềnh, vì một trong những mục tiêu của những người tạo ra ngôn ngữ này là làm cho các cấu trúc càng gần với tiếng Anh càng tốt. (Cobol vẫn được coi là ngôn ngữ lập trình được viết nhiều dòng mã nhất). Đồng thời, COBOL có cơ sở vật chất tuyệt vời để làm việc với các cấu trúc dữ liệu và tệp vào thời đó, điều này đảm bảo tuổi thọ lâu dài của nó trong các ứng dụng kinh doanh, ít nhất là ở Hoa Kỳ.

Gần như đồng thời với Cobol (1959 - 1960), ngôn ngữ này được tạo ra tại Viện Công nghệ Massachusetts nói ngọng(LISP tiếng Anh từ LISt Treatment - xử lý danh sách). Lisp dựa trên việc biểu diễn một chương trình như một hệ thống các danh sách ký hiệu tuyến tính, cũng là cấu trúc dữ liệu chính của ngôn ngữ. Lisp được coi là ngôn ngữ lập trình cấp cao lâu đời thứ hai sau Fortran. Ngôn ngữ này được sử dụng rộng rãi để xử lý thông tin mang tính biểu tượng và được sử dụng để tạo ra phần mềm mô phỏng hoạt động của bộ não con người.

Bất kỳ chương trình Lisp nào cũng bao gồm một chuỗi biểu thức(các hình thức). Kết quả của chương trình là tính giá trị của các biểu thức này. Mọi biểu thức đều được viết dưới dạng danh sách- một trong những cấu trúc cơ bản của Lisp, vì vậy chúng có thể được tạo dễ dàng thông qua chính ngôn ngữ đó. Điều này cho phép bạn tạo các chương trình sửa đổi các chương trình hoặc macro khác, cho phép bạn mở rộng đáng kể khả năng của ngôn ngữ.

Ý nghĩa chính của chương trình Lisp là “cuộc sống” trong không gian biểu tượng: vận động, sáng tạo, ghi nhớ, sáng tạo thế giới mới, v.v. Lisp như một phép ẩn dụ cho bộ não, một biểu tượng, một phép ẩn dụ cho một tín hiệu: “Việc phân tích sinh học các tín hiệu của não diễn ra như thế nào, một yếu tố bên ngoài - tác động vật lý và hóa học, gây khó chịu cho cơ thể, biến thành một tín hiệu có ý nghĩa về mặt sinh học, thường là quan trọng, quyết định mọi hành vi của một người hoặc động vật và cách phân chia các tín hiệu khác nhau thành tích cực, tiêu cực và thờ ơ, thờ ơ. một nhóm, các kích thích phức tạp, được kết nối với nhau bởi một lịch sử chung và các mối quan hệ nhân quả. Trong phức hợp này, một hệ thống kích thích, bản thân kích thích tín hiệu cũng là một yếu tố cấu thành và trong những trường hợp khác, vai trò của nó có thể thuộc về một kích thích khác từ phức tạp. Tín hiệu tập trung toàn bộ trải nghiệm trong quá khứ của một con vật hoặc con người."

Vào giữa những năm 60 (1963) ngôn ngữ này được tạo ra ở trường Đại học Dartmouth (Mỹ) NỀN TẢNG(Tiếng Anh BASIC từ Mã hướng dẫn đa năng dành cho người mới bắt đầu - mã hướng dẫn biểu tượng đa năng dành cho người mới bắt đầu). Theo thời gian, khi các phương ngữ khác bắt đầu xuất hiện, phương ngữ "nguyên bản" này được gọi là Dartmouth BASIC. Ngôn ngữ này một phần dựa trên Fortran II và một phần trên ALGOL-60, với những bổ sung khiến nó phù hợp cho việc chia sẻ thời gian và sau này là xử lý văn bản và số học ma trận. BASIC ban đầu được triển khai trên máy tính lớn GE-265 với sự hỗ trợ cho nhiều thiết bị đầu cuối. Trái ngược với suy nghĩ phổ biến, vào thời điểm mới thành lập, nó là một ngôn ngữ được biên dịch.

BASIC được thiết kế để sinh viên có thể viết chương trình bằng cách sử dụng các thiết bị đầu cuối chia sẻ thời gian. Nó được tạo ra như một giải pháp cho các vấn đề liên quan đến sự phức tạp của các ngôn ngữ cũ. Nó dành cho những người dùng “đơn giản” hơn, không quan tâm nhiều đến tốc độ của chương trình mà chỉ đơn giản là khả năng sử dụng máy tính để giải quyết vấn đề của họ. Do tính đơn giản của ngôn ngữ BASIC, nhiều lập trình viên mới bắt đầu hành trình lập trình của mình với nó.

Vào cuối những năm 60 - đầu những năm 70 ngôn ngữ xuất hiện pháo đài(Tiếng Anh THỨ TƯ - thứ tư). Ngôn ngữ này bắt đầu được sử dụng trong các vấn đề điều khiển các hệ thống khác nhau sau khi tác giả của nó, Charles Moore, viết một chương trình trong đó được thiết kế để điều khiển kính thiên văn vô tuyến của Đài thiên văn Arizona.

Một số đặc tính, cụ thể là tính tương tác, tính linh hoạt và dễ phát triển, khiến Forth trở thành một ngôn ngữ rất hấp dẫn và hiệu quả trong nghiên cứu ứng dụng và tạo ra các công cụ. Các lĩnh vực ứng dụng rõ ràng của ngôn ngữ này là các hệ thống điều khiển nhúng. Nó cũng được sử dụng trong lập trình máy tính chạy các hệ điều hành khác nhau.

Ngôn ngữ xuất hiện vào năm 1972 Pascalđược đặt theo tên của nhà toán học vĩ đại người Pháp thế kỷ 17, người phát minh ra cỗ máy số học đầu tiên trên thế giới, Blaise Pascal. Ngôn ngữ này được nhà khoa học máy tính người Thụy Sĩ Niklaus Wirth tạo ra để làm ngôn ngữ giảng dạy phương pháp lập trình. Pascal là một ngôn ngữ lập trình có mục đích chung.

Các tính năng của ngôn ngữ là gõ nghiêm ngặt và sự hiện diện của các công cụ lập trình cấu trúc (thủ tục). Pascal là một trong những ngôn ngữ đầu tiên như vậy. Theo N. Wirth, ngôn ngữ này sẽ góp phần vào kỷ luật lập trình, do đó, cùng với việc gõ nghiêm ngặt, trong Pascal, sự mơ hồ về cú pháp có thể xảy ra sẽ được giảm thiểu và bản thân cú pháp cũng mang tính trực quan ngay cả khi bạn lần đầu làm quen với ngôn ngữ này.

Ngôn ngữ Pascal không chỉ dạy cách viết chương trình một cách chính xác mà còn dạy cách phát triển một phương pháp giải quyết vấn đề một cách chính xác cũng như chọn cách trình bày và sắp xếp dữ liệu được sử dụng trong vấn đề. Từ năm 1983, Pascal được đưa vào giảng dạy môn khoa học máy tính ở các trường trung học ở Mỹ.

Samuel Peipert đã phát triển ngôn ngữ để dạy học sinh tiểu học Logo. Nó đơn giản và giàu khả năng.

Dựa trên ngôn ngữ Pascal, ngôn ngữ này được tạo ra vào cuối những năm 70 Ada, được đặt theo tên nhà toán học tài năng Ada Lovelace (Augusta Ada Byron - con gái của nhà thơ Byron). Chính bà là người, vào năm 1843, đã có thể giải thích cho thế giới về khả năng của Công cụ phân tích của Charles Babbage. Ngôn ngữ Ada được phát triển theo lệnh của Bộ Quốc phòng Hoa Kỳ và ban đầu nhằm giải quyết các vấn đề kiểm soát chuyến bay vào vũ trụ. Ngôn ngữ này được sử dụng trong các bài toán điều khiển hệ thống trên tàu vũ trụ, hệ thống hỗ trợ sự sống cho phi hành gia trong chuyến bay và các quy trình kỹ thuật phức tạp.

Ada là ngôn ngữ lập trình hướng đối tượng có cấu trúc, mô-đun, chứa các phương tiện cấp cao để lập trình các quy trình song song. Cú pháp của Ada được kế thừa từ các ngôn ngữ như Algol hay Pascal, nhưng được mở rộng và cũng được làm chặt chẽ và logic hơn. Ada là một ngôn ngữ được định kiểu mạnh, nó loại trừ hoạt động với các đối tượng không có kiểu và việc chuyển đổi kiểu tự động được giảm đến mức tối thiểu.

Theo Stephen Zeigler, việc phát triển phần mềm bằng Ada nhìn chung rẻ hơn 60% và chương trình được phát triển có ít lỗi hơn 9 lần so với khi sử dụng ngôn ngữ C.

Hiện nay một ngôn ngữ phổ biến trong giới lập trình viên là (C là chữ cái trong bảng chữ cái tiếng Anh). Ngôn ngữ C có nguồn gốc từ hai ngôn ngữ - BCPLB. Năm 1967, Martin Richards đã phát triển BCPL như một ngôn ngữ để viết phần mềm hệ thống và trình biên dịch. Năm 1970, Ken Thompson đã sử dụng B để tạo ra các phiên bản đầu tiên của hệ điều hành UNIX trên máy tính DEC PDP-7. Trong cả BCPL và B, các biến không được chia thành các loại - mỗi giá trị dữ liệu chiếm một từ trong bộ nhớ và trách nhiệm phân biệt, chẳng hạn như giữa số nguyên và số thực, hoàn toàn thuộc về người lập trình.

Ngôn ngữ C được phát triển (dựa trên B) bởi Dennis Ritchie của Phòng thí nghiệm Bell và được triển khai lần đầu tiên vào năm 1972 trên máy tính DEC PDP-11. C nổi tiếng là ngôn ngữ của hệ điều hành UNIX. Ngày nay, hầu hết tất cả các hệ điều hành chính đều được viết bằng C hoặc C++. Hai thập kỷ sau, C đã có mặt trên hầu hết các máy tính. Nó độc lập với phần cứng.

Vào cuối những năm 70, Tập đã phát triển thành cái mà chúng ta gọi là “Tập truyền thống”. Năm 1983, Ủy ban Tiêu chuẩn Xử lý Thông tin và Máy tính Quốc gia Hoa Kỳ đã thiết lập một tiêu chuẩn thống nhất cho ngôn ngữ này.

Nó là một trong những ngôn ngữ lập trình phổ quát. Không giống như Pascal, nó có khả năng truy cập trực tiếp vào các lệnh máy nhất định và các vùng nhất định của bộ nhớ máy tính. được sử dụng rộng rãi như một ngôn ngữ công cụ để phát triển hệ điều hành, dịch giả, cơ sở dữ liệu và các chương trình ứng dụng và hệ thống khác. là ngôn ngữ lập trình có mục đích chung nổi tiếng về tính hiệu quả, tính kinh tế và tính di động. Trong nhiều trường hợp, các chương trình được viết bằng , có tốc độ tương đương với các chương trình được viết bằng ngôn ngữ người lắp ráp. Đồng thời, chúng có khả năng hiển thị tốt hơn và dễ bảo trì hơn. kết hợp hiệu quả và sức mạnh trong một ngôn ngữ tương đối nhỏ.

Một ngôn ngữ khác được coi là ngôn ngữ của tương lai được tạo ra vào đầu những năm 70 bởi một nhóm chuyên gia đến từ Đại học Marseille. Đây là ngôn ngữ Lời mở đầu. Nó có tên từ dòng chữ “Lập trình bằng ngôn ngữ LOGIC”. Ngôn ngữ này dựa trên các định luật logic toán học. Giống như ngôn ngữ Lisp, Prolog được sử dụng chủ yếu trong nghiên cứu lĩnh vực phần mềm mô phỏng hoạt động não bộ con người. Không giống như các ngôn ngữ được mô tả ở trên, ngôn ngữ này không mang tính thuật toán. Nó thuộc về cái gọi là mô tả (từ tiếng Anh miêu tả - miêu tả) - ngôn ngữ miêu tả. Ngôn ngữ mô tả không yêu cầu người lập trình phải phát triển tất cả các giai đoạn của một nhiệm vụ. Thay vào đó, theo quy tắc của ngôn ngữ đó, người lập trình phải mô tả một cơ sở dữ liệu tương ứng với vấn đề đang được giải quyết và một bộ câu hỏi cần được trả lời bằng cách sử dụng dữ liệu từ cơ sở dữ liệu này.

Trong những thập kỷ gần đây, lập trình đã xuất hiện và nhận được sự phát triển đáng kể. hướng đối tượng một cách tiếp cận. Đây là một phương pháp lập trình mô phỏng thế giới thực: thông tin được sử dụng để giải quyết vấn đề được biểu diễn dưới dạng tập hợp các đối tượng tương tác. Mỗi đối tượng đều có những thuộc tính và phương thức hoạt động riêng. Sự tương tác của các đối tượng được thực hiện bằng cách truyền thông điệp: mỗi đối tượng có thể nhận tin nhắn từ các đối tượng khác, ghi nhớ thông tin và xử lý nó theo một cách nhất định, sau đó gửi tin nhắn. Giống như trong thế giới thực, các đối tượng lưu trữ các thuộc tính và hành vi của chúng cùng nhau, kế thừa một số thuộc tính và hành vi đó từ đối tượng cha.

Hệ tư tưởng hướng đối tượng được sử dụng trong tất cả các sản phẩm phần mềm hiện đại, bao gồm cả hệ điều hành.

Ngôn ngữ hướng đối tượng đầu tiên mô phỏng - 67 được tạo ra như một phương tiện mô phỏng hoạt động của các thiết bị và cơ chế khác nhau. Hầu hết các ngôn ngữ lập trình hiện đại đều hướng đối tượng. Trong số đó có phiên bản mới nhất của ngôn ngữ bộ tăng áp - Pascal , C ++ , Ada và những người khác.

Hệ thống hiện đang được sử dụng rộng rãi lập trình trực quan Thị giác Nền tảng , Thị giác C ++ , Delphi và những người khác. Chúng cho phép bạn tạo các gói ứng dụng phức tạp với giao diện người dùng đơn giản và thuận tiện.

Hiện hữu nhiều phân loại ngôn ngữ lập trình . Theo cách phân loại phổ biến nhất, tất cả các ngôn ngữ lập trình đều được chia thành các ngôn ngữ thấp, caocực cao mức độ.

Tới nhóm ngôn ngữ cấp thấp bao gồm các ngôn ngữ máy và các ngôn ngữ mã hóa tượng trưng: (Autocode, Assembler). Các toán tử của ngôn ngữ này là các lệnh giống nhau của máy, nhưng được viết bằng mã ghi nhớ chứ không phải địa chỉ cụ thể mà các tên tượng trưng được sử dụng làm toán hạng. Tất cả các ngôn ngữ cấp thấp đều nhắm mục tiêu vào một loại máy tính cụ thể, nghĩa là chúng phụ thuộc vào máy. Ngôn ngữ hướng máy là ngôn ngữ có bộ toán tử và phương tiện đồ họa phụ thuộc đáng kể vào đặc điểm của máy tính (ngôn ngữ bên trong, cấu trúc bộ nhớ, v.v.).

Nhóm tiếp theo, lớn hơn đáng kể bao gồm ngôn ngữ lập trình cấp độ cao . Đó là Fortran, Algol, Cobol, Pascal, BASIC, C, Prolog, v.v. Những ngôn ngữ này độc lập với máy vì chúng không tập trung vào hệ thống lệnh của một máy tính cụ thể mà vào hệ thống toán hạng đặc trưng để ghi lại một loại thuật toán nhất định. Tuy nhiên, các chương trình được viết bằng ngôn ngữ cấp cao sẽ chiếm nhiều bộ nhớ hơn và thực thi chậm hơn so với các chương trình được viết bằng ngôn ngữ máy.

ĐẾN ngôn ngữ mức độ cực cao chỉ có thể quy ALGOL-68 và APL. Sự tiến bộ của các ngôn ngữ này là do sự ra đời của các phép toán và phép toán siêu mạnh.

ALGOL-68, trong quá trình phát triển đã có nỗ lực nhằm chính thức hóa mô tả ngôn ngữ, dẫn đến sự xuất hiện của các chương trình trừu tượng và cụ thể. Một chương trình trừu tượng được tạo ra bởi một lập trình viên, một chương trình cụ thể được bắt nguồn từ chương trình đầu tiên. Người ta cho rằng với cách tiếp cận này về cơ bản là không thể tạo ra một chương trình cụ thể không chính xác về mặt cú pháp (và lý tưởng nhất là về mặt ngữ nghĩa). Ngôn ngữ APL được xếp vào loại ngôn ngữ cấp độ cực cao do được giới thiệu các thao tác và toán tử siêu mạnh. Viết chương trình bằng ngôn ngữ này rất nhỏ gọn.

Phân loại khác chia ngôn ngữ thành ngôn ngữ xử lý tính toán và biểu tượng. Loại đầu tiên bao gồm Fortran, Pascal, Algol, BASIC, C, loại thứ hai bao gồm Lisp, Prolog, Snoball, v.v.

Trong khoa học máy tính hiện đại, có thể phân biệt hai hướng phát triển chính của ngôn ngữ lập trình: thủ tục và phi thủ tục.

Lập trình thủ tục phát sinh vào buổi bình minh của công nghệ máy tính và trở nên phổ biến. Trong các ngôn ngữ thủ tục, chương trình mô tả rõ ràng các hành động cần được thực hiện và kết quả chỉ được xác định bằng cách thu được bằng cách sử dụng một quy trình nhất định, tức là một chuỗi hành động nhất định.

Trong số các ngôn ngữ thủ tục, chúng lần lượt phân biệt cấu trúcphòng mổ ngôn ngữ. TRONG cấu trúc Trong các ngôn ngữ, toàn bộ cấu trúc thuật toán được viết bằng một toán tử: nhánh, chu trình, v.v. TRONG phòng mổ Trong các ngôn ngữ, một số thao tác được sử dụng cho việc này. Sau đây được sử dụng rộng rãi ngôn ngữ cấu trúc: Pascal, C, Ada, PL/1. Giữa phòng mổ Fortran, BASIC, Focal được biết đến.

Phi thủ tục (khai báo) lập trình xuất hiện vào đầu những năm 70 của thế kỷ 20, nhưng sự phát triển nhanh chóng của nó bắt đầu từ những năm 80, khi một dự án của Nhật Bản được phát triển nhằm tạo ra máy tính thế hệ thứ năm, mục đích của nó là chuẩn bị nền tảng cho việc tạo ra các cỗ máy thông minh. ĐẾN phi thủ tục lập trình bao gồm chức năngtrêu ghẹo não ngôn ngữ.

TRONG chức năng Trong các ngôn ngữ, một chương trình mô tả việc tính toán một hàm nhất định. Thông thường, chức năng này được chỉ định như một thành phần của các chức năng khác, đơn giản hơn, do đó được phân tách thành các chức năng đơn giản hơn, v.v. Một trong những thành phần chính trong ngôn ngữ hàm là đệ quy, tức là tính giá trị của một hàm thông qua giá trị của chính hàm đó từ các phần tử khác. Không có bài tập hoặc vòng lặp trong các ngôn ngữ chức năng cổ điển.

TRONG hợp lý Trong ngôn ngữ, chương trình không mô tả hành động nào cả. Nó xác định dữ liệu và mối quan hệ giữa chúng. Sau đó, bạn có thể đặt câu hỏi cho hệ thống. Máy sẽ xem xét dữ liệu đã biết và dữ liệu được chỉ định trong chương trình và tìm ra câu trả lời cho câu hỏi. Thứ tự tìm kiếm không được mô tả trong chương trình mà được chỉ định ngầm bởi chính ngôn ngữ. Ngôn ngữ cổ điển của lập trình logic được coi là Lời mở đầu. Việc xây dựng một chương trình logic hoàn toàn không đòi hỏi tư duy thuật toán, chương trình mô tả các mối quan hệ tĩnh của các đối tượng, còn động lực nằm trong cơ chế liệt kê và được giấu kín đối với người lập trình.

Bạn có thể chọn một lớp ngôn ngữ lập trình khác - một cách khách quan- định hướngngôn ngữcaomức độ. Những ngôn ngữ như vậy không mô tả một chuỗi hành động chi tiết để giải quyết vấn đề, mặc dù chúng chứa các yếu tố lập trình thủ tục. Các ngôn ngữ hướng đối tượng, nhờ giao diện người dùng phong phú, cung cấp cho một người giải quyết vấn đề theo hình thức thuận tiện cho họ. Một ví dụ về ngôn ngữ như vậy là ngôn ngữ lập trình giao tiếp trực quan Object Pascal.

Ngôn ngữ kịch bản các ngôn ngữ như Perl, Python, Rexx, Tcl và UNIX shell đòi hỏi phong cách lập trình rất khác so với các ngôn ngữ cấp hệ thống. Chúng không nhằm mục đích viết một ứng dụng từ đầu mà để kết hợp các thành phần, một bộ thành phần được tạo trước bằng các ngôn ngữ khác. Sự phát triển và phổ biến ngày càng tăng của Internet cũng góp phần vào sự phổ biến của các ngôn ngữ kịch bản. Vì vậy, ngôn ngữ này được sử dụng rộng rãi để viết chữ viết. Perl và được các nhà phát triển trang Web ưa chuộng JavaScript.

Khái niệm về hệ thống lập trình, các chức năng và thành phần chính của nó.

Hệ thống lập trình (SP) - một bộ công cụ phần mềm hỗ trợ viết và gỡ lỗi chương trình hộp thoại và tự động chuyển đổi nhiều giai đoạn của nó thành một chương trình thực thi và tải vào bộ nhớ để thực thi. Ngày nay, các liên doanh đã chuyển đổi thành môi trường phát triển phần mềm tích hợp (tích hợp Phát triển Môi trường, IDE) cho phép bạn phát triển giao diện người dùng một cách trực quan và tổ chức các kết nối với cơ sở dữ liệu.

Việc tạo ra một công cụ phần mềm phức tạp được thực hiện trong môi trường kỹ thuật phần mềm. Theo GOST R ISO/IEC 14764-2002, nó là “một tập hợp các công cụ, phần mềm, phần cứng và phương tiện kỹ thuật tự động cần thiết để thực hiện phạm vi công việc kỹ thuật phần mềm”. Các công cụ tự động bao gồm nhưng không giới hạn ở trình biên dịch, trình liên kết hệ điều hành khởi động, trình gỡ lỗi, công cụ tạo mô hình, công cụ tài liệu và hệ thống quản lý cơ sở dữ liệu.

Hệ thống lập trình giải phóng người dùng hoặc lập trình viên ứng dụng khỏi nhu cầu viết chương trình để giải quyết vấn đề của họ bằng ngôn ngữ lệnh máy bất tiện và cung cấp cho họ cơ hội sử dụng các ngôn ngữ cấp cao đặc biệt hơn. Đối với mỗi ngôn ngữ này, được gọi là đầu vào hoặc nguồn, hệ thống lập trình có một chương trình tự động dịch (dịch) văn bản chương trình từ ngôn ngữ đầu vào sang ngôn ngữ máy. Thông thường, một hệ thống lập trình chứa các mô tả về ngôn ngữ lập trình được sử dụng, các chương trình dịch từ các ngôn ngữ này, cũng như một thư viện các chương trình con tiêu chuẩn được phát triển. Điều quan trọng là phải phân biệt giữa ngôn ngữ lập trình và ngôn ngữ triển khai.

Ngôn ngữ là tập hợp các quy tắc xác định hệ thống các bản ghi tạo nên chương trình, cú pháp và ngữ nghĩa của các cấu trúc ngữ pháp được sử dụng.

Thực hiện ngôn ngữ là một chương trình hệ thống dịch (chuyển đổi) các bản ghi ở ngôn ngữ cấp cao thành một chuỗi lệnh máy.

Dựa trên bộ ngôn ngữ đầu vào, hệ thống lập trình được phân biệt giữa ngôn ngữ đơn và đa ngôn ngữ. Một tính năng đặc biệt của hệ thống đa ngôn ngữ là các phần riêng lẻ của chương trình có thể được biên dịch bằng các ngôn ngữ khác nhau và sử dụng các chương trình xử lý đặc biệt để kết hợp thành một chương trình sẵn sàng thực thi trên máy tính.

Để xây dựng các ngôn ngữ lập trình, một tập hợp các ký hiệu và quy tắc được chấp nhận chung được sử dụng để mô tả các thuật toán của các vấn đề đang được giải quyết và diễn giải rõ ràng ý nghĩa của văn bản được tạo. Xu hướng chính trong việc phát triển các ngôn ngữ lập trình là tăng mức độ ngữ nghĩa của chúng để tạo điều kiện thuận lợi cho quá trình phát triển chương trình và tăng năng suất của trình biên dịch.

Tùy thuộc vào cấu trúc, mức độ hình thức hóa ngôn ngữ đầu vào và mục đích dự định, các hệ thống lập trình được phân biệtđịnh hướng máy móc máy độc lập .

Hệ thống hướng máy lập trình có ngôn ngữ đầu vào, tập hợp các toán tử và phương tiện trực quan phụ thuộc đáng kể vào đặc điểm của máy tính (ngôn ngữ bên trong, cấu trúc bộ nhớ, v.v.). Các hệ thống hướng máy cho phép bạn sử dụng tất cả các khả năng và tính năng của các ngôn ngữ phụ thuộc vào máy:

    chất lượng cao của các chương trình được tạo ra;

    khả năng sử dụng tài nguyên phần cứng cụ thể;

    khả năng dự đoán mã đối tượng và thứ tự bộ nhớ;

    Để tạo các chương trình hiệu quả, bạn cần biết hệ thống lệnh và các tính năng vận hành của một máy tính nhất định;

    quá trình viết chương trình sử dụng nhiều lao động (đặc biệt là bằng ngôn ngữ máy và CTCP), vốn được bảo vệ kém khỏi lỗi;

    tốc độ lập trình thấp;

    không thể sử dụng trực tiếp các chương trình được biên dịch bằng các ngôn ngữ này trên các loại máy tính khác.

Các hệ thống hướng máy được chia thành các lớp theo mức độ lập trình tự động:

1. Ngôn ngữ máy. Trong các hệ thống lập trình như vậy, một máy tính riêng biệt có Ngôn ngữ máy riêng (sau đây gọi là ML), nó được quy định để thực hiện các thao tác xác định trên các toán hạng mà chúng xác định, do đó ML là ngôn ngữ lệnh. Tuy nhiên, một số họ máy tính (ví dụ: Máy tính ES, IBM/370/, v.v.) có một ME duy nhất cho các máy tính có công suất khác nhau.

Lệnh của bất kỳ lệnh nào trong số chúng đều báo cáo thông tin về vị trí của các toán hạng và loại hoạt động đang được thực hiện. Trong các mô hình máy tính mới, có xu hướng cải thiện ngôn ngữ nội bộ bằng các phương tiện phần cứng máy để thực hiện các lệnh phức tạp hơn, gần gũi hơn trong các hành động chức năng của chúng với người vận hành các ngôn ngữ lập trình thuật toán.

2. Hệ thống mã hóa tượng trưng. Các hệ thống này sử dụng Ngôn ngữ mã hóa tượng trưng (sau đây gọi là SCL), giống như ML, là ngôn ngữ lệnh. Tuy nhiên, mã hoạt động và địa chỉ trong lệnh máy, là một chuỗi các chữ số nhị phân (trong mã nội bộ) hoặc bát phân (thường được sử dụng khi viết chương trình), được thay thế trong YSC bằng các ký hiệu (mã định danh), dạng viết của chúng giúp ích cho người lập trình. dễ dàng ghi nhớ nội dung ngữ nghĩa của thao tác hơn. Điều này đảm bảo giảm đáng kể số lỗi khi biên dịch chương trình.

Sử dụng địa chỉ tượng trưng là bước đầu tiên để tạo YASK. Lệnh máy tính chứa địa chỉ tượng trưng thay vì địa chỉ thực (vật lý). Dựa trên kết quả của chương trình đã biên dịch, số lượng ô cần thiết để lưu trữ các giá trị trung gian và kết quả ban đầu được xác định. Việc gán địa chỉ, được thực hiện riêng biệt với việc biên dịch chương trình theo địa chỉ tượng trưng, ​​​​có thể được thực hiện bởi một lập trình viên kém trình độ hơn hoặc một chương trình đặc biệt, điều này hỗ trợ rất nhiều cho công việc của lập trình viên.

3. Tự động mã hóa. Có những hệ thống lập trình sử dụng các ngôn ngữ bao gồm tất cả các khả năng của YSC, thông qua việc giới thiệu mở rộng các lệnh macro - chúng được gọi là Autocodes. Trong các chương trình khác nhau, có một số chuỗi lệnh được sử dụng khá thường xuyên tương ứng với các quy trình nhất định để chuyển đổi thông tin. Việc thực hiện hiệu quả các quy trình như vậy được đảm bảo bằng thiết kế của chúng dưới dạng các lệnh macro đặc biệt và đưa chúng vào ngôn ngữ lập trình mà người lập trình có thể truy cập được. Lệnh macro được dịch thành lệnh máy theo hai cách - sắp xếp và tạo. Hệ thống dàn chứa "bộ xương" - một loạt lệnh thực hiện chức năng cần thiết, được biểu thị bằng lệnh macro. Các lệnh macro cung cấp khả năng truyền các tham số thực tế, trong quá trình dịch thuật, các tham số này được chèn vào “bộ khung” của chương trình, biến nó thành một chương trình máy thực. Trong một hệ thống thế hệ, có các chương trình đặc biệt để phân tích lệnh macro, xác định chức năng nào cần được thực thi và hình thành chuỗi lệnh cần thiết để thực hiện chức năng này. Cả hai hệ thống này đều sử dụng các trình dịch củaJSC và một tập hợp các lệnh macro, cũng là các toán tử mã hóa tự động. Các mã tự động được phát triển được gọi là Trình biên dịch mã. Các chương trình dịch vụ, v.v., theo quy luật, được viết bằng các ngôn ngữ như Assembly.

4. Vĩ mô. Trong các hệ thống như vậy, ngôn ngữ là phương tiện để thay thế một chuỗi ký hiệu mô tả việc thực hiện các hành động cần thiết của máy tính bằng dạng nén hơn được gọi là Macro (công cụ thay thế). Về cơ bản, Macro được thiết kế để rút ngắn mục nhập chương trình ban đầu.

Thành phần phần mềm cho phép macro hoạt động được gọi là bộ xử lý macro. Bộ xử lý macro nhận văn bản nguồn và định nghĩa macro. Phản hồi của bộ xử lý vĩ mô đối với cuộc gọi là đưa ra một văn bản đầu ra. Macro có thể hoạt động bình đẳng với cả chương trình và dữ liệu.

Hệ thống lập trình độc lập với máy là phương tiện mô tả các thuật toán giải quyết vấn đề và thông tin cần xử lý. Chúng dễ sử dụng cho nhiều đối tượng người dùng và không yêu cầu họ phải biết các chi tiết cụ thể về tổ chức hoạt động của máy tính. Trong các hệ thống như vậy, các chương trình được biên dịch bằng các ngôn ngữ gọi là ngôn ngữ lập trình cấp cao là các chuỗi câu lệnh được cấu trúc theo các quy tắc xem xét ngôn ngữ (tác vụ, phân đoạn, khối, v.v.). Toán tử ngôn ngữ mô tả các hành động mà hệ thống phải thực hiện sau khi dịch chương trình sang ML. Do đó, các chuỗi lệnh (thủ tục, chương trình con), thường được sử dụng trong các chương trình máy, được thể hiện bằng các ngôn ngữ cấp cao bằng các câu lệnh riêng lẻ.

Lập trình viên không thể mô tả chi tiết quá trình tính toán ở cấp độ hướng dẫn máy mà chỉ tập trung vào các tính năng chính của thuật toán.

Trong số các hệ thống lập trình độc lập với máy, cần nhấn mạnh những điểm sau:

1. Hệ thống định hướng thủ tục. Ngôn ngữ lập trình đầu vào trong các hệ thống như vậy được sử dụng để viết các thuật toán (thủ tục) xử lý thông tin đặc trưng để giải quyết các vấn đề của một lớp nhất định. Những ngôn ngữ này sẽ cung cấp cho người lập trình các công cụ để trình bày vấn đề một cách ngắn gọn và rõ ràng cũng như thu được kết quả ở dạng được yêu cầu. Có rất nhiều ngôn ngữ thủ tục, ví dụ: Fortran, Algol - ngôn ngữ được tạo ra để giải các bài toán; Simula, Tiếng lóng - để làm người mẫu; Lisp, Snoball - để làm việc với cấu trúc danh sách.

2. Hệ thống định hướng vấn đề Ngôn ngữ lập trình hướng đến vấn đề được sử dụng làm ngôn ngữ đầu vào. Với việc mở rộng các lĩnh vực ứng dụng công nghệ máy tính, nảy sinh nhu cầu chính thức hóa việc trình bày công thức và cách giải các loại bài toán mới.

Cần phải tạo ra các ngôn ngữ lập trình, sử dụng các ký hiệu và thuật ngữ trong lĩnh vực này, để có thể mô tả các thuật toán giải pháp cần thiết cho các vấn đề được giao. Các ngôn ngữ hướng đến vấn đề này sẽ cung cấp cho người lập trình các công cụ để trình bày vấn đề một cách ngắn gọn và rõ ràng cũng như thu được kết quả ở dạng được yêu cầu. Các chương trình được biên soạn trên cơ sở các ngôn ngữ lập trình này được viết theo hướng vấn đề đang được giải quyết và được thực hiện bằng cách thực hiện các quy trình thích hợp.

3. Ngôn ngữ đàm thoại. Sự xuất hiện của các khả năng kỹ thuật mới đặt ra nhiệm vụ cho các nhà lập trình hệ thống - tạo ra các công cụ phần mềm đảm bảo sự tương tác nhanh chóng giữa con người và máy tính; chúng được gọi là ngôn ngữ tương tác. Các ngôn ngữ điều khiển đặc biệt được tạo ra để mang lại tác động vận hành trong việc hoàn thành các nhiệm vụ được biên dịch bằng bất kỳ ngôn ngữ nào chưa được phát triển (không có hộp thoại) trước đó.

Các ngôn ngữ cũng được phát triển, ngoài mục đích quản lý, sẽ cung cấp mô tả về các thuật toán để giải quyết vấn đề. Nhu cầu đảm bảo tương tác nhanh chóng với người dùng đòi hỏi phải lưu trữ một bản sao của chương trình nguồn trong bộ nhớ máy tính ngay cả sau khi nhận được chương trình đối tượng trong mã máy. Khi thực hiện các thay đổi đối với một chương trình, hệ thống lập trình, sử dụng các bảng đặc biệt, sẽ thiết lập mối quan hệ giữa cấu trúc của chương trình nguồn và chương trình đối tượng. Điều này cho phép bạn thực hiện các thay đổi biên tập cần thiết trong chương trình đối tượng.

4. Ngôn ngữ phi thủ tục. Các ngôn ngữ phi thủ tục tạo thành một nhóm ngôn ngữ mô tả việc tổ chức dữ liệu được xử lý bằng các thuật toán cố định (ngôn ngữ dạng bảng và trình tạo báo cáo) cũng như các ngôn ngữ để giao tiếp với hệ điều hành. Cho phép bạn mô tả rõ ràng cả vấn đề và các hành động cần thiết để giải quyết nó, bảng quyết định giúp bạn xác định rõ ràng những điều kiện nào phải được đáp ứng trước khi chuyển sang bất kỳ hành động nào. Một bảng quyết định, mô tả một tình huống nhất định, chứa tất cả các sơ đồ khối có thể có của việc triển khai các thuật toán giải. Các chuyên gia thuộc bất kỳ ngành nghề nào có thể dễ dàng nắm vững các phương pháp dạng bảng. Các chương trình được viết bằng ngôn ngữ dạng bảng mô tả thuận tiện các tình huống phức tạp phát sinh trong quá trình phân tích hệ thống.

Trong trường hợp chung nhất, để tạo một chương trình bằng ngôn ngữ lập trình đã chọn, bạn cần có các thành phần sau:

1. Trình soạn thảo văn bản. Cần có các trình soạn thảo văn bản chuyên dụng tập trung vào một ngôn ngữ lập trình cụ thể để có được một tệp có văn bản nguồn của chương trình, chứa một tập hợp các ký tự tiêu chuẩn để viết thuật toán.

2. Nguồn văn bản sử dụng chương trình biên dịchđược dịch sang mã máy. Mã nguồn của một chương trình thường bao gồm một số mô-đun (tệp có mã nguồn). Mỗi mô-đun được biên dịch thành một tệp riêng biệt với mã đối tượng, sau đó cần phải được kết hợp thành một. Ngoài ra, hệ thống lập trình thường bao gồm thư viện các thủ tục tiêu chuẩn. Các chương trình con tiêu chuẩn có một dạng tham chiếu duy nhất, giúp có thể tự động đưa các chương trình con đó vào chương trình gọi và định cấu hình các tham số của chúng.

3. Mã đối tượng của các mô-đun và các chức năng tiêu chuẩn được kết nối với nó được xử lý bằng một chương trình đặc biệt - biên tập liên kết. Chương trình này kết hợp các mã đối tượng có tính đến các yêu cầu của hệ điều hành và tạo ra một ứng dụng hoạt động - mã thực thi cho một nền tảng cụ thể. Mã thực thi là một chương trình hoàn chỉnh có thể chạy trên bất kỳ máy tính nào có hệ điều hành mà chương trình được tạo.

4. Hệ thống lập trình hiện đại có thêm một thành phần - trình gỡ lỗi, cho phép bạn phân tích hoạt động của chương trình trong quá trình thực hiện. Với sự trợ giúp của nó, bạn có thể thực hiện tuần tự các câu lệnh riêng lẻ của văn bản nguồn, đồng thời quan sát giá trị của các biến khác nhau thay đổi như thế nào.

Theo thời gian, các nhà phát triển trình biên dịch đã cố gắng làm cho công việc của người dùng trở nên dễ dàng hơn bằng cách cung cấp cho họ tất cả các bộ mô-đun phần mềm cần thiết như một phần của một gói trình biên dịch. Bây giờ các trình biên dịch đã được cung cấp cùng với tất cả các phương tiện kỹ thuật cần thiết đi kèm. Ngoài ra, định dạng của tệp đối tượng và tệp thư viện chương trình con đã được thống nhất. Giờ đây, các nhà phát triển, có trình biên dịch từ một nhà sản xuất, về nguyên tắc có thể sử dụng các thư viện và tệp đối tượng thu được từ một nhà sản xuất trình biên dịch khác.

Để viết các tập tin lệnh biên dịch, một ngôn ngữ lệnh đặc biệt, ngôn ngữ Makefile, đã được đề xuất. Nó có thể mô tả một cách khá linh hoạt và thuận tiện toàn bộ quá trình tạo chương trình, từ việc tạo văn bản nguồn đến chuẩn bị thực thi. Đó là một công cụ kỹ thuật tiện lợi nhưng khá phức tạp, đòi hỏi nhà phát triển phải có trình độ đào tạo và kiến ​​​​thức chuyên môn cao, vì bản thân ngôn ngữ lệnh Makefile có độ phức tạp tương đương với một ngôn ngữ lập trình đơn giản. Ngôn ngữ Makefile đã trở thành một công cụ tiêu chuẩn, phổ biến cho trình biên dịch của tất cả các nhà phát triển.

Cấu trúc của các công cụ phát triển này đã tồn tại khá lâu và trong một số trường hợp nó vẫn được sử dụng cho đến ngày nay (đặc biệt là khi tạo các chương trình hệ thống). Việc sử dụng rộng rãi nó là do bản thân toàn bộ cấu trúc của các công cụ phát triển này rất thuận tiện cho việc thực thi hàng loạt chương trình trên máy tính, điều này góp phần vào việc sử dụng rộng rãi nó trong kỷ nguyên máy tính lớn.

Bước tiếp theo trong quá trình phát triển các công cụ phát triển là sự xuất hiện của cái gọi là môi trường phát triển tích hợp. Môi trường tích hợp kết hợp khả năng của trình soạn thảo văn bản cho mã nguồn chương trình và ngôn ngữ biên dịch lệnh. Người dùng (nhà phát triển chương trình nguồn) không còn phải thực hiện toàn bộ chuỗi hành động từ tạo mã nguồn đến thực thi mã nguồn và cũng không bắt buộc phải mô tả quy trình này bằng hệ thống lệnh trong Makefile. Bây giờ anh ấy chỉ cần chỉ ra dưới dạng giao diện thuận tiện thành phần của các mô-đun nguồn và thư viện cần thiết để tạo chương trình. Các khóa mà trình biên dịch yêu cầu và các phương tiện kỹ thuật khác cũng được chỉ định dưới dạng biểu mẫu cấu hình giao diện.

Sau đó, môi trường phát triển tích hợp tự động chuẩn bị toàn bộ chuỗi lệnh Makefile cần thiết, thực thi chúng, nhận kết quả và báo lỗi nếu có. Hơn nữa, người dùng có thể thay đổi văn bản của mô-đun nguồn tại đây mà không làm gián đoạn công việc với môi trường tích hợp và sau đó, nếu cần, chỉ cần lặp lại toàn bộ quá trình biên dịch.

Việc tạo ra các môi trường phát triển tích hợp trở nên khả thi nhờ vào sự phát triển nhanh chóng của máy tính cá nhân và sự xuất hiện của các công cụ giao diện người dùng được phát triển (văn bản đầu tiên và sau đó là đồ họa). Sự xuất hiện của chúng trên thị trường đã quyết định sự phát triển hơn nữa của loại phương tiện kỹ thuật này. Có lẽ môi trường thành công đầu tiên thuộc loại này có thể coi là môi trường lập trình tích hợp Turbo Pascal dựa trên ngôn ngữ Pascal do Borland sản xuất. Sự phổ biến rộng rãi của nó được xác định bởi thực tế là theo thời gian, tất cả các nhà phát triển trình biên dịch đều chuyển sang tạo ra các công cụ phát triển tích hợp cho sản phẩm của họ.

Sự phát triển của môi trường tích hợp đã phần nào làm giảm yêu cầu về kỹ năng chuyên môn của người phát triển chương trình nguồn. Bây giờ, trong trường hợp đơn giản nhất, nhà phát triển chỉ được yêu cầu biết ngôn ngữ nguồn (cú pháp và ngữ nghĩa của nó). Khi tạo một chương trình ứng dụng, trong trường hợp đơn giản nhất, người phát triển nó có thể thậm chí không hiểu kiến ​​trúc của hệ thống máy tính mục tiêu.

Sự phát triển hơn nữa của các công cụ phát triển cũng liên quan chặt chẽ đến việc phổ biến rộng rãi các công cụ giao diện người dùng đồ họa tiên tiến. Giao diện này đã trở thành một phần không thể thiếu của nhiều hệ điều hành hiện đại và cái gọi là shell đồ họa. Theo thời gian, nó đã trở thành tiêu chuẩn thực tế trong hầu hết các chương trình ứng dụng hiện đại.

Điều này không thể ảnh hưởng đến các yêu cầu đối với các công cụ phát triển phần mềm. Đầu tiên, chúng bao gồm các thư viện thích hợp cung cấp hỗ trợ cho giao diện người dùng đồ họa được phát triển và tương tác với các chức năng API (giao diện chương trình ứng dụng, giao diện chương trình ứng dụng của hệ điều hành). Và sau đó, để làm việc với chúng, cần có các công cụ bổ sung để đảm bảo phát triển hình thức của các mô-đun giao diện. Công việc như vậy vốn đã phổ biến đối với một nhà thiết kế hơn là đối với một lập trình viên.

Để mô tả các yếu tố đồ họa của chương trình, cần có ngôn ngữ thích hợp. Trên cơ sở đó, khái niệm này xuất hiện tài nguyên(tài nguyên) chương trình ứng dụng.

Tài nguyên chương trình ứng dụng chúng tôi sẽ gọi rất nhiều dữ liệu, cung cấp giao diện người dùng của chương trình này và không liên quan trực tiếp đến logic thực thi chương trình. Các ví dụ điển hình về nguồn lực là: văn bản tin nhắn do chương trình đưa ra; cách phối màu của các thành phần giao diện; nhãn trên các thành phần như nút và tiêu đề cửa sổ, v.v.

Để hình thành cấu trúc của các tài nguyên, cần có các trình soạn thảo tài nguyên và sau đó là các trình biên dịch tài nguyên để xử lý kết quả công việc của họ. Tài nguyên thu được từ đầu ra của trình biên dịch tài nguyên bắt đầu được xử lý bởi trình liên kết và trình tải.

Trong vài năm gần đây, việc lập trình (đặc biệt là trên môi trường điều hành Windows) đã chứng kiến ​​cái gọi làthị giác một cách tiếp cận.

Quá trình này được tự động hóa trong môi trường thiết kế nhanh. Trong trường hợp này, các thành phần trực quan làm sẵn được sử dụng, các thuộc tính và hành vi của chúng được định cấu hình bằng các trình chỉnh sửa đặc biệt. Do đó, có sự chuyển đổi từ ngôn ngữ lập trình cấp hệ thống sang ngôn ngữ kịch bản.

Những ngôn ngữ này được tạo ra cho các mục đích khác nhau, dẫn đến một số khác biệt cơ bản giữa chúng. Các hệ thống được phát triển để xây dựng các cấu trúc dữ liệu và thuật toán từ đầu, bắt đầu từ các phần tử nguyên thủy như một từ trong bộ nhớ máy tính. Ngược lại, các ngôn ngữ kịch bản được tạo ra để liên kết các chương trình làm sẵn. Việc sử dụng chúng ngụ ý sự hiện diện của đủ loại thành phần mạnh mẽ chỉ cần kết hợp với nhau. Các ngôn ngữ cấp hệ thống sử dụng tính năng kiểm soát kiểu dữ liệu nghiêm ngặt, giúp các nhà phát triển ứng dụng giải quyết các vấn đề phức tạp. Các ngôn ngữ kịch bản không sử dụng khái niệm kiểu, điều này giúp đơn giản hóa việc thiết lập kết nối giữa các thành phần và cũng tăng tốc độ phát triển hệ thống ứng dụng.

Ngôn ngữ kịch bản dựa trên một tập hợp đánh đổi hơi khác so với ngôn ngữ cấp hệ thống. Họ ưu tiên tốc độ thực thi và độ chặt chẽ của việc kiểm soát kiểu ở mức độ ưu tiên thấp hơn, nhưng năng suất và khả năng sử dụng lại của lập trình viên được đánh giá cao hơn. Sự cân bằng các giá trị này ngày càng được chứng minh khi máy tính trở nên nhanh hơn và rẻ hơn, điều này không xảy ra với các lập trình viên. Ngôn ngữ lập trình hệ thống rất phù hợp để xây dựng các thành phần, trong đó độ phức tạp chính nằm ở việc triển khai các thuật toán và cấu trúc dữ liệu, trong khi ngôn ngữ kịch bản phù hợp hơn để xây dựng một ứng dụng từ các thành phần làm sẵn, trong đó độ phức tạp nằm ở việc thiết lập các mối liên kết giữa các thành phần. Các vấn đề thuộc loại thứ hai ngày càng trở nên phổ biến, do đó vai trò của ngôn ngữ kịch bản sẽ tăng lên.

Trình thông dịch và trình biên dịch.
Các chương trình phát sóng và các quy trình liên quan.

Cần lưu ý rằng bất kỳ ngôn ngữ lập trình nào cũng có thể được thông dịch hoặc biên dịch, nhưng trong hầu hết các trường hợp, mỗi ngôn ngữ đều có phương pháp triển khai ưu tiên riêng. Các ngôn ngữ Fortran và Pascal hầu hết đều được biên dịch; Hợp ngữ hầu như luôn phiên dịch; Các ngôn ngữ BASIC và Lisp sử dụng rộng rãi cả hai phương pháp.

Ưu điểm chính của việc biên dịch là tốc độ thực hiện chương trình đã hoàn thành. Một chương trình được thông dịch chắc chắn sẽ chạy chậm hơn một chương trình được biên dịch, vì trình thông dịch phải xây dựng chuỗi lệnh thích hợp tại thời điểm thực thi lệnh lệnh.

Đồng thời, ngôn ngữ thông dịch thường thuận tiện hơn cho lập trình viên, đặc biệt là người mới bắt đầu. Nó cho phép bạn kiểm soát kết quả của mỗi hoạt động. Ngôn ngữ này đặc biệt phù hợp với phong cách tương tác của phát triển chương trình, khi các phần riêng lẻ của chương trình có thể được viết, kiểm tra và thực thi trong quá trình tạo chương trình mà không cần tắt trình thông dịch.

Người phiên dịch là chương trình dịch chương trình nguồn thành chương trình đối tượng tương đương. Chương trình nguồn được viết bằng một số ngôn ngữ nguồn, chương trình đối tượng được tạo bằng ngôn ngữ đối tượng. Chương trình của chính người dịch được thực hiện trong quá trình phát sóng.

Nếu ngôn ngữ nguồn là ngôn ngữ cấp cao, chẳng hạn như FORTRAN, C và Pascal và nếu ngôn ngữ đối tượng là hợp ngữ hoặc một số ngôn ngữ máy thì trình dịch được gọi là trình biên dịch. Ngôn ngữ máy đôi khi được gọi là mã máy, đó là lý do tại sao một chương trình đối tượng đôi khi được gọi là mã đối tượng.

Việc dịch chương trình nguồn thành chương trình đối tượng xảy ra tại thời điểm biên dịch và việc thực thi thực sự của chương trình đối tượng xảy ra trong quá trình thực hiện chương trình đã hoàn thành.

Trình biên dịch là chương trình dịch chương trình nguồn được viết bằng ngôn ngữ mã hóa tự động hoặc hợp ngữ sang ngôn ngữ máy tính. Tự động mã hóa(trình dịch hợp ngữ) rất gần với ngôn ngữ máy; thực sự, hầu hết các lệnh mã hóa tự động đều là sự biểu diễn mang tính biểu tượng chính xác của các lệnh máy. Hơn nữa, các hướng dẫn mã hóa tự động thường có định dạng cố định, giúp chúng dễ dàng phân tích cú pháp. Theo quy định, mã tự động không chứa các hướng dẫn, khối lồng nhau, v.v.

Thông dịch viênđối với một số ngôn ngữ nguồn, lấy chương trình nguồn được viết bằng ngôn ngữ đó làm đầu vào và thực thi nó. Sự khác biệt giữa trình biên dịch và trình thông dịch là trình thông dịch không tạo ra một chương trình đối tượng mà sau đó phải được thực thi mà trực tiếp thực thi chính nó. Để tìm ra cách thực hiện các hướng dẫn của chương trình nguồn, trình thông dịch thuần túy sẽ phân tích nó bất cứ khi nào nó cần được thực thi. Tất nhiên, điều này không hiệu quả và không được sử dụng thường xuyên.

Khi lập trình, trình thông dịch thường được chia thành hai giai đoạn. TRÊN Đầu tiên giai đoạn này, trình thông dịch sẽ phân tích toàn bộ chương trình nguồn, giống như trình biên dịch và dịch nó thành một số biểu diễn bên trong. TRÊN thứ hai giai đoạn biểu diễn nội bộ này của chương trình gốc được diễn giải hoặc thực thi. Biểu diễn bên trong của chương trình nguồn được thiết kế để giảm thiểu thời gian cần thiết để giải mã hoặc phân tích từng lệnh khi nó được thực thi.

Như đã nói ở trên, ông trình biên dịch không gì khác hơn là một chương trình được viết bằng một ngôn ngữ nhất định, trong đó thông tin đầu vào là chương trình nguồn và kết quả là một chương trình đối tượng tương đương. Trong lịch sử, các trình biên dịch được viết bằng mã tự động bằng tay. Trong nhiều trường hợp, đó là ngôn ngữ duy nhất có sẵn. Tuy nhiên, các trình biên dịch hiện được phát triển bằng các ngôn ngữ cấp cao (vì điều này giúp giảm thời gian lập trình và gỡ lỗi, đồng thời đảm bảo rằng chương trình biên dịch có thể đọc được khi công việc hoàn thành).

Ngoài ra, hiện nay chúng ta có nhiều ngôn ngữ được thiết kế dành riêng cho việc biên dịch trình biên dịch. Những cái gọi là này trình biên dịch trình biên dịch" là một số tập hợp con của " hệ thống xây dựng phiên dịch" (SPT).

Quá trình biên dịch, cấu trúc trình biên dịch, trình biên dịch.

Quá trình biên soạn được chia thành nhiều giai đoạn:

    Bộ tiền xử lý. Chương trình nguồn được xử lý bằng cách thay thế các tệp tiêu đề và macro hiện có.

    Phân tích từ vựng và cú pháp. Chương trình được chuyển đổi thành một chuỗi mã thông báo và sau đó thành biểu diễn dạng cây bên trong.

    Tối ưu hóa toàn cầu. Biểu diễn bên trong của chương trình được chuyển đổi nhiều lần để giảm kích thước và thời gian thực hiện của chương trình.

    Tạo mã. Biểu diễn bên trong được chuyển đổi thành các khối lệnh của bộ xử lý, được chuyển đổi thành văn bản hợp ngữ hoặc mã đối tượng.

    Cuộc họp. Nếu văn bản tập hợp được tạo ra, nó sẽ được tập hợp để lấy mã đối tượng.

    Cuộc họp. Trình biên dịch chương trình kết hợp một số tệp đối tượng thành một tệp hoặc thư viện thực thi.

Ở giai đoạn phân tích từ vựng (LA), chương trình đầu vào là một dòng ký tự được chia thành các từ vựng - các từ theo định nghĩa của ngôn ngữ. Chủ nghĩa hình thức chính làm nền tảng cho việc triển khai các máy phân tích từ vựng là các máy trạng thái hữu hạn và các biểu thức chính quy. Trình phân tích từ vựng có thể hoạt động ở hai chế độ chính: dưới dạng chương trình con được trình phân tích cú pháp gọi sau mỗi mã thông báo hoặc dưới dạng một lượt hoàn chỉnh, kết quả của nó là một tệp mã thông báo. Trong quá trình cô lập các từ vựng, LA có thể vừa xây dựng các bảng tên và hằng một cách độc lập, vừa cung cấp các giá trị cho từng từ vị trong lần truy cập tiếp theo. Trong trường hợp này, bảng tên được xây dựng theo các giai đoạn tiếp theo (ví dụ: trong quá trình phân tích cú pháp).

Ở giai đoạn LA, một số lỗi (đơn giản) được phát hiện (ký tự không hợp lệ, ghi số không chính xác, số nhận dạng, v.v.).

Nhiệm vụ chính của phân tích cú pháp là phân tích cấu trúc của chương trình. Về nguyên tắc, cấu trúc được hiểu là một cái cây tương ứng với việc phân tích cú pháp trong ngữ pháp phi ngữ cảnh của ngôn ngữ. Hiện tại, phân tích LL(1) (và biến thể của nó - đệ quy gốc) hoặc phân tích LR(1) và các biến thể của nó (LR(0), SLR(1), LALR(1) và các biến thể khác) thường được sử dụng nhất. . Giảm dần đệ quy thường được sử dụng nhiều hơn khi lập trình thủ công một trình phân tích cú pháp, LR(1) - khi sử dụng các hệ thống tự động hóa để xây dựng trình phân tích cú pháp.

Kết quả của việc phân tích cú pháp là một cây cú pháp có liên kết đến một bảng tên. Quá trình phân tích cú pháp cũng phát hiện ra các lỗi liên quan đến cấu trúc chương trình.

Ở sân khấu phân tích theo ngữ cảnh sự phụ thuộc được xác định giữa các phần của chương trình không thể được mô tả bằng cú pháp phi ngữ cảnh. Đây chủ yếu là các kết nối “mô tả-sử dụng”, đặc biệt là phân tích các loại đối tượng, phân tích phạm vi, tương ứng tham số, nhãn và các kết nối khác. Trong quá trình phân tích ngữ cảnh, một bảng ký hiệu được xây dựng, có thể coi là bảng tên, bổ sung thông tin về mô tả (thuộc tính) của các đối tượng.

Chủ nghĩa hình thức chính được sử dụng trong phân tích ngữ cảnh là ngữ pháp thuộc tính. Kết quả của giai đoạn phân tích ngữ cảnh là một cây chương trình được phân bổ. Thông tin về các đối tượng có thể được phân tán trong cây hoặc tập trung vào các bảng ký hiệu riêng biệt. Trong quá trình phân tích ngữ cảnh, các lỗi liên quan đến việc sử dụng sai đối tượng cũng có thể được phát hiện.

Chương trình sau đó có thể được dịch sang đại diện nội bộ. Điều này được thực hiện nhằm mục đích tối ưu hóa và/hoặc dễ dàng tạo mã. Một mục đích khác của việc chuyển đổi một chương trình thành một biểu diễn bên trong là mong muốn có trình biên dịch di động. Sau đó chỉ có giai đoạn cuối cùng (tạo mã) là phụ thuộc vào máy. Ký hiệu tiền tố hoặc hậu tố, đồ thị có hướng, bộ ba, bộ bốn và các ký hiệu khác có thể được sử dụng làm biểu diễn bên trong.

Các giai đoạn tối ưu hóa có thể là một số. Tối ưu hóa thường được chia thành phụ thuộc vào máy và độc lập với máy, cục bộ và toàn cầu. Một số tối ưu hóa phụ thuộc vào máy được thực hiện trong giai đoạn tạo mã. Tối ưu hóa toàn cầu cố gắng tính đến cấu trúc của toàn bộ chương trình, cục bộ - chỉ những đoạn nhỏ của nó. Tối ưu hóa toàn cầu dựa trên phân tích luồng toàn cầu, được thực hiện trên biểu đồ chương trình và về cơ bản thể hiện sự chuyển đổi của biểu đồ này. Trong trường hợp này, các thuộc tính như vậy của chương trình như phân tích liên thủ tục, phân tích đa môđun, phân tích các lĩnh vực trong vòng đời của các biến, v.v. có thể được tính đến.

Cuối cùng, Tạo mã- giai đoạn cuối của chương trình phát sóng. Kết quả là mô-đun trình biên dịch mã hoặc mô-đun đối tượng (hoặc tải). Trong quá trình tạo mã, một số tối ưu hóa cục bộ có thể được thực hiện, chẳng hạn như phân bổ thanh ghi, lựa chọn các nhánh dài hoặc ngắn, xem xét chi phí hướng dẫn khi chọn một chuỗi lệnh cụ thể. Nhiều kỹ thuật khác nhau đã được phát triển để tạo mã như bảng quyết định, khớp mẫu bao gồm lập trình động, các kỹ thuật cú pháp khác nhau.

Tất nhiên, một số giai đoạn nhất định của người dịch có thể hoàn toàn vắng mặt hoặc kết hợp. Trong trường hợp đơn giản nhất của trình dịch một lượt, không có giai đoạn rõ ràng nào trong việc tạo ra biểu diễn và tối ưu hóa trung gian; các giai đoạn còn lại được kết hợp thành một và không có cây cú pháp được xây dựng rõ ràng.

Nguyên lý hoạt động của môi trường lập trình

Cần phân biệt ngôn ngữ lập trình từ việc triển khai nó, thường được trình bày trong phần cấu thành môi trường lập trình(Quick Basic, Virtual Pascal) - một bộ công cụ để chỉnh sửa văn bản nguồn, tạo mã thực thi, gỡ lỗi, quản lý dự án, v.v. Mỗi môi trường lập trình cung cấp trình thông dịch hoặc trình biên dịch riêng cho ngôn ngữ này, thường cho phép sử dụng các cấu trúc không cố định trong tiêu chuẩn.

Sử dụng môi trường lập trình Turbo Pascal

Phát triển chương trình trong Pascal bao gồm các hành động sau (các giai đoạn phát triển chương trình): nhập và chỉnh sửa văn bản chương trình bằng ngôn ngữ lập trình Pascal, dịch thuật và gỡ lỗi.

Để thực hiện từng giai đoạn, các công cụ đặc biệt được sử dụng: để nhập và chỉnh sửa văn bản, sử dụng soạn thảo văn bản, để phát sóng chương trình - trình biên dịch, để xây dựng một mô-đun phần mềm có thể thực thi được trên máy tính kết hợp các mô-đun được biên dịch khác nhau và một thư viện các thủ tục Pascal tiêu chuẩn - người liên kết(trình liên kết), để gỡ lỗi các chương trình bằng cách phân tích hành vi của nó, tìm lỗi, xem và thay đổi nội dung của các ô nhớ máy tính - trình gỡ lỗi(trình gỡ lỗi).

Để nâng cao chất lượng và tốc độ phát triển chương trình vào giữa những năm 80. Hệ thống lập trình Turbo Pascal đã được tạo ra. Từ Turbo trong tên của hệ thống lập trình phản ánh thương hiệu của nhà phát triển Borland International, Inc. (HOA KỲ).

Hệ thống lập trình Turbo Pascal được gọi là tích hợp(tích hợp - kết hợp các yếu tố riêng lẻ thành một tổng thể duy nhất) môi trường lập trình, vì nó kết hợp khả năng của các công cụ riêng biệt trước đây được sử dụng trong phát triển chương trình: trình soạn thảo văn bản, trình biên dịch, trình liên kết, trình gỡ lỗi, đồng thời cung cấp cho lập trình viên các khả năng dịch vụ tuyệt vời. Nó thường được gọi ngắn gọn IDE(Môi trường phát triển tích hợp - Môi trường phát triển tích hợp).

Môi trường lập trình tích hợp Turbo Pascal phiên bản 6.0 và 7.0 có các tính năng sau:

    nhiều cửa sổ chồng lên nhau;

    hỗ trợ chuột, menu, hộp thoại;

    trình chỉnh sửa nhiều tệp có thể chỉnh sửa các tệp có dung lượng lên tới 1 MB;

    khả năng sửa lỗi nâng cao;

    bảo tồn và phục hồi hoàn toàn môi trường phát triển.

Các tập tin chính của gói Turbo Pascal

Nếu chúng ta giả sử rằng hệ thống lập trình Turbo Pascal được cài đặt trên ổ D: trong thư mục D:\BORLAND\BP thì thư mục ..\BP chứa các tệp Turbo Pascal chính sau:

BỘ TĂNG ÁP. EXE- môi trường lập trình tích hợp;

BỘ TĂNG ÁP. HLP- một tệp chứa dữ liệu để trợ giúp vận hành;

BỘ TĂNG ÁP. TP- tập tin cấu hình hệ thống;

BỘ TĂNG ÁP. TPL- thư viện các mô-đun Turbo Pascal tiêu chuẩn.

Thư mục D:\BORLAND\BP\BGI chứa các tệp cần thiết để làm việc ở chế độ đồ họa: ĐỒ HỌA. TPU- một mô-đun có các quy trình và chức năng đồ họa của Turbo Pascal, một số tệp có phần mở rộng .BGI - trình điều khiển cho nhiều loại hệ thống video máy tính, một số tệp có phần mở rộng .CHR chứa phông chữ vectơ.

Để gọi Turbo Pascal, bạn cần tìm thư mục này và tệp trong đó trong cấu trúc cây của thư mục PC TURBO.EXE. Tệp này chứa hệ thống lập trình hộp thoại Turbo Pascal sẵn sàng sử dụng.

Cửa sổ Turbo Pascal

Hầu hết mọi thứ bạn thấy và làm trong Turbo Pascal đều diễn ra trong windows. Cửa sổ là một vùng trên màn hình có thể di chuyển, thay đổi kích thước, che, đóng và mở.

Môi trường lập trình tích hợp Turbo Pascal 6.0,7.0 cho phép bạn mở bất kỳ số lượng cửa sổ nào, nhưng chỉ có một cửa sổ có thể hoạt động bất kỳ lúc nào. Cửa sổ đang hoạt động- đây là cửa sổ bạn hiện đang làm việc. Bất kỳ lệnh nào bạn chọn hoặc văn bản bạn nhập chỉ áp dụng cho cửa sổ đang hoạt động. (Nếu cùng một tệp được mở trong nhiều cửa sổ, hành động sẽ được áp dụng cho tệp ở mọi nơi).

Hệ thống trợ giúp Turbo Pascal

Môi trường lập trình tích hợp Turbo Pascal 6.0, 7.0 nổi bật nhờ khả năng mở rộng của hệ thống trợ giúp tích hợp, cho phép lập trình viên không chỉ lấy thông tin trợ giúp theo ngữ cảnh mà còn cắt và dán mã ví dụ cho từng quy trình thư viện và vào văn bản chương trình của mình và quay lại màn hình trợ giúp khác (phím Alt+Fl), sử dụng gợi ý thông tin trợ giúp (phím F1 nếu bạn đã ở trong hệ thống thông tin trợ giúp).

Ghi chú . Hệ thống trợ giúp theo ngữ cảnh Turbo Pascal nhận được tên của nó vì khả năng lấy thông tin tham khảo liên quan đến trạng thái hiện tại của môi trường lập trình cho một thành phần cụ thể của ngôn ngữ lập trình. Ví dụ: để nhận thông tin trợ giúp về bất kỳ mục menu nào trong môi trường lập trình tích hợp, hãy kích hoạt mục này và nhấn phím F1; Để nhận trợ giúp về thành phần ngôn ngữ trong cửa sổ chỉnh sửa (toán tử, hàm, v.v.), hãy đặt con trỏ lên thành phần mong muốn và nhấn Ctrl+F1.

Để nhận thông tin trợ giúp (ngoại trừ khi điều khiển được chuyển đến chương trình của bạn), bạn cần nhấn phím F1 hoặc chọn mục menu Trợ giúp mong muốn bằng chuột. Menu Trợ giúp (phím Alt+H) cung cấp cho bạn mục lục của hệ thống thông tin trợ giúp, mục lục chi tiết và khả năng tìm kiếm (Ctrl+F1). Bất kỳ màn hình trợ giúp nào cũng có thể chứa một từ khóa hoặc nhiều từ khóa (các mục được đánh dấu) cung cấp thông tin trợ giúp bổ sung.

Biên tập viên môi trường

Một phần không thể thiếu của môi trường phát triển chương trình tích hợp là biên tập viên Turbo Pascal, có các tính năng sau:

    hỗ trợ chuột;

    hỗ trợ các tệp lớn (tối đa 1 MB; giới hạn 2 MB cho tất cả các kết hợp trình chỉnh sửa);

    Shift + phím mũi tên - để chọn văn bản;

    các cửa sổ soạn thảo có thể di chuyển, chồng chéo và thay đổi kích thước;

    khả năng đa tệp, cho phép bạn mở nhiều tệp cùng một lúc;

    nhiều cửa sổ cho phép bạn có nhiều chế độ xem cùng một tệp hoặc các tệp khác nhau;

    một ngôn ngữ macro thông minh cho phép bạn tạo các lệnh chỉnh sửa của riêng mình;

    lấy văn bản hoặc ví dụ từ cửa sổ trợ giúp;

    một túi có thể chỉnh sửa cho phép cắt, sao chép và chuyển nó giữa các cửa sổ.

Để điều khiển trình chỉnh sửa, hãy sử dụng các phím được mô tả trong hệ thống trợ giúp và dòng trợ giúp.

Công cụ phát sóng chương trình và gỡ lỗi chúng

Hệ thống lập trình tích hợp Turbo Pascal bao gồm các công cụ để dịch chương trình và gỡ lỗi chúng (trình biên dịch, trình liên kết, trình gỡ lỗi). Kiểm soát nhanh các công cụ này bằng cách sử dụng các phím nóng được mô tả trong hệ thống trợ giúp và các mục menu con.

Nhập văn bản chương trình vào cửa sổ soạn thảo

Để khởi động môi trường lập trình Turbo Pascal, hãy nhập lệnh BỘ TĂNG ÁP và hãy nhấn Đi vào. Sau khi khởi động chương trình, một cửa sổ chỉnh sửa sẽ mở ra trên màn hình. Nhập văn bản chương trình. Để xóa các ký tự nhập sai, hãy sử dụng Phím lùiXóa bỏ và sử dụng các phím mũi tên để di chuyển bên trong cửa sổ soạn thảo. Để hoàn thành mục nhập của bạn, nhấn Đi vàoở cuối mỗi dòng. Để sử dụng các tính năng bổ sung, nhấn Alt+Fl để mở menu cục bộ.

Biên dịch một chương trình

Biên dịch chương trình bằng cách nhấp vào thay thế+ F9 . Nếu bạn nhập văn bản chính xác, một thông báo cho biết quá trình biên dịch thành công sẽ được hiển thị.

Tạo tệp .exe

Trả lời tin nhắn " Biên dịch thành công" (biên dịch thành công) nhấn phím bất kỳ.

Nếu bạn cần ghi chương trình dưới dạng tệp thực thi (có phần mở rộng .exe) vào đĩa từ, hãy chọn mục trong menu chính Biên dịch, trong đó chọn tùy chọn Điểm đến (mục đích) và nếu có một từ ở bên phải của nó Ký ức (bộ nhớ), cho biết mã đang được thực thi sẽ được lưu trong bộ nhớ, nhấn phím Đi vào hoặc bấm vào bên trái nút chuột (cài đặt đích sẽ thay đổi và trở thành đĩa (đĩa).

Nếu tùy chọn Điểm đến cài đặt trong đĩa , cho biết mã thực thi được ghi vào đĩa từ dưới dạng tệp có phần mở rộng .exe, sau đó chuyển đến tùy chọn Làm mục menu này.

Sau khi đặt đích cho việc tạo tệp .exe trên đĩa từ, hãy chọn từ menu Biên dịch lựa chọn Làm (lắp ráp) hoặc nhấn phím F9 . Điều này tạo ra một tệp .exe trên đĩa.

Thực hiện chương trình

Để trả lời thông báo "Biên dịch thành công", hãy nhấn phím bất kỳ. Chạy chương trình để thực thi bằng các phím Điều khiển+ F9 . Sau đó, màn hình của người dùng sẽ mở ra và kết quả của chương trình sẽ xuất hiện trên đó.

Xem việc thực hiện chương trình trên màn hình của người dùng

Để xem kết quả thực hiện chương trình trên màn hình người dùng, hãy chọn Cửa sổ/ Người dùngMàn hình(hoặc bấm vào thay thế+ F5 ).

Nghiên cứu thông tin được chương trình hiển thị trên màn hình của người dùng, so sánh nó với những gì được mong đợi và đánh giá việc thực hiện chính xác chương trình. Để quay lại môi trường Turbo Pascal lại nhấn các phím thay thế+ F5 .

Lưu chương trình vào đĩa

Hiện tại, tệp văn bản của chương trình đầu tiên có tên là NONAMEOO, tức là nó chưa được gán một tên cụ thể. Lưu văn bản chương trình vào đĩa. Tên của tệp chương trình phải phản ánh mục đích của chương trình và là duy nhất.

Ghi chú , Tên chương trình được đặt theo quy tắc DOS (không quá 8 ký tự chữ Latinh).

Viết chương trình vào đĩa theo tên mong muốn bằng các phím thay thế+ F CứuBẰNG ... " (viết dưới tên mới).

Thoát khỏi IDE

Thoát khỏi môi trường lập trình tích hợp Turbo Pascal bằng cách nhấn thay thế+ Fđi tới menu Tệp, trong menu này chọn " Lối ra" hoặc nhấp vào thay thế+ X.

Mở một tập tin văn bản chương trình

Khởi chạy môi trường lập trình tích hợp Turbo Pascal và đọc tệp có văn bản chương trình bằng các phím thay thế+ Fđi tới menu Tệp, chọn " Mở" (mở file) hoặc nhấn phím F3 . Trên màn hình máy tính sẽ hiển thị cửa sổ chọn file cần mở từ danh sách.

Bằng cách nhấn các phím Tab hoặc Shift+Tab để di chuyển từ phần tử này sang phần tử khác (mỗi phần tử được đánh dấu khi nó hoạt động), đi tới hộp danh sách Tệp và đặt thư mục hiện tại thành D:\BORLAND\BPVTUTOR, từ đó bạn muốn để đọc tập tin văn bản chương trình. Đặt con trỏ (tô sáng) lên file .PAS, sau đó nhấn phím Tab để chọn nút [ Mở]. Nếu bạn đổi ý, hãy chọn nút [ Hủy bỏ] hoặc nhấn phím Thoát.

Nhận thông tin trợ giúp về trình soạn thảo

Để được trợ giúp về các thao tác chỉnh sửa phím F1 gọi lên màn hình trợ giúp; nhấn một phím Trang dưới, hãy chuyển đến danh sách mẹo về chức năng chỉnh sửa.

Lỗi được tìm thấy trong quá trình biên dịch

Thông thường, dựa trên kết quả biên dịch, một thông báo lỗi sẽ hiển thị trên màn hình máy tính. Điều này là do ngôn ngữ lập trình Pascal có các quy tắc ngữ pháp phải tuân theo. Những lỗi phổ biến nhất mà người mới lập trình Pascal mắc phải là:

không xác địnhđịnh danh(không rõ số nhận dạng)

";" hy vọng(hy vọng ";")

và những người khác.

Loại dữ liệu

Dữ liệu là các sự kiện, ý tưởng, thông tin được trình bày dưới dạng ký hiệu (biểu tượng) cho phép truyền tải, xử lý và giải thích chúng (tức là diễn giải, giải thích, tiết lộ ý nghĩa) và thông tin- đây là ý nghĩa mà một người gán cho dữ liệu dựa trên các quy tắc mà anh ta biết để thể hiện các sự kiện, ý tưởng, thông điệp trong đó. Cách hiểu thông tin này cũng tương ứng với từ nguyên của từ biểu thị nó (từ tiếng Latin thông tin - giải thích, trình bày).

Liên quan chặt chẽ đến tính rời rạc của thông tin ngữ nghĩa là kết cấu, có tính chất thứ bậc được thể hiện rõ ràng. Trong cấu trúc này người ta cũng có thể phân biệt có ý nghĩachính thức Các khía cạnh. Khi xem xét cả hai khía cạnh, rõ ràng là cấp độ phân cấp càng cao thì loại thông tin càng cụ thể. Trong cấu trúc nội dung, điều này gắn liền với sự gia tăng tính tích lũy thông tin. Các lớp này là:

  • giả thuyết, lý thuyết và khái niệm;

    kiến thức cơ bản của các lĩnh vực;

    thế giới quan.

Cấu trúc chính thức dữ liệu thông tin ngữ nghĩa vừa mang tính thứ bậc vừa mang tính nội dung. Các cấp độ thấp nhất của hệ thống phân cấp này là chung cho tất cả dữ liệu thông tin ngữ nghĩa, trong đó bạn có thể làm nổi bật âm thanh hoặc chữ cái, từ, cụm từ, đoạn ngữ nghĩa, tác phẩm. Ở cấp độ cao nhất của hệ thống phân cấp, khi đề cập đến các tài liệu khoa học và đặc biệt là các dòng của chúng, chúng ta phải đối mặt với tính đặc thù vốn có chỉ trong thông tin khoa học. Động cơ tạo ra các tài liệu khoa học, cách thức và phương tiện phổ biến và sử dụng chúng phải tuân theo các luật đặc biệt.

Thông tin có cấu trúc, I E. được kết nối bởi nguyên nhân và kết quả và các mối quan hệ khác và tạo thành một hệ thống, tạo thành kiến thức. Từ những cách giải thích này, có thể suy ra rằng nếu dữ liệu được một người nhận thức và diễn giải thì nó sẽ trở thành thông tin cho anh ta. Ở một mức độ nhất định, dữ liệu giống như một thông điệp bằng văn bản truyền tải một số thông tin đến một người biết chữ và vẫn là một tập hợp các dấu hiệu khó hiểu đối với một người mù chữ.

Kiểudữ liệu mô tả phạm vi định nghĩa của các giá trị dữ liệu.

Chúng ta hãy nhớ điều đó để nền tảng các loại bao gồm:

    kiểu số nguyên;

    loại hợp lệ;

    kiểu boolean;

    loại ký tự;

    kiểu chuỗi.

ĐẾN đơn giản các loại bao gồm:

    loại thứ tự;

    kiểu enum.

ĐẾN có cấu trúc các loại bao gồm:

    đám đông;

Đơn giảncác loại(loại đơn giản) bao gồm có thể chuyển nhượng(loại thứ tự) và có hiệu lực(loại thực) loại xác định ra lệnh các tập giá trị. ĐẾN có thể chuyển nhượng loại là dữ liệu tuân theo quy tắc sau: mỗi giá trị ngoại trừ giá trị đầu tiên có một giá trị tiền thân duy nhất và mỗi giá trị ngoại trừ giá trị cuối cùng có một giá trị kế tiếp duy nhất.

Có cấu trúccác loại(kiểu dữ liệu có cấu trúc) cho phép bạn xác định các biến có thể lưu trữ các tập hợp dữ liệu cùng loại hoặc khác loại. Các kiểu có cấu trúc bao gồm các tập hợp, mảng, bản ghi, cũng như các kiểu tệp, lớp và giao diện.

không giống đơn giản các loại được xác định tuyến tính, có cấu trúc các loại có thể có cấu trúc phức tạp, nghĩa là chúng có thể bao gồm các loại khác.