Sigh.
Sigh.
1. Swift collections and strings are value types, but in C# they are reference types
2. Swift strings are mutable, C# strings are not
3. C# by default allows reference types to be nil, Swift does not
4. Swift performs overflow checking by default, C# does not
5. Swift is reference counted, C# is GCed
6. Swift's inouts are very different from C#'s ref. For example, Swift's inouts support properties
7. Swift's error handling is quite different from C#'s exceptions, both in syntax and implementation
8. Swift's enums act as algebraic data types, C# has nothing like this
9. Swift's switch statements are much more flexible than C#, because of where clauses
and more.
These are some radical departures! The differences between Swift and C# are much greater than the differences between C# and Java.
C# is, in essence, better Java. Much, much better Java. Swift is a different language, it implements some new ideas (much more advanced type inference) and forces the programmer to thinks in a different way (by trying to eliminate nullability).
Swift is not a perfect language (my biggest gripe is very awkward generics implementation), but it is a good language, and it's getting better. Saying that it's "a shit language currently on the spot just because Apple" isn't fair, I think.
I don't know anyone in PL who thinks Swift is a bad language. It's a nice, conservative, tasteful design that uplifts some proven functional features. What's not to like?