Trang chủ

Giới thiệu

Cuốn sách nói về điều gì, và viết cho ai

Phần lớn tài liệu Swift dạy bạn viết sao cho biên dịch được. Cuốn sách này nói về chuyện xảy ra sau khi biên dịch xong — chỗ nào giá trị bị sao chép, lời gọi nào phải đi qua bảng ảo, trình biên dịch đã phải từ bỏ điều gì khi bạn dùng protocol, và vì sao bộ kiểm tra đồng thời lại từ chối một đoạn code trông rất hợp lý.

Swift đặc biệt ở chỗ nó giấu đi rất nhiều thứ. Một phép gán struct có thể là sao chép một trăm byte, cũng có thể chỉ là tăng một bộ đếm tham chiếu. Một lời gọi protocol có thể được nội tuyến hoàn toàn, cũng có thể phải đi qua bảng nhân chứng và một hộp trên heap. Nhìn mã nguồn không thấy được gì cả. Bạn viết Swift rất lâu mà không cần biết — cho tới ngày cầm bản đo hiệu năng trên tay thấy sai lệch, hoặc một cuộc tranh chấp dữ liệu chỉ xuất hiện trên máy khách hàng, và lớp trừu tượng thôi không còn miễn phí nữa.

Sách dành cho ai

Bạn viết Swift hằng ngày. Bạn nắm optional, closure, if let. Thứ bạn cần bây giờ là tầng bên dưới: không phải thêm cú pháp, mà là mô hình giải thích vì sao cú pháp lại hành xử như thế.

Sách được sắp xếp thế nào

Các chương xây trên nhau chứ không đứng riêng lẻ.

  • Giá trị và tham chiếu dựng mô hình mà mọi thứ còn lại đứng lên trên: một phép sao chép thật sự tốn gì, và vì sao struct là lựa chọn mặc định.
  • ProtocolGeneric là hai câu trả lời cho cùng một câu hỏi — viết code một lần dùng cho nhiều kiểu — với hai cái giá khác nhau lúc chạy.
  • Sequence và Collection cho thấy bạn được gì khi tham gia đúng cách vào hệ thống protocol của Swift, và mất gì khi làm giả nó.
  • Chuỗi là nơi Unicode thôi không còn là chuyện của người khác.
  • Bộ nhớ nói về ARC, những vòng lặp tham chiếu nó không tự gỡ được, và các lối thoát unsafe.
  • Đồng thờiasync/await, actor và Sendable — một hệ thống kiểu dành cho thời gian.
  • Hiệu năng gom tất cả lại: cơ chế điều phối lời gọi, cấp phát bộ nhớ, và cách đo thay vì đoán.

Mẹo

Mọi đoạn code ở đây đều nên được dán vào playground hoặc REPL swift rồi nghịch thử. Đọc về copy-on-write mười phút không dạy bạn bằng việc thấy isKnownUniquelyReferenced in ra false đúng lúc bạn đinh ninh nó phải là true.

Về phiên bản

Toàn bộ nội dung nhắm tới Swift 6 cùng chế độ kiểm tra đồng thời nghiêm ngặt. Chỗ nào là tính năng mới — typed throws, parameter pack, tham số sending — sách sẽ nói rõ, vì một lượng lớn lời khuyên về Swift trên mạng có trước chúng và vẫn đang lặng lẽ chỉ bạn cách lách những vấn đề mà ngôn ngữ đã giải quyết xong.