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

Broad Question: "What is C#" #11923

Closed
AlgorithmsAreCool opened this issue Jun 10, 2016 · 20 comments
Closed

Broad Question: "What is C#" #11923

AlgorithmsAreCool opened this issue Jun 10, 2016 · 20 comments

Comments

@AlgorithmsAreCool
Copy link

AlgorithmsAreCool commented Jun 10, 2016

or put another way:

What is the mission statement of C#?

I did a quick google and couldn't find a real statement about what the language is supposed to be or the core principles guiding its growth. It cannot be everything to everyone, so who is the primary audience and what is the core goal of the language? I'm just curious what the language design team thinks of C# as. It would help me frame some of the proposed features I've seen here.

I guess my direct questions are :

- Does C# have a driving goal or identity?

- What are the core design goals of C#

- What are kinds of things C# is primarily intended for? Web sites? Apps? Data processing? All of these?

Some other popular languages

Python : "Python is a programming language that lets you work quickly and integrate systems more effectively."

  • Quick to work with, integration, effectiveness

Swift : "Swift. A modern programming language that is safe, fast, and interactive."
Swift (alternate) : "Swift is a general-purpose programming language built using a modern approach to safety, performance, and software design patterns."

  • Modern, Safe, Fast, General Purpose

Go : "Go is an open source programming language that makes it easy to build simple, reliable, and efficient software."

  • Open Source, Simple, Reliable, Efficient.

Rust : "Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety."

  • Systems, High Performance, Memory Safe, Thread Safe

Haskell : "Haskell is an advanced purely-functional programming language. ... it allows rapid development of robust, concise, correct software."

  • Advanced, Purely Functional, Robust, Concise, Correct

F# : "F# is a mature, open source, cross-platform, functional-first programming language. It empowers users and organizations to tackle complex computing problems with simple, maintainable and robust code."

  • Open Source, Cross-platform, Functional, helps with complex problems

Java : "The Java™ Programming Language is a general-purpose, concurrent, strongly typed, class-based object-oriented language."

  • General Purpose....Object Oriented...Classes....
@iam3yal
Copy link

iam3yal commented Jun 10, 2016

So you did a quick search and didn't find anything? it's odd because if you write C# you get to the wiki page.

C# is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines.

https://en.wikipedia.org/wiki/C_Sharp_(programming_language)

@AlgorithmsAreCool
Copy link
Author

Of course there is a text book definition of C# available. But Microsoft or more importantly the MS language design team didn't author that. The other descriptions i have posted were all taken from their respective language websites. The assumption being that the people in charge of those languages wrote them. That is what i'm trying to get at.

@AlgorithmsAreCool
Copy link
Author

The closest thing i could find to it was from dot.net stating the following:

"The .NET Framework is a comprehensive programming model for building mobile, desktop and web applications that run on Windows."

And

".NET Core and ASP.NET Core give you a blazing fast and modular platform for creating server applications that run on Windows, Linux and Mac."

Perhaps C# doesn't have an identity distinct from .Net itself.

@iam3yal
Copy link

iam3yal commented Jun 10, 2016

Well the main problem is C# (and VB.NET) don't have a website or anything like that (yet) and that's a shame! maybe you can write an issue about it? and someone at Microsoft will do it! :)

@iam3yal
Copy link

iam3yal commented Jun 10, 2016

That's what they wrote here:

C# (pronounced "C sharp") is a programming language that is designed for building a variety of applications that run on the .NET Framework. C# is simple, powerful, type-safe, and object-oriented. The many innovations in C# enable rapid application development while retaining the expressiveness and elegance of C-style languages.

https://msdn.microsoft.com/en-us/library/kx37x362.aspx

@AlgorithmsAreCool
Copy link
Author

Ah! I think that comes close to answering my questions. I'll leave the issue open for a little while longer in case any team members have an additional opinion on it.

Thanks!

@vbcodec
Copy link

vbcodec commented Jun 10, 2016

C# was created as primary language for NET, and NET was created as primary competition to Java. Because NET was closed and Windows-only, it failed to dethrone Java. Now this is changing, but there are much more competitors than Java.

@dsaf
Copy link

dsaf commented Jun 13, 2016

I propose this: "C# is a modern functional programming language with a syntax that is not insane".

@iam3yal
Copy link

iam3yal commented Jun 13, 2016

@dsaf yeah only it's not only functional, in fact it's actually object-oriented first, if it was functional first than we could have non-member functions etc..

Maybe it was sarcasm so in this case 👍

@dsaf
Copy link

dsaf commented Jun 13, 2016

@eyalsk

...non-member functions...

Declaring functions in the root namespace adds value? Otherwise static classes are same as modules in practice.

...etc.

You get a little new piece of that "etc" with every new major version of C#. Which makes my proposed mission statement consistent with reality.

@iam3yal
Copy link

iam3yal commented Jun 13, 2016

@dsaf it's not about whether it adds value but about your statement that C# is a modern functional language! where in functional languages the notion of types is not mandatory that is the reason F# uses type inference so aggressively, so if you need to group your functions in a class and then create an instance of that class to use it then it is by definition object-oriented first so if anything C# is a modern, statically typed, object-oriented and a multi-paradigm language with robust functional capabilities.

p.s. forgot to say that I agree with you on that static classes are just the same as modules but due to lack of aggressive type inference and lack of strong pattern matching focus on C# you can't really say that it is a functional language where these two components are vital to functional languages.

btw, aggressive type inference was declined.

@vbcodec
Copy link

vbcodec commented Jun 29, 2016

@alrz
Copy link
Contributor

alrz commented Jun 29, 2016

That would read C plus plus plus plus.

@iam3yal
Copy link

iam3yal commented Jun 29, 2016

Haha... :D

@ljw1004
Copy link
Contributor

ljw1004 commented Jul 27, 2016

@richlander since we'd been talking about this earlier

@AlgorithmsAreCool
Copy link
Author

I'll reopen for a while to encourage some more comments

@iam3yal
Copy link

iam3yal commented Sep 23, 2016

@AlgorithmsAreCool C# is the language with no form or no style and no website (yet). 😆

@prajaybasu
Copy link

@AlgorithmsAreCool @eyalsk Do you guys mind if I quote you in a book or an article ?

@AlgorithmsAreCool
Copy link
Author

I don't mind being quoted. Feel free.

@iam3yal
Copy link

iam3yal commented Oct 15, 2016

@prajaybasu I don't mind it.

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

8 participants