C# is the language of the year, Python of the decade
sites.google.com
sites.google.com
Unfortunately, I'm finding the .NET libraries that I'm using not quite so well designed - Working with windows forms specifically. Fortunately, a lot of the third party libraries seem pretty well designed, though seems to be a general love-affair with overly verbose XML configuration files. Perhaps I'm just spoilt by the elegance of UIKit (well, most of it), and the clear benefits from a ground-up design.
I know there is Mono for other platforms, but don't know how well it is supported/what the performance characteristics are like, but it seems a language that would really, really benefit with a truly platform-independent (i.e. not a thin win32 wrapper) set of libraries; GUI and otherwise.
Of course now we have Windows 8/WinRT so who knows what's going to happen to WPF.
Not to mention all the awesome databinding stuff, and now with async in C# 5, it's easier than ever to create responsive UI. Just reading about the async stuff had me thinking back to that project, saying "yeah, that would make [some chunk of the code] a lot more intelligible".
I contribute a lot in the /r/learnprogramming subreddit, and when new programmers are asking about UI with C#, I generally suggest just skipping Forms. There's really no reason to use it anymore. I can't believe I used it so long while WPF was right there, ready to free me of the Forms peril.
Just use the cross platform and open source runtime, as you would for any other language, and pretend that .Net doesn't exist.
That "thinly veiled promise not to sue" is backed by the full force of a legally binding promise recognized by the combined weight of the US and Euro legal systems. Microsoft is, by centuries of established law and court decisions, precluded from suing someone from using C# through Mono or any other API or framework.
Moreover, using Java is now riskier than using C#, as Oracle has changed the licensing terms for the language, the API, and the development tools to allocate to itself greater legal control over the Java IPs than Sun did (or which Microsoft reserves as to C#).
EDIT: Just so we're clear, to all the non-lawyers and non-legally savvy HNers: The promise not to sue is itself what is binding, as a consequence of more than two centuries of US and Euro law (see, e.g., the concept of promissory estoppel). The point of the promise was to clarify the permissive license to use Microsoft's IP as it relates to C#.
Then why did they feel compelled to "promise" not to sue:
http://www.linuxinsider.com/story/67537.html
If you're correct then all they needed to do is point to your statement that no court will allow them to sue.
OpenJDK is GPL.
Have you got a source for that? AIUI under UK law the concept of promissory estoppel only exists in the context of an agreement in which the other party has received consideration. Not having paid MS anything, I don't see how that can apply here.
[1] http://en.wikipedia.org/wiki/Estoppel_(English_law)#Promisso...
Thanks.
There are other tools sharpdevelop (for window) and monodevelop (all platforms) - but they are somewhat lacking. Sharp develop seems to slow down dramatically on large projects or WPF projects. Monodevelop seems to lag sharp develop in features and maturity.
GUI toolkits for dotnet are hit-and-miss. GTK# has the most traction and is cross platform - the documentation was lacking last time I looked. But, if you have a GTK background it may be a non-issue. Wx and QT bindings exist but I believe development has slowed down/stalled. Of course, there are OS X, android and iOS bindings that ximian sells. Unless you have a large existing c# code base it probably doesn't make sense to use them for greenfield development.
Server-side is where I think mono actually does shine a bit. Although you need to move out of the standard NetFX stack (i.e. WCF) to other open source libraries (i.e., ServiceStack). ASP.NET and MVC do run on mono - there are tutorials to deploy against apache or nginx.
As you can imagine there is some lag between mono and microsoft dotnet framework (see http://www.mono-project.com/Compatibility). The gist of it mono tries and succeeds keeping up with the framework but there are large holes with respect to .NET 3.0 (WWF, WCF, WPF). There was a silverlight plugin (moonlight) but much like silverlight new development has stopped.
On the server, typically mono is chosen because mono on linux is much cheaper than azure, or windows hosting (AWS, etc) therefore you trading slightly more development and setup effort for cheaper run-time costs.
For the phone/tablet market, you are doing the opposite trading money (monotouch licenses) to save development time and learning a new platform.
On the desktop, I think the value proposition is much less well defined. It depends alot of the mix of clients you are supporting.
(No, I'm not a JetBrains employee -- just an avid fan of every product of theirs that I've used.)
This does lead into the other serious detriment for dotnet, open source. There is very little going on there because the majority of the community doesn't actively engage with new libraries or frameworks that don't come out of Microsoft itself. Hence, why I say it's too bad something isn't sanctioned.
It probably doesn't help that if Microsoft did deem it worth supporting something like ReactiveUI, their history shows that they would just rebuild it themselves. Effectively destroying the OSS.
Overall, Microsoft is improving. Just look at the changes they are making to support ASP.NET MVC as an open source project. They are just a lot slower than everyone else right now. Their research department might help them keep a few things ahead (like C#), but for the most part they are behind the curve.
I haven't used C++11 yet, because the project I work on is tied to an old compiler version, but the one thing I found when doing some iOS development this week was that I really, really missed the declaration type inference (var).
So in that case, I don't think a general "{{language}} tutorial" accurately represents the growth of a language. Perhaps interest, but this isn't limited to programmers, either, which makes me feel like it's even more misleading. For instance, the only time I entered "python tutorial" into Google was when I wanted to see a quick few basic programs to get an idea of whether or not I'd like the language. I don't really use Python personally (<rant>never will, it's terrible</rant>), but I've hacked around in it at work, and I never once used "python tutorial" to get my work done. I think one was "python reference urllib" which took me directly to the python reference page for urllib.
It does not matter whether you or anyone else in particular searches for "{language} tutorial" as long as there is a significant amount of people who do, and that amount of people is roughly the same percentage for every language to get an accurate estimate of language popularity.
And for estimating popularity growth the percentage does not even have to be the same across languages.
For these estimates to work the only thing you need is something that clearly identifies user interaction with that computer language. The internet is big enough to allow this to work for even very small percentages.
That said, I don't agree with "{{language}} tutorial" as a measure of language learning popularity. This is because a lot of the growth from the Java programming world comes from formal schooling. Almost every college or university teaches Java, it could be that the percentage of people learning Java through tutorial is significantly less than other languages.
edit: downvoted because I am very wrong for a reason stated in that nice comment below >_>
I would think one of the key metrics in determining popularity would be popularity ...
http://www.google.com/trends/explore?hl=en-US#q=Java%20tutor...
And also there you can see that India is still the biggest searcher of programming tutorials in the world.
Much more interesting (and catching the Zeitgeist) metric will be:
"Languages (and tools) the top 5% developers prefer to use when left on their own"
From anecdotal evidence Python is indeed somewhat high ranked there.
Anyway, I saw something interesting in the graph. If you just look at C and C#, then in 2011 you notice that where C made a sharp decline, C# made an almost equally sharp incline.
Are these movements correlated? What happened in 2011 that made a bunch of wannabe (since they look for C tutorial) C programmers suddenly turn to wannabe C# programmers?
I realise it may very well be two randomly occuring uncorrelated events that causes these jumps. But I'm very much interested in what kinds of events move the worldwide interest in programming languages.
Being a user of WCF, I'm sorry to say, it's terrible. Don't ever make the mistake of thinking WCF is fit for production.
This goes for pretty much the whole C#/.NET ecosystem. The Microsoft tools are severely lacking in good design principles and the open source tools are amazing and life changing but don't have the mindshare to be revolutionary. This is mostly just a fact of Microsoft being unfit for open source workflows.
Instead of WCF, try ServiceStack (or SignalR if it makes sense). Instead of ASP.NET MVC, try NancyFx or FubuMVC.
If i had my choice, I'd do it in Go.
Do you have any sources that confirm that this system is in fact reliable?
That all of Europes police departments, foreign ministries and embassies use this for international communication puts it at the scale of a smallish web application.
The people that use these systems come from a system where data like this is requested by telephone and supplied per fax. If WCF were slow and unreliable they'd probably still take it for granted, everything beating the old way of doing stuff.
The users being used to telephone and fax being the reason they are okay with WCF? Maybe in the 80's, but it's been a while since then.
We are talking 10 mill+ daily transactions as a low brow estimate. A transaction in this case being a bit more complex than the page viewing of a cat picture. These are systems with dev and maintenance teams of hundreds and hundreds of deveLopers globally, working for 5-10 years. To refer to this as the scale of a smallish web app, well...
And would you really say that a technology handling such an amount of transactions in such a critical setting is not ready for production?
When searching for Go related information, use "golang" instead of "go".
e.g., golang channels; golang web sockets; golang slices; etc.
http://www.google.com/trends/explore?hl=en-US#q=Java%20tutor...
India is far ahead of every other country for all of these tutorial searches. eg for Java, India is search index 100, while USA is only search index 11.
I created a chart with some more languages in this Google Doc: http://bit.ly/UBuI02. Java seems to be by far the most popular, though C# seems to be pretty high-demand too.
One could probably compare different job sites to see why they have somewhat different rankings. Also, I wasn't sure how to search for C (and even C++) without getting C# results too.