“Swift will be open source later this year”
apple.com
apple.com
Supporting the standard libraries on Linux is certainly a surprise, though.
Think: How many iOS apps are frontends to a server API? And how many of those APIs are running on Linux servers? Swift on Linux means ~all the code for a client-server iOS app can be written in the same language.
[1]: http://www.opensource.apple.com/source/CF/CF-1151.16/Makefil...
target: dependencies
command
The command is run by a shell (e.g. bash!) when the target is called to be run. For example... all: hello world
echo "!"
hello:
echo "Hello"
world:
echo "World"
Now if you run "make", you will see each command being run. By default, if you call "make" with no arguments, the "all" target will be run. You can also call "make world" for example, to have it only run the "world" target. As you can see, first the dependencies of the target are called, then the command of the target is run.It's often used by C/C++ projects in order to manage dependencies, but can be used for anything really.
Here's a short tutorial you can walk through if you're interested in how it works and why it's useful: http://mrbook.org/blog/tutorials/make/
https://news.ycombinator.com/item?id=9500855
Being able to deploy on Linux might be what it takes!
Swift on the backend would be even better, I think. Between all the languages that have evolved lately (including Go and Rust), Swift has struck me as the one that feels the most like my ideal language.
There was a great community around WebObjects and it's a shame that Apple didn't open source it in a timely fashion-- they could have changed things quite a bit.
It is still used in heavy production- for instance the iTunes store is a WebObjects Application as is, I believe, the App Store.
Here's a recent thing that came out of that group, which I'm interested to see in a server-side project: http://coreobject.org/
Android ships with Bionic libc, which is different from the glibc that is usually shipped in a Linux distro. There are definitely some differences between the two.
Plus the average Android app is very far from the average Linux app. If they were aiming at supporting Android, I think they would have said that instead of Linux.
Thanks for the chuckle, almost r/programminghumor worthy ;-)
Now with the move of things into just the app bare bones style docker VM's in which the app is a service upon a server then maybe some form of runtime that enables some applications would be useful, maybe.
But if they went into the server market, then the trust of doing partnerships with server focused vendors would diminish. Though VMWare would probably be just as happy, if not more and that would be about it. IBM, for the arrangements they have now, work for both of them too well to upset I feel.
Render farms have largely been supplanted by Linux, and studio networking can either be handled by a Mini on the shelf or a Windows server in the closet.
Still they do like consumerising things and who knows, personal home iCloud that sits in your home would perhaps be a likely server offering if any they may take as targeting consumers. That if any route is maybe the one that could happen.
Almost all the documentation and best case expects Macs to be tied to an Active Directory / MS environment for management.
As a typical Web / LAMP host, OS X really is not that performant. Unix tools execute faster on a RHEL/CentOS box then an OS X (even if the OS X box has higher specs). MySQL is particularly bad if it hasn't been tuned, and most of the literature seems to indicate that OS X (or more specifically MACH) doesn't have the level of optimisation for server workloads.
That being said, if your using the OS X frameworks, there can be some great value with exceptional performance (just look at the startup using Mac Pros as image manipulation servers).
It doesn't feels pragmatic at all. It relies on users to do the compiler's job(type assertions) , because "You dont need that with Go"TM ...
Right now the annoyance I hit more often is the inability to map a []Foo on an attribute .Name (string) to get a []string. I do that in ruby all the time, and with Golang it really sucks to do a for loop to collect stuff appending to a new array.
people.map(&:name) => ["Joe", "John"]
vs a := make([]string, 0)
for _, p := range people {
a = append(a, p.Name)
}C was unprincipled and pragmatic too, it was created with the goal of making UNIX portable. Still, C became one of the most popular and influential languages.
While I prefer ADTs/generics too, let's not forget that many people are less principled and pragmatic factors influence language choice as much (toolchain, ecosystem, popularity, familiarity).
That was a side effect of successful startups (Sun, SGI...) adopting UNIX as their OS.
Sun used Unix because Sun was co-founded by Bill Joy. By that time, Joy was already deeply involved in Unix (per BSD). If he didn't find Unix and C likeable and up to the task, they would have made different choices.
SGI and Sun were just one of many catalyzers, like a lot of programming languages have catalyzers.
The startups that have chosen UNIX, did so because the owners were part of the American UNIX university culture.
A different background would have mean a very different history in mainstream OSes and their respective system programming languages.
In Europe C had very little meaning until most enterprises started to replace their mainframes by UNIX servers from those companies.
I do think there's something intrinsically good about it compared to other contemporary systems languages - I don't think it's just that it tagged along with Unix.
When the problem is boring, use a fun & challenging language. When the problem is fun and challenging, use a boring language.
With that said I will root for Clojure + ClojureScript. One could theoretically build a framework much more advanced than Meteor, on the same code-sharing principles.
If anyone has an old mac that can run modern xCode (you probably know what this constitutes more than me) and wants to donate it to a dedicated open-source developer for completely unspecified future projects, feel free to email me at (my handle on hn)@(googles email service). thanks
I've been using a hackintosh since 2008. It's literally never been easier to get one up and running.
I don't know what kind of magical book of voodoo spells these people are using.
I wonder if the web is just biased towards success because generally the people who haven't succeeded have nothing to say.
If so, it would be nice to get insight on the whole picture here somehow
But some hardware is just not compatible and that's it, nothing you can do about it.
It _does_ take some tinkering, though, and if you aren't comfortable with that (or if your time is valuable enough), you should invest in the real deal. :)
...I'll show myself out.
Mark my words: Swift won't replace JS, not even PHP.
EDIT: Also, what's the point of writing Swift code in Linux if you aren't developing for iOS? As a non-iOS developer nothing at all compels me to learn Swift. It doesn't bring anything to the table that JS, Python, Ruby etc don't already do better. Except iOS support. HN tends to forget that just because iOS is the default in the US it's not internationally. Apple is a luxury brand, not a commodity one.
Programmers say they want better languages, but good luck trying to convince them to switch to a new language just by its merit. The only tangible benefit of Swift is that it can be used instead of Objective-C for iOS -- which is important for iOS because Objective-C poses an even bigger hurdle by virtue of its unfamiliar syntax. Swift wins on iOS because it competes with a language nobody wanted to learn to begin with.
Even as far as familiarity goes, the only thing Swift looks familiar to (based on first impressions) is Ruby, except it uses a more familiar C-like syntax (i.e. braces). While Ruby programmers are extremely visible (especially in startup/valley crowds) there aren't that many of them -- not to mention that some have already moved on to Rust or JS.
> But programmers don't want better languages
With TypeScript and/or ES6(7)+Babel. These have a pretty healthy userbase between them and there's a lot of excitement around ES6 which leads me to think that developers do want better languages.
Also... I want a better language. I'm not sure how you'll convince me otherwise and I don't think I'm alone in this sentiment.
Do they want a "different" language... maybe, maybe not. I suppose my comment about Apple "positioning" (and I'm careful to use that word) Swift as a replacement to Javascript can make a lot of sense to Apple and people who develop for iOS and OS X.
Firstly, Apple doesn't need buy in from other browser vendors. They can supply a Swift runtime with Safari (desktop and mobile) and I think it would be no more difficult to write a Swift to ES5 transpiler than it is to write an ES6/7 to ES5 transpiler, meaning that web devs can be agnostic about what browser their web app is running on and make demote Javascript to simply being a build task.
Secondly - Swift is going to have a lot of developer support. Because native apps are are increasingly dependent on a corresponding Web API - I think it's reasonable to expect people to be happy about sharing code between the front and back ends of their apps. I think nodes biggest advantage over any other server-side languages is that I can use node packages in both place.
Thirdly - I don't think Apple really cares wether "web developers" have an issue with this. They care about providing tools and solutions for people who develop for and use their platforms. If they can make the case that Swift is going to be "better" than Javascript by some metric we don't know right now, then that's what they'll do. Everyone else can go cry in a corner.
Also, Down-votes? Really? It's not the most radical idea in the world and I fail to see how someone could take offence from it.
PS: Apologies but I don't have time to watch that video right so I hope I haven't got the wrong end of the stick.
Programmers do want better languages, but they are extremely allergic to friction.
Parts of ES6/7 are relatively low friction thanks to Babel. But even so moving the majority of JS devs to modern JS is a very slow and long process.
Swift may make a dent if Swift-to-JS becomes a thing, but compile-to-JS languages are mostly a failed experiment (see the lack of success of "serious" languages like Dart or the decline of CoffeeScript). The advantage of Babel over other to-JS compilers is that you're just compiling JS to JS and it carries the promise that one day you won't need the compilation step at all.
The "JavaScript is the ASM of the Web" idea, while enticing, has time and again failed to come true. I don't think Swift can succeed where others have failed, even if it would allow iOS developers to write web apps.
At the risk of having to swallow my words, I don't think Swift-in-the-browser poses any risk to JS. I also don't think Swift-on-the-server will have a major impact, although I can imagine iOS-heavy shops wanting to use Swift when developing server APIs for their apps.
I agree that Apple will carry on regardless. Apple is all about controlling their ecosystems, so I wouldn't be surprised if they try to pose Swift as an alternative to JS (much like their unilateral CSS extensions back in the day).
About the video: basically Douglas Crockford (of JSON fame and JSLint infamy) argues that history has proven that developers (as a whole) favour similarity over "betterness" when it comes to the success of programming languages. They're more likely to pick something that is nearly exactly like what they already know than something that requires them to adjust their mental model, even if it is superior in nearly every way. The entire series is worth a watch IMO, and helps appreciating why and how JS got to the point where it is today.
I agree that server-side Swift may become a thing for iOS developers writing their own server APIs, but I'm only inclined to believe that it will at best become yet another alternative alongside Node, Ruby, Python and PHP. After all, Swift will only be a logical choice if you're already using Swift as the primary language -- i.e. only if you're writing native iOS apps.
For the "Swift in the browser" narrative it's also important to remember that the web is not just JavaScript. Even if you can abstract away DOM manipulations as in React, you still have to be aware of HTML and CSS and how everything comes together. Replacing JS with Swift only provides another layer of indirection, you still have to be a web developer to write web apps.
Considering how previous attempts to pretend you're not actually writing JS worked out (Ruby developers using CoffeeScript, Java developers using Dart or GWT, Python developers using PyJS, etc) I don't think JS in the browser is going anywhere, no matter how much some people would wish it.
Avoiding this "fracture" could have been a powerful argument for it, along with maintaining control (the nodes iojs situation could not have inspired confidence, though that was not due to interoperability from what I know)
Golang is a pragmatic crowd. Go into #go-nuts on freenode, you'll notice that discussion rarely deviates from solving problems. Many links to the go playground. Go, from the beginning, shaped their community in this way. Consciously? Who knows. But the community turned out the way it did and I believe that's a result of their start.
Haskell is a computer scientist crowd. People write in haskell because they enjoy the functional paradigm and haskell is a purely functional language. Discussion on freenode? Very dense. People are expected to grasp topics easily and the community initially gives everyone the benefit of the doubt that they are capable of understanding it until they ask for more help.
When I look at swift, the only thought I have is that it is the new iOS language. I don't believe they'll be able to deviate from that. I don't see myself making iOS apps, so I don't see myself every writing a single line of the language. When I first looked at swift, my impression was that it was a wierd and somewhat-functional language that had a few unique things. Maybe I would have taken an interest in it. But at this point, I don't want to have to wade through a bunch of iOS specific questions to get what I need. I don't want to have to deal with being a beta tester for their linux implementations. I don't want to use the language when I'm probably going to be using it in a vastly different way than the rest of the community is. My interests are going to be second class.
It's not necessarily set in stone, but I think it is. In a world where there's a new language every day, I just don't see why I'd go with swift.
That's just like your opinion man.
If Swift is Open Source it's gonna be a huge thing, for two reasons: (a) it already attracts millions of developers because it's the suggested language to develop iOS apps in, and (b) it's a nice modern language that plays in a very hot niche (with languages like Go, Scala, Rust etc).
>When I look at swift, the only thought I have is that it is the new iOS language.
OTOH, tons of people and HN and elsewhere expressed their liking for the language and how they wished it was open sourced so they can use it elsewhere too.
Specifically, http://nondot.org/sabre/
> Of course, it also greatly benefited from the
> experiences hard-won by many other languages in the
> field, drawing ideas from Objective-C, Rust, Haskell,
> Ruby, Python, C#, CLU, and far too many others to list.C# was in good shape and got better with Microsoft's recent cross-platform moves; Swift has started way behind, but is doing very, very well.
Luckily for us, the two languages are not worlds apart. Crossing from one to the other won't be a terrible thing -- so lean back and enjoy your popcorn.
And Swift doesn't have the stigma of being a "bad" language when compared to JS.
Except Swift has the stigma of being a "dumbed down" Objective-C.
Which I pointed out isn't always a good thing. You know how Rails kind of overshadows Ruby because so much use of Ruby is related to rails? Well I think swift will face the same exact fate. I'm not interested in developing iOS frontends or iOS backends in the language. I firmly believe Web will win, and I believe it's going to happen sooner than most people do.
And I firmly believe that Google, Apple, and Microsoft are scared shitless of that idea. Why do you guys think we've seen such a recent renaissance in programming language development and availability? From the years 2000 -> 2010, what did these companies put out? Microsoft had .NET, just as they have since the dawn of time. As far as I can google, it seems that Google put out absolutely nothing. Apple revived Objective-C. Absolutely no progression or innovation whatsoever.
Cut to the last 5 years. Microsoft is dabbling in functional programming in the form of F#...in spite of the fact that their developers are in enterprise and presumably have no interest in this voodoo functional programming. Just in these past few months, they released Visual Studio and .NET on Unix! Meanwhile Apple's making Swift, a language that is simple enough to be used by hipster Apple developers who make iOS apps but also complex enough to have some decent functional elements. Google develops Golang and Dart? They decided to go with Java for android, but now they're interested in spending money developing languages with names on them like Rob Pike and Ken Freakin' Thompson?
Ballmer has been quoted as calling linux "cancer". Now Microsoft is hosting linux VMs for cheap and paying people to develop tools for unix users. When apple launched the iPhone in 2007, they had only 8.1% of the PC market, and yet they opted to risk the success of the iPhone in exchange for maintaining a closed ecosystem and require iOS developers own a mac instead of providing development tools for Windows. Now, when that risk turns out to have paid off and they have a dedicated community of developers, they're suddenly deciding multiplatform support for Swift is important?
Web is winning.
What happens when we can make our apps with ReactJS and cut Google out of their android adsense money because it's just a webview? What happens when we can make our apps with ReactJS and suddenly the iPhone advantage is nil because every app is available on every device and they look exactly the same on every device? What happens when we interact with computers solely through the web and mobile, and Windows continues to lose PC marketshare and maintain their pathetic 2.5% with Windows Phone?
This is embrace, extend, extingush at it's purest. Microsoft wants you developing on their languages using their tools because they know that .NET isn't really licensed under free licenses, and since that means they control where applications run best, they hope they can outperform web and get developers on their platform. It's certainly a stretch, but they're scared.
Apple is operating on the same principle, but theirs is actually permissively licensed. It makes no difference, you can be sure that Swift will be most conveinent for iOS and OSX developers. It's a first class product for Apple devices, but they say they want the community to help them provide support for other devices? Have fun relying on that.
I don't have Google totally figured out. Their goal is probably to bring Golang to android. They're investing in providing a very unified Android experience enhanced strongly by the power of Google Now and their google services, just look at recent android releases. If I can write a backend in golang, host it on google services, and write the client side in go as well, it's a very attractive environment. To be honest, when it comes to Google, I have more faith that they can, sometimes, act altruistically. I don't think Go was an altruistic action, but look at how they give back to open source via GSoC. No one else does anything close. The only big name I think is better than Google is Mozilla.
Speaking of Mozilla, why do you think they're developing Rust and Servo, with lots of experimental rendering techniques? They're betting on web and at being the best at it.
TL;DR: They're giving you new languages and development environments because they are holding on for dear life, and I'm not willing to accept being charmed into closed development environments. The state of tech is a direct result of truly free software that is dictated by the community and the community only. Accept nothing less.
If you mean "everything but HTML-based web sites", that's accurate. If you mean the actual Web sites, I really don't see it. The Web is huge, so isn't exactly dying, but it certainly isn't winning.
Native mobile is "winning", in terms of being usually a far superior UX, and by sheer numerical demand. Native still often (thankfully) uses architectural elements of the web (URIs and HTTP) and the UX of Hyperlinking. But the HTML web as we know it hasn't kept up well with the native experience. With the massive investments in IoT being laid down along with VR/AR experiences coming out of Facebook, Google, and Microsoft, this trend will likely only continue, unless someone releases a new innovative hypermedia format & client that catches on.
"They're giving you new languages and development environments because they are holding on for dear life, and I'm not willing to accept being charmed into closed development environments."
I applaud your commitment to openness, truly, but I suggest you need to look at the global market little harder. These companies are not holding on for dear life. They're growing in power. I watched the WWDC Keynote. The crowd just about had kittens when they announced Swift will be open sourced. Twitter nearly exploded. These are anecdotes yes, but the numbers are backing Swift's meteoric rise.
Apple has a vested interest to promote Swift far and wide, perhaps even going so far as Sun did with Java, with the hindsight of their mistakes. Whereas Google could have done this with Golang but seem to be keeping a lid on it for unknown reasons. Best theory I have is that Apple is a product company and Google is a technology company. Golang is making good headway as a server-side language mainly by several companies that aren't Google.
Yeah?
I could type a URL to anything here, and you could view it.
If instead hide my content behind an app, I can't deep link to it. The likelihood of you installing the app to see the content is way lower. You need space on your mobile device to install my app. Potentially a password entered to install it. It needs to be compatible with your device. You need to approve my permissions. The content of my app isn't searched in any search engine. You can't bookmark where you were.
I'm not at all convinced that native mobile has "far superior UX." Sure, aspects of it, no question.
And sheer numerical demand? Again, I'm not so sure. Actually, I'm quite sure you're wrong.
"If instead hide my content behind an app, I can't deep link to it. "
This is not true. I enter a URL into my iPhone's Safari, it deep links into the App associated with the domain. We just watched a WWDC keynote that showed plenty of deep linking between apps, from Siri, etc.
"The likelihood of you installing the app to see the content is way lower..."
This is also contrary to the data - people love apps, download and use apps like mad. Over $100 billion in revenue is expected to be from mobile apps this year. That's bigger than Hollywood box office 3x, bigger than book publishing 10x, bigger than PC software. The only thing it doesn't eclipse is packaged/server software yet.
Installing and using apps is demonstrating to be less effort than using the web on a mobile device: I have to do it once, vs. have to deal with a slow web browser every time I use the website.
This isn't to say people don't use the web on their phones, it's that if an app is available, people will pick the app.
"Potentially a password entered to install it... You need to approve my permissions"
Same on any website I have to sign up with via form or OAuth2.
And if an app has in-app purchases, I do none of that (just sign in on the store or use my thumbprint).
"The content of my app isn't searched in any search engine. You can't bookmark where you were."
That's interesting, most of the apps I use are searchable in the app, or on the Web. That doesn't mean I'm using a web browser to do most of the interactions.
Again, I don't think the Web is going away, just that HTML is becoming the new command prompt. That might change if something awesome comes out via open hypermedia. Doesn't look like it though... given how rich experiences are getting and how political the HTML standards process is.
"And sheer numerical demand? Again, I'm not so sure. Actually, I'm quite sure you're wrong."
By what measure? I mean, I don't claim infallibility here, I'm just saying that (a) mobile smartphones are quickly becoming the most common device on the planet, more common than a toothbrush, car, or toilet, (b) all of these support apps, (c) almost every company with a service or content has an app, (d) almost every user will prefer an app over over an website, and (e) thus almost all the money spent on consumer software is moving to native mobile. I'm following the money and the usage figures..
True, apps are beginning to figure this out. But in general, I can easily share a link to any web page. Sharing a deep link into some content in some app is nowhere near a "solved problem."
> This is also contrary to the data - people love apps, download and use apps like mad.
Really? If I share a link to a CNN or HN article, you're less likely to view that? I don't think you're remotely correct. It depends on the kinds of content, I guess. I'm just saying there are cases where web wins huge.
> Same on any website I have to sign up with via form or OAuth2.
Yes, each of us is inventing situations where the other is wrong. But I think you agree with my fundamental premise there are times when the web utterly destroys apps.
> I'm following the money and the usage figures.
I'm sitting here typing to you on ycombinator.com. After spending time on reddit.com. facebook.com. plus.google.com. cnn.com. Yup, there are apps versions of those, but I sit at my desk for 8-10 hours a day, and my desktop experience is WAY better than my mobile experience...
I'm not saying web is better, I'm saying web is better at some things, still.
I didn't say I would be less likely to view the link if t was a website, nor would most people avoid it. The web architecture (linking) is alive and well.
I'm saying that many websites have an app link at the top of their content once I click it and if I found myself visiting that site often i would click "Get" and grab it.
Then future links would not open my browser, they'd open the app.
"I'm sitting here typing to you on ycombinator.com. After spending time on reddit.com. facebook.com. plus.google.com. cnn.com."
Right - my habit for many years as well. But IME most people use app versions of those sites on a mobile device (except HN - and the UX suffers for it)
"Yup, there are apps versions of those, but I sit at my desk for 8-10 hours a day, and my desktop experience is WAY better than my mobile experience..."
Here we fundamentally disagree. The mobile experience FAR exceeds the desktop experience for most casual computing tasks. I use my phone and iPad way more than my laptop for reading and replying; I use my laptop more for coding and system administration.
I just think you and I are talking about way different things...
If I look at the HN main page right now, I see these URLs:
placebobutton.com
talkpythontome.com
dice.com
aol.com
tripwire.com
qz.com
aracrown.org
phys.org
spring.io
250bpm.com
lornajane.net
digitalocean.com
phys.org
csmonitor.com
smartdatacollective.com
golgi.io
fortune.com
ridiculousfish.com
lessthunk.com
whitehouse.gov
thesolutionsproject.org
pamelafox.org
attentiv.com
adp.com
linkedin.com
I could easily see myself spending 15 minutes reading EACH of those webpages.
THERE'S NO FRICKIN WAY I would install apps from each of those places, in order to read their one article on HN this morning. NO WAY.
That said, as the parent suggested, when it comes to opening my Gmail via Safari or the app, like everything beyond a simple document- I'm going to pick the app everytime.
GMail via web, every time.
I'm not suggesting I'd build GMail one way or another. I'm saying that since GMail web is available to me on my desktop, where I spend the majority of my day, that's how I prefer to use it. It's nice to also have an app, but that's way less percent of my time. And I think reading and typing in GMail is way nice on my desktop.
Sure, it's an edge case, but so is Reddit, so is HN, so is G+, so is Facebook, so is CNN, so is Github, so is StackOverflow, so is xkcd, so is news.google.com...
I spend way more time on those sites on my desktop than I ever would in their corresponding apps.
Add all those edge cases up, not to mention all the websites those things link to, and it's a HUGE part of my day. Apps? Sure. I like em.
And sure, when I'm on mobile, any given content is probably nicer in an app. But sharing, mixing, quickly browsing... web wins hand-down for me.
I wouldn't even know how to take a page from my CNN app (unless they give me a web URL) and discuss it on my Reddit app. Do you?
While sharing info on Wikipedia is great, where the web fails is competing with native apps. Other than sharing HTML text documents (and there are projects working to replace that too), it doesn't get chosen over native apps.
Also, I'd still say that you'd come a lot closer to being able to maintain a Gmail-style app on iOS, than you ever could on the web. As a 1 man operation. Plenty of people actually do personally maintain email native apps alone on mobile. But unless you go with basic HTML or little to no features, I don't think 1 person is keeping a web email client up to date for all browsers, all the time.
The reason you prefer using webapps on the desktop, is simply because that's where you are all day. At a desk. If you were in anything but a desk job, it'd be the complete opposite. It's not an issue of superiority, it's a matter of convenience. For most people, that convenience is flipped and the experience is equal or better. Which is why native apps are winning.
> If you were in anything but a desk job, it'd be the complete opposite.
...and if I were a banana, I'd probably prefer sunshine. I'm saying there are cases for me where the web is way better, even on mobile.
You can't prove to me that's not true, because it is. It's like you're trying to talk me out of observational data on my own life experience.
But the issue I was trying to convey is that you're an edge case and in an increasingly marginal pool as time goes on. Most people aren't sitting at the computer all day, and even if they do (we'll say so for sake of argument), they stay off personal email at work (a good idea). And they use their phone yet still. That's what I do. I'm at a desk all day as well, and never login to personal stuff on my work network/machine. That's where iOS gets its use.
LinkedIn I have an app, and it's usually better than the website except for some features they maddeningly haven't carried over. Dice too. The rest I would use a website.
This isn't contradictory to my point that apps are the future of how we interact with the web. In effect apps are about a proliferation of user agents - rather than a single hugely popular type of user agent (the browser) and a handful of busy singular agents (the crawler). I am not saying the Web is going away, I'm saying HTML browsers are becoming relatively less important. They're not going away they're just not where the money and growth is.
If the web and apps where in the same competition I'd say the Web can't lose, but I don't believe they compete. They serve different purposes with some overlaps (think Google Docs, the web site and the apps).
You can just click on URLs if I type them. Maybe if you go to your local library, someone can give you a demonstration of how the internet works.
> I can just as easily get an URL for the app in ap store and have it right there.
You're ignoring the deep-linking I'm talking about. Not just the app (like cnn.com), but to actual CONTENT on it, like some specific story.
> Having app stored on my device is an advantage, unless you like your web apps download in full even on crappy mobile connection.
Web Apps can store most of their content in your browser, now. So additional views are not downloading the full app.
> And you really want the content of your app indexed by external search engine?
Yeah, I really want content I produced to be indexed by search engines, so users can actually find it. Not 100% of the time, sure, but I'm in control of that. Explain to me how I can possibly get a search engine to index my content if it IS in an app?
> I don't need to bookmark where I were in the app: I open it and I am there at once.
If you want multiple bookmarks, then no, what you're saying isn't remotely true. If you want to share a bookmark, no, this isn't possible.
Or are you just being argumentative for the sake of being argumentative?
However, if the app is for something useful (and not just a content viewer) then native is far superior.
If I go to redfin.com on my phone vs the native redfin app, there is a distinct difference in UX. The native app by far surpasses the mobile app in terms of performance and usability.
Now this is one example but can be said for many sites whose functionality isn't just to display static content.
There are things the web can do that native currently sucks at. Sometimes those things are really important to me.
I'm not saying web is always better than native. Far from it. But I am saying web is sometimes way better than native. Even on mobile.
Go has been out for 6 years and has less than 10,000 questions on StackOverFlow: http://stackoverflow.com/questions/tagged/go
Swift has 37,000 questions in its first year: http://stackoverflow.com/questions/tagged/swift
I'm a fan of Go. I built my websites in it and I've written a few small apps.
However, you really are overlooking how much of a difference the bigger Swift community will be.
All bets are off if Google officially supports Go on Android.
Anyway, 1,000,000 Swift developers will change everything.
I'm not saying this because of anything to do with Apple's Swift announcement. I'm saying this because it'll be a huge benefit to Android.
How so?
The language has a weaker type system than Java, doesn't support exceptions and requires error checking every other line, has very poor tool support (because the compiler was not designed with IDE's in mind).
Except maybe add a few developers who refused to write code on Android because of Java, I really don't see what Go would bring to Android.
> when you can use better languages like Kotlin, Scala, Groovy, Clojure is asinine
You seem to be piggybacking an aspiring JVM language (Kotlin) on top of three other alternative ones that have already made it (Scala,Groovy,Clojure). Because that trick's already been done before with them (i.e. Groovy piggybacked on the quality of Scala and Clojure), it makes your list of examples of alternative JVM languages seem disingenuous.
I agree with your last sentence, however.
- https://github.com/search?l=go&q=stars%3A%3E-1&ref=searchres...
- https://github.com/search?l=swift&q=stars%3A%3E-1&ref=search...
- https://github.com/search?l=rust&q=stars%3A%3E-1&ref=searchr...
If I started writing an HTTP server in Swift the day it comes out I won't find much help but I'll have a mountain of unrelated answers to filter. Essentially Swift's adoption for iOS apps doesn't help and might hurt efforts to use it elsewhere.
Look at Object-C: extremely common writing software for Apple; almost non-existent elsewhere, despite the fact that it has never been limited to Apple.
Again, why would any Android developer choose Swift? Kotlin also runs fine on the server and it even compiles to Javascript.
If I were a startup doing an iOS, Android, and a backend I would do either Go or Rust on the backend. You will be able to distribute a native lib with your Android or iOS that shares network and model logic. Go and Rust both are planning on supporting cross compilation to iOS and Android.
That would leave you with Kotlin/Groovy/Clojure/Scala for the view layer of your Android app if you choose not use Java. Which is a good idea since there is no indication from Google Java 8 will be supported which means no lambdas unless you use an alt JVM language. On iOS you write your view layer in Swift. Both apps use the shared binary library.
Open the rosettacode web site. Choice any algorithm you are familiar with. Place Go version and Java version. Compare the number of words and lines.
Compare the Maven hell with how Go solves the same problems.
(I also don't agree that the deployment story for the JVM and Go are similarly complex, but that's a different argument).
Power consumption.
I will say that it It looks very promising so far, and seems to have the best of C# and Ruby, assuming you're sticking with compile-time type checking, plus a few more tricks besides. I'm not that up on JVM languages though, so I'm not sure that it's definitively better than any of the other choices.
All of these objective-C developers changed nothing for non-ios crowd. Why would swift be different?
(based on http://www.informatica.co.cr/linux/research/1992/0222.htm)
Their attitude towards exception handling and generics has never strike me as being overly pragmatic.
Why do people keep on saying that? Would people say javascript is for the pragmatic crowd because jsfiddle exists ? no
Go is a badly designed language period. the type system forces devs to write runtime type assertions which should be the job of the compiler thanks to parametric types, if go designers knew one or 2 things about types. The fact that Go dismisses 30+ years of type theory isn't pragmatism. It's ignorance.
Nobody would call PHP pragmatic yet even PHP is more expressive.
The true is that I had never been so productive writing code. The friction from what is in your head and the code is almost 0.
It is true that I ended writing a few functions that were there only because the lack of generics, the type system and other stuff being "built-in". But at the end, I think it was an order of magnitude less often than I was expecting it to. I was wrong.
But I think that the "friction from what is in your head to code" probably betrays that you weren't settled in a previous language? I only say this because I have zero friction writing C++, and have to think mildly backwards when it comes to C# or Java, and definitely Objective-C. Even PHP is like simplified C++ to me, so I write everything like it is a dumbed-down dialect of C++.
I suppose it is just what some people find comfortable.
I had the same feeling as the user you're answering to. And I have used quite a bunch of languages I've been quite productive with (C, C++, PHP, Python, Java, Ada), but I've never felt with these languages as little "friction" as with Go.
I mean, that language is so dumb that you don't have to think about the right way to do stuff. It's obvious. Boring, sometimes verbose, but obvious. It doesn't stand in the way between me and the problem.
* Transforming a collection means doing boring for loops instead of one-liners. * interfaces/duck typing is great. But hey, []interface{} does not fit into interface{}. * Structs with fields are encouraged, but there is no uniform Uniform access principle and that sucks. * etc
But definitely, my own "science" confirms that it turned to be out less of a problem (for my own usage) compared to better languages with more friction.
I am not only talking about the strict compile checks. I am talking about that extra thinking in the ten ways you can design it and how it should be done in "proper" Rust.
And the friction is not only in the language, but also in the standard library. A language that comes with XML/json marshal/unmarshal plus a quite decent http client/server framework covers most of what I need to do.
I am sure if Rust had included in the standard package http/xml/json it would be far more popular. I understand the voices that say "It does not belong there", "the language is not targeted at that". Fine. But then I found myself having not much user for the language, even if I loved the idea/theory behind it, plus that I could not get comfortable thinking in it.
Not having great static typing doesn't make it not pragmatic.
Given Go's purpose, it is extremely pragmatic.
One of the reasons Google uses Go is because their employees are often fresh out of college and might not be familiar with the depths of type systems.
If you look at most professional Java/C++ code (starting to see this with Rust too), the features of the language are used to their full extent to create really convoluted APIs (to an outsider not familiar with the language). So, to work on it, one must first become familiar with the intricacies of these languages (this is not as easy as picking up a book, you need experience), and then with how the language is used in context, which is another time consuming thing.
Instead, go trades off some higher level features for compilation speed and ease of learning.
After programming in Go for a week I was able to pick up any Go code -- ranging from the standard library to various other applications, and know what was going on. I cannot say the same about Java or C++ or Rust; generics/templates/virtual/friend/advanced typesystem gymnastics all are used to great extents in the code for a standard library or some large application. one may be able to use the language for your own stuff after a week of learning and hacking, but one will need much more time before they're well suited to contribute significantly to existing codebases.
A course I took recently was taught by a PL aficionado. He knew Rust, Nim, and Go, along with many older languages. Go, Rust, and Erlang, among others, would have worked beautifully for the project topic (concurrent stuff). He made everyone write in Go because he wanted a uniform language for project evaluation, and because Go is something students could reasonably pick up in a week without constraints on their background.
=========================
At the same time, the Go community is pretty awesome. There is a "go way" of doing things, and while it is pretty rigid, that doesn't make it not pragmatic. From my (admittedly limited) discussions with them, they do seem to think practically/pragmatically. There are good reasons for wanting to use Go. These folks know those boundaries, and think practically within them.
If I don't have a problem with that, those coveted master race Google developers should have absolutely no problem with it.
The base point is that languages like Go let you think of the program at runtime, only. Types are a runtime concept, everything is a runtime concept. Structuring APIs to use compile time safety requires a whole other kind of thinking, one which they may not expect to be uniformly available.
Ultimately it's a choice of whether or not you want to the programmer to think of data and flow (runtime), or metadata (types, compile time). Once you're used to both the difference is blurred. For newbies, the concept of using compile time safety can be daunting.
With how Go programming seems to work for some people, I can perfectly well imagine a system with commands that do code generation as a hook for other commands, or by 'listening to the file system' for changes in certain files. That could get out of hand pretty easily. And yeah, one can say "anything can be taken too far". Just like you said about generics. The difference might between having well-encapsulated and behaving mechanisms that does most of what you normally would need. As opposed to a "simple" system that just pushes the problem to another level, in more ad-hoc ways.
[1] I honestly don't know if the code generation typically is pre-, post-compile or a mix of those two. It's too complex for me.
[2] I thought single-line comments was supposed to be a safe haven...
And of course, the loss of static checking means that one has to write more tests for mundane things. But again, designing tests requires "runtime thinking", designing statically checked APIs requires "compiletime thinking".
This is a toxic attitude. It suggests that if people don't get something right on the first try they shouldn't try to improve it.
"Better late than never" is true in many cases, and this is one of them.
Swift was always going to be open source, but Apple launches OS products differently-- it gets them to 1.0 so they are strong enough to stand on their own.
If you followed Chris Lattner on the dev forums he always gave the impression that they wanted it open source from the start but had bigger fish to fry. They reimplemented a ton of the compiler multiple times after finding bugs in the existing language specs. Don't read too far into this that microsoft forced anything. For one, we'll never know and this is at best conjecture.
As for supporting diverse execution environments, I'd argue llvm/clang/webkit proves otherwise. Granted they're not "supporting" it in the sense that they're selling support for it but I'm not sure exactly who would meet your criteria right now.
I think most people involved in software would realize that the distinction between plan and implementation is extremely important.
When I first saw this thread, I certainly thought Apple had actually open-sourced Swift, as both the headline and the comment I was replying to said so. Then I looked at the linked page and saw it had not happened, so I corrected this materially important piece of information.
Honestly if you're that nervous and scared of what might happen in the future there's probably nothing Apple (and most other companies) can possibly do to comfort you. Probably better for you to avoid the potential pain and skip this one.
Still waiting.
Sadly, this never came to fruition, supposedly due to legal complications. Since they own Swift, and the underlying compiler infrastructure this may be simpler to pull off.
Signaling is intentionally missing from the WebRTC spec, and that is the "interesting" part here: without open and interoperable signaling, you're just preserving the status quo of proprietary video chat services such as FaceTime, Skype, Hangouts, etc. Just like HTTP enables proprietary services such as Facebook, Twitter, Google Plus, etc.
I have a feeling that's what Firefox Hello will eventually become (if it gains traction).
As it stands, I can already post a link in this thread and anyone who visits it from any WebRTC-enabled browser (including mobile devices!) can immediately start a video chat with me[0].
That's not federated (yet), but if it catches on I see no reason why it won't be.
[0] If I weren't in the "quiet room" in my coworking space right now I'd try it as an interesting experiment in the HN community. :)
[0]: http://www.bbc.com/news/technology-20236114 [1]: http://www.reddit.com/r/apple/comments/1xuzif/what_ever_happ...
Tim Cook probably wouldn't do something so impulsive based on temperament, and his direct reports would probably not risk it. So I suspect this is a considered announcement.
I would have definitely participated in the hate if I had seen that thread, all I can saw now is: bravo Apple! More of this please!
Sometimes companies change their minds this way, like how Microsoft changed its mind on the banning of DVDs for Xbox, even though they never "officially" said they would do that before the announcement of the Xbox One, but it was strongly "rumored" they would do that. I'm sure that's what they intended, but the outrage was too big to let it be.
expected things are, by their very nature, hypothetical until they come true or are proven false.
The switch when dealing with a combination of C/C++ and Objective-C source was not really a problem. But trying to interface a C++ library into a Swift application is less than a fun experience.
Personally, while the language is fresh and seems pretty good (it has some great additions), I still prefer Objective-C. I guess I'm waiting for better integration with existing libraries.
It's hard to realize most of the performance benefits when everything you're interacting with requires objc_msgsend or uses NSArray / NSDictionary.
As well, it's far less 'scripty' than Obj-c. The type system in swift really leaves something to be desired in terms of typing types. The point of Obj-C was kind of to avoid writing the kinds of apps where a great type system would really shine, swift lets you build those kind of apps, but in my opinion most of the time we shouldn't be building them.
Your project probably doesn't need 1,000 developers on it who need solid interfaces and type checking to make sure that everything is going according to the UML diagram. It probably needs 2 or 3 developers who talk to each other, add asserts to their code, and a type system thats a little forgiving.
ObjC is a language that has everything you really really need, and left out the 1 thing you kinda wanted in exchange for leaving out the thousand 1 little things that everyone else wanted too. Like for example exceptions, sure they're there, but it's not idiomatic and when you program without them you realize what a crappy idea they were in practice. In day to day coding NSError is 1000x better than exceptions.
Can you clarify this? What is the kind of apps where a "type system would really shine"? How can you avoid writing them?
I don't think that's really what Obj-C was designed for.
eg. For some reason your app has the ability to use Postgres instead of SQLite, even though you always use SQLite.
eg. For some reason your app supports Postgres/MYSQL/SQL Server because every enterprise you sell to wants to run their preferred database instead of the one that works best with your product.
In short 'enterprise' apps.
Are you saying the main application of type systems is writing overengineered enterprise apps? Do you think type systems have no place in well-architected and/or minimalist apps?
Can you elaborate more?
Eg.rewriting base classes to use IWritableStream instead of looking up the write method and calling it.
The type system of swift is much closer to java than to that of haskell. (Or whatever language you think has a 'great' type system)
For example in F# if you just use one method the type system will infer that you need an object that has that method. (especially if that method is an operator)
eg. let add a b = a + b will work on any pair of objects that have the + operator defined. That is a good and useful type system, what swift has just makes you type more for little benefit.
eg. making types is easy, reflecting methods is hard. (it should be noted that swift effectively doesn't support reflection)
I'm not sure what reflection has to do with this. I'm sure you're aware there are "great type systems" which do not use reflection.
But that's not surprising given its ecosystem; as others have mentioned, language success has less to do about its theoretical benefits and more to do about what environments it allows the developer access to. Javascript is the case-in-point; I think few people would argue it is a well-designed language, but if you want to do web development, you're going to need at least a basic understanding of it, so it maintains brutal popularity.
The overall combination of Swift and Objective-C in those numbers make me believe Apple's decision to make Swift open source is less about goodwill, and more about stopping the bleeding.
Second, that's not an app development platform. Gnome has C (and it's own unholy stack on top), KDE has C++.
You can code for OS X/iOS in all kinds of languages too, if you mean at the OS and not at the app development level.
If "platform" means "app development platform" and that means "full-featured toolkit for the development of GUI applications that run in an integrated environment", then I would agree both that Gnome and KDE fit that bill and that they have limited language support (in my experience the only language worth using with those toolkits other than the respective C and C++ is Python).
And you can't do this in OSX or iOS?
> The average Unix desktop or server is probably running code written in 5-10 languages, more or less transparently to the user
The average iPhone is probably running code written in just as many (if not more) languages - C, C++, Obj-C, Swift, and Javascript are a given before you even look at third party stuff. And, modulo sandboxing, you can do all the Unix stuff too.
I actually don't have any opinion on how many languages have 'first-class' support on iOS. My understanding is that it's somewhat more complicated to create natural-seeming bindings from other languages to Objective-C APIs than it would be for C APIs, and that there are restrictions in the type of applications you can distribute using other languages (no downloadable code outside the App Store). Whether that makes those languages not 'first-class' on the platform is up to interpretation.
But the person I was responding to was specifically asking if any platform had first-class support for more than 1-2 languages. I don't know how to determine 'first-class' as a matter of principle, but I assumed that the multiple decades of polyglot software development on Unix environments would count. (OS X would count there, by the way.)
React Native is a godsend.
Something which has nothing to do with the language.
Here's how you do it with a popular Swift lib:
let json = JSON(data: response)
if let userName = json[0]["user"]["name"].string{ .... }
let parsed: AnyObject? = NSJSONSerialization.JSONObjectWithData(data,
options: NSJSONReadingOptions.AllowFragments,
error:&parseError)I'm sure you get used to it. Every language looks horrible the first time, then you learn to live with it and maybe love it, but on first glance that looks pretty awful.
Java's problem is that C# exists and is a more expressive language.
If you compare it JSON.parse(x) or fromJSON x it's just awful.
okay here comes a function definition get ready
function MyFun() begin
return 1
end begin
end MyFun
end function okay we are doneI also don't get how a JSON parse takes half a day. If you know the language it shouldn't take that much time. If you don't know the language then a complaint wouldn't be intellectually honest would it?
Reacts philosophy is to learn once write everywhere. If you know reactjs then it is just as easy to write react native as it is exactly the same (clear and concise) but with different api's available. The instructions are written in javascript the rendering can be done in dom, obejective-c, java.. etc.etc.
Would it be intellectually honest to place a 30% snark if you don't know the language?
I haven't either, but I haven't used it a lot so I can't give a final verdict on it. But I'm the kind of person that enjoys C++ (well, especially after C++11, feels like a new language and I'm slowly becoming a C++ fanboy), and I guess all those new system languages like Swift and Rust are supposed to fill the void for people that don't like the existing system languages available, so maybe it's not for me.
It's amazing what some opening of control will do.
You can be sure Apple will remain the exclusive ruler of what goes into Swift.
https://android-review.googlesource.com/#/c/150214/
Looks like there is someone at Google working on lambda support.
Kotlin gives you lambdas, named parameters, extension functions (like C#), data classes, first class null, and more today on all versions of Android.
That said Kotlin looks awesome and I'll definitely be considering it for my next Android project.
http://www.h4labs.com/dev/ios/swift.html
All this makes it much easier to learn Swift in a short period of time.
Rust on the other hand...
Do you realize how far Java reaches into the enterprise?
And with Swift's focus still being around the walled garden of iOS/OSX development, even with the open sourcing there are many more "IFs" to achieve before Swift rivals Java in adoption.
Don't get me wrong. I don't use Java and I have made apps for iOS (though not with Swift yet unfortunately). I like Swift and intend on trying it. But rivaling Java? Certainly no time soon.
Swift is only one1 but with open source and cross-platform ability (Microsoft will port to Windows), I think we have several million Swift developers with 5 years.
[Update] 30 -> 20
20.
I put all the raw data on Github as a tsv so anyone can use in Excel, etc.
https://github.com/melling/SwiftResources
Hopefully, I get around to putting a real search engine behind it. I currently don't crawl and index the sites.
I can easily imagine Swift joining F# in terms of corporate adoption.
I doubt it will be more attractive to functional programmers than Haskell, though; although the fact that it's an open source language that lets you do functional programming for iOS is pretty huge, IMO.
It's already been done :D
The purpose and syntax of QML and Swift are similar, too.
PS: Qt is not only a GUI framework. It's a cross platform C++ framework.
I would say though that QML + javascript fills a similar purpose as Swift.
QML is just a markup language that is interpreted by an engine written in C++, swift is a whole programming language that is compiled. It would be more fitting to compare C++ and swift than swift and Qt.
To me (someone who does Lisp & JS, so none of these all) go seems cool for concurrency and being 'boring' (in a great way). Rust seems cool for being very robust and 'safe' (or hard to screw up with), while still doing concurrency nicely and letting you code in high and low level.
Is there any ways that Swift is more than ObjC without [[[[all] the] square] brackets]? (nothing wrong with that, if you're not into square brackets)
Swift is like Rust in that it's intended to be fast, "safer", and compiles to LLVM bytecode. Also, Swift and Rust both use Option types for error reporting rather than exceptions or error codes.
In the same sense that Rust is a way to leave behind old C++ baggage, Swift is a way to leave behind old ObjC baggage such as header files, null pointer errors, and lack of real namespaces.
[0] http://www.apple.com/live/2015-june-event/eda6e3f7-0fda-4b46...
I'm a bit naive about the environments languages have to run in... but if we have a web app framework in Swift, Servers in swift (as mentioned in comments above), and iOS in swift, doesn't that make Swift a JS replacement too?
Hopefully, Swift might be a good candidate for fast browser code.
Much better than supporting an API that requires 600 LOC for drawing a triangle and isn't available anywhere besides the reference platforms.
Apple at least is interested in Vulkan to some degree (they participate in Khronos). Whether it will show up on iOS is another question. But MS didn't show any interest. So claims that they changed their ways are premature.
Does this sound like a company that will embrace Vulkan, or a company joining the likes of Microsoft, Sony and Nintendo?
Unlike MS, Apple participates in Khronos Vulkan group if I'm not mistaken. Even Sony does. No idea about Nintendo.
Sony is a good example. The only Khronos stuff they use is WebGL in the PS4 menu and that OpenGL ES 1.0 with Cg shaders for the PS3 that no one used. All studios targeting PS3 favoured LibCGM (http://sandstormgames.ca/blog/tag/libgcm/).
But hope is good I guess.
No idea what they actually do, but if they'd add Vulkan support to PlayStation, it would be good for developers. Some Apple developers so far participated in SPIR-V / LLVM related discussions. And MS was notably absent in anything related.
As I said, when they'll fix this lock-in mentality, I'll second the claim that they seriously changed for the better.
Yes, PS4 devs porting to PC would likely like Vulkan over OpenGL or DirectX but PS4 devs on PS4 not so much.
Here is what some say about it: http://gamingbolt.com/ps4-should-support-vulkan-ps4s-api-not...
The "language" may be "open sourced"; but will the important Cocoa implementations be open sourced?
It shouldn't be to too tough to re-implement Swift; unless Apples starting suing people for doing it.
The exact meaning of Apples announcement needs some clarification.
I think Foundation might be necessary though, even if you just use Swift structs (Array, Dictionary, etc)
I'd love a portable GUI API that satisfies some harsh conditions: 1) Portable between mac,linux,windows,android,ios. [ must re-compile to target ] 2) Compilable into a single static binary. 3) New developments don't break backwards compatibility.
Cocoa won't be made Free, no, but perhaps Swift could be used with GnuStep's implementation of the libraries.
It's better to not re-invent the wheel.
And let's be honest Swift is great and all but it's hardly the crown jewels of the company they are giving away.
They also have a precedent for being less than friendly towards FOSS[0][1][2][3], despite the way they try to present themselves otherwise by listing their open source contributions prominently.
Note that the author of these comments, saurik, is Jay Freeman, the creator of Cydia. Key quotes include:
> Apple has simply never been in compliance with the LGPL [for WebCore].
> As for Oracle, I think Apple is much more harmful [to open source]
> I have gotten so used to Apple giving open source the finger, and thereby have backup plans involving disassembles for most of the things I care about at this point, I had forgotten to even follow up on them failing to release anything
[0] https://news.ycombinator.com/item?id=2083953
[1] https://news.ycombinator.com/item?id=2523784
Especially since their contributions to LLVM, GCD, WebKit2 have been quite notable.
The most recent one is from 55 days ago...
The first question you should ask for any systems language is how to I integrate assembler, when the answer is to use C / C++ then you know it's not a systems language.
Also, how you can tell a language is a systems language, it has an operating system written in it used by a large user base.
How do you layout a struct in Swift so that it's the exact size and layout you want? You can't, again, not a systems language. It's like going to Home Depot and buying "industrial grade" appliances which are usually just your standard shitty appliances with a stainless finish.
Edit: You can also link against .o files with Swift, which is the only sane way to integrate assembly language anyway (i.e. in a separate compilation unit).
I'd hazard that the engineers at Apple are perfectly qualified to identify what is and isn't a "systems language" working for one of the few companies that has actually developed several from scratch (I am referring to A/UX, Mac OS Classic, Newton OS, and NeXTStep / OpenStep / OSX / iOS in case you're wondering).
Getting to the additional point of assembler, how does one make a syscall in swift?
That said -- if Swift were to be used for systems programming, you'd probably want better support for all of this stuff (starting with inline assembler), and for all we know Apple is already tinkering with this stuff in-house, it just hasn't released it yet (e.g. because it's in flux).
Since it's perfectly possible to do inline assembler via a straightforward kludge, adding that particular feature to Swift would be almost trivial.
As things stand, it would be pretty easy for a third-party (once Swift is open sourced) to add the necessary niceties to the standard libraries or Swift itself, so these kind of objections are pretty minor. The big question is low-level performance, and Swift has real advantages over Python and Go here.
> Swift is a successor to both the C and Objective-C languages.
https://dev.windows.com/en-us/uwp-bridges/project-islandwood
https://news.ycombinator.com/item?id=9471204
So ironically this announcement might benefit Microsoft a lot.
They're doing Linux but not Windows? Is Windows not sufficiently important or maybe they just forgot to include Windows in the announcement?
Swift won't bring much anyway.
Swift only has reference counting because it made sense as the language shares the Objective-C runtime.
Objective-C only got ARC because Apple never managed to make their GC work properly without crashes in the context of Objective-C code, given its C underpinnings.
CS literature is full of examples on how to achieve performance comparable with GC with reference counting, the solution ends up being a mini-GC anyway. And reference counting cannot compete with GC implementations in lock free algorithms, even with deferred counting.
1. Being able to upstream more into LLVM means less maintenance of their internal forks.
2. The recent open sourcing of Microsoft .NET core parts.
I've been watching for the language to move to instead of Python3. Of Rust, Go, Swift and other new languages, Swift always seemed to me the most appealing language.
Being the 1st class citizen on iOS makes learning this for serverside development very appealing. An ideal server language that enables single language client-server applications possible with iOS.
Once the popular libraries start to drop Python2 support (which may take decades, who knows), this is a no brainer as the language to migrate to instead of moving to the much less robust Python3 ecosystem.
Regardless being able to implement backend and apps in one language is huge.
The ability to rent a cheap VM to run a C# MVC application is great! Previously, I only wrote C# @ work, now I have the ability to do it outside and in. No one wants to pay XX$ more per month to license windows on a VM(at least not for the hobby stuff I do outside of work for fun)
I imagine it will be the same for iOS developers, it may not draw in new developers but there is a good chance that is may be used on projects that would've typically used a different platform simply because swift only runs on iOS.
The language probably won't see an explosive growth in new developers but you will see swift being picked over another language in places it wouldn't previously run.
Some of us have been waiting for a production-ready way to run .NET on Linux and although it is coming it has not arrived yet.
So can we finally say that Hell has Frozen Over?
Microsoft Open Sources Parts of Visual Studio and releases Linux Software.
Apple open sourced their language and it will work on Linux.
This is a win for Apple only.
We don't hear a lot about the sunshine or oxygen markets.
Apple is now going to use USB-C connectors and now Swift is available in Linux?
Go is Google's language, Java is Oracle's, Rust is Mozilla's. Anything good for Go or Java is good for their respective companies, right?
What do you want? Some language to arrive from outer space fully formed and license-free?
What do you mean by "Android world"? You can't write Android apps in Go (at least not without going through JNI).
Also the first challenge will be to build a library that implement all the Swift UI elements to Android (or vice versa) or better Google reinvent their UI or at least add more features and turns Android in a real MVC (bind the view with the controller).
I sort of get it for Python, means you can download the C files and mess with them.
But isn't Swift written in like Assembly?
Swift on Stilts?
a) I see it
b) Facetime becomes an open-standard like promised
Microsoft opened .NET, while apple is just releasing a language for its platform because mozilla and Google did too. While the latter opened sourced the languages.
Microsoft is just getting out of their walled garden, while Apple still has a much stronger one, which is worse because they tie their software with their hardware, which is a really dubious practice in my opinion.
I'm really starting to question the trial decision that made it illegal for developers to just run OSX on PCs. Either way we really need laws to prevent manufacturers to restrict other softwares from running on their hardware.
I slightly hated microsoft but always loved their OS and at the time I did not care abut apple. But now do I hate them.
I bet: * Swift will get ported to Android. * Swift will compete with Mono. * Xamarin will add Swift support to Mono.
Apple adapted how Facetime works to meet their demands, but that meant that Facetime wasn't the same anymore.
Consider that while Objective-C is open source, Objective-C 2.0 was produced without any effort at all at standardization.
I attended the 2008 WWDC. One of Apple's engineers was demonstrating Objective-C++ and actually said "You can freely mix objective-c and c++." I wanted to start screaming, maybe beat him senseless.
I've done quite a lot of Objective-C, and quite a lot of C++ but I'm still not sure I can figure out how to mix the two.
By using Objective-C++. Just name your source file with the .mm extension and Xcode automatically starts compiling it as Obj-C++. If you take Objective-C, remove all the C from it, and take what's left and slap that on C++, that's Objective-C++. And it really does work, and prior to Swift's announcement I thought it was the best approach to doing Cocoa development (because with ARC you can even put Obj-C objects into C++ data structures and do fun things like `std::vector<std::tuple(id,CGRect,NSInteger)>`).
You mean you want to assign a string to a variable and then re-assign it to something else entirely such as a number?
Just reassigning at all is dubious in my opinion, and seeing a reassignment with a completely different type would make me flip the table in review.
If you ever want a "catch all" variable you can then explicitly type it as a base type like "object", and assign what you want. But that should be very rare, so it's perfectly natural that type inference assigns a static type to the field.
The only time you get bad inference is if you have subtypes and the first assignment is too narrow, e.g
Apple GetApple() { ... } var myFruit = GetApple(); // type is Apple if (cond) myFruit = GetOrange(); // can't assign orange
In this scenario you have to declare explicitly as Fruit. But again: this is rare, and all reassignment should be rare! Always have good reason before mutating anything.
> If i dont specify a type for my variable i should be able to change my variable's value to whatever type i want.
Is there even one doubt that this will happen?
If not, the pedantic distinction between "announce they intend to" and "doing it" is extremely worthless...
Open sourcing Swift, on the other hand, is clearly something they've been planning for a while with the full knowledge of all involved and wasn't just a sudden impulsive sort of thing.
[1] https://en.wikipedia.org/wiki/Dylan_%28programming_language%... [2] https://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Works...
Open source Dylan was open sourced by a company called Functional Objects. The Macintosh Programmer's Workbench was never open source to my knowledge.
Since both of these are semi-obscure and incorrect it's obvious that you've just cursory searched for stuff you don't have direct knowledge of just to bass Apple (which has open sourced several things as well as provided changes back to the community, and not just when the license forced its hand).
MPW used to be available from "ftp://ftp.apple.com/developer/Tool_Chest/Core_Mac_OS_Tools/MPW_etc./", but Apple took their FTP server down. There's still a mirror.[1] It's mostly ".hqx" files, so you need to find something that can decompress old Stuffit files.
I rebuilt a dysfunctional OS X application that was ported from iOS (obj-c) from the ground up almost entirely in Swift last year, and really enjoyed working in swift. It's worlds better than Objective C, and compares favorably with other modern languages like Go (which I also like and use quite a lot). It takes a minute and a bit of annoyance to get used to optionals, but that ends up being really nice for issues most languages let you shoot yourself in the foot on. Along with switch patterns, easy immutability, memory management, string handling, and Playgrounds/REPL make it a really pleasure.
Even with that endorsement I couldn't recommend it seriously for anyone without being cross platform / open source. Now I can say I really think it's worth learning.
I'm guessing you don't see a lot of sitcoms like Silicon Valley, Big Bang Theory, or comedians like Luis C.K., Sara Silverman et. al. Which is tragic, because they are awesome.
Not, of course, to suggest I'm as funny as that (clearly), just someone who's providing observations on Sift from using it in real world production applications (unlike almost all of the posts above this one).
I've never had a good experience with an Apple product.