Linked by twitterfire on Mon 24th Oct 2011 22:52 UTC
General Development "Looking past the Metro hype, the Build conference also revealed promising road maps for C#, Visual Studio, and the .Net platform as a whole. Perhaps the most exciting demo of the conference for .Net developers, however, was Project Roslyn, a new technology that Microsoft made available yesterday as a Community Technology Preview. Roslyn aims to bring powerful new features to C#, Visual Basic, and Visual Studio, but it's really much more than that. If it succeeds, it will reinvent how we view compilers and compiled languages altogether."
Thread beginning with comment 494247
To view parent comment, click here.
To read all comments associated with this story, please click here.
Nelson
Member since:
2005-11-29

How is exposing the internal API publicly a major departure and reinvention of compilers?


Compilers are tansformed from this classic vision of take a source file in -> generate code.

Now, every aspect of the compiler is a service. I can do metaprogramming by transforming syntax if thats what I need. I can gather data from a previously or newly compiled program (or myself) using semantics.

I can transform code at the semantic level for an even more targeted approach to metaprogramming.

I can query the Solution/Project API and perform the same syntax/semantic analysis on those documents, or whatever else I want, then save the project.


I'm not saying it's not great that they are exposing API that will stay stable. I just don't get the hype over this.
Please do hype up anything that grows up from this to be ridiculously fun or novel. But as it stands, Roslyn is not revolutionary or anything like that.


I suppose that's your opinion, I just strongly disagree.

I view this in the same light I view other exciting framework developments. When LINQ launched people were asking how this would be revolutionary, the same with Rx. Some concepts just take time to grasp.

Reply Parent Score: 2

JAlexoid Member since:
2009-05-19

Compilers are tansformed from this classic vision of take a source file in -> generate code.
...snip...

But again, none of that is something new. Is it new to .NET?

I view this in the same light I view other exciting framework developments. When LINQ launched people were asking how this would be revolutionary, the same with Rx. Some concepts just take time to grasp.

Within .NET community probably yes. Outside .NET, we'll have to see.

LINQ: And yet, here I am 4 years later developing in every conceivable language outside of MS universe without LINQ making a dent.

Reply Parent Score: 1

Nelson Member since:
2005-11-29


But again, none of that is something new. Is it new to .NET?


Oh come on, you're grasping at straws. Just because some of whats in Roslyn has been done before, in some fashion by some toolchains/languages doesn't make it less innovative.

The innovation is in the sum of its parts, the execution, the conciseness, the ease of use. That's never be done. Closest ones to get there before Roslyn is Clang, which I admire very much.

I suppose you also don't think the iPhone was a game changer because phones, and screens, and buttons existed before, right? You're being ridiculous.


LINQ: And yet, here I am 4 years later developing in every conceivable language outside of MS universe without LINQ making a dent.


There are over a dozen non .NET implementations of LINQ, either by name or concept, directly inspired from the work in .NET.

Being able to query anything a provider gives us using a declarative syntax is a game changer. That stands on its own, with or without your pet language implementing it.

Reply Parent Score: 2

eeperson Member since:
2011-10-25


LINQ: And yet, here I am 4 years later developing in every conceivable language outside of MS universe without LINQ making a dent.


LINQ equivalents do exist outside of the MS Universe (Haskell, Scala, etc.). The reason you don't see it in many mainstream languages is because they lack language features required to implement it. However, many languages are starting to add features required to implement it (even C++ has lambdas now).

Reply Parent Score: 2

eeperson Member since:
2011-10-25


Compilers are tansformed from this classic vision of take a source file in -> generate code.

Now, every aspect of the compiler is a service. I can do metaprogramming by transforming syntax if thats what I need. I can gather data from a previously or newly compiled program (or myself) using semantics.

I can transform code at the semantic level for an even more targeted approach to metaprogramming.

I can query the Solution/Project API and perform the same syntax/semantic analysis on those documents, or whatever else I want, then save the project.



You could use this same description for Common Lisp and Slime. Although admittedly the implementation is actually somewhat different. However, this exact set of features has also been implemented in other languages use almost the exact same method. Look at the Scala presentation compiler and plug-in API. They've been around for at least a year. I believe the Eclipse Scala plugin already uses the presentation compiler.

This combination of features is not revolutionary. However, it is nice to finally see these features in a mainstream language.



I suppose that's your opinion, I just strongly disagree.

I view this in the same light I view other exciting framework developments. When LINQ launched people were asking how this would be revolutionary, the same with Rx. Some concepts just take time to grasp.


I would argue that LINQ is not revolutionary either. It is just monad composition. This has existed in other languages for years. However, once again, it is nice to finally see these features in a mainstream language.

Reply Parent Score: 1

Nelson Member since:
2005-11-29

You know what, you may be right. I do appreciate going back and forth with you a great deal more, as I've actually learned something. I'll look into those features.

Reply Parent Score: 2

roverrobot Member since:
2006-07-23


Compilers are tansformed from this classic vision of take a source file in -> generate code.

Now, every aspect of the compiler is a service. I can do metaprogramming by transforming syntax if thats what I need. I can gather data from a previously or newly compiled program (or myself) using semantics.

I can transform code at the semantic level for an even more targeted approach to metaprogramming.

I can query the Solution/Project API and perform the same syntax/semantic analysis on those documents, or whatever else I want, then save the project.



However, the more you describe it, the more it looks like they are reinventing llvm.

What surprised you most is this syntax transformation thing. But it is obviously quite possible for any modern compiler because it just translates the AST representation of a program back into same/another language.

Reply Parent Score: 1