Những cấp độ ngôn ngữ lập trình tồn tại. Đánh giá các ngôn ngữ lập trình. Các ngôn ngữ lập trình phổ biến nhất

Việc đưa máy tính vào mọi lĩnh vực hoạt động của con người đòi hỏi phải có chuyên gia hồ sơ khác nhau nắm vững các kỹ năng sử dụng công nghệ máy tính. Trình độ đào tạo sinh viên đại học ngày càng tăng, những người ngay từ năm đầu tiên đã được làm quen với việc sử dụng máy tính và các phương pháp số đơn giản, chưa kể đến việc khi hoàn thành các khóa học và đồ án cấp bằng, việc sử dụng công nghệ máy tính đang trở thành tiêu chuẩn trong đại đa số các trường đại học.

Công nghệ máy tính hiện nay không chỉ được sử dụng trong tính toán kỹ thuật và khoa học kinh tế mà còn trong các chuyên ngành truyền thống phi toán học như y học, ngôn ngữ học và tâm lý học. Về vấn đề này, có thể nói rằng việc sử dụng máy tính đã trở nên phổ biến. Một nhóm lớn các chuyên gia đã xuất hiện - những người dùng máy tính cần kiến ​​thức về cách sử dụng máy tính trong ngành của họ - kỹ năng làm việc với phần mềm hiện có cũng như tạo ra phần mềm của riêng họ phù hợp để giải quyết nhiệm vụ cụ thể. Và ở đây các mô tả về ngôn ngữ lập trình sẽ hỗ trợ người dùng.

2. Ngôn ngữ lập trình là gì

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ố những điểm chung được hầu hết các nhà phát triển công nhận là:

· Chức năng: một ngôn ngữ lập trình được thiết kế để viết chương trình máy tính, được sử dụng để truyền hướng dẫn đến máy tính để 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 hóa định nghĩa “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.

3. Các bước giải một bài toán trên máy tính.

Hầu hết ứng dụng hiệu quả VT được phát hiện khi thực hiện các phép tính tốn nhiều công sức trong nghiên cứu khoa học và tính toán kỹ thuật. Khi giải một bài toán trên máy tính, vai trò chính vẫn thuộc về con người. Máy chỉ thực hiện nhiệm vụ của mình theo chương trình đã được lập sẵn. Vai trò của con người và máy móc rất dễ hiểu nếu quá trình giải quyết một vấn đề được chia thành các giai đoạn được liệt kê dưới đây.

Xây dựng vấn đề. Giai đoạn này bao gồm việc hình thành vấn đề (vật lý) có ý nghĩa và xác định các giải pháp cuối cùng.

Sự thi công mô hình toán học. Mô hình phải mô tả chính xác (đầy đủ) các quy luật cơ bản quá trình vật lý. Việc xây dựng hoặc lựa chọn một mô hình toán học từ các mô hình toán học hiện có đòi hỏi sự hiểu biết sâu sắc về bài toán và kiến ​​thức về các ngành toán học liên quan.

Sự phát triển của World Cup. Vì máy tính chỉ có thể thực hiện những thao tác đơn giản nhất nên nó “không hiểu” cách trình bày bài toán, ngay cả trong công thức toán học. Để giải quyết nó, phải tìm ra một phương pháp số có thể đơn giản hóa vấn đề thành một số thuật toán tính toán. Trong từng trường hợp cụ thể phải chọn giải pháp phù hợp từ những tiêu chuẩn đã được phát triển.

Phát triển thuật toán. Quá trình giải một bài toán (quy trình tính toán) được viết dưới dạng một chuỗi các phép toán số học và logic cơ bản dẫn đến kết quả cuối cùng và gọi là thuật toán để giải bài toán.

Lập trình. Thuật toán giải quyết vấn đề được viết bằng ngôn ngữ mà máy có thể hiểu được dưới dạng chính xác một trình tự nhất định hoạt động - chương trình. Quá trình này thường được thực hiện bằng cách sử dụng một số ngôn ngữ trung gian và việc dịch ngôn ngữ đó được thực hiện bởi chính máy và hệ thống của nó.

Điều chỉnh chương trình. Chương trình được biên dịch có nhiều loại lỗi, lỗi không chính xác và lỗi văn thư. Gỡ lỗi bao gồm giám sát chương trình, chẩn đoán (tìm kiếm và xác định nội dung) lỗi và loại bỏ chúng. Chương trình được kiểm tra bằng cách giải các bài toán kiểm soát (kiểm tra) để có được sự tin cậy về độ tin cậy của kết quả.

