4 ms·
It's a fully fledged programming language. An open-source programming language, at that, with a lot of community input and involvement. Not a macOS or iOS app
by ElFitz 6y ago
It's a fully fledged programming language. An open-source programming language, at that, with a lot of community input and involvement.
Not a macOS or iOS app creation DSL.
It's also quite pleasant to use, and has already seen a few uses beyond macOS and iOS apps, including some backend development (Vapor, Kitura, SwiftNIO, probably others).
So you could use it to write command line tools. To write Linux or Windows apps. Or to write servers. Just like any other programming language.
- jbverschoor 6y agoI'd say swift is currently probably the best languages out there. Language features, standard library, performance, memory management.
- seanparsons 6y agoJust checking my notes...and the answer is no.
- zapzupnz 6y agoDismissive responses like this are frowned upon by the HN community guidelines. Give your reasonings, not a snide remark.
- seanparsons 6y agoOK then: - Slow compilation, I think even now immutably concatenating a handful of strings makes the compile time exponential. - Over reliance on keywords and special case syntax, magic doesn't compose. A bunch of it just supports Optional for example. - Xcode, nuff said. - Equatable and Hashable for tuples were implemented with invisible compiler magic, so they wouldn't work with generics. - Variance is hot garbage, it has variance, but no way to control it. - No higher kinded types, so useful FP abstractions become a chore to implement. - I regularly had compiler crashes on comparatively simple code. - Sometimes absolute nonsense compile errors pointing at random parts of my code. - SourceKit didn't handle basic stuff like type aliases. Going on the various things I've seen since we switched our project to JavaScript from Swift it looks like the keyword soup has gotten worse.
- dep_b 6y agoSounds like you describe the state of Swift at least three years ago. SourceKit just doesn't crash anymore on me anymore, ever. Compile times are quite good for me nowadays, still not as fast as Objective-C but then again you don't get compile time guarantees for free.
- seanparsons 6y agoThe exponential issue was still there in version 4 and I think 5 as well. Didn't say SourceKit crashed, but it was virtually useless because it functioned like a crap version of the language parser.
- dep_b 6y agoSo what's particularly hard on the compiler are hard coded sets of data that have mixed types. For example a dictionary that reflects a JSON response that also has nested dictionaries. It helps if you test declare it like: let json: [String: Any] = [ /** lots of fields here */ ] String concatenation: could you give me a specific piece of code that fails? It could be that I really never write code that triggers the problem. Using the + operator to concatenate strings has some performance issues though. I'm not telling you're crazy, I just noticed that things got so much faster in the past two years.
- seanparsons 6y agoThe string concatenation issue was that if you do a ++ b ++ c... When that got to about 6 variables that single line alone took a minute to compile. Go to 10 variables and just give up on ever seeing a result. I used to try it in online Swift REPLs and it was still happening with whatever was most recent a bit over a year ago.
- seanparsons 6y agoOMG, they actually fixed the a + b + c... issue I assume in version 5 (5.1.1 is what I have available in NixOS).
- DagAgren 6y agoAgreed. I have not seen any other language that is as pleasant to use. It is not perfect, but everything else is even further from perfect.
- blauditore 6y agoI'm curious, how do people judge this? Personally I have some significant experience with maybe 5 different languages, which is already more diverse than the average software dev as far as I know. But I still wouldn't be comfortable to judge something like this. For instance, I haven't worked with Swift, but I find it hard to believe it's much better than, say, C#, Scala, or Typescript, regarding those metrics. Do you have experience in those languages?
- dimatura 6y agoIt's subjective, naturally. I don't know if I'd be that enthusiastic, but I definitely like it a lot. My main languages are Python and C++. I've also used Java, C#, Javascript but not Typescript, among others. In my opinion Swift does a pretty good job at striking a balance between expressiveness/usability, safety and performance. If it gets more traction under Linux (including a larger ecosystem and better tooling around it) I'd definitely consider it for projects where Python could become a bottleneck but C++-level performance is not absolutely required. On the other hand, other languages in a similar niche - Rust, Go, even D or Nim? are already more established outside of iOS/MacOS, so I don't know. My experience with Swift has definitely made me more interested in learning Rust, which seems quite similar in some respects.