🥬
FreshForFresh
  • ✌️Xin chào!
  • Overview
    • 💡Data structures and Algorithms
    • 👀Programming
    • 🧠Database
    • 🦴Back-End
    • ✨Front-End
    • 💐Spring Framework
    • 🛠️Tool
  • Data structures and Algorithms
    • 🎰Data Type
    • 🗑️Garbage collection
    • 🧩Data structures
    • 🎲Algorithms
  • Programming
    • 🧮Compiler
      • 🤖Tại sao phải cần compiler?
      • 📠Java Virtual Machine
  • 📈Thread
  • 🔐Lock & Deadlock
  • 🏇Race condition & Data Race
  • 🧯Synchronized
  • 🗜️Blocking IO và Non Blocking IO Client Server Socket
  • 🌐Languages
    • 🎛️Programming Language
    • 📑Client-Side & Server-Side
    • ⁉️Why java? Why javascript?
  • 🗼Design pattern
    • 🎨Front-End Design Pattern
    • 🏗️Back End Design Pattern
      • 🐴with Java
      • 🦄with Spring Boot
      • 🐖with Modern Backend Development
      • 🐁with Microservice
  • 🍀Clean Code
    • 🌊Chương 1: Code sạch
    • 📐Chương 2: Quy tắc đặt tên rõ nghĩa
    • 🚧Chương 3: Cách viết hàm
    • 👻Chương 4: Comments thế nào cho chuẩn?
    • 🥳Chương 5: Định dạng code.
    • 😈Chương 6: Đối tượng và cấu trúc dữ liệu
    • 🐛Chương 7: Xử lí lỗi
    • ☦️Chương 8: Ranh giới code
    • 🧪Chương 9: Unit test
    • 🥂Chương 10: Lớp đối tượng
    • 🥡Chương 11: Code sạch cấp hệ thống
  • Database
    • 🐔Giới thiệu
    • 📰Các loại cơ sở dữ liệu
    • 🐘Các loại DBMS phổ biến
    • 🕵️‍♀️SQL và cách sử dụng với relational database
      • 👺Lệnh SQL
      • 🛢️JOIN trong SQL
      • 🛕GROUP BY trong SQL
      • 🐼ORDER BY trong SQL
      • 🐣Truy vấn con SUBQUERY trong SQL Server
      • 🏦Transaction Trong SQL
      • 🇲🇰ACID
    • ☢️Thiết kế cơ sở dữ liệu
    • 🕍Consistency and concurrency handling
      • 🔒Database locking
      • 🎮Concurrency Control
      • 🙀Isolation Level
    • 🎨Performance & Scability
      • ☝️Indexing
      • 👯‍♂️Partitioning
      • 💅Các tips tăng hiệu suất SQL
      • 🇲🇬Kiểm tra và Xác thực việc Sao lưu và Phục hồi CSDL
      • 🌠Database sharding
      • 🧘‍♂️REPLICATION
      • 😁Các vấn đề ảnh hưởng đến performance.
  • Back-End
    • 🔫API?
    • 🐕‍🦺Web Services
    • 💾Phân biệt API và web service
    • 🙆‍♂️Tìm hiểu về RestAPI
    • 🧦SOAP
    • ✈️GraphQL API
    • 📊Compared GraphQL & REST
    • 📄Phân biệt HTTP & HTTPS
    • 🚵Client & Server
    • 🇩🇲DOM
  • Front-End
    • 🦑User Interface (UI)
    • 🛰️State Management
  • Spring Framework
    • 🔐Spring Security
      • 🌅Đơn giản hoá Spring Security
      • 🌸Spring Security: Authentication and Authorization In-Depth
      • 🚻OAuth2 Basic
      • 🀄JWT + Spring Security Oauth
      • 📤Logout trong ứng dụng sử dụng bảo mật Oauth
      • 🔂Reset Password
      • 🎗️OAuth2 Remember Me với Refresh Token
      • ⛓️OAuth2 cho một Spring REST API
  • Network
    • 💸Mạng máy tính căn bản
  • Tool
    • 🦏Các câu lệnh Docker cơ bản
    • 🦧Github
      • 🐰Các lệnh Git cơ bản
      • 🐇Một số trường hợp khi sử dụng Git
    • 🏚️WebServer
      • 🪂Tổng quan về kiến trúc hệ thống
      • 🔃Cơ bản về WebServer Nginx
  • Tài nguyên
    • 👨‍🏫Course
    • 📖Docs
