Strict Concurrency Check for Older Projects

前言

前陣子 Swift 5.10 釋出了,同時代表 Swift 正準備進入下一個 major release — Swift 6。Swift 6 這條路算來已經走了超過四年,可喜可賀。

每次這樣的大改版,總是帶給開發者們各種期待及焦慮。雖然升上 4 & 5 時都還算平順,但 Swift 3 可是當年 Swift 的 early adopters 難以忘懷的大改,著實讓人傷了些腦筋。

這次從 Swift 5 升到 6 的一個改進重點是在 concurrency 領域。這些改變對一些老 AppKit/UIKit 專案可能有很大的影響,改動的幅度讓人聯想起當年的 Swift 3。所以在 Swift 5 就有一個 “Strict Concurrency Check” 的 compiler 選項,讓大家可以提前開始準備。

Continue reading

又要個人化教育?Teaching Machines 讀書心得

最近讀了 Teaching Machines: The History of Personalized Learning 一書 (MIT Press, Amazon),作者是 Audrey Watters,一位在教育科技的論述中常有與眾不同論述的學者/作家。我這幾年三不五時會讀到她的著作,它們十分適合在感受到「科技將會翻轉教育!」的一頭熱時,澆下一勺冷水來回復理性。

Continue reading

Swift Protocols and Generics, Part 2: Protocol as Type 和 Type Erasure 有什麼關係?

這是一系列以「建構基礎概念」為目標,希望能幫助 Swift 開發者更加瞭解 protocols 和 generics 的文章。文章索引、相關資源以及較詳細的介紹,請見系列簡介。希望讀者在看到文章裡提出問題的時候(請注意 [Q] 標示),能夠一起試著解釋看看,好深化你個人的理解。

上次在 Part 1 裡,我們試著分辨 protocol 和其他的 type 有什麼不一樣。當 protocol 作為 type 使用時,它被稱為 existential type。本篇會假設讀者已經熟悉 Part 1 的內容。

這次的篇幅較長,但是與其拆成數篇,我想把閱讀方式交由讀者自己決定。如果這些對你來說是比較不熟悉的概念,我建議分次分段閱讀,這樣吸收的效果會更好。

Essential Question

如果有人問你這個問題,你會怎麼解釋?[Q]

核心問題:

Protocol as type,也就是 existential type,和 type erasure 之間有什麼關係?

延伸問題:

Type erasure 有什麼替代方案?它們和 type erasure 有什麼性質上的不同?

Continue reading

Swift Protocols and Generics, Part 1: Protocol 和其他 Type 有什麼不一樣?

這是一系列以「建構基礎概念」為目標,希望能幫助 Swift 開發者更加瞭解 protocols 和 generics 的文章。文章索引、相關資源以及較詳細的介紹,請見系列簡介

希望讀者在看到文章裡提出問題的時候(請注意 [Q] 標示),能夠一起試著解釋看看,好深化你個人的理解。

Essential Questions

如果有人問你這個問題,你會怎麼解釋?[Q]

核心問題:

Protocol 作為一個 type,和 enum, struct, class… 等等其他的 type 有什麼不一樣?

延伸問題:

在 Swift 5.6 以後,protocol type 的 variables 前面要加上 any 一字。為什麼要改成這樣?

Continue reading

Thoughts on Writing Good SRS Prompts, Part 2: Using SRS Beyond Memorization

This is the second part of my thoughts on writing good SRS prompts after reading this guide by Andy Matuschak. In part 1, I mused on what it means for a prompt to be good. One aspect of judging whether a prompt is good has to do with what we intend to learn with the prompt. That is, how good is the learning goal underlying the learning tasks defined by the prompt? But given the diversity of goals that we might have, how do we know if the spaced repetition system is the right approach to achieve them?

To be more specific, SRS is tailor-made for memorization-type learning goals. But ideally, we want to learn things way beyond remembering facts, and it would be very exciting if SRS can be an effective tool for those as well. So this time, I want to focus on the very idea of using SRS beyond memorization. Do we have any reason to believe this is a good idea? What could go wrong? While I want to express certain concerns, I’ll also make some conjectures on how we might address those concerns.

Continue reading