Tiến hành tính toán.Ở giai đoạn này, dữ liệu ban đầu để tính toán được chuẩn bị và việc tính toán được thực hiện bằng chương trình được thiết lập tốt. Đồng thời, để giảm bớt lao động thủ công trong việc xử lý kết quả, bạn có thể sử dụng rộng rãi các hình thức đưa ra kết quả thuận tiện dưới dạng văn bản và thông tin đồ họa, ở dạng dễ hiểu đối với con người.

Phân tích kết quả. Các kết quả tính toán được phân tích cẩn thận và soạn thảo các tài liệu khoa học kỹ thuật.

4. Ngôn ngữ lập trình để làm gì?

Quá trình hoạt động của máy tính bao gồm việc thực thi một chương trình, nghĩa là gõ hoàn toàn một số đội nhất định khá theo một thứ tự nhất định. Dạng máy của lệnh, bao gồm số 0 và số 1, cho biết chính xác hành động nào sẽ được thực hiện. CPU. Điều này có nghĩa là để cung cấp cho máy tính một chuỗi hành động mà nó phải thực hiện, bạn cần chỉ định một chuỗi mã nhị phân cho các lệnh tương ứng. Các chương trình mã máy bao gồm hàng nghìn lệnh. Viết những chương trình như vậy là một công việc khó khăn và tẻ nhạt. Người lập trình phải nhớ sự kết hợp giữa số 0 và số 1 trong mã nhị phân của mỗi chương trình, cũng như mã nhị phân của địa chỉ dữ liệu được sử dụng khi thực thi chương trình. Việc viết một chương trình bằng một số ngôn ngữ gần với ngôn ngữ tự nhiên của con người sẽ dễ dàng hơn nhiều và giao phó công việc dịch chương trình này sang mã máy cho máy tính. Đây là cách phát sinh các ngôn ngữ được thiết kế đặc biệt để viết chương trình - ngôn ngữ lập trình.

Có nhiều ngôn ngữ khác nhau lập trình. Trên thực tế, bạn có thể sử dụng bất kỳ cách nào trong số đó để giải quyết hầu hết các vấn đề. Các lập trình viên có kinh nghiệm biết nên sử dụng ngôn ngữ nào tốt nhất để giải quyết từng vấn đề cụ thể, vì mỗi ngôn ngữ có khả năng, định hướng riêng cho một số loại vấn đề nhất định và cách mô tả các khái niệm và đối tượng được sử dụng trong giải quyết vấn đề riêng.

Tất cả nhiều ngôn ngữ lập trình có thể được chia thành hai nhóm: ngôn ngữ cấp thấp ngôn ngữ cấp độ cao.

Ngôn ngữ cấp thấp bao gồm các ngôn ngữ hợp ngữ (từ tiếng Anh sangassemble - lắp ráp, lắp ráp). Hợp ngữ sử dụng các lệnh tượng trưng, ​​dễ hiểu và dễ nhớ. Thay vì một chuỗi các mã lệnh nhị phân, các ký hiệu tượng trưng của chúng được viết và thay vì địa chỉ nhị phân của dữ liệu được sử dụng khi thực thi lệnh, tên tượng trưng của dữ liệu này do lập trình viên chọn sẽ được viết. Hợp ngữ đôi khi còn được gọi là mã ghi nhớ hoặc mã tự động.

Hầu hết các lập trình viên đều sử dụng ngôn ngữ cấp cao để viết chương trình. Giống như ngôn ngữ thông thường của con người, ngôn ngữ này có bảng chữ cái riêng - một tập hợp các ký hiệu được sử dụng trong ngôn ngữ đó. Những ký hiệu này được sử dụng để tạo nên cái gọi là từ khóa của ngôn ngữ. Mỗi từ khóa thực hiện chức năng riêng của mình, giống như trong ngôn ngữ quen thuộc của chúng ta, các từ được tạo thành từ các chữ cái trong bảng chữ cái của ngôn ngữ này, có thể thực hiện chức năng các bộ phận khác nhau lời nói. Từ khóađược liên kết với nhau thành câu theo những quy tắc cú pháp nhất định của ngôn ngữ. Mỗi câu xác định một chuỗi hành động nhất định mà máy tính phải thực hiện.

Ngôn ngữ cấp cao đóng vai trò trung gian giữa con người và máy tính, cho phép con người giao tiếp với máy tính theo cách quen thuộc hơn với con người. Thông thường ngôn ngữ này giúp lựa chọn phương pháp đúng giải quyết vấn đề.

