Having worked on an introductory programming book using Swift, here is my two cents:
Without question, the best "first programming language" I have ever come across was UCSD Pascal. It was simple, clean, taught good habits, and most of all....
To me, a good "first" programming language is one that can be taught incrementally, without having to use expressions like "Just accept this for now, I'll come back and explain that fully later." In that respect, Swift fails miserably.
Example:
So you've just finished teaching the student about scalar variables (Ints, Doubles, Characters, Bools, etc.) and now you're ready to move on to arrays (historically, the first aggregate/composite data structure students learn). So you tell them "Here's how to declare an array:"
And give them var a:Array<Int>......
Now you get to explain what those angle brackets are all about; except that generics are way in the future at this point.
It doesn't stop there, to do basic things the student will need to use various methods in beginning programs. Yet you haven't talked about classes, enums, structs, or protocols at this point. So the student asks: "Why are we using names like something.else and why can't I use periods in my identifiers?"
The list of little problems like this goes on and on. Not a chapter goes by in the book I'm working on that I don't have to say "I'll explain that further in a later chapter."
In many respects, I understand why some authors have taking an "objects first" attitude when teaching C++ or Java as a first programming language (an approach I totally disagree with).
After working a bit on this project, I begin to see the attraction of (Dartmouth) BASIC as a first language
.
Another indication of how good a language might be as a first programming language is the length of the book you need to write for an introductory text. Pascal, for example, could be taught in a couple hundred pages (and the student knew the language well at the end of that book). Modern books in Java or C++ are many hundreds of pages, if not over 1,000 pages (e.g., Introduction to Java Programming is nearly 1,400 pages) and it is questionable how much of the language the reader has learned when they finish the book. The Swift book I'm working on will probably hit 1,000 pages and certainly won't cover the whole language.
This is not to say that Swift can't be taught as a first language, just that it's probably not the best choice as a first language.