Hacker News new | ask | show | jobs
by WorldWideWayne 4370 days ago
I just don't trust Google to do languages and developer tools very well. They don't seem to depend on developers enough to bend over backwards for us the way that Microsoft does.

Plus, they seem to want to use web tech to build native desktop tools all the time and little things like "keyboard acceleration" don't seem to matter to them because there are no standards for that in web-world.

1 comments

Not sure what you mean: MS has a history of abandoning its developer platforms and frameworks that thier developers have invested in, so much so that there's no longer a clear UI story for building native desktop windows apps, i.e. VB6, Silverlight, WinForms and WPF are all effectively deprecated. Although they have long support life, when they officially abandon a platform they also refuse to Open Source it so others can keep it alive (e.g. VB6 http://bit.ly/KPMUS6). I personally can't see how anyone can put trust into building native Windows desktop apps (i.e. over web apps) given the repeated a history of abandonment.

Even the #1 feature for VS.NET is to continue developing very popular XNA framework: http://visualstudio.uservoice.com/forums/121579-visual-studi...

Likewise on the server side there's been history of deprecated frameworks a lot of developers have invested a lot of energy into learning, e.g: .asmx, CSF, WCF, WCF/REST, WSE, WCF DataServices, RIA

Whilst VisualStudio is a great IDE, I find it a subpar experience without R#. The major advantages Dart has over C# is that it still provides an enjoyable experience to develop even without an IDE which also includes support for the most popular text editors: https://www.dartlang.org/tools/ If you like IDE and tooling support, the DartEditor offers a good experience with built-in analyzer, debugging and refactoring support you can expect from a well engineered language.

By contrast, C#'s configuration model, msbuild project format, heavy frameworks and tooling makes it unfeasible to develop without an IDE.

The other major advantage Dart has is that it compiles down to JS where even the compiler is completely self-hosting and runs inside a browser without plugins: http://try.dartlang.org/ Being able to share the same code on client and server and having a single integrated development full-stack experience is a huge win in re-usability and utility.

Another killer feature is that the language and tooling is cross-platform which supports Windows, OSX and Linux. Something .NET devs often miss out on is the value and utility of being able to host apps on cost-effective Linux servers.

Google continues to invest a tonne of resources in Dart and Polymer which are massive undertakings that are providing a much simplified and consistent experience for developing large, complex web apps. Nothing like Dart or Polymer exists. Dart is a platform that transpiles to JS, includes a native Dart VM, an entire toolchain including IDE, analyzer and debugger both in Dart Editor as well as in Chrome, in both the Dart VM as well as debugging with Source maps.

The worlds best VM engineers work on the Dart VM, i.e. the same pedigree responsible for the StrongTalk VM that was later acquired by Sun to form the basis of the world-class Java Hotspot VM that later went on to develop V8, are now leading the development on the Dart VM.

The excellence shows itself in the consistency and minimalism goals in the language, providing a productive, iterative dynamic language experience for fast prototyping with the benefit of static analysis with optional typing when scaling up to a maintainable, well-documented code-base (best of both worlds).

Not only is Dart a productive dynamic language, it also has excellent performance, the best performance of all languages I benchmarked with a port of Peter Norvig's Sudoku solver: https://github.com/dartist/sudoku_solver#benchmarks

I'm feeling a little defensive here (disclaimer, MS employee, but I work for MSR, not devdiv):

> Not sure what you mean: MS has a history of abandoning its developer platforms and frameworks that thier developers have invested in, so much so that there's no longer a clear UI story for building native desktop windows apps, i.e. VB6, Silverlight, WinForms and WPF are all effectively deprecated.

WPF is still chugging a long strongly even if there aren't so many new features. Visual Studio was recently rewritten in it, and its a very good design with lots of room for encoding desktop apps in the future. I use it daily and cringe at the thought of ever doing something for the web without it.

> Whilst VisualStudio is a great IDE, I find it a subpar experience without R#.

I use visual studio just fine without R#. I see no point these days writing code without an IDE, I'm addicted to code completion. Not to mention amazing things are being done with Roslyn.

> By contrast, C#'s configuration model, msbuild project format, heavy frameworks and tooling makes it unfeasible to develop without an IDE.

C# is totally usable from the command line, most developers just refer the IDE.

> he worlds best VM engineers work on the Dart VM, i.e. the same pedigree responsible for the StrongTalk VM that was later acquired by Sun to form the basis of the world-class Java Hotspot VM that later went on to develop V8, are now leading the development on the Dart VM.