Trước khi viết chương trình bằng ngôn ngữ bậc cao, người lập trình phải viết thuật toán giải quyết vấn đề, đó là kế hoạch từng bước những hành động cần thực hiện để giải quyết vấn đề này. Vì vậy, các ngôn ngữ yêu cầu biên dịch sơ bộ thuật toán thường được gọi là ngôn ngữ thuật toán.

    Danh sách các ngôn ngữ lập trình Theo danh mục Theo thời gian Phả hệ Một danh sách các ngôn ngữ lập trình được nhóm theo danh mục được cung cấp. Một số ngôn ngữ thuộc nhiều hơn một loại. Nội dung... Wikipedia

    Danh sách các ngôn ngữ lập trình Theo danh mục Phả hệ theo thời gian Một danh sách phả hệ của các ngôn ngữ lập trình được cung cấp. Ngôn ngữ được phân loại theo các ngôn ngữ tiền sử có ảnh hưởng mạnh mẽ đến sự hình thành ... Wikipedia

    Nội dung 1 Theo nhà sản xuất hoặc nền tảng 1.1 Flash 1.2 Java 1.3 Microsof ... Wikipedia

    Danh sách các ngôn ngữ lập trình theo danh mục Niên đại phả hệ của các ngôn ngữ lập trình là danh sách các ngôn ngữ lập trình được sắp xếp theo thứ tự thời gian. Nội dung... Wikipedia

    Bài viết này nên được Wiki hóa. Vui lòng định dạng nó theo các quy tắc định dạng bài viết. Huyền thoại... Wikipedia

    Trang này là một danh sách thông tin. Ngôn ngữ lập trình .NET (ngôn ngữ hỗ trợ CLI hoặc ngôn ngữ CLI) ngôn ngữ lập trình máy tính được sử dụng để tạo thư viện và chương trình đáp ứng yêu cầu của Comm ... Wikipedia

    Bài chi tiết: Trình soạn thảo văn bản Danh sách các trình soạn thảo văn bản Trình chỉnh sửa Windows và bảng so sánh. Nội dung 1 Bảng so sánh các thông tin đã biết soạn thảo văn bản... Wikipedia

    Ngôn ngữ lập trình C# là một trong những ngôn ngữ lập trình phổ biến nhất hiện nay. Phần mềm xử lý mã nguồn mở Paint.NET đồ họa raster SharpDevelop IDE mở cho ngôn ngữ C#, Ngôn ngữ lập trình.NET (VB.NET), Boo ... Wikipedia

    Đây là danh sách phần mềm, được phát triển bởi Tổ chức Phần mềm Tự do như một phần của dự án GNU UNIX, một hệ điều hành tương tự bao gồm toàn bộ phần mềm miễn phí. Hầu hết các gói này cũng... ... Wikipedia

    Bài viết hoặc phần này cần sửa đổi. Vui lòng cải thiện bài viết theo đúng quy định viết bài... Wikipedia

Sách

  • Python dành cho trẻ em. Hướng dẫn lập trình, Briggs Jason. Giới thiệu cuốn sách Cuốn sách này là bài hướng dẫn về một trong những ngôn ngữ lập trình phổ biến nhất hiện nay - Python. Bắt đầu từ chính hành động đơn giản, từng bước một bạn sẽ viết...
  • JavaScript dành cho trẻ em. Hướng dẫn lập trình, Morgan Nick. Giới thiệu về cuốn sách Cuốn sách này sẽ cho phép bạn đi sâu vào lập trình và thành thạo JavaScipt một cách dễ dàng. Bạn sẽ viết một số trò chơi thực tế - tìm kiếm kho báu trên bản đồ, "Người treo cổ" và "Rắn". Trên mỗi...

Người dùng Recursia thường thắc mắc ngôn ngữ lập trình nào đáng học. Chúng tôi đã chuẩn bị hướng dẫn ngắn dành cho những người đang quyết định chọn ngôn ngữ lập trình đầu tiên của mình. Chúng tôi muốn chỉ ra rằng nó không có nghĩa là toàn diện - nó chỉ là một cái nhìn rất nhanh về những gì các nhà phát triển đang làm ngày nay và ngôn ngữ lập trình nào có thể là ngôn ngữ đầu tiên hoặc không.

Tuy nhiên, một trong những ngôn ngữ lập trình Web khá phổ biến, tuy nhiên, trên thị trường lao động Belarus không phải lúc nào cũng có thể cung cấp cho người bản xứ một công việc được trả lương cao nhất. Các khóa học về Ruby hầu như không đáng để học để thành thạo ngôn ngữ lập trình đầu tiên, bởi vì khả năng cao là việc tìm kiếm nhà tuyển dụng sẽ bị trì hoãn, vì vị trí tuyển dụng dành cho sinh viên mới tốt nghiệp trong Ruby xuất hiện khá hiếm.

Chỉ 5 đến 7 năm trước, Delphi là ngôn ngữ lập trình tiêu chuẩn đầu tiên - tất nhiên là vì ngôn ngữ Pascal, tiền thân của Delphi, được phát minh để dạy lập trình cho học sinh và sinh viên. Nếu không có đời thực Delphi đã rất phù hợp rồi, vì việc lập trình trên đó trả lương dưới mức trung bình đáng kể và mới dự án chính Bạn sẽ không tìm thấy nó trong ngôn ngữ này. Vì vậy đề nghị

