Skip to main content

Introduction

Mục tiêu

  • Tìm hiểu về interpreter/compiler

    • Các lý thuyết và khái niệm về cần thiết
    • Implement interpreter cho một programming language
    • Cách thiết kế một programming languages
  • Functional Programming

    • Sử dụng một pure functional programming language để viết interpreter
    • Tìm hiểu sâu hơn về các advanced FP techniques/concepts (Monad, parser combinator)
  • Thực hành coding best practices

    • Testing
    • Github workflow/PR/Code review
    • CI (CD???)

Crafting Interpreters

Team sẽ sử dụng quyển Crafting Interpreters.

  • Free
  • Có nhiều recommendation
  • Cân bằng hợp lý giữa lý thuyết và thực hành
  • Code bằng Java/C nên dễ đọc hiểu

Nội dung

Quyển Crafting Interpreters sẽ implement 2 interpreters cho ngôn ngữ Lox.

Interpreter đầu tiên

  • Sử dụng Java
  • Focus vào các concepts, techniques của interpreter/compiler
  • Giúp người đọc hiểu rõ về programming language (design, behaviours)

Interpreter thứ hai

  • Sử dụng C
  • Implement một số data structures cần thiết (vd: dynamic array, hash table).
  • Tối ưu hoá tốc độ bằng cách compile thành bytecode và viết một VM để thực thi trên runtime.

Cách hoạt động

  • Mỗi người trong team sẽ chia nhau làm từng chương
  • Sau khi đọc xong thì sẽ code, rồi tạo PR trên github
  • Các thành viên khác sẽ review/discuss trong PR đó
  • Sau đó thì sẽ viết report & present cho grokking lab team
  • Mọi người có thể làm việc song song với nhau (miễn là có sự thoả thuận về code interface)

Code & Tools

Team

Team