
A glimpse into a new programming language under development at Microsoft - Garbage
http://lambda-the-ultimate.org/node/4862
======
moomin
This is going to be horribly negative so a bit of context first: I'm a
professional C# programmer. I love C#, I think it's a great language.

But there's a huge downside: C# only works on Windows. This vastly reduces the
number of things you can do with it (yeah, I know about Mono). There's nothing
here that suggests that this would have anything other than the same
restrictions. So, assuming the language develops into everything that's
promised, you're left with something on which you can't do mobile, can't do
big data, probably won't work very well for scientific computing. In fact,
basically you're still stuck with the same LoB apps and ETL tools that C#'s
already great at. And probably the same second rate (not awful, not great) web
experience.

So the best you can hope for, basically, is a better C#. But not good enough
to take on Java.

Don't get me wrong, it sounds exciting, but equally I worry that it'll be used
as a way to generate patents to prevent the ideas being used elsewhere in
environments where, tbh, they'd find more use.

~~~
sillysaurus2
_C# only works on Windows. This vastly reduces the number of things you can do
with it (yeah, I know about Mono)._

Speaking of Mono, does anyone know of a good resource for C#/.NET devs to
learn how to port their Windows apps to Linux/Mac relatively easily?

I did a writeup a month ago about my first impressions of Mono:
[https://news.ycombinator.com/item?id=6744622](https://news.ycombinator.com/item?id=6744622)

In short, there don't seem to be very many "Here's how to write cross-platform
C# code that runs on all three platforms without much effort" type resources.
It seems like most Mono newcomers will find it difficult to get up and
running, especially if you've been developing your app with Visual Studio 2010
or later. So it seems like there aren't very many good tutorials written
specifically to teach Windows C# devs how to quickly get up to speed with
Mono.

After spending some time researching the idea of writing GUI apps using C# and
Mono, I gave up because it just didn't seem straightforward. Maybe I was going
about it the wrong way, but it seemed like Python + Qt bindings would be a
more effective approach, even though you lose out Visual Studio's awesome GUI
designer. But I haven't actually tried python+qt yet on all three platforms,
so maybe it isn't as easy as it seems. And my Qt knowledge is somewhat dated,
so maybe there's a better solution nowadays.

Does anyone have any recommendations for the easiest way to write cross-
platform GUI apps that can run without an internet connection? I was thinking
maybe making it a webapp, but the offline requirement seems to rule that out.
(Has localstorage progressed to the point where people can start up a browser
"app" without an internet connection? I haven't looked into it for awhile.)

Plus I'm not sure how easy it is to write custom webapp GUI objects compared
to the fantastic ease of writing custom .NET GUI objects via the VS GUI
designer. Although anything that lets you quickly and easily write powerful
GUI apps that run on all three platforms would be pretty fantastic. What
toolset would you use to get the job done?

EDIT: Hmm, just thought of another idea... Would Clojure work well for writing
native GUI apps? It's based on the JVM, so it seems like it could leverage
existing GUI libraries. (All the Java GUI libs used to suck, but maybe the
situation's improved now that Clojure is popular.)

~~~
cmiles74
I have been building GUI applications with Java and Swing for some time. I am
willing to go on-the-record and state that Swing provides a reliable and
thorough cross-platform GUI toolkit. Once you put the work in, you really can
build an application that looks native-ish and does the same thing on Windows,
Linux/GTK and Mac OSX. Unfortunately the learning curve is quite steep, many
things are more complicated then they need to be.

I have just started working on GUI apps with Clojure and the story is much
better so far! Seesaw[0] definitely slims up the Swing code, and I've been
using Core.Async[1] to remove a lot of the callback handlers. So far, so good.
:-) It's definitely worth looking into.

[0] [https://github.com/daveray/seesaw](https://github.com/daveray/seesaw)

[1]
[https://github.com/clojure/core.async](https://github.com/clojure/core.async)

~~~
coldtea
> _I have been building GUI applications with Java and Swing for some time. I
> am willing to go on-the-record and state that Swing provides a reliable and
> thorough cross-platform GUI toolkit._

Swing is used by two kinds of people: developers, because the tools that use
it are just too good to go elsewhere (IntelliJ etc) and enterprise users that
have it forced upon them.

I don't think anybody is using Swing willingly -- or enjoying it. Besides the
"uncanny valley" effect to native widgets, it suffered from the start from the
main negative of Java's culture: it was overengineered. On top, it
underdelivers in many areas.

~~~
bad_user
It may be over-engineered, but it's easily available, at hand, when you need
it.

The only cross-platform GUI toolkit that I loved working with and that does a
much better job than Swing is Qt. Unfortunately Qt is C++ and it's not even
standard C++. So language bindings are hard to build and (compared with Gtk)
working with C++/Qt is not so painful. The bindings for Mono are dead.
Trolltech released at some point Qt Jambi, the Java bindings, which were
awesome, unfortunately the Java community hasn't been interested in it, so Qt
Jambi also died after Nokia acquired Trolltech - for the moment at least (the
wonderful thing about open-source stuff is that it can be revived with enough
interest). The only well maintained language bindings for Qt is PyQt.

And yes, building the UI using the platforms native stuff yields better
results, but it's also more expensive to do so. We're all moving in that
direction anyway, given the emerging mobile platforms. Sometimes I'm thinking
that for desktop apps it's just better to embed a web browser and build the UI
with HTML/CSS and JS.

~~~
coldtea
> _It may be over-engineered, but it 's easily available, at hand, when you
> need it. The only cross-platform GUI toolkit that I loved working with and
> that does a much better job than Swing is Qt._

Both statements I agree with!

I think it's a sad state of affairs, that the tens of billion s IT industry,
and the whole OSS community, cann't produce, and maintain, a decent, cross
platform UI, based on C with hooks for various languages.

GTK has dropped the ball even on Linux (Mac/Windows support is crap, and the
library is essentially what it was 10 years ago content wise).

wXWidgets is at the same level more or less.

QT is nice, but is C++, so you either by into the whole thing or you face the
not so good support and bindings to other languages (Python has the best
support, but even that is mediocre).

Mozilla's XUL was never wrapped and maintained properly (as once promised), to
be use to use for cross platform development.

SWT needs Java, and is too tailored to Eclipse's needs.

I, for one, don't need native look in all apps -- I could do with something
like the cross platform widget library Adobe built for Lightroom -- that and a
webkit view.

------
molsson
The homepage of Joe Duffy says "I’ve been granted 45 patents, with another 33
pending" (see his homepage under /about via google cache since the page is
down due to load from HN). Bragging about patents doesn't exactly make me like
the guy. Has he been living under a rock, why would he write that on his about
page?

Anyway, he says explicitly that he cannot reveal any details at this point;
i.e. Microsoft has filed patents related to this "new langage" and can't talk
about it until they are approved. He also claims to have been working on his
"new language" for 5 years already; I wonder what those 33 patents he says he
got pending are? Or maybe he patented 33 things related to something he hasn't
been working on for the last 5 years? Not likely. Microsoft will get more and
more desperate as they continue to be marginalized in terms of market cap,
market share and developer mindshare. They have a long track record of simply
being dicks (i.e. just look at how they charge royalty for every android
phone, and how they created the Rock Star patent troll company etc).

It would be better for everyone if Microsoft stayed out of the "perf +
productivity" language niche.

~~~
alok-g
>> Joe Duffy says "I’ve been granted 45 patents, with another 33 pending"

>> Bragging about patents doesn't exactly make me like the guy.

Genuinely asking, do you see putting information on patents as bragging or
more generally as a negative? I have also been putting the same on my profile,
so would like to understand your viewpoint better to see if I should remove
it.

My side of the story:

I have nearly always worked for big technology companies and for various
reasons they are always very protective of their IP. This means that an
employee can barely talk about his/her projects at the company without making
the description too generic. People are barely allowed to publish papers on
their work, make contributions to open-source (unless with consent of the
employer, which is rare), and cannot have side projects [1].

Such generic descriptions of the projects and a mere mention of the skills do
not leave many options for employees to demonstrate their expertise.
Recommendations is one way (and I correspondingly have plenty of stellar ones
on my LinkedIn profile), but is also gamed a lot: I know several cases where
non-deserving people also have great recommendations.

Then comes the patent filings. I have been known as a well-respected and "a
prolific inventor" in my last employment, the "most original thinker" at
college, etc. Yet, it is hard to reflect this on the profile or CV since these
terms by themselves are also often overused.

[1] While it may be a common practice to have side projects, the employment
agreements most big technology companies have, that most people sign without
even reading, place a lot of restrictions on the side projects. These issues
have been discussed on HN several times before. In fact, since most employees
do not even read these agreements, talk about negotiating on them, the
equilibrium position for these agreements is heavily biased in the favor of
employers than of employees.

~~~
molsson
Software patents are contentious issue for some people so it's not something
I'd include in a CV or on an open accessible "about page".

~~~
alok-g
I see. Issue is with software patents specifically, not patents in general.
(Mine are mostly non-software.)

------
dmunoz
I'm going to ramble a little below, so I'll get to the point up front: is
there even a new language here? I don't mean in the sense that Rust seems to
attempt what is being hand waved about in the submission, but that the linked
blog post states

> I’ve given a few glimpses into this work over the years. In the months to
> come, I will start sharing more details. My goal is to eventually open
> source this thing, but...

We'll have to wait and see, I guess. I also found this quote a bit odd

> There are other candidates early in their lives, too, most notably Rust and
> D. But hey, my team works at Microsoft, where there is ample C# talent and
> community just an arm’s length away.

D is hardly early in its life, but there is something about the whole "my team
works at Microsoft, where there is ample C# talent" bit that is so very
Microsoft, and I don't mean because it mentions Microsoft and C#, but in the
sense of how they tend to work there. At least, this is my outside view, based
mostly on what they promise vs. actually deliver in the C++ world, and where
their interest constantly seem to fall short. Of course, you can't blame
Microsoft for being interested in advancing Microsoft.

With that out of the way, and being up front that the rest of this comment is
unnecessary, I wonder why this is on the front page of Lambda the Ultimate.
It's become a favourite site of mine as I've recently become a lot more
interested in language implementations. I'm certain the comments on the
article will make it worthy, but as it stands, and with my comments above out
of the way, I don't see what it offers. It's just hand waving about some ideal
language that doesn't (fully) exist yet. The actual answer to my question of
why it is on the front page is because Charles Torre can make front page
posts, but just be aware that he works at Microsoft and hypes up their
behaviour (that I'm admittedly not so pleased with) often. I know he is, like
me, actually interested in language implementations, and has made far more
worthy contributions on LtU than I ever have, but the front page of LtU is
usually a bit more grounded.

~~~
ehudla
For the record, Charles didn't post it to the home page. I promoted it there,
since I thought (correctly, it turns out) that it might be of wide interest.
So all the blame for that goes to me.

~~~
dmunoz
It's actually nice to see activity on the LtU front page. The two other posts
I would assign to the same category as the submitted one would be xkcd:
Functional [0] and The Three Laws of Programming Language Design [1] posts.
They both had good discussion, which is where a lot of value at LtU comes
from. I even wrote my own little script to make the expanded, threaded list of
comments collapsible to consume them more to my liking.

To be fair, I was being unjustly negative because of my worry about how
Microsoft treats such projects. Admittedly, after sleeping on it, I don't see
it to be as big as a deal as I did last night. It'll be interesting to see
what Microsoft produces, and we'll still have the open and approachable Rust
regardless.

I find Charles reply to your comment about the HN thread odd though. He says

> It's interesting, though not unexpected, that folks are already comparing
> this language to D, Rust, and Go which also aim for a nirvana (safe,
> productive, fast, open) without really having many of the details required
> to make intelligent comparisons (on reddit, somebody made a post asserting
> this language is MS's _answer_ to D and Rust... WTF?).

Why is this interesting or unexpected? Joe Duffy's blog post mentions D and
Rust explicitly. That we don't have "many of the details required to make
intelligent comparisons" was my issue with it being hand wavy. There are
already conspiracy themed posts about this being because Microsoft wants to
lock down patents on these parts of the language [2]. Post the details, and
we'll likely see "intelligent comparisons" being made on HN and Reddit.

The post is spreading on Reddit as well, if you would like to see others
feelings on the matter [3].

[0] [http://lambda-the-ultimate.org/node/4816](http://lambda-the-
ultimate.org/node/4816)

[1] [http://lambda-the-ultimate.org/node/4754](http://lambda-the-
ultimate.org/node/4754)

[2]
[http://www.reddit.com/r/rust/comments/1tve0m/a_glimpse_into_...](http://www.reddit.com/r/rust/comments/1tve0m/a_glimpse_into_a_new_general_purpose_programming/cebvl72)

[3]
[http://www.reddit.com/r/programming/duplicates/1tvic1/the_mi...](http://www.reddit.com/r/programming/duplicates/1tvic1/the_microsoft_response_to_d_and_rust_m/)

~~~
ehudla
> It's actually nice to see activity on the LtU front page.

I agree.

But I think it would be more appropriate to conduct LtU meta-discussions over
on LtU...

------
laureny
I am quite disturbed by this claim:

> It’s commonly claimed that with type-safety comes an inherent loss of
> performance

If we've learned anything, it's that type safety buys you performance because
it enables a lot of compiler optimizations that are not possible in
dynamically typed languages.

Other than that, the language sounds very interesting but if it's going to be
Windows only, it will suffer the same fate as C#: powerful but crippled by its
platform boundaries in a way that will make it impossible to compete with
Java.

~~~
brandonbloom
I assumed he meant safety in the general sense or memory safety specifically.
Things like array bounds checks, dynamic cast failures throwing exceptions,
etc.

~~~
Sssnake
But he said type safety, which is entirely compile time and allows you to
avoid run time checks, making it faster not slower.

~~~
sanxiyn
Type safety means well-typed programs can't go wrong. Corrupted memory is
surely a case of going wrong, so memory safety is a part of type safety. (In
this sense, C, C++, etc. are not type safe.)

By the way, it is possible and sometimes preferrable to do all type checks in
runtime. Haskell provides this option:
[https://ghc.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime](https://ghc.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime)

~~~
Sssnake
Context is cool. With context, you can participate in a conversation, rather
than stating an obvious but non-sequitur fact. By definition, type checks are
done at compile time. Haskell's defer-type-errors is precisely an example of
that. The error is found at compile time, but rather than signal it, the
offending code is replaced with an exception.

~~~
brandonbloom
sanxiyn's comment seems to fully understand the context. Re-read his message
in the context of my message.

> By definition, type checks are done at compile time.

That does not match my definition of type checks.

Ignoring things like Typed Racket or clojure.core.typed for a moment. Consider
a cast in Java: This is a type safe operation which incurs a runtime type
check.

Now maybe you're thinking of global type checking for correctness. In which
case, I'd still disagree, since there is no rule that you can't have a
resident analyzer and run type checks after compilation. Go read about Typed
Racket, for example.

~~~
Sssnake
>sanxiyn's comment seems to fully understand the context

No it doesn't, given that the context was specifically runtime checks like
array bounds checking, and he replied with a non-sequitur about memory
corruption.

>That does not match my definition of type checks.

That is because "your definition" is incorrect. I am using the actual
definition. "Dynamic typing" is a deliberately incorrect name for untyped
languages. Runtime checking of _value_ compatibility is not type checking.

~~~
brandonbloom
1) Surely the most common source of memory corruption is bounds violations.

2) Even reconciling our disagreement on terminology, I still disagree A) that
a strict phase separation is a prerequisite for types to exist at all and B)
that it even makes sense to talk about "untyped" as if I couldn't just invent
a type system (however complex) for proving properties of a particular
language that previously had no known type system.

The simple fact of the matter is that definitions evolve over time as we learn
more about our field. "Type safety" is historically valid phrase for what we
now know as "memory safety". In context of the performance claims, it was
quite clear what the author meant.

~~~
Sssnake
>Surely the most common source of memory corruption is bounds violations.

Surely the most common source of oranges is orange trees.

>Even reconciling our disagreement on terminology

You aren't reconciling it, you are just repeating "I don't like the real
definition of type system in regards to computer science". That's great for
you and all, but it has nothing to do with me. If you want to learn about it I
can recommend some material, but if you just want to argue "I don't understand
X therefore using the correct terminology for X is wrong" then there's no need
to continue.

------
stcredzero
_> Part of what my team does is regularly convert C# programs to this new
language, and it’s not uncommon for us to encounter 30-50% time spent in GC.
For servers, this kills throughput_

I think a lot of money in computer technology is made off of the cluelessness
of application programmers. Then again, sometimes "cluelessness" =
"schlepping" = opportunity. Azul systems Zing JVM is an example of this.
Instead of arcane tuning, architecture, and optimization, you just put in a
pauseless GC VM.

ARC with Objective-C shows that one can have automated deterministic memory
management that's not only workable in practice, it works about as well as GC.
That is, 90% of the time, with gotchas for application programmers not paying
enough attention the other 10%. A functional language should enable a "just
works" percentage even higher than 90%.

------
ek
The tech report version of the OOPSLA paper Joe mentions, about a type system
for side effect understanding, is here:
[https://research.microsoft.com/apps/pubs/default.aspx?id=170...](https://research.microsoft.com/apps/pubs/default.aspx?id=170528)

~~~
riffraff
also from MSR, Koka[0] has effect types and a sweet online repl!

[0] [http://rise4fun.com/koka/tutorial](http://rise4fun.com/koka/tutorial)

------
romanovcode
I would imagine that language like that would be one of the best you could
hope for. I hope this language will fit all the bullets.

\- C# syntactic sugar

\- As fast as C++

\- Does not require .NET

\- Runs on Windows/Linux/Unix with no problems

~~~
leifus
Sounds a lot like D ([http://dlang.org/](http://dlang.org/))...

~~~
munchor
Or Vala
([https://wiki.gnome.org/Projects/Vala/Tutorial](https://wiki.gnome.org/Projects/Vala/Tutorial)).

------
jedicoffee
Sweet, in 4 years they can completely remove all support for it and start
again!

------
alco
YAGPL (yet another general-purpose language).

I think we've had enough of those in the past decade. Each one has something
new to offer, but at the same time it disperses attention of the programmer
crowd and so less effort is put into each language's development.

I think we need to experiment more with single-purpose languages. I'm not
saying DSLs because those are mostly embedded syntactic constructs in existing
languages. By single-purpose I mean an independent language (not just new
syntax, but semantics as well, and possibly new runtime) that does one thing
and does it well.

I believe such a language will have much more luck in becoming the single good
enough solution for a particular problem (any problem it chooses to address,
but only that one). There is really no hope for any general-purpose language
to be a good fit for the whole wide spectrum of problems modern computing
needs to solve.

~~~
dded
Do you have any "particular problem" in mind? You don't mention one.

I think the trouble with single-purpose languages is that, realistically,
their development needs to be motivated by a real problem not satisfactorily
addressed by an existing language. And since the people with these problems
are not often going to be language designers, most such opportunities will be
missed. I'm frankly surprised by the existence of Julia.

~~~
josephcooney
Fetching information from a data store of some kind, and presenting it as a
web page would be a good one.

------
sergiotapia
I just hope it's not so heavily tied to an IDE. One of the things I really
enjoy about using Go and Ruby is that I can use whatever the heck I want to
write code. C# was my first language learning and it took a while to shake off
the notion that "everything must be done with an IDE".

~~~
samirahmed
I couldn't agree more.

That said, I think hidden in your last sentence is the fact that working with
C# in an IDE with a statically typed language is such a pleasure.

For most mundane code (loops, linq, if/else), Resharper will literally
autocomplete everything.

I really wish other languages offered such tooling at times.

I don't think any other language/IDE combo comes close (in my opinion).

~~~
EdwardDiego
Try Intellij IDEA with Java and the various Java frameworks - IDEA is
Jetbrains' (developers of Resharper) flagship IDE, they also do slightly more
focused variants for Python, Ruby, PHP, and web development (PyCharm,
RubyMine, PHPStorm, and WebStorm respectively.)

------
qwerta
I think Microsoft language research is wonderful. But they tools do not run on
Linux and MacOS well.

------
Pxtl
A part of me is very excited by this. C# lives in a very interesting place now
- MVC and EF are open-source and Mono is getting mature. There are tons of
blind, stupid alleys of bad politics in C#'s library, but MS seems to have
worked out the kinks.

A new gaming-compatible language that breaks free from the old legacy and
purely embraces the new Microsoft platforms and their semi-open development
model could be _excellent_. And with MS offering hardware platforms for
gaming, mobile, desktop, and server, there's a lot of space for this language
to really shine - a good systems language for XBox and WinPhone would be
beautiful.

And while I'd cringe at another platform-specific language, Apple has proven
that people _will_ suffer through your exotic toolchain if it means getting to
develop for a popular platform.

The biggest problem historically with C# isn't the windows-specific nature of
the platform, it's the heavily Cathedral-oriented community. Developers are
married to Microsoft libs, even when they suck, and it doesn't have the kind
of open reusable tools that other platforms have. Microsoft has finally
started achieving this, but only by creating open-source communities around
their existing libs like EF and MVC.

------
Daishiman
This sounds suspiciously similar to Rust.

~~~
hayksaakian
No, but this is Microrust

It's completely not at all the same, but still familiar to rust programmers.

It's but built for the enterprise with advanced patented technology.

The yearly license fee will include responsive customer service.

~~~
thomasz
I'm really appalled by the hostility that's being displayed here. This is
Microsoft research in Cambridge, not the Xbox one marketing department. You
know, the guys who work on Haskell, ported OCAML to .net and generally do a
lot of awesome stuff.

What have you created that justifies this kind of an attitude?

~~~
catnaroek
> You know, the guys who work on Haskell, ported OCAML to .net and generally
> do a lot of awesome stuff.

Not exactly. The guys who developed F# based the core language mostly on OCaml
and borrowed some ideas from Haskell, but are not the same as the people who
developed Haskell.

~~~
thomasz
[http://research.microsoft.com/en-
us/people/simonpj/](http://research.microsoft.com/en-us/people/simonpj/)

Yes, I'm aware that it's not the Haskell core team who is working on this new
language. But they probably have their offices across the floor.

------
EdwardDiego
> it’s not uncommon for us to encounter 30-50% time spent in GC

Hmm... not sure if that's just C#, or if I should start profiling my Java apps
a lot more closely.

~~~
stusmall
I'd written a JVM project a while ago that also spent an ungodly amount of
time in GC. You can create bottlenecks almost anywhere given enough (lack of)
effort. Who knows how finely tuned these projects were or what their load was
like before a rewrite. A rewrite in a new language gives you more benefits
than just the new language , it also gives you the benefit of hindsight. The
ability to fix mistakes made in the first implementation can go a long way.

~~~
EdwardDiego
> Who knows how finely tuned these projects were or what their load was like
> before a rewrite. A rewrite in a new language gives you more benefits than
> just the new language , it also gives you the benefit of hindsight. The
> ability to fix mistakes made in the first implementation can go a long way.

That's a very good point with these rewrite stories - you could happen to
rewrite some really poor code while porting and boom! Language Y is 50% more
performant!

------
forgotAgain
I think they would be better off porting C# to other platforms. Their long
term strategy of keeping developers locked up on Windows has become counter
productive. Developers want / need to develop on Apple and Android platforms
as well as Windows.

Microsoft has great development tools. It would be better for them to hold
onto the developers and share them with other platforms rather than losing
them completely. By making their development tools multi-platform they would
be bringing many developers to Windows who today want little to do with that
platform.

------
yarou
It's interesting that there's renewed interest in a modern systems programming
language. However, I feel as though the world doesn't need another ALGOL-like
language. C# is very good at what it does, but managed code will always
execute at a slight penalty vs native code. Nonetheless this will be an
interesting experiment into a modern "safe" systems language.

------
keypusher
Sounds great, but I'll wait to see some actual code before getting my hopes
up.

------
ben_hall
C# might be a great language now, but 1.0 was horrible! It was a painful
experience to gain adoption within companies and frameworks on top of it (ASP+
for example) still needed to mature. The world is different now.

I predict Microsoft will push NodeJS / JavaScript / HTML5 for application
development. I'm assuming this will be targeted towards the Go style community
and applications. It has a lot of the same properties with Go starting to gain
traction I can see why Microsoft would be exploring the space.

~~~
_random_
"NodeJS / JavaScript / HTML5" \- more likely to be just another option to
satisfy everyone. I would rather move to Scala than use JS for anything other
than rich GUI. Who wants to support business logic implemented in JS by an
average developer?

~~~
ben_hall
Microsoft would never promote Scala as it's a JVM language. NodeJS is likely
given the recent relationship with Red Gate and effort surrounding Azure
support.

As for business logic by an average developer - I would say the same thing
about every language.

------
yeukhon
> 5) Modern error model.

I am pretty excited to see this. Any existing language out there actually does
this?

~~~
klibertp
Racket, of course!

Very sophisticated contract system and exceptions and reified continuations.

It's dynamic, JITed language, and it's a Lisp, but I recommend studying it
just for the sake of learning various techniques Racket uses. They are
frequently very interesting from the language design perspective and their
usage is easier to understand than in Haskell :)

------
brianbarker
"...that a nirvana for a modern general purpose language would be one that
satisfies high productivity (ease of use, intuitive, high level) AND
guaranteed (type)safety AND high execution performance..."

So they're making MS Go. Just like C# is MS Java.

------
sebastianconcpt
Sounds like a lot of effort to pay in exchange of an incremental improvement
of C#.

------
computerslol
Is this a research project, or something that will be released to the public?

As someone that's spent a lot of time learning how to get c# to perform, this
sounds fantastic to me. I can't wait to see it.

------
btbuildem
Sigh.. a Windows-only language? Really? Talk about ivory tower..

------
yarou
It's interesting that there is renewed interest in finding a "modern" systems
programming language. I'm not entirely sure if the world

------
kolev
No Linux and Mac, no thank you!

~~~
kolev
To clarify, Mono is no Stereo: no first-class support of non-Windows platforms
pretty much dooms the language. And it's not about where you develop, it's
where you deploy. I'm not gonna switch to Azure or AWS/Windows, because of a
fancier language when there are D, Go, and others!

------
pandora99
who needs another Windows only new programming language?

------
groovy2shoes
C# but with better performance? Sounds a bit like Delphi with curly braces.

------
raptormissle
Just like Microsoft copied Java with C# they are now trying to copy Go. Always
late to the party as usual.

~~~
kevingadd
Ignoring the fact that the post directly references Rust and D (languages that
are _actually_ similar to this effort), they have no reason to copy anything
from Go because existing Microsoft libraries and languages already do
everything Go does with more mature libraries and a more mature runtime (for
example, unlike Go, Microsoft's runtime has a precise garbage collector!)

------
greatsuccess
C++ does not perform, is not a managed language, and has nothing to offer.
What could he possibly be talking about?

I read this as MS once again getting it completely wrong. Seriously C++
solving managed languages performance and memory problems?

Physician, HEAL THY SELF.

~~~
matjazmuhic
Computer games which are impacted by performance the most are written in what
language?

~~~
venomsnake
I doubt that C++ is chosen because of raw performance (both C# and Java are
close enough), but mostly because of memory and cpu cycle determinism.

~~~
pmelendez
>"(both C# and Java are close enough)"

Not really, a GC call in the middle of your render loop can drop your FPS rate
significantly, and those cpu cycles are vital when you start adding physics
simulation, not to mention the limitation of memory on consoles.

Sure, Java and C# would be enough for minecraft or some xbox live puzzle game,
but I really doubt that you could manage to write an Uncharted game in Java or
C# on a PS3 or an Xbox.

~~~
venomsnake
A GC call cannot drop your FPS a lot, but it could add a lot of latency spikes
and inconsistent framerates. Techreport's inside the second is amazing read on
the subject.

So ... you will have slightly lower FPS (55 instead of 60) but much worse
experience.

------
hackaflocka
Judging by their track record, I completely trust the geniuses at Microsoft to
solve another non-existent problem /s.

~~~
venomsnake
MS have been very very good on the technical side of the things. It is the
business decisions that mess things up.

The only really bad technical decision that they have taken is the broken
security model of user accounts.

------
PhasmaFelis
Do we really need more languages? Aren't there enough languages already?

I suspect I have just outed myself as a substandard hacker. :( But seriously!
There's so many!

~~~
Lerc
Yes, we need more. There are many ideas to explore still.

The "do we really need more languages?" argument predates most of my preferred
languages(and that probably includes C and Pascal).

I like Haxe, Rust is looking like being really good also. I don't like Go but
others do, and that is a really important point. You don't have to like, or
use the new languages. As long as someone finds them useful they have a place.

~~~
dmpk2k
I'm a bit leery of that argument, because in my experience the most important
component of a language is its ecosystem. By far.

I've played with many really nice languages, but never used them seriously
because they had no libraries (let alone quality libraries), had poor tooling,
poor documentation, buggy runtime, and almost nobody to compare notes with. In
my experience, the largest jump in productivity is libraries, not some feature
of a language.

On the one hand, languages are useful to explore a space. On the other,
there's a lot of reinvented wheels going on here. If all languages stuck with
the same ABI (e.g. C), it'd be one thing, because then you could use the same
libraries and many tools between languages. Unfortunately, they often cannot,
and thus you can't. There's some serious opportunity cost going on here.

I'm happy using node.js at the moment (ooh, shiny!), but the current situation
with a plethora of languages isn't exactly great either.

~~~
Lerc
It is true that most of the best supported languages have been around for a
good ten years. But each of those languages had a time when they were only a
year old.

I don't deny languages take time to mature. I feel like Haxe is about two-
thirds of the way towards being properly Mature. It is approaching 10 years
old, yet I feel like it is only just getting started, A lot of people still
haven't even heard of it.

~~~
tluyben2
Haxe is great but confusing for newbies. You can write anything to run on
anything but with what libraries; tons of halfbaked thing around. The
tutorials are per target which make it seem you can use the same language but
have to write different code per platform. I like Haxe and tried it a number
of times, but unless coming from Flash/AS it feels underdocumented and, in a
lot places in the main site, quite dead. It's not but broken links, vital
libraries which are unsupported etc.