Khi bạn đang cố gắng tìm ra ngôn ngữ lập trình nào để bắt đầu học, bạn có thể sẽ gặp các thuật ngữ "cấp cao" và "cấp thấp". Mọi người lúc nào cũng nói về ngôn ngữ lập trình cấp cao và cấp thấp. Nhưng chính xác điều này có nghĩa là gì? Và việc học viết code có ý nghĩa gì? Hãy bắt đầu với các định nghĩa của từng.


Ngôn ngữ lập trình “Cấp cao” và “Cấp thấp”

Trong bài viết này tôi sẽ nói về ngôn ngữ “cấp cao” và “cấp thấp”. Nhưng không có tiêu chí đặc biệt nào để xác định điều này. Chỉ cần nhớ rằng điều này phần lớn phụ thuộc vào quan điểm của bạn. Nếu bạn là một lập trình viên C, Java có vẻ khá cao cấp. Nếu bạn đã quen với Ruby thì Java có thể giống như một ngôn ngữ cấp thấp.

Mã máy và ngôn ngữ cấp thấp

Bất kể ngôn ngữ được coi là cấp cao hay cấp thấp (hoặc đâu đó ở giữa), Chúng ta đang nói về về sự trừu tượng. Mã máy không có tính trừu tượng - nó chứa hướng dẫn riêng, được chuyển vào máy tính. Và vì máy chỉ xử lý các số nên chúng được biểu diễn dưới dạng nhị phân (mặc dù đôi khi chúng được viết bằng ký hiệu thập phân hoặc thập lục phân).

Đây là một ví dụ về mã máy:

Trong mã máy, các thao tác phải được chỉ định chính xác. Ví dụ, nếu một phần thông tin cần được lấy ra từ bộ nhớ, mã máy sẽ phải báo cho máy tính biết nơi tìm nó trong bộ nhớ.

Viết trực tiếp vào mã máy là có thể, nhưng rất khó.

Các ngôn ngữ lập trình cấp thấp thêm một chút trừu tượng vào mã máy. Sự trừu tượng này ẩn giấu hướng dẫn cụ thể mã máy đằng sau các khai báo dễ đọc hơn cho con người. Hợp ngữ là ngôn ngữ cấp thấp nhất bên cạnh mã máy.

Trong mã máy, bạn có thể viết nội dung như "10110000 01100001", nhưng hợp ngữ có thể đơn giản hóa điều này thành "MOV AL, 61h". Vẫn có sự tương ứng gần như một-một giữa những gì được viết bằng hợp ngữ và các hướng dẫn được cung cấp cho máy.

Chuyển sang các ngôn ngữ lập trình phổ biến hơn, bạn sẽ kết thúc với ngôn ngữ nào đó như C. Mặc dù ngôn ngữ này không ở cấp độ thấp như ngôn ngữ hợp ngữ, nhưng vẫn có sự tương ứng mạnh mẽ giữa những gì được viết bằng C và mã máy. Hầu hết các thao tác viết bằng C đều có thể được hoàn thành một lượng nhỏ hướng dẫn mã máy.

Ngôn ngữ lập trình cấp cao

Giống như các ngôn ngữ cấp thấp hơn, các cấp độ cao hơn bao gồm nhiều khái niệm trừu tượng. Một số ngôn ngữ, chẳng hạn như Java (nhiều người coi đây là ngôn ngữ lập trình trung gian), vẫn cung cấp cho bạn nhiều quyền kiểm soát cách máy tính quản lý bộ nhớ và dữ liệu.

Những thứ khác, như Ruby và Python, rất trừu tượng. Họ cung cấp cho bạn ít quyền truy cập vào các tính năng hơn mức độ thấp hơn, nhưng cú pháp dễ đọc và viết hơn nhiều. Bạn có thể nhóm các thứ thành các lớp kế thừa các đặc điểm nên bạn chỉ cần khai báo chúng một lần.

Các biến, đối tượng, chương trình con và vòng lặp được bộ phận quan trọng các ngôn ngữ bậc cao. Những khái niệm này và những khái niệm khác sẽ giúp bạn nói với máy rất nhiều điều bằng những câu lệnh ngắn gọn, súc tích.

Trong khi hợp ngữ có sự ánh xạ gần như thống nhất giữa các lệnh của nó và các lệnh mã máy, thì một ngôn ngữ cấp cao hơn có thể gửi hàng tá lệnh chỉ bằng một dòng mã.

Điều quan trọng cần lưu ý là "ngôn ngữ lập trình cấp cao" có thể bao gồm bất kỳ thứ gì trừu tượng hơn ngôn ngữ hợp ngữ.

