"Because mathematics in huge parts just plainly fails in describing reality."
I'm sure Sir Isacc Newton would be very surprised to hear this.
Actually, what mathematics is extremely good at is describing the relationships between things. Which is what declarative, e.g. functional, programming languages also do - allowing you to describe the relationships between your inputs and outputs, while leaving it up to the machine to figure out how/when/if/where to perform the actual calculations. What math is not so good at is describing relationships between state and time. Mind you, neither are your imperative programming languages - the fact that they can do it at all doesn't mean they actually do it well. Especially when non-determinism gets involved - i.e. anything other than a single-threaded single process that never interacts with shared resources - a naive conceit that is comically unrealistic in this modern ubiquitously networked world, but which a great many programmers seem to cling to anyway.
If anything, imperative languages are the best argument for eliminating, containing, and minimizing use of state as much as humanly (and inhumanly) possible, because if a system's too complex for a human to reason correctly about, then it had better be strict enough that the machine can. That, for example, means creating small, focused, declarative DSLs for common tasks, such as wiring GUI Views to stateful Models, where it's more reliable for the human to describe the relationships between the inputs and outputs and let the machine figure out what to recalculate and refresh when, than the other way about. Eliminate statefulness and provide a nice, concise, expressive algebraic syntax, and you won't fix all the woes of software development, but you will eliminate very specific subsets, leaving developers more time to work on the remaining messy that can't be automated away.
Unfortunately, Swift firmly screws the pooch on this, because it is a big complex ball-of-mud language that doesn't believe in metaprogramming, never mind vigorously support it. You can't just cut Swift down, say, to the minimum subset of 'safe' features only, and then build up your own declarative DSL on that. Even if you could, its bigball-of-mud-ness makes it impossible to guarantee that something internal won't sneak about puncturing holes in the abstractions you do build. Any pretense at mathematical rigor is inevitably compromised by design and implementation; heck, you can't even express simple, valid requirements such as `[Hashable:Foo]` or cast from `Any` to `as? [Any]`, without it getting upset. (And don't get me started on the value vs reference debacle; as if C and Java weren't enough of a lesson on the eternal pain caused by that nonsense.) It's a reactive design, discovering and dealing with problems as they arise, instead of designing it so such problems cannot exist in the first place. It's going to take years just to shake out all the bugs and holes and other problems, and that's assuming they don't spend more time slapping on even more features (which programmers love) instead of ironing out the ones they've already got (which programmers hate). To quote Tony Hoare:
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult."
The best description of Swift I've seen is "Compiler Oriented Design". Another good description is an endlessly sprawling mish-mash of special cases always falling just short of the general. Parsimonious it is not, and that means we're all going to be paying a stupidly high price in the long run, just because it was cheaper for its authors to make it complex than simple in the short. Originally Swift was just Lattner having some fun inventing his own language (which is fine and good exercise); quite how it got from there to here speaks more of hubris and wishful optimism than steely-nosed pragmatism, along with the industry's standard (and by now no doubt ISO-standardized) failure to heed Fred Brooks' "write one to throw away" mantra.
TBH, I wish Apple'd looked at Swift, said "that's nice", and then just gone ahead and made a 'safe' ObjC, much as Cyclone was a 'safe C' or C# a safe 'replacement' for C++, because Swift simply isn't enough of an improvement over that to justify the years of awkwardness and inconsistency that are going to ensue just because it wants to stand out. Ultimately, it's the Cocoa APIs, not the language, where all the real value is, and all they've really done is de-value that asset in return for an unproven handful of beans. But then, no-one ever got famous or promoted by taking a conservative, continuous non-disruptive approach to language design, which is why the languages we do get completely **** at evolution, and why all our revolutions turn out to look much the same as before, only with a newer paint coat on top.