Apple was a great place to start the language but its now completely really detrimental to it, largely due to its impact on the ecosystem (objc compatibility, xcode, focus on iOS only, etc).
I believe swift core team should now reorganize around a community of people working in various major companies, not just apple.
A language that only runs on a tiny fraction of hardware, has crappy documentation, has poor interoperability, a questionable developer toolchain that only runs on one platform and then to top it off anything you want to release with it basically has to go through an extortion racket where the worlds richest company is going to take 30% of your revenue and has the ability to shut you down at any point, for any reason and provides no meaningful recourse.
Honestly it’s a terrible choice.
If you've got something coming from developer.apple.com it will be specific to the Apple ecosystem. And of course this learning resource is Apple-specific since it is coming from developer.apple.com.
Also it’s quite a nice language to work with and developing native iOS apps is an enjoyable hobby.
I wouldn’t want to tie my pay cheque to it though for sure.
And users of their hardware tend to be the most dedicated to the platform and willing to pay for software. And they have more money than the overall average "computer user".
Nothing to brush off.
I'll offer a counter and say that if you like the Apple ecosystem, there's never been a better time to get started. SwiftUI is an amazingly great way to build apps – and again, I've been doing this for a very long time so I'm speaking from experience here.
For smaller developers, the revenue share can be as low as 15%.
Also, for anyone weighing the decision keep in mind that while iOS may not represent the largest marketshare in the world, their users are well known to spend more money on the platform compared to other platforms.
Great! That’s so much cheaper than the 0% you can get on other platforms.
This used to be acceptable when Apple was innovating and providing extra value, today it doesn’t fly.
As a hobbyist I love having international commerce largely papered over and abstracted away. There’s no need to worry about exchange rates, taxes, hosting, or bandwidth. This is well worth the 15% to me.
Beyond your time investment, which platforms costs more than $0?
Do you have recommendations for learning Objective-C for a front-end web developer?
I'm starting with "Objective-C Programming: The Big Nerd Ranch Guide" but would appreciate resources recommended by someone who's built a "career on Apple platforms".
My apologies for so open-ended a question.
I'd be curious why Objective-C now? Still has its place for some things. It's interoperability with C++ for instance, especially if you're dealing with things like Metal or certain real time audio libraries.
It's also probably a niche in terms of maintaining legacy stuff. Like being a Fortran developer and having your pick of contracts because nobody remembers it anymore and some crucial piece of infra relies on it.
But, Big Nerd Ranch guid is how I learned! And again, by doing projects. Just pick something you want to build with it and see it through to the end. Like writing, it's best to plough through and just get SOMETHING that works end to end, knowing that it'll be your first draft and you'll get it better on the second Tim around.
Good luck!
My advice would be to swim with the current and choose Swift and SwiftUI unless you have a good reason not to.
Some of the newer frameworks don’t support Objective-C and I only see that trend continuing.
My goal is to write native software for macOS, which I understand to be more amenable to Objective-C.
I am also interested in Swift but want to focus on Objective-C for my first projects.
I heard of 100 Days of Swift[1] as well. Do people have feedback on the matter?
One more resource I'd add for a beginner, the book The Swift Programming Language: https://docs.swift.org/swift-book/documentation/the-swift-pr...
Apple has always enabled staying in their desired UI and workflow, but I've usually been able to find a way to coerce the system to do what I need.
That appears to not be the case, with SwiftUI. You need to follow The Rules. Workarounds are crazy complex.
But I love working in Swift. It's just that I ship [UI|App|Watch]Kit.
Example in a recent app was it was easier for me to use a UIScrollView for the image panning and zooming functionality it offers. Simple matter of wrapping that one element in the Representable.
Generally, for me it's been a ginormous productivity booster. I can rip apart and re-design a SwiftUI app and it doesn't break. That was always a lot more of a challenge with pre-SwiftUI apps.
For example, I wrote a dashboard app for the social app we wrote. Part of it, is a map, displaying the geographic distribution of users.
It needed to be affected in a number of ways, and SwiftUI completely fell down. I spent over a week, trying all kinds of crazy stuff, and then gave up, and coded up the map screen in about four hours, with UIKit.
Since this is a central feature of the dashboard, it meant that I had to also toss the previous week's SwiftUI work, and start from scratch with UIKit.
I'm not very happy with UIViewRepresentable, and I eagerly await native SwiftUI API elements.
While I understand many love development with Apple, I decided never to touch anything to do with it. Linux, even Microsoft, are much easier to get things done and not locked up to a closed ecosystem.
- It is no longer simple, Swift 4 onwards have been piling the complexity higher than I previously thought possible. I would never recommend it as a language to teach. I would have with Swift 3, but 4 to now - absolutely not - too complex.
- It was never open, but the language features dropped on the community to support SwiftUI cemented the fact that outside contributors are not treated with any respect. Worth reading - this is from the guy who created the language! https://mjtsai.com/blog/2022/02/22/why-latter-left-the-swift...
- Swift on the server is dead. Swift on other platforms has dreadfully poor support. It would and should be rejected for anything outside of iOS apps.
Kotlin or Rust are much much better choices that live in the same space that Swift projects would be considered for.
Enormous caveat for SwiftUI, but that's not part of the language, it's a framework. The parts of the language that enable it are perfectly nice.
Error handling is great and works well with async. Protocols and enums are amazing. It’s keeping up with new patterns and techniques such as implementing move semantics and actors. As well as c and c++ interop, and so on.
Support is coming for other OSs.
Kotlin constantly clashes with java. It almost feels like typescript + JavaScript.
Rust doesn’t allow for shared mutability making common/simple patterns for making apps much more difficult. I like rust but it has its own place.
I compile in a Docker, and deploy the resulting image (multi-step docker file, first step for compilation, second step copy the resulting binaries).
Installing Swift on Linux is a one-liner now if you want to avoid Docker https://swift-server.github.io/swiftly/. EDIT: Two-liners actually: first install swiftly then install Swift…
“sudo dnf install swiftlang” is all it takes to get started.
https://developer.fedoraproject.org/tech/languages/swift/swi...
VSCode works pretty well with the sswg extension (powered by sourcekit-lsp). Devcontainers are particularly nice if you are into that sort of thing (I develop in a Linux container on a macOS host). I actually find it easier to experiment with new toolchains (for example, the nightlies) in the Linux container than on my host machine (which requires more manual setup).
PWAs or nothing.
PWAs are the alternative App Store we need, not a just a bandaid.
https://knowyourmeme.com/memes/most-people-rejected-his-mess...
The parent is right that web technology is the most democratic solution, but native fanatics will never accept the truth.