Show HN: Learn Swift(books.aidanf.net) |
Show HN: Learn Swift(books.aidanf.net) |
It's aimed at developers (like me) who can already program in a language like Ruby or Python and are looking for a quick tour of Swift.
It's available to read for free online at http://books.aidanf.net/learn-swift
I'll be adding stuff about yesterdays announcements in the next couple of weeks.
You say modern but I don't think it's really what you mean here.
Your descriptions of Ruby vs Obj-C make it seem that really what you mean is high-level; that is, to a newer programmer, easier.
These languages (Haskell excepted) make it very easy to do simple things. Describing them as "modern" in contrast with the implicitly antiquated Obj-C makes it a little hard to take your assertions seriously.
Verbosity is a claim to make, age is not.
http://www.objc.io/books/fpinswift/
No affiliation to the author/book.
I did find the first few examples with the REPL to be a bit confusing. Were you using a function before it was defined?
$ swift Welcome to Swift! Type :help for assistance. 1> 3.14 * 2.5 * 2.5 $R0: Double = 19.625 2> println("The area of the circle is \($R0)") The area of the circle is 19.625 3> 4> $R0 * 2 $R1: Double = 39.25 5> println("And double that is \($R1)") And double that is 39.25 6>
What's Double? Trying to follow this (which didn't make sense to me because I didn't know the history stuff was there) simply caused error messages.
I have recently started programming on iOS with swift. I got my head around the language just not any of the frameworks, specifically UIKit.
Also, Udacity has some iOS courses using Swift now as well. Here is the intro one: https://www.udacity.com/course/intro-to-ios-app-development-...
The Apple docs, at least last time I tried reading through them, were like wading through treacle so this is a great alternative! I just read the first couple of chapters in 10 minutes and got all the key info I wanted with no fluff - great job!
One edit suggestion - I've noticed a couple of times so far that "it's" is used incorrectly, for example in this sentence:
> You can’t change the type of a variable once you’ve declared it. It’s type is fixed at the time it is declared.
I assume you know the error here but on the off chance you don't:
it's = it is (it's a Bool) / its = the possessive of it (Bool is its type)
It's a little jarring so you might want to go through and fix these.
Cheers for the book! :-)
It turns out that it's really difficult to proof-read large blocks of text that you've written yourself :/ When your brain sees something it recognises it tends to speed up and skip over bits, seeing what it wants to see, thus missing stuff like this.
For learning a programming language I actually prefer the web format to the ebook. Now I've figured out how useful this book will be by reading a few chapters, I'll certainly purchase a copy anyway, $12 is more than reasonable for the value this provides!
But yeah, go with Swift, it's closer to Java than Objective-C is.
[1] https://developer.apple.com/library/ios/documentation/Swift/...
For comparison, the Apple book "The Swift Programming Language" comes in at 334 pages. "Learn Swift" comes in at 128 pages.
It breaks everything I've ever written, for no good reason. I also end up with a much smaller pool of libraries to choose from for new projects.
It makes no sense. In a microcosm of the universe where Python was the only game in town, Python3 would have worked out. Instead of moving to 3 and losing many advantages for churn, I can just go spend time with something else. Swift is pretty what I'd design if I could pick and choose features, so it's perfect for me- excited I'll be able to use it serverside while simultaneously learning the language for iOS.
Also, people frequently cite that moving from 2->3 is easy. It is. But they somehow forget that testing old, large projects is extremely labor intensive and always results in breakage. Unless you have 100% test coverage, which I know no one who does.
As far as unit testing goes, you are absolutely right. I unit test everything....I mean, I was taught TDD right out of the door at Uni, and though I don't exactly follow the methods strictly, I am at my core, a functional programmer. I want every last bit of code I write to do one and only one thing well. I, therefore, test all of those functions, no matter how mundane. But you know what? Even then, my test coverage on a good project, where I'm not just dicking around probably hovers about 85-95% coverage. There's just always some flotsam and jetsam that escapes the tests. First time I worked on a project with a team, I stressed my head off because of that very fact, until we did our first metrics review and I saw that I was actually ahead of most people....
The future of Python2 is actually very bright, while 3's is in jeopardy. That's why everyone is so pushy about it, they lose their bet if it never gets over the hump. Being as 3.0 was released in 2008 and it's now 2015, I honestly think that answer is already here.
Using 2, then switching to 3 if it ever does overtake it makes a lot of sense and is the sensible bet. But 3.x overtaking 2 anytime soon is really unlikely, and library worth anything will be 2+3 compatible and dropping 2 support would just be asinine with the ~83% userbase it holds today.
Even if Python3's userbase doubles in 5 years, it'll still be under 50% of the overall Python userbase. And I think doubling its current usage would be overly optimistic. Python3 will either collapse, or split the community (already has to a degree) with someone forking Python2 for good. Pyston may be that fork, or a couple other contenders.
The situation is a disaster all around. For Python and the community. Companies in some cases now aren't putting new product down in Python because of this. You'll be alright using 3, because no matter the final outcome you'll be able to go back to 2 without issues and vice versa. I only recommend 2 because you won't be missing any libraries if you use it, and if you want to do it for a job you'll be using 2.x anyway.
Python3's biggest purpose is giving people a reason to hassle maintainers to port to it. They bite on the political propaganda surrounding 3, that it's the "newest version", which for programming languages is not always in best interests of the user unlike an up-to-date web browser. Then when they find out x doesn't work or exist in 3, they badger whoever wrote a library for 2 to port. Those people really need to port it themselves and maintain it afterwards. They don't, and it's just an ugly situation.
For example, you can build iOS/Android apps using Kivy. Guess what, can't build for iOS unless you use 2.7! Just lots of surprises out there for those who start off wanting the "latest version". It's not the latest version, it's a new, breaking language. If you end up doing much cobbling with Python, this may be of interest to you.
I have my doubts 3 will get over the hump, and just plan on waiting till the complainers turn into maintainers and 99% of everything is ported. Then I'll use Python3 if I don't find something else I like more before then.