Nên học ngôn ngữ nào: trình độ thấp hay cao?

Đây chắc chắn là câu hỏi chung giữa các lập trình viên mới và đầy tham vọng. Học ngôn ngữ lập trình nào tốt hơn: cấp cao hay cấp thấp? Cũng như nhiều câu hỏi lập trình, câu hỏi về ngôn ngữ lập trình cấp cao và cấp thấp không đơn giản như vậy.

Cả hai loại ngôn ngữ đều có lợi thế quan trọng. Các ngôn ngữ cấp thấp, vì chúng đòi hỏi ít sự giải thích của máy tính, nên có xu hướng rất nhanh. Và chúng cung cấp cho các lập trình viên nhiều quyền kiểm soát đối với việc lưu trữ, bộ nhớ và truy xuất dữ liệu.

Tuy nhiên, các ngôn ngữ cấp cao rất trực quan và cho phép lập trình viên viết mã hiệu quả hơn nhiều. Những ngôn ngữ này cũng được coi là "an toàn hơn" vì có nhiều biện pháp bảo vệ hơn ngăn người lập trình đưa ra các lệnh được viết kém có thể gây ra thiệt hại. Nhưng chúng không cung cấp cho người lập trình quyền kiểm soát tương tự đối với các quy trình cấp thấp.

Với ý nghĩ đó, đây là danh sách các ngôn ngữ phổ biến theo thang điểm từ thấp đến cao:

  • JavaScript
  • Python

Tất nhiên, điều này một phần mang tính chủ quan. Và nó chỉ bao gồm một phần rất nhỏ các ngôn ngữ có sẵn.

Nhưng điều này sẽ giúp bạn biết được ngôn ngữ bạn quan tâm đang ở cấp độ nào.

Bạn muốn làm gì?

Khi quyết định bạn sẽ học ngôn ngữ nào, câu hỏi đầu tiên của bạn phải là: bạn muốn lập trình gì?

Nếu bạn muốn lập trình hệ điều hành, hạt nhân hoặc bất cứ thứ gì cần chạy trên đó tốc độ tối đa, một ngôn ngữ cấp thấp hơn có thể sự lựa chọn tốt. To lớn một phần của Windows, OS X và Linux được viết bằng các ngôn ngữ có nguồn gốc từ C và C như C++ và Objective-C.

Nhiều ứng dụng hiện đạiđược viết bằng các ngôn ngữ cấp cao hơn hoặc thậm chí là các ngôn ngữ dành riêng cho miền. Python và Ruby đặc biệt phổ biến cho các ứng dụng web, mặc dù HTML5 đang trở nên mạnh mẽ hơn. Các ngôn ngữ như Swift, C#, JavaScript và SQL đều có điểm mạnh và điểm yếu riêng.

Gần đây tôi đang đọc một chủ đề trên một diễn đàn lập trình và tình cờ thấy ưu đãi thú vị: Học cả hai cấp độ cùng một lúc. Bạn sẽ hiểu sâu hơn về các loại trừu tượng giúp ngôn ngữ cấp cao trở nên hiệu quả hơn.

Tất nhiên, việc học hai ngôn ngữ cùng một lúc không phải là điều dễ dàng, vì vậy bạn có thể muốn dàn trải việc học của mình một chút. Và việc chọn hai ngôn ngữ giống nhau nhất có thể hữu ích.

Một lần nữa, chúng ta sẽ quay lại điều tôi đã nói trước đó: chọn ngôn ngữ dựa trên những gì bạn muốn làm. Thực hiện một số nghiên cứu để tìm hiểu ngôn ngữ mà mọi người sử dụng trong lĩnh vực của họ. Sau đó, sử dụng thông tin này để chọn ngôn ngữ cấp cao và cấp thấp và bắt đầu học chúng.

Bạn sẽ sớm thấy những điểm tương đồng và bạn sẽ hiểu sâu hơn nhiều về cách hoạt động của chương trình.

Tập trung vào mục đích chứ không phải phương tiện.

Có nhiều tiêu chí bạn có thể sử dụng để chọn ngôn ngữ lập trình. Một trong những tiêu chí là mức độ cao và thấp. Nhưng trong hầu hết mọi trường hợp, tiêu chí bạn nên sử dụng là những gì bạn muốn lập trình.

Dự án của bạn có thể được hưởng lợi từ một ngôn ngữ cấp thấp. Hoặc nó có thể hiệu quả hơn nhiều ở mức độ cao. Bạn phải lựa chọn cho mình công cụ phù hợp cho công việc. Tập trung vào mục tiêu của bạn và chọn ngôn ngữ phù hợp mọi lúc.