The CLR is one of the best VMs ever (read: very fast), worked on by some of the brightest who are very comparable to the Animorphic crowd. The DLR feature (ability to generate/compile expression trees at run-time) is also very cool and missing from the JVM. If you are into building language run-times, it is an awesome base for a dynamic language.

True: it is only available on Windows, but Mono has made progress as well (most features available sans WPF). I've been thinking about porting my language work [1] over to mono.cairo to see if I can achieve cross platform without going to Java or the web.

[1] http://research.microsoft.com/en-us/people/smcdirm/liveprogr...

> WPF is still chugging a long strongly

Your definition of strong sounds different to other peoples. There was entire FixWPF grass roots campaign to petition more investment into WPF, twitter account is at: https://twitter.com/fixwpf they also had a website and blog pleading for MS to keep investing in WPF and fix its issues.

When and what was the most recent feature added to WPF?

> I see no point these days writing code without an IDE

You may not, but most popular languages can be developed without and IDE, which is important for simplicity / deployment / portability. It's also much easier to develop in smaller laptops which can maximize real-estate. Obviously a language that is suitable without an IDE is also more suitable in an online IDE, which we're seeing with the new online IDEs becoming available.

> C# is totally usable from the command line, most developers just refer the IDE.

So it's only usable where it's worst than most other languages at? i.e. Scripts and Command-line apps? It's so totally usable that MS invented a new completely different language for creating command-line scripts (PowerShell).

As you likely already know, most .NET developers don't spend their time developing 1 file Console apps. Any task that has any meaningful user-share requires an IDE.

> The CLR is one of the best VMs ever

Citation needed, it's not as performant as the JVM, and its lack of cross-platform is a major limitation. The Sudoku benchmarks shows that it's slower (and more verbose) than Dart even removing time spent on pre-compilation. Dart also offers high-level productivity features like variable-sized integers, saving a lot of boilerplate from having to deal with specific fixed-size integers.

> awesome base for a dynamic language.

Really? All dynamic languages targetting both the CLR/JVM are either deprecated or second-class citizens on the CLR and are always better supported on the JVM: Jython/IronPython JRuby/IronRuby Clojure/ClojureCLR. The CLR is a wasteland of unpolished efforts with relatively no traction/community behind them.

