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
structlà lựa chọn mặc định. - Protocol và Generic 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ời là
async/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.