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). Show
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. 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úcKhô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. _main: ## @main ## BB0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.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
.asciz "GeeksforGeeks"
.section __TEXT, __cstring, cstring_literals
.asciz "%s %d n"
|