Bạn có kinh nghiệm với các ngôn ngữ cấp cao và cấp thấp không? Bạn có thích cái này hơn cái kia không? Chia sẻ suy nghĩ của bạn trong phần bình luận bên dưới!

NGÔN NGỮ LẬP TRÌNH VÀ CÁC LOẠI CỦA NÓ

Ngôn ngữ lập trình là một hệ thống ký hiệu chính thức được thiết kế để viết các chương trình 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 để xác định vẻ bề ngoài các chương trình và hành động mà người thực hiện (máy tính) sẽ thực hiện dưới sự kiểm soát của nó.

Ngôn ngữ lập trình cấp cao là ngôn ngữ lập trình được thiết kế để lập trình viên sử dụng nhanh và dễ dàng. Tính năng chính của ngôn ngữ cấp cao là tính trừu tượng, nghĩa là giới thiệu các cấu trúc ngữ nghĩa mô tả ngắn gọn các cấu trúc dữ liệu và hoạt động trên chúng, các mô tả trong mã máy (hoặc ngôn ngữ lập trình cấp thấp khác) rất dài và khó hiểu.

Ngôn ngữ lập trình cấp thấp (ngôn ngữ lập trình cấp thấp) là ngôn ngữ lập trình gần với lập trình trực tiếp bằng mã máy của bộ xử lý thực hoặc ảo (ví dụ: Java, Microsoft .NET) được sử dụng. Ký hiệu ghi nhớ thường được sử dụng để biểu thị các hướng dẫn của máy. Điều này cho phép các lệnh được ghi nhớ không phải dưới dạng một chuỗi các số nhị phân và số 0 mà là các từ viết tắt có ý nghĩa của các từ trong ngôn ngữ của con người (thường là tiếng Anh).

NGÔN NGỮ LẬP TRÌNH CẤP THẤP

Những máy tính đầu tiên phải được lập trình bằng mã máy nhị phân. Tuy nhiên, lập trình theo cách này khá tốn công sức và nhiệm vụ khó khăn. Để đơn giản hóa nhiệm vụ này, các ngôn ngữ lập trình cấp thấp bắt đầu xuất hiện, giúp con người có thể chỉ định các lệnh máy ở dạng dễ hiểu hơn đối với con người. Để chuyển đổi chúng thành mã nhị phânđã được tạo ra chương trình đặc biệt- dịch giả.

Hình.1. Một ví dụ về mã máy và cách biểu diễn nó trong trình biên dịch mã

Người dịch được chia thành:

    trình biên dịch - biến văn bản chương trình thành mã máy, có thể được lưu và sử dụng mà không cần trình biên dịch (ví dụ: Các tập tin thực thi có phần mở rộng *. exe);

    trình thông dịch - biến một phần chương trình thành mã máy, thực thi nó và sau đó chuyển sang phần tiếp theo. Trong trường hợp này, mỗi lần chương trình được thực thi, một trình thông dịch sẽ được sử dụng.

Một ví dụ về ngôn ngữ cấp thấp là hợp ngữ. Các ngôn ngữ cấp thấp 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ó, vì vậy để chuyển một chương trình hợp ngữ sang nền tảng phần cứng khác, nó phải được viết lại gần như hoàn toàn. Cũng có những khác biệt nhất định trong cú pháp của các chương trình dành cho các trình biên dịch khác nhau. Đúng vậy, bộ xử lý trung tâm dành cho máy tính của AMD và Intel thực tế tương thích và chỉ khác nhau ở một số lệnh cụ thể. Nhưng bộ xử lý chuyên dụng dành cho các thiết bị khác, chẳng hạn như card màn hình và điện thoại, có những khác biệt đáng kể.

Thuận lợi

Ngôn ngữ cấp thấp tạo ra các chương trình 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ý.

sai sót

    Một lập trình viên làm việc với các ngôn ngữ cấp thấp phải có trình độ chuyên môn cao và hiểu biết tốt về cấu trúc của hệ thống vi xử lý mà chương trình đang được tạo. Vì vậy, nếu một chương trình được tạo cho máy tính, bạn cần biết thiết bị của máy tính và đặc biệt là thiết bị và tính năng vận hành của bộ xử lý của nó;

    chương trình kết quả không thể được chuyển sang máy tính hoặc thiết bị có loại bộ xử lý khác;

    thời gian phát triển đáng kể cho các chương trình lớn và phức tạp.

Ngôn ngữ cấp thấp thường được sử dụng để viết các chương trình hệ thống nhỏ, trình điều khiển thiết bị, mô-đun giao diện với thiết bị không chuẩn, lập trình bộ vi xử lý chuyên dụng, khi yêu cầu quan trọng nhất là sự nhỏ gọn, tốc độ và khả năng truy cập trực tiếp vào tài nguyên phần cứng.

