3 ms·
Fulltime swift developer here : am i the only one that worries swift is evolving way too fast and adding way too many features, that make the language so bloate
by bsaul 3y ago
Fulltime swift developer here : am i the only one that worries swift is evolving way too fast and adding way too many features, that make the language so bloated it’s going to reach C++ level of complexity in less than half the time ?
- carlhung 3y agoI have the same feelings. It just makes me want to throw up now.
- pjmlp 3y agoC++ has the fame, but isn't alone in that regard. C# 12 with .NET 8 standard library, Java 21 with standard library, Python 3.11 with standard library, plus knowing key versions on their timeliness, and major third party libraries are just as complex. So nope, it is impossible to know everything. Even those that claim to fully understand "simple" languages like C, they actually master their own C compiler and are unaware of all variants and deviations of it.
- bsaul 3y agoGolang is my other language, and i must say it’s really one of my favorite, mainly due to all the things it chose not to do.
- pjmlp 3y agoJust wait, generics weren't going to happen, and then they did.
- bsaul 3y agotook them 10 years though. One major addition to the language every 10 years is a good rythm. Also, their addition of generics felt super natural and didn't change the general feeling of the language. Compare that to swift that has added await async, macros, move semantics, actors, in just a few years, while keeping everything that was already there... So now we have both gcd and actors, both macros and the hack they used for swift UI, and yet xcode integration is still awful, and there's still no decent story for cross-platform development (just compiling for android for example). It's a mess..
- Someone 3y agoBecause it avoided some of the bad choices made in programming languages in the past half century I don’t think it will reach C++ complexity. For example, it doesn’t have the C preprocessor, (unless I missed some developments) avoids some of the complexity of C++ public/protected/private inheritance, and makes it hard or even impossible to make some errors that are way too easy to make in C++, such as not following https://en.cppreference.com/w/cpp/language/rule_of_three https://en.cppreference.com/w/cpp/language/rule_of_three. They sure seem to be trying, though. It does add such things as async and ownership, and those complicate the language, but IMO not programming in the language. It only makes issues explicit that C++ programmers also have to think about, but cannot clearly document in code. I also think it’s starting to be two languages: the relatively simple high-level one that it started out as that has Unicode strings, reference counting, copy-on-write data structures, and makes multi-threading magically work through GCD and a low-level one that has byte arrays, ownership, allows implementers to implement data structures the way they want and has explicit locks, etc.