The DLR team has actually been disbanded with the primary developer behind it (Jim Hugunin / IronPython) having left Microsoft (http://hugunin.net/microsoft_farewell.html) to now work at Google on the Dart project no less.

What he had to say about Dart (http://www.infoq.com/news/2011/11/dart-roundup-frog):

    I've spent most of my career trying to end the battles between the dynamic 
    and static worlds and instead bring them together so that each side can 
    enjoy the benefits of the other. Writing this compiler in dart is the 
    first time that I've really felt the effortless blend of these worlds that 
    I've been seeking.

    Dart is the first time that I have been able to start off writing code in 
    a very dynamic fashion and incrementally add static checks as designs become 
    solid or complexity warrants the effort.
Dynamic itself is a heavyweight solution and may many suggest may have been a mistake, C# 6.0 is actually introducing new '$' syntax to avoid dynamic and make working with dictionaries better.
> Your definition of strong sounds different to other peoples. There was entire FixWPF grass roots campaign to petition more investment into WPF, twitter account is at: https://twitter.com/fixwpf they also had a website and blog pleading for MS to keep investing in WPF and fix its issues.

WPF still works very well, it is not broken. It is still one of the best UI toolkits ever constructed with a lot of flexibility that I don't think is still appreciated enough.

> When and what was the most recent feature added to WPF?

No clue. I'm as curious as everyone else.

> You may not, but most popular languages can be developed without and IDE, which is important for simplicity / deployment / portability.

As far as I'm concerned, the IDE is a part of the language and at the very least the programming experience. People programming in emacs and VIM will eventually retire, the future is undeniable at this point. A language designed for an IDE will work better in an IDE than a language that is designed for least common dominator development environments. But then I'm biased since that is part of my research.

And also, Dart is so far very weak on the IDE side. I wonder if the Dart team has lots of compiler people and not a lot of IDE people, or if they have the same old-fashioned mindset as you in de-emphasizing the value of a good IDE experience. But I would expect it to get better, they hired Luke Church after all.

> It's so totally usable that MS invented a new completely different language written for creating command-line scripts (PowerShell).

PowerShell is an optional tool, not required. I've seen huge C# projects build from a CMD prompt (not that I want to bother with build configuration management myself).

> Citation needed, it's not as performant as the JVM

Citation needed, in my experience, C# kicks the JVM's butt in Win performance. Reified generics also reduce lots of boxing issues.

> The Sudoku benchmarks shows that it's slower (and more verbose) than Dart

Your numbers are completely whack. First, it shows mono being faster than the CLR, oh and you are using a virtual machine on top of that. Do you really think people will take that seriously? Also, do you ever try..you know..a multi-threaded shared memory solution?

> The DLR team has actually been disbanded with the primary developer behind it (Jim Hugunin / IronPython) having left Microsoft (http://hugunin.net/microsoft_farewell.html) to now work at Google on the Dart project no less.

Jim and Jon are gone, but the work they did is totally still around and works wonderfully. I use it, its fast, and it puts C# on par or beyond with any dynamic language that supports dynamic eval.

> Dynamic itself is a heavyweight solution and may many suggest may have been a mistake, C# 6.0 is actually introducing new '$' syntax to avoid dynamic and make working with dictionaries better.

I'm not talking about C#'s dynamic language feature, which I don't really care for, but dynamic expression tree compilation that came along with the rest of the DLR. As a language implementer, it is very useful.

> WPF still works very well, it is not broken. It is still one of the best UI toolkits ever constructed

What exactly do you think the FixWPF campaign was about? And what else have you used? If it's so good, why are so few Windows desktop apps that come with Windows written with it? At least Apple uses Cocoa for all its OSX Desktop apps which I find to be of much higher quality and has smoother performance.

> People programming in emacs and VIM will eventually retire, the future is undeniable at this point.

You're making it sound most developers using text editors are old kooks with 1-foot into retirement. How disconnected are you? What % of OSS projects on GitHub do you think use an IDE? More or less than 50%? https://github.com/trending

> Dart is so far very weak on the IDE side. I wonder if the Dart team has lots of compiler people and not a lot of IDE people,

They actually have quite a few IDE people on the team with many years of experience developing IDE tooling. Any immaturity is simply that the DartEditor is still so young. It was only recently that they rewrote the old Analyzer that was previously written in Java to Dart, which now runs much faster. No doubt VS benefits from a large experienced IDE team as would JetBrains.

> I've seen huge C# projects build from a CMD prompt

Seeing something done once doesn't extrapolate itself into a common use-case or a well-supported story, which it isn't. Having to maintain your own build scripts is a slow, painful and mundane experience which is why it's a rarely considered approach. Even the just released Swift has a better command-line story than C#, which supports #! scripts, a command-line REPL and LLVM debugger.

> Citation needed, in my experience, C# kicks the JVM's butt in Win performance.

Citation is still needed. Where can this butt kicking be seen?

> Your numbers are completely whack. First, it shows mono being faster than the CLR, oh and you are using a virtual machine on top of that.

They're not my numbers, that's the actual output from the command-line Console apps which you can see on the project page. But don't take my iMac's word for it, all the source code is there, run the benchmarks yourself. Your 2 points aren't exclusive, there is no "on top of that" they were all run from my iMac, I would've run C#/.NET natively, but y'know that's hard to do when it's the only platform that doesn't work cross-platform. Running inside Parallels likely accounts for about 10-15% performance overhead, it doesn't explain 2.3x worst performance.

> As a language implementer, it is very useful.

Language VM features that are optimal for compiler writers doesn't translate itself into killer general-purpose language features for everyone else.

> And what else have you used? If it's so good, why are so few Windows desktop apps that come with Windows written with it? At least Apple uses Cocoa for all its OSX Desktop apps which I find to be of much higher quality and smoother performance.

WPF is used for Visual Studio, and that is from VS 2010 on. WPF is used for a lot of stuff internally, its not like people are still breaking out WinForms or GDI. And then there is WP and WinRT, which are WPF derivatives.

> You're making it sound most developers using text editors are old kooks with 1-foot into retirement. How disconnected are you? What % of OSS projects on GitHub do you think use an IDE? More or less than 50%? https://github.com/trending

GitHUB isn't even a small percentage of all developers, it only represents public OSS projects. There is lots of value in a good IDE, language designers and implementors who treat it as a second class concerns are going to pay the price in popularity eventually.

> They actually have quite a few IDE people on the team with many years of experience developing IDE tooling. Any immaturity is simply that the DartEditor is still so young.

That isn't what I've heard. Anyways...Eclipse...wow...I don't see anything good coming out of that.

> It was only recently that they rewrote the old Analyzer that was previously written in Java to Dart, which now runs much faster.

Fast tools mean nothing if the UX is crap. Also, incremental performance is quite different from batch performance that you expect from the command line.

> Running inside Parallels likely accounts for about 10-15% performance overhead, it doesn't explain 2.3x worst performance.

In general, I've seen the CLR beat Mono anywhere from 1.5 to 3X. So if Mono is coming up faster than the CLR, something is probably seriously off.

> Language VM features that are optimal for compiler writers doesn't translate itself into killer general-purpose language features.

Right. But it does give you lots of options in one's managed time live programming language.

>>They're not my numbers, that's the actual output from the command-line Console apps...<<

http://benchmarksgame.alioth.debian.org/u64/benchmark.php?te...

WinRT was not built on the CLR. MS didn't eat it's own dogfood. Divided story between Windows Phone and Windows 8.

MS should open source the CLR. Also, the new MRT - minimal native runtime.

> MS has a history of abandoning its developer platforms and frameworks....VB6, Silverlight, WinForms and WPF are all effectively deprecated...Likewise with XNA...CSF, WCF, etc...

"Deprecated" is just a word that means absolutely nothing here since all of those kits are still fully functional on current versions of Windows (including XNA and the server side stuff that you mentioned). And VB6 is 20 years old! You wanna make a bet that your Android, Dart or Go code will run in 20 years? Android code from 2008 won't even run today mate :) Also, when Google deprecates something - it's usually hooked to a service, so there's no hope to keep using it when it's no longer fashionable (like some are doing with VB6, Foxpro and other really old kits).

> Whilst VisualStudio is a great IDE, I find it a subpar experience without R#.

And I find the lack of a single IDE built and maintained by Google to be sub-subpar. Visual Studio is superb without R#, but even if you don't think so - at least Microsoft is making life easy by offering an IDE that is tuned specifically for the task at hand instead of using some open source pile of junk that tries to do everything. There's nothing to decide when I need to do .NET - I know what tools to use. Meanwhile Google has no comprehensive strategy here and you're forced to cobble together your own toolkit. Blech.

> Another killer feature is that the language and tooling is cross-platform which supports Windows, OSX and Linux.

That's a weakness because "cross-platform" means a crappy non-native Java UI or some half-functional impostor built with HTML - and those tools suck on every platform. No thanks, I like things that are native to my platform please. Besides that, I can certainly do all of my coding on Windows and build and run it on Linux without any problem thanks (because I have been).

I don't really want to spend my time responding to another wall of text or the rest of this one so I'm going to end it here. I will say that Google does some cool stuff in the browser and with Android, but my main point here is that they don't put forth a very comprehensive strategy at all. Most of their developer stuff seems to be created by 20 percenters in their spare time instead of making a concerted effort like Microsoft does.

> "Deprecated" is just a word that means absolutely nothing here since all of those kits are still fully functional

It means everything, who want's to invest or be excited about learning technology they know to be end-of-life'd? Being deprecated is the first deathknell of a platform that begins it's slow-fade out of existence. At some point developers have to abandon the time they've invested into a platform into a new one that will be maintained in future, e.g. Cocoa/iOS/Android/HTML5/Chrome don't share the same risks of abandonment.

> And I find the lack of a single IDE built and maintained by Google to be sub-subpar

You're talking about your own feelings here, it's doesn't say anything about Google or their IDE tooling.

> Visual Studio is superb without R#, but even if you don't think so

Right, I don't, working without R# is a primitive experience that handi-caps productivity.

> at least Microsoft is making life easy by offering an IDE that is tuned specifically for the task at hand instead of using some open source pile of junk that tries to do everything

That's the exact opposite of what VS.NET is, who is the biggest offender of what you dislike. VS.NET is a kitchen-sink offering that crams in everything into a single IDE, it's the very opposite of "tuned specifically for task at hand". JetBrains platform-specific IDE's, Android Studio, XCode are examples of tuned IDE's for the task at hand. Even the DartEditor is tuned, which is more a rich editor than an IDE. It starts from a blank Eclipse Shell and only adds tooling for specifically developing Dart apps.

> That's a weakness because "cross-platform" means a crappy non-native Java UI

No cross-platform doesn't mean crappy UI, it means having the choice of developing in your preferred OS of choice, collaborating with devs on alternative OS's as well having the opportunity to host on the most cost-effective hosting solution. i.e. freedoms that .NET developers don't enjoy.

> but my main point here is that they don't put forth a very comprehensive strategy at all.

Exactly what IDE's have you used? Your perception of their tooling suggests not much. Android Studio is a very compelling offering and DartEditor actually provides a faster iterative experience which auto-builds on save and lets you debug app code natively from within Dartium in addition to the IDE.