Hợp ngữ là một ngôn ngữ cấp thấp vẫn được sử dụng rộng rãi cho đến ngày nay.

NGÔN NGỮ LẬP TRÌNH CẤP CAO

Ngôn ngữ lập trình cấp cao đầu tiên được coi là Ngôn ngữ máy tính Plankalkül, được phát triển bởi kỹ sư người Đức Konrad Zuse trong giai đoạn 1942-1946. Tuy nhiên, mãi đến năm 2000 mới có một trình dịch cho nó. Trình dịch ngôn ngữ cấp cao đầu tiên trên thế giới là PP (Programming Program), còn gọi là PP-1, được thử nghiệm thành công vào năm 1954. Translator PP-2 (1955, đứng thứ 4 thế giới Translator) đã tối ưu hóa và chứa trình tải và trình gỡ lỗi riêng, một thư viện các thủ tục tiêu chuẩn và trình dịch PP cho máy tính Strela-4 đã chứa một trình liên kết các mô-đun. Tuy nhiên, việc sử dụng rộng rãi các ngôn ngữ cấp cao bắt đầu từ sự ra đời của Fortran và việc tạo ra trình biên dịch cho ngôn ngữ này (1957).

Các ngôn ngữ cấp cao không chỉ cố gắng làm cho việc giải quyết các vấn đề phức tạp trở nên dễ dàng hơn nhiệm vụ chương trình, mà còn để đơn giản hóa việc chuyển phần mềm. Việc sử dụng nhiều trình biên dịch và phiên dịch khác nhau đảm bảo kết nối các chương trình được viết bằng ngôn ngữ cấp cao với nhiều ngôn ngữ khác nhau. các hệ điều hành và phần cứng, trong khi mã nguồn của chúng, lý tưởng nhất là không thay đổi.

Kiểu cách ly ngôn ngữ cấp cao này khỏi việc triển khai phần cứng của máy tính, ngoài nhiều ưu điểm, cũng có những nhược điểm. Đặc biệt, nó không cho phép bạn tạo các hướng dẫn đơn giản và chính xác cho thiết bị được sử dụng. Các chương trình được viết bằng ngôn ngữ cấp cao dễ hiểu hơn đối với lập trình viên nhưng kém hiệu quả hơn so với các chương trình được tạo bằng ngôn ngữ cấp thấp. Một trong những hậu quả của việc này là việc bổ sung hỗ trợ cho một hoặc một ngôn ngữ cấp thấp khác (ngôn ngữ hợp ngữ) cho một số ngôn ngữ lập trình cấp cao chuyên nghiệp hiện đại.

Ví dụ: C, C++, C#, Java, Python, PHP, Ruby, Perl, Pascal, Delphi, Lisp. Ngôn ngữ cấp cao được đặc trưng bởi khả năng làm việc với các cấu trúc dữ liệu phức tạp. Hầu hết trong số họ có hỗ trợ tích hợp các loại chuỗi, đối tượng, hoạt động tập tin vào/ra v.v. Nhược điểm của ngôn ngữ cấp cao là kích thước lớn hơn chương trình so với các chương trình ở ngôn ngữ cấp thấp. Vì vậy, các ngôn ngữ cấp cao chủ yếu được sử dụng để phát triển phần mềm cho máy tính và thiết bị có dung lượng bộ nhớ lớn. Và các kiểu con khác nhau của trình biên dịch mã được sử dụng để lập trình các thiết bị khác trong đó kích thước của chương trình là quan trọng.

Ngôn ngữ mệnh lệnh dựa trên một số ý tưởng quan trọng, bao gồm việc biểu diễn các hành động dưới dạng công thức toán học, khái niệm về kiểu dữ liệu và định lý chuyển đổi cấu trúc.

Một chương trình trong ngôn ngữ mệnh lệnh được xây dựng từ các hàm (chương trình con). Các chương trình hợp ngữ cũng có thể bao gồm các chương trình con và điều này không có gì mới, nhưng các ngôn ngữ cấp cao cho phép bạn không phải suy nghĩ về các vấn đề như tổ chức cuộc gọi, truyền dữ liệu nguồn và trả về kết quả. Mô tả hàm bao gồm tên, danh sách các tham số (dữ liệu ban đầu), loại kết quả và các hành động dẫn đến thu được kết quả này. Một trong những chức năng của chương trình là chức năng chính, việc thực hiện nó là công việc của chương trình.

Một ví dụ đơn giản là hàm tính sin của một số. Nó có thể được gọi là sin, dữ liệu đầu vào của nó bao gồm một số thực, kết quả cũng là một số thực, thu được bằng cách tính tổng một đoạn của chuỗi vô hạn đã biết (hoặc thực hiện lệnh fsin của bộ đồng xử lý toán học).

