Đề cương khóa học

Giới thiệu về Lua

  • Một chút lịch sử
  • Mục tiêu, tính năng và những điều không thuộc phạm vi của Lua
  • Tài nguyên tài liệu và hướng dẫn của Lua
  • Cài đặt trình thông dịch Lua
  • Thiết lập và sử dụng LuaRocks

Cú pháp và ngữ nghĩa cơ bản

  • Định danh
  • Bình luận, bình luận khối
  • Biến toàn cục và thực thi nghiêm ngặt
  • Biến cục bộ
  • Chương trình độc lập, đối số chương trình
  • Đơn vị biên dịch, khối, biểu thức, dấu chấm phẩy

Kiểu dữ liệu và cấu trúc dữ liệu

  • Các kiểu cơ bản: nil, boolean, number, string
  • Các kiểu đối tượng: function, userdata, thread, table
  • Tham chiếu/đối tượng so với các giá trị cơ bản
  • Tầm quan trọng của bảng (tables) trong Lua

Giới thiệu về bảng (tables) và tính linh hoạt của chúng

  • Bảng như một mảng kết hợp
  • Bảng như mảng số, chuỗi

Các cấu trúc điều khiển cơ bản

  • Cấu trúc if then elseif else end
  • Vòng lặp while
  • Vòng lặp repeat
  • Vòng lặp for đơn giản

Xử lý lỗi

  • Giá trị trả về so với ngoại lệ
  • Chuyển đổi giá trị trả về thành ngoại lệ
  • Chuyển đổi ngoại lệ thành giá trị trả về
  • Mức độ nghiêm trọng của lỗi

Các chương trình ví dụ

  • Đánh giá đa thức
  • Tìm kiếm theo chiều rộng
  • Các bài tập bổ sung

Tìm hiểu thêm về hàm

  • Đối số được đặt tên
  • Gọi hướng đối tượng
  • Closures
  • Currying
  • Gọi đuôi (Tail calls)
  • Gán và trả về nhiều giá trị
  • Varargs

Iterators và co-routines

  • Vòng lặp for tổng quát
  • Iterators không trạng thái so với có trạng thái
  • Sự khác biệt giữa iterators và co-routines

Metatables và metamethods

  • Ví dụ về tập hợp
  • Metamethod __tostring
  • Metamethods số học
  • Metamethods __index, __newindex
  • Metamethod __len

Modules và packages

  • Sử dụng modules
  • Tạo modules
  • Tổ chức modules thành packages

Bảng nâng cao

  • Bảng cho hàng đợi và ngăn xếp
  • Bảng mô tả đồ thị
  • Ma trận dưới dạng bảng
  • Danh sách liên kết dưới dạng bảng
  • Bộ đệm chuỗi

Metatables thông qua các ví dụ

  • Proxies
  • Chỉ đọc
  • Memoization
  • Lập trình động với memoization
  • Ví dụ về Fibonacci

Environments

  • Mối quan hệ giữa biến toàn cục và environments
  • Biến tự do
  • Bảng _ENV và bảng _G

Tìm hiểu thêm về modules

  • Các cách khác nhau để tạo modules
  • Modules thay đổi hành vi
  • Khởi tạo và đối số module
  • Sử dụng environments để triển khai modules an toàn

Iterators và co-routines nâng cao

  • Producer, consumer, filter
  • Bọc co-routines để lấy iterators
  • Iterator không trạng thái cho danh sách liên kết

Đóng góp cho Hệ sinh thái

  • Tải packages lên MoonRocks

Mô hình lập trình hàm trong Lua

  • Hàm map
  • Hàm reduce / fold

Hướng đối tượng trong Programming

  • Các cách tiếp cận OOP khác nhau
  • Các cách tiếp cận kế thừa khác nhau
  • Ví dụ

Tổng quan về Thư viện Tiêu chuẩn Lua

Biên dịch

  • Biên dịch
  • Đánh giá
  • Mối quan hệ với environment
  • Các khối nhị phân

Thu gom rác

  • Bảng yếu
  • Finalizers, meta-method __gc

Bytecode và Máy ảo Lua

  • Tạo bytecode từ mã nguồn
  • Đọc và phân tích bytecode
  • Tổng quan nhanh về mã nguồn của Máy ảo Lua

Modules C

  • Gọi C từ Lua
  • Đường dẫn tìm kiếm và tải modules C

Gọi Lua từ C

  • Stack
  • Xử lý lỗi
  • Continuations

Xử lý các giá trị và kiểu Lua từ C

  • Mảng
  • Chuỗi
  • Userdata
  • Metatables
  • Gọi hướng đối tượng
  • Light userdata

Quản lý bộ nhớ

  • Allocators
  • GC API

Threads trong Lua

  • Co-routines so với threads
  • Đa luồng thực tế và trạng thái Lua

Requirements

Có kiến thức về ít nhất một ngôn ngữ lập trình khác. Kinh nghiệm Programming. Nếu bạn có thêm kiến thức về các ngôn ngữ kịch bản khác, điều đó sẽ giúp bạn dễ dàng hiểu Lua hơn.

 21 Hours

Number of participants


Price per participant

Provisional Upcoming Courses (Require 5+ participants)

Related Categories