If by many, you mean less than 1%, then yes. :)
I've never met anyone who actually does this. JetBrains is even discontinuing AppCode, which as far as I know was the only real alternative IDE (and it had a lot of holes in its functionality).
Xcode lacks decent refactoring tools but otherwise it's a perfectly fine IDE, and has some really powerful debugging abilities. Don't get me wrong, I don't think Apple is giving it the attention it deserves, but in my experience most people hate it just because it isn't IntelliJ or VSCode.
Here’s my reasons:
- Xcode has many failure cases for refactoring or is slow at finding symbols across extensions. Jetbrains handled it effortlessly. God forbid something crosses a target boundary.
- Xcode is really terrible for multi language projects. If you’re sticking to ObjC and Swift, it’s fine, but the C++ support is really poor. If you need to throw in Python or anything else, good luck. Jetbrains handle multi language super well.
- extensibility is a big deal. Xcode isn’t extensible (well only in a very limited way) and there’s many plug-ins that I either use or create for myself to speed up my work.
If Xcode supported LSPs, it would honestly change the equation greatly. But today myself, and several other devs I know, edit outside Xcode and build via the command line tools instead.
What you leave behind though are any of the interactive bits like live previews, storyboards, all the core data utilities.
C++ official support in OS frameworks relates to IO and Driver Kit, LLVM and Metal Shading Language.
Whatever works for Objective-C also works for C.
* refactoring functions/methods: adding and removing parameters, renaming parameters, etc.
* safe-deleting symbols
* advanced search tools. Not just "find selected symbol in workspace", but "find places where this variable is being written to"
Also, the refactoring tools that Xcode does include are very unreliable. Even simple renaming will often fail, even on small projects, or will mistakenly rename unrelated symbols.
It was always a struggle for JetBrains to keep up with Apple dropping new stuff with no notice though, and I can’t remember when I last tried AppCode
Another thing thats highly annoying is that compile errors don't get properly cleared on builds, so if there are multiple errors, it might just be that one of them is a real error, but the others are stale.
Lately I've been working with Swift Packages, and now restarting Xcode many times a day is part of my workflow - otherwise compile errors persist.
Ive been in iOS for a decade now, so mostly I don't get hung up one these issues, I know how to clean the "derived data" folder, I know how to jiggle it "just so" to get it to do what I want. But still its frustrating that the most important tool in my job is doomed to be moderately broken forever.
It might be a "grass is greener" scenario, but whenever I hop to IntelliJ, I don't encounter any of these kinds of problems.
Oh, and BTW, if you want to check Xcode out for yourself and have trouble downloading it, its not you - Xcode is like 20GB big. I guess you need lots of space for the world's most broken syntax highlighting algorithm...
Oh wow, I opened it about once to compile something, had this issue and had to clear a bunch of caches. I thought I was holding it wrong. Signing to get an ios-on-mac app to run was also a hellish experience; I think I ended up using the iPad emulator to preview the thing.
It felt a lot like they don't want you to develop things and I guess that fits with their general perceived disdain for general purpose computing (download the big-corp SaaS app from the App Store and shut up).
Swift on server has been usable for a while now too.
I think the next big bottleneck on popularity will be tooling, and a solid VS Code extension is a small step forward in addressing that issue.
As someone who’s been using Swift for years on iOS/macOS, I’d love to use it for desktop development on Windows and Linux. I think the language is well suited for that purpose, and it strikes a nice balance between safety, speed, features, ease of writing, and clean syntax which isn’t matched by too many other languages.
The traditional cross platform approach is to write it in JS and use the native UI framework API, which works but its not native anywhere and you have to write JS.
So instead of doing that, you can start with Apple platforms and port to the other platform where porting would mean just UI and device specific API implementation as the Swift can be portable. You wouldn't be trying to build native UI with Swift but you would use the Swift code as a service which handles everything except the UI where the UI implementation will communicate with your Swift code.
The advantages are:
1) Working with Swift, which is pleasant to work with.
2) Apple's all platforms are on the same architecture and as a result, running your code for mobile on your dev machine works at full speed. This means, even the cheapest Apple Silicon device provides great performance on your workflow. No more sluggish emulators.
3) Preserve the data structures across all platforms and these data structures are not JS data structures. You have integers for example :). Categories of bugs and work to make things fit vanish.
The several times I've tried to do anything with it, I just gave up and found an alternative. My guess is that if you've been using Apple tools for years, then it makes sense, but to me it's indecipherable. The menu options don't seem to match with the GUI, resource views don't seem to match the files, random panels appear with unnecessary information, resources are needed for unclear reasons and more.
It's all very Apple, but in the worst way possible. It's like the IDE version of AppleScript - seemingly useable but based on a logic which totally escapes me.
It’s just “dnf install swift” and you’re all set.
I would love to see more Swift adoption, I know at one point IBM was investing in it for server-side programming, but I think they’ve abandoned that.
It seems to be a nice sweet spot of relatively easy to code, expressive, powerful, memory safe, and performant.
I’d love to see like a gccSwift the way there’a a gccRust coming together. I think that would be really cool.
It also opens up the potential for development on non-Apple equipment if the CI can handle builds.
You can’t develop for iOS as their frameworks are as of now (this is changing, they’re rewriting Foundation) tied to macOS, so this doesn’t change much