Tập hợp các hành động có thể được thực hiện bên trong một hàm rất hạn chế. Nó bao gồm việc đánh giá các biểu thức công thức, gọi các hàm khác (không phải là một hành động riêng biệt - lệnh gọi hàm thường được bao gồm trong một biểu thức), phép gán, nhánh (một nhóm hành động chỉ được thực hiện nếu một số điều kiện là đúng) và vòng lặp ( một nhóm hành động được thực hiện lặp đi lặp lại, số lần lặp lại phụ thuộc vào một số điều kiện). Các hành động có thể được lồng vào nhau. Có vẻ như tập hợp các nhánh và vòng lặp quá nhỏ, nhưng thực tế không phải vậy. Người ta đã chứng minh rằng bất kỳ thuật toán nào bao gồm các khối chức năng (ở mức độ thấp - lệnh số học và lệnh truyền dữ liệu), các chuyển đổi có điều kiện và vô điều kiện đều có thể được chuyển đổi thành một thuật toán tương đương chỉ bao gồm các khối cấu trúc - khối chức năng, nhánh và vòng lặp có điều kiện. kiểm tra cuối cùng. Tuyên bố này được Corrado Bohm và Giuseppe Jacopini đưa ra trong bài báo “Biểu đồ dòng chảy, máy turing và ngôn ngữ chỉ có hai quy tắc hình thành” (Communications of ACM, Tập 9/Số 5/Tháng 5 năm 1965).

Nếu kết quả trung gian cần được lưu trữ ở đâu đó để thực hiện các hành động cần thiết thì các khai báo đặc biệt chứa tên biến và có thể cả thông tin khác sẽ được đặt bên trong hàm. Địa chỉ của các ô RAM sẽ được gán tự động cho chúng. Trong một số ngôn ngữ, hàm cũng có thể chứa định nghĩa hằng và kiểu. Trong các ngôn ngữ giống Pascal, một hàm giống như một chương trình và có thể bao gồm các định nghĩa không chỉ về hằng, kiểu và biến mà còn cả các hàm khác.

Khai báo dữ liệu là danh sách các đối tượng được đặt tên. Những đối tượng này được gọi là biến. Trong một số ngôn ngữ, loại biến phải được chỉ định, xác định dung lượng bộ nhớ cần thiết cho vị trí của nó và tập hợp các thao tác mà nó có thể tham gia. Nhưng điều này không nhất thiết phải như vậy; có những ngôn ngữ trong đó loại biến không được chỉ định và có thể thay đổi trong quá trình thực hiện chương trình.

Thông thường, các ngôn ngữ lập trình cung cấp một tập hợp khá hạn chế các loại biến được xác định trước và các công cụ để tạo các loại mới. Một số loại sau đây được xác định trước:

    số tự nhiên và số nguyên có kích thước khác nhau;

    số thực;

    ký hiệu - chữ cái, số, dấu hiệu số học, v.v.;

    chuỗi ký tự;

    giá trị boolean;

    con trỏ

Các hành động trên dữ liệu có thể được thực hiện bằng cách sử dụng các hàm và toán tử.

Ví dụ, trong ngôn ngữ C, các ký hiệu, chuỗi và booleans không được xác định. Kiểu char của nó thực sự là một số nguyên ngắn và cho phép thực hiện các phép tính số học.

Kiểu mới được hình thành bằng cách kết hợp thành một tổng thể duy nhất một số phần tử cùng kiểu (mảng, mỗi phần tử có một số thứ tự) hoặc các phần tử khác kiểu (cấu trúc, mỗi phần tử có tên riêng). Ví dụ: số phức không được xác định trong hầu hết các ngôn ngữ, nhưng chúng có thể được xác định:

Trong một số ngôn ngữ (ví dụ: C++), các toán tử cũng có thể được xác định cho các kiểu được tạo, cho phép bạn sử dụng các biến của các kiểu này giống như các biến của các kiểu được xác định trước.

Có nhiều cách khác để tạo kiểu mới. Ví dụ, trong ngôn ngữ Pascal có thể tạo ra:

    loại phạm vi (bằng cách chỉ định một phạm vi giá trị);

    các kiểu liệt kê (bằng cách liệt kê các giá trị có thể);

    thiết lập các loại

Các biến thuộc loại tập hợp có thể được sử dụng để lưu trữ thông tin về tập hợp thuộc tính của bất kỳ đối tượng nào. Điều gì đó tương tự có thể được thực hiện bằng cách sử dụng các biến có kiểu số nguyên, các bit được thiết lập của chúng cho biết sự hiện diện của các thuộc tính tương ứng. Rõ ràng, việc sử dụng bộ có khả năng chống lại lỗi lập trình viên cao hơn.