It started out as a very usable, mid-sized language, with many tooling issues. Now it is a kitchen-sink language with almost every imaginable feature (and more coming!) that still has tooling issues. It's no longer as pleasant to read unless you keep up on the latest additions. You can't easily read code that uses the myriad of new features without a long weekend learning what every property wrapper in this particular program means and how to use the new feature of the month.
In my opinion while it was still a mid-size language, they should have fixed all of the tooling issues, and then very incrementally over a long period of time added new features. Instead it's more of a "move fast and break things" culture. Which is not what I want in the evolution of a programming language.
I completely agree. It feels like the designers of Swift gazed into the C++ abyss too much. I really wanted it to be an ergonomic systems language. Zig now fills that void for me.
Some core designers of Swift, at least Doug Gregor, John McCall, Dave Abrahams, were very much part of the C++ world. Abrahams mentions Gregor's proposals for C++ here: https://youtu.be/6JYAXADQmNQ?t=1157
I have the feeling Swift is more complex than it needs to be, too, but can new high-level languages really be simple? Nowadays, you need a memory model, async, generics, value and reference types, move semantics, concurrency, full Unicode support, etc.
Go tries to solve that, but gets criticized for its simplicity.
Also, I suspect part of the friction writing Swift isn’t language complexity but tooling issues. to what effect that’s true is hard to say of course. For example, compilation slowness introduces friction, but I wouldn’t know whether that’s inherent or solvable.
There also are a lot of “the compiler could be smarter” things that do not change the vision of the language, but do affect its ease of use. Such warts make the language harder to write than necessary. If those issues can be fixed, the language can become easier to write. An example is https://github.com/apple/swift-evolution/blob/main/proposals....
If that process cannot stop, I think it’s better to leave a few warts that programmers will soon encounter and learn about than many very rare ones that, when encountered, will make programmers pull all their hairs out because googling them only produces “I changed Foo and the compilation error went away” results or StackOverflow pages without answers.
I looked at Kotlin and Swift at the same time some years back and they seemed extremely similar. I didn't enjoy ios development and am currently an Android developer. I've been using Kotlin for a while now and it's easily my favorite language.
Did Swift take a wrong turn somewhere that set it on such a different path from Kotlin?
It started out as a very usable, mid-sized language, with many tooling issues. Now it is a kitchen-sink language with almost every imaginable feature (and more coming!) that still has tooling issues. It's no longer as pleasant to read unless you keep up on the latest additions. You can't easily read code that uses the myriad of new features without a long weekend learning what every property wrapper in this particular program means and how to use the new feature of the month.
In my opinion while it was still a mid-size language, they should have fixed all of the tooling issues, and then very incrementally over a long period of time added new features. Instead it's more of a "move fast and break things" culture. Which is not what I want in the evolution of a programming language.