Powered by GitBook
On this page
  • Lịch sử của programming
  • Compiler và Interpreter

Languages

Sơ khai về programming

Lịch sử của programming

Khi các natural programming languages ban đầu được phát triển, chúng được chia thành 2 loại lớn tuỳ vào cách giao tiếp với phần cứng bên dưới đây:

  • Compiler: chương trình hoàn chỉnh được viết bằng syntax gần với tiếng anh tự nhiên với compiler và ngôn ngữ sau đó sẽ được compiles(hay translate) toàn bộ thành machine code. Compiled code sau đó sẽ chạy trên hardware.

  • Interpreters: mọi high-level code được interpreted thành machine code một cách nhanh chóng. Các câu lệnh được viết ra sẽ được phần cứng chạy ngay lập tức trước khi nhìn vào câu lệnh tiếp theo.

Compiler và Interpreter

Compiler
Interpreter

Các bước lập trình

  • Tạo chương trình.

  • Phân tích ngôn ngữ và báo lỗi khi có lệnh sai.

  • Trường hợp không lỗi, Compiler chuyển đổi code nguồn thành Machine Code.

  • Liên kết các file code khác nhau thành chương trình có thể chạy.

  • Cuối cùng chạy một chương trình.

Các bước lập trình:

  • Tạo chương trình.

  • Không yêu cầu liên kết file hoặc tạo Machine Code.

  • Chạy lần lượt từng lệnh nguồn.

Lưu Machine Language dưới dạng Machine Code trên đĩa.

Không lưu Machine Language.

Code biên dịch chạy nhanh hơn code thông dịch.

Code thông dịch chạy chậm hơn code biên dịch.

Mô hình hoạt động cơ bản là Linking-Loading.

Mô hình hoạt động cơ bản là thông dịch.

Tạo kết quả dưới dạng (.exe).

Không tạo đầu ra.

Mọi thay đổi trong chương trình nguồn sau khi biên dịch đều cần biên dịch lại toàn bộ mã.

Bất kỳ thay đổi nào trong chương trình nguồn trong quá trình dịch không cần dịch lại toàn bộ mã.

Lỗi được hiển thị đồng thời trong Compiler sau khi biên dịch.

Lỗi được hiện trên từng dòng.

Có thể xem trước mã, điều này giúp chạy mã nhanh hơn nhờ thực hiện Tối ưu hóa.

Hoạt động theo dòng làm việc của code, đó là lý do tại sao Tối ưu hóa chậm hơn một chút so với Trình biên dịch.

Không cần code nguồn để chạy sau đó.

Cần code nguồn để chạy.

Chạy chương trình chỉ diễn ra sau khi được biên dịch hoàn toàn.

Chạy chương trình sau khi đánh giá hay kiểm tra mỗi dòng code.

Compiler mất nhiều thời gian phân tích code nguồn.

Interpreter mất ít thời gian phân tích code nguồn hơn.

Compiler dùng nhiều CPU hơn.

Interpreter dùng ít CPU hơn.

Chủ yếu dùng Compilers trong Production Environment.

Chủ yếu dùng Interpreters trong Programming & Development Environments.

Code đối tượng được lưu để dùng trong tương lai.

Không lưu code đối tượng để sử dụng cho tương lai.

PreviousBlocking IO và Non Blocking IO Client Server SocketNextProgramming Language

Last updated 1 year ago

C, , C#, Java ... là các ngôn ngữ dựa trên Compiler.

, Ruby, Perl, SNOBOL, MATLAB,... là ngôn ngữ dựa trên Interpreter.

🌐
C++
Python