So sánh ngôn ngữ máy và ngôn ngữ bậc cao

Bắt đầu với một ngôn ngữ lập trình đòi hỏi cần có những kiến thức tổng quan về nó, trong thế giới của ngôn ngữ lập trình chia thành ngôn ngữ lập trình bậc cao [High level programming languages] và ngôn ngữ lập trình cấp thấp [Low level programming languages].

Vậy điều gì dẫn tới sự khác biệt này, liệu rằng thấp ở đây là trình độ thấp hay dễ hơn, còn cao thì khó và cần năng lực cao hơn để có thể nắm bắt?

Câu trả lời cho câu hỏi hóc búa này sẽ được giải đáp thông qua bài viết dưới đây.

Nhiều không kể xiết nhưng yếu tố nào xác định ngôn ngữ lập trình bậc cao, ngôn ngữ lập trình bậc thấp?

Về Low level programming languages [LLP]. Bắt đầu với định nghĩa khô khan từ wiki nha anh em.

A low-level programming language is a programming language that provides little or no abstraction from a computer’s instruction set architecture—commands or functions in the language map that are structurally similar to processor’s instructions Ngôn ngữ lập trình cấp thấp là ngôn ngữ cung cấp ít hoặc không có sự trừu tượng [abstraction] từ kiến trúc máy tính. Nói chung điều này đề cập tới mã máy hoặc hợp ngữ

Tới đây với người mới bắt đầu tìm hiểu ngôn ngữ lập trình thì vẫn hơi trừu tượng và khó hiểu. Để hình dung đúng về Low level programming, ta cần thêm một đoạn thông tin khác.

Generally, this refers to either machine code or assembly language. Because of the low [hence the word] abstraction between the language and machine language, low-level languages are sometimes described as being “close to the hardware”. Programs written in low-level languages tend to be relatively non-portable, due to being optimized for a certain type of system architecture. Về tổng quan, ngôn ngữ lập trình cấp thấp là ngôn ngữ lập trình cung cấp ít hoặc không có sự trừu tượng từ kiến ​​trúc tập lệnh của máy tính — các lệnh hoặc chức năng trong bản đồ ngôn ngữ có cấu trúc tương tự như lệnh của bộ xử lý.

Rồi ngon, từ khóa là đây chứ đâu, anh em bám vào 2 cái “không có sự trừu tượng” và “có cấu trúc tương tự lệnh bộ xử lý”. Nắm được hai từ khóa này cũng là yếu tố then chốt giúp ta hiểu về Ngôn ngữ lập trình bậc cao.

1.1 Sự trừu tượng và cấu trúc

Không có sự trừu tượng nói tới việc ngôn ngữ này không gần với ngôn ngữ tự nhiên, còn cấu trúc tương tự lệnh bộ xử lý là đang muốn nói tới mã máy.

Một ví dụ cụ thể của cấu trúc tương tự lệnh bộ xử lý là mã máy [assembly code].

Ví dụ mã máy phía trên đây nhìn phát hiểu ngay là không gần ngôn ngữ tự nhiên. Bạn nào ở bắc thì là “cậu, tớ”, bạn nào ở miền trung là “mô, chi, tê, răng, rứa”, bạn nào ở miền nam thì “mèn đét ơi”. Đấy, những cái đấy là ngôn ngữ gần với tự nhiên.

Điểm này là điểm cốt lõi để phân biệt giữa LLP [ngôn ngữ lập trình bậc thấp] và HLP [ngôn ngữ lập trình bậc cao].

Dưới đây là ví dụ hàm khai báo 2 biến a và b, thực hiện in ra màn hình phép tính a + b. Điều cực kì đơn giản với bạn với C++ hay Java.

.section    __TEXT, __text, regular, pure_instructions  
.macosx_version_min 10, 12  
.global    _main  
.align    4, 0x90  
_main: ## @main
.cfi_startproc  
## BB

0:
pushq    %rbp  
Ltmp0:
.cfi_def_cfa_offset 16  
Ltmp1:
.cfi_offset %rbp, -16  
movq    %rsp, %rbp  
Ltmp2:
.cfi_def_cfa_register %rbp  
subq    $16, %rsp  
leaq    L_.str[%rip], %rdi  
leaq    _s[%rip], %rsi  
movl    $2000, -4[%rbp]         ## imm = 0x7D0  
movl    $17, -8[%rbp]  
movl    -4[%rbp], %eax  
addl    -8[%rbp], %eax  
movl    %eax, %edx  
movb    $0, %al  
callq    _printf  
xorl    %edx, %edx  
movl    %eax, -12[%rbp]         ## 4-byte Spill  
movl    %edx, %eax  
addq    $16, %rsp  
popq    %rbp  
retq  
.cfi_endproc  
.section    __DATA, __data  
.global    _s                      ## @s  
s:
.asciz    "GeeksforGeeks"  
.section    __TEXT, __cstring, cstring_literals  
L.str: ## @.str
.asciz    "%s %d n"  
.subsections_via_symbols

2. Ngôn ngữ lập trình bậc cao [HLP]

