If you write a test for every single function on your system, and your system keeps changing, how will you know when a function is not necessary anymore?
You can be sure that if a language brings a testing framework -- even minimal -- in its standard library, the ecosystem around it will have better tests than a language that doesn't carry a testing framework, no matter how good the external testing frameworks for the language are.
There is one magical thing you need to know when reading this book: It's all personal opinion
Gherkin is file format for writing behaviour tests (BDD). But it can also give you some insights on what you should do.
The view of the whole is greater than the sum of its parts. And that includes tests for the whole compared to tests of single things.
Testing things in isolation may give a better view of your APIs.
You know that "Play" with a little something on your IDE that runs only the tests? Do you know what it does?
A lot of people, when they start with TDD, get annoyed when you say that you may have to rewrite a lot of stuff, including whatever your already wrote.
"Things I Learnt The Hard Way (In 30 Years of Software Development)" started as a simple sequence of toots (the same as "tweets", on Mastodon when I was thinking about a new presentation I could do.
But why "a new presentation"?
"Without requirements or design, programming is the art of adding bugs to an empty text file." -- Louis Srygley