4 ms·
Have Microsoft given their official blessing to the multi-platform ports of .NET then? If not, .NET and associated languages are in the same position as Swift,
by 72deluxe 12y ago
Have Microsoft given their official blessing to the multi-platform ports of .NET then? If not, .NET and associated languages are in the same position as Swift, surely?
Plenty of people write software for Windows using .NET, which happens to be the main fashionable system to use on Windows, and isn't typically popular on Mac OSX. But this does not make .NET rubbish - it just happens to be designed for Windows and isn't natively available on Mac OSX from Apple. Does this make .NET and associated languages "bad" or "not worth learning"?
Just because Mono is available on other platforms thanks to the huge effort from the community does not necessarily mean it would be a good choice to use for a cross-platform product, as the real journey and path of the platform is still in the hands of Microsoft. This is the same as Java used to be. But it didn't stop people writing plenty of software in Java, thanks to the main platforms supported by the Java VM. Did this make Java "not worth learning"?
I suppose Apple doesn't really need to care about making a language for other platforms. From the perspective of developers on Apple platforms, the need for a cross-platform language/system would seem redundant. As other posters have mentioned, the niche Objective-C language has found plenty of developers, and that's typically available on Apple devices (unless you count GNUstep). Does this make Objective-C "not worth learning"?
And remember that just because Swift is on one platform doesn't mean you CAN'T do cool things with it. It just means that you can only do them on one platform. That is in Apple's best interests. Does it really need to be available on every platform to be usable?
For example, they don't serve pizza at my local Chinese takeaway. This doesn't stop the food there from being great. And it doesn't make pizza less delicious when I buy it from elsewhere. But I'd be foolish to complain about the lack of pizza from the Chinese takeaway and refuse to eat the lovely Chinese food they serve there. Chinese food and pizza are both delicious, and they're only available from different places, but that doesn't diminish their taste.
I suppose the witty solution to the problem you face is to just learn C or C++ and do cross-platform stuff with that.
- DCKing 12y agoThis is quite an unfair comparison. First of, Microsoft does support the development of .NET and associated components. It is definitely not an active support relationship, but MS answers the questions Mono developers have and has provided some help for the Moonlight project. Furthermore, it seems Microsoft is making an effort to make ASP.NET on Linux more attractive. Having said that, it doesn't even matter what Microsoft does with .NET. If Swift stays 'closed' as it is, you can use it to develop Mac and iOS applications. If .NET stays 'closed' as it is, you can use your .NET experience to develop Windows desktop applications, 'Windows Store' applications, web applications and services, client side web programming, Windows Phone apps, apps for iOS and Android with Xamarin, Linux desktop applications, and even operating system development or protocol verification if you're an adventurous academic. All of these things are being done right now by people, and good tools exist for those things. I realize that people on HN don't like Microsoft's lock-in or tools, but experience with .NET does give you access to a very diverse set of areas to program in. Now I'm quite convinced that Apple will open source Swift (they appear to have informally confirmed they'll be doing exactly that [1]). And then its basis on LLVM will make sure that it can be used in other places as well. But I doubt Swift's uptake outside of Apple apps will be bigger than Objective-C's simply because, unlike Microsoft, Apple won't use or promote Swift anywhere for anything else than Apple apps. The point is that 'openness' of a language itself does not matter much for the value to learn it. It depends on how much you can do with the language. Even if you assume "You can never use Swift outside of Apple's context" and "You can never use .NET outside of Microsoft's context" are both true (which they are not), Microsoft's context for .NET is much broader than Apple's is for Swift. [1]: https://twitter.com/mxweas/status/474581160454942721 https://twitter.com/mxweas/status/474581160454942721 [2]: Of course one can argue that developing Mac+iOS applications itself presents more value than all of the .NET things I mentioned combined. But that was not the point of this discussion.
- valarauca1 12y agoWhen you say "closed" I thought the .NET compiler was accepting pull requests from anyone as of recently, I remember that being a fairly large announcements. I don't mean to be argumentative, but the Roslyn compiler is open source right? I'm genuinely curious.
- DCKing 12y agoThere's a reason that I put 'closed' in quotation marks. Many important parts of .NET are indeed open source. It is also unfair to discount Mono, which is a very functional implementation of the platform. But even if you assume this 'closedness' for the sake of the argument, his/her comparison was still unfair.
- 72deluxe 12y agoPerhaps the comparison was a bit off. I am not intending to be argumentative in the slightest. Microsoft's context for .NET is only broader due to community effort and NOT due to Microsoft's active help. When .NET first came out, was it as widely usable on all those platforms and for different types of applications? No, and that's exactly the position that Swift is in right now. In a few years time, there might be a community effort for Swift on different platforms, but look at the success of GNUstep and the libraries surrounding it; there is not wide adoption by any means yet Obj-C remains popular. A large portion of the list of applications that you mention are typically Windows platforms - Windows desktop applications, Windows Store applications, web applications on Windows servers, Windows phone apps. Replace the word "Windows" with Apple or iOS and you get the complaint that the parent mentioned. It's entirely a point of view problem, ie you don't get iOS/Mac OSX developers complaining about new language features in T-SQL when SQL Server is not available for iOS/Mac. I suppose the same complaints were made against .NET all those years ago - "why bother learning it? I can use the libraries and languages I already know!". It is a poor complaint to make really, as the effectiveness of a language or library does not depend on it being open source, eg. Java (years ago), the Win32 API, MFC, Carbon, Cocoa, C++ (does the committee steer itself based on our suggestions we just throw at them?). Their success and use has happened on closed-source platforms and with closed-source devices, but it's entirely irrelevant in the same way that adoption of an open-source language is, surely? It would be interesting if Apple does open source Swift, but as you say they won't promote Swift outside Apple apps (in the same way that I can't see that much marketing material from Microsoft encouraging us to use Mono on Linux; ie, Microsoft doesn't promote .NET use outside Windows platforms either). But that doesn't stop an army of C# developers existing. It would be interesting to know how many of the C# developers use that language because it is available on multiple platforms (perhaps we could have a poll?). I would think that very very few developers are using because they know it is cross-platform to some extent ("I'm going to use C# and .NET for my Active Directory MMC snap-in page because I can attempt to compile it on another platform!"); in fact, C# and .NET jobs mention Windows development 98.9% of the time don't they? I just thought that refusing to even take a look at a language due to it not being open-soured was a bit of a foolish thing to do or complain about, and to be upset that a language (designed by a company for its own operating systems and own devices) was not available on other platforms and OSes was a bit of an odd complaint to make too! EDIT: I have reread this and it sounds quite harsh! I don't mean it to sound harsh. I did not know that Microsoft has opened up the .NET system a bit; I was more attempting to highlight that the original parent's comments was a bit whiney for no reason, and I wasn't meaning to pick a quarrel with you btw. Apologies!