Một khi đã hiểu về ngôn ngữ lập trình bậc thấp, ta sẽ dễ dàng hiểu về ngôn ngữ lập trình bậc cao. Cũng vẫn phải bắt đầu với định nghĩa.

A high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language elements, be easier to use, or may automate Ngôn ngữ lập trình bậc cao là ngôn ngữ lập trình có tính trừu tượng hóa mạnh mẽ từ các chi tiết của máy tính. Ngược lại với các ngôn ngữ lập trình cấp thấp, nó có thể sử dụng các yếu tố ngôn ngữ tự nhiên, dễ sử dụng hơn hoặc có thể tự động hóa

Cùng xem xét ví dụ dưới đây [ngôn ngữ lập trình Java]. Đọc từ nào hiểu từ đó, dễ như ăn chè, sau anh em cuộn xuống xem đoạn code đơn giản hơn mà viết bằng assembly nha. Hết hồn hà.

import java.util.Scanner; public class HelloWorld {

public static void main[String[] args] {
    // Tạo scanner instance  
    // Nhập từ bàn phím  
    Scanner reader = new Scanner[System.in];  
    System.out.print["Nhập số: "];
    // nextInt[] đọc giá tị số từ bàn phím  
    int number = reader.nextInt[];
    // println[] in ra ngoài màn hình  
    System.out.println["You entered: " + number];  
}  
}

Lấy một ví dụ khác về phép bình phương trong toán học. Với C++, ta đơn giản nhân 2 số với nhau để có giá trị bình phương.

int square[int num] {

return num * num;  
}

Cũng với hàm xử lý này, nếu chuyển qua ngôn ngữ máy. Kiểu nhìn thấy là lạy chúa trên cao, cái gì thế này.

square[int]:

    push    rbp  
    mov     rbp, rsp  
    mov     DWORD PTR [rbp-4], edi  
    mov     eax, DWORD PTR [rbp-4]  
    imul    eax, eax  
    pop     rbp  
    ret
Một số ngôn ngữ lập trình cấp cao phổ biến là C, C++, Python và Java.

3. Sự khác biệt

Sau khi đã hiểu rõ và nắm bắt được điểm cốt lõi để phân biệt ngôn ngữ lập trình cấp thấp và ngôn ngữ lập trình bậc cao. Anh em cùng đi sâu hơn tìm hiểu sự khác biệt của 2 ông thần này nha:

Ngôn ngữ lập trình cấp cao Ngôn ngữ lập trình cấp thấp It is programmer friendly language. Là ngôn ngữ thân thiện với ngôn ngữ tự nhiên. It is a machine friendly language. Ngôn ngữ thân thiện với mã máy. High level language is less memory efficient. Sử dụng bộ nhớ kém hiệu quả hơn Low level language is high memory efficient. Sử dụng bộ nhớ hiểu quả It is easy to understand. Dễ hiểu, rõ là vậy rồi It is tough to understand. Khó hiểu, cũng rõ là vậy lun. It is simple to debug. Dễ để debug tìm lỗi It is complex to debug comparatively. Khó để debug và tìm kiếm lỗi It is simple to maintain. Dễ dàng để bảo trì nâng cấp It is complex to maintain comparatively. Khó để bảo trì nâng cấp It is portable. Có thể chạy ở nhiều môi trường It is non-portable. Thường set cứng và khó thay đổi It can run on any platform. Có thể chạy trên bất cứ nền tảng nào It is machine-dependent. Phụ thuộc vào máy

Từ sự so sánh trên đây, ngôn ngữ lập trình cấp thấp cũng không hẳn là “thấp” ở một số tiêu chí, nếu xét về sử dụng và quản lý memory, một số ngôn ngữ lập trình cấp cao vẫn chưa thể so kèo được với “ngôn ngữ lập trình cấp thấp”.

Nhược điểm của ngôn ngữ lập trình bậc cao là gì?

Nhược điểm của ngôn ngữ lập trình bậc cao: Không thể thực hiện tối ưu hóa hiệu suất hoặc dùng một số phần cứng nhất định. Bộ nhớ tiêu thụ ở mức cao hơn. Chương trình nhị phân có kích thước lớn hơn.

Câu 1 đâu là một ngôn ngữ lập trình bậc cao à Python B Pascal C Cobol D Python Pascal Cobol?

Không giống như trước đây chỉ có một vài ngôn ngữ bậc cao, ngày nay có vô số ngôn ngữ bậc cao như C, Cobol, FORTRAN, Pascal, Java, Perl, Python, PHP, Ruby, C ++, BASIC và Visual Basic …..

Có bao nhiêu loại ngôn ngữ lập trình bậc cao?

Danh sách các ngôn ngữ bậc cao phổ biến bao gồm:.

Scala..

JavaScript..

Python..

Ngôn ngữ lập trình bậc cao được sử dụng trọng tin học 10 là gì?

Ngôn ngữ bậc cao là ngôn ngữ trong đó các câu lệnh được viết gần với ngôn ngữ tự nhiên hơn, có tính độc lập cao, ít phụ thuộc vào các loại máy cụ thể và nó đều có một chương trình dịch để dịch những chương trình viết bằng ngôn ngữ này sang ngôn ngữ máy.

Chủ Đề