Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Will MS create a new language, or continue to extand C#? #239

Closed
ygc369 opened this issue Mar 9, 2017 · 19 comments
Closed

Will MS create a new language, or continue to extand C#? #239

ygc369 opened this issue Mar 9, 2017 · 19 comments

Comments

@ygc369
Copy link

ygc369 commented Mar 9, 2017

According to Joe Duffy's blog(http://joeduffyblog.com/2013/12/27/csharp-for-systems-programming/), MS seems to be developing a new language based on C#. Will this come ture? Or will MS merge the features of the "new" language into C#? If so, when?

@yaakov-h
Copy link
Member

yaakov-h commented Mar 9, 2017

This sounds like Midori, which was eventually scrapped.

@Thaina
Copy link

Thaina commented Mar 9, 2017

Quite sure that if it not distinct enough from C# it will be adopted as language feature

But if there is breaking change feature they would consider make new language

@fanoI
Copy link

fanoI commented Mar 9, 2017

In my opinion M# could yet have a space a part for Midori and I don't think that all what they did for Midore could be moved into C# without changing too much is nature:

  1. Objects was declared into the stack and only in rare case in the heap with RIAA and all as C++!
  2. More easy to get access to low level thing (pointers as first citizen?)
  3. Possibility as C++/CLI to generate unverifiable code

In some sense one could call M# "C++/CLI without C"...

@orthoxerox
Copy link

I can think of only two cases where a company created a new language and tried hard to make everyone switch to it.

  1. Objective-C to Swift. Objective-C was 30 years old when Swift was announced and they were reasonably different.
  2. VB to VB.Net. VB 1.0 was released in 1991 and replacing it with VB.Net 11 years later was a failure. 15 years later, VB6/VBA is still alive and kicking.

I feel that Microsoft is not going to replace C# with some kind of C#++ as their preferred general purpose programming language with fewer warts in the nearest 10 years or so. They are not going to repeat the VB mistake.

@ygc369
Copy link
Author

ygc369 commented Mar 9, 2017

Even though MS doesn't want to replace C# with M#, it should make M# public at least, and let the next major version of visual studio support M#.

@HaloFour
Copy link
Contributor

HaloFour commented Mar 9, 2017

@ygc369

MS has made probably a dozen other C#-spinoff languages in the past, mostly using C# as the basis for testing other programming theory. Off of the top of my head I can think of Axum, Polyphonic C#, X# and Cω. The good ideas are often distilled and integrated into C# proper. I'd severely doubt that MS would expend the effort to mature any of those projects further to the point where it would be suitable for commercial use. That's a large liability in terms of development and support. It was a pretty big deal that this happened with F#.

@AlgorithmsAreCool
Copy link

From what I've read one of the key successes for Midori/M# was aggressive iteration. They added a feature, tested it and if it didn't work out, they removed it.

Now that C# has picked up great features from a lot of these research languages, I wish that we could reset and redefine C# based on the modern set of desirable features now that we know what works well. We could simplify a lot of language constructs, shrink the compiler and prevent C# turning into C++ with layer after layer of deprecated/old syntax.

@MgSam
Copy link

MgSam commented Mar 9, 2017

@AlgorithmsAreCool They could do this if they were willing to make breaking changes where it makes sense and use analyzers to attempt to upgrade legacy code to the new language version (a la Swift). The team has even floated this idea several times before, though it's not clear to me why it keeps getting rejected.

@AlgorithmsAreCool
Copy link

@MgSam Go did something similar with GoFix

@jnm2
Copy link
Contributor

jnm2 commented Mar 10, 2017

Go did something similar with GoFix

Scalable naming strategy, that 😆

@fanoI
Copy link

fanoI commented Mar 10, 2017

My idea is that an eventual M# would not replace C# as F# does not replaced anything, M# could take the role of C++/CLI but without the weird syntax inherited from C/C++.

@ygc369
Copy link
Author

ygc369 commented Mar 11, 2017

@fanoI
I agree with you.
I hope MS to make M# public, thus we would have F#/C#/M# at the same time, for different development.
F#: high-level
C#: mid-level
M#: low-level

@AlgorithmsAreCool
Copy link

I'm not sure that layering makes sense, C# is multi paradigm and 'competes' in the same space as F# for the most part.

But I do think that a more M#/Rust like variant of C# would be very valuable. Performance oriented fiddly features could easily go there and not add even more complexity to C#.

@gulshan
Copy link

gulshan commented Mar 11, 2017

I proposed a big break in a future version C#. It should still be binary compatible with previous versions btw. It was here- dotnet/roslyn#16103

@temporaryfile
Copy link

temporaryfile commented Mar 24, 2017

C++ is in dire pain and needs to die. A non-GC offshoot of C# needs to become the new de-facto native language without the misery of header files and declaration order. Time is being lost on difficult development because like a true bureaucracy the C++ committee solves everything but the actual problem.

@iam3yal
Copy link
Contributor

iam3yal commented Mar 24, 2017

@playsomethingsaxman You can say that on any language really, not sure why C++ is in dire pain? I'm following and using it and it works for me so what exactly are the actual problems? I mean I doubt that your own problems are everyone's problem. :)

Compilation time, header files and whatnot are problems but isn't part of the work on modules is to make this more manageable?

@fanoI
Copy link

fanoI commented Mar 29, 2017

As old headers and C compatibility should always be present C++ will never be a safe language to use, modules will be only another thing added to a language that has already a giant syntax!

There is space for "safe native code":
http://joeduffyblog.com/2015/12/19/safe-native-code

@jcouv
Copy link
Member

jcouv commented Apr 8, 2017

Here's the latest .NET language strategy.

@ygc369
Copy link
Author

ygc369 commented Apr 9, 2017

@jcouv
The article didn't answer the question: whether would MS make M# open?

@ygc369 ygc369 closed this as completed Jun 30, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests