or put another way:
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 :
Python : "Python is a programming language that lets you work quickly and integrate systems more effectively."
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."
Go : "Go is an open source programming language that makes it easy to build simple, reliable, and efficient software."
Rust : "Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety."
Haskell : "Haskell is an advanced purely-functional programming language. ... it allows rapid development of robust, concise, correct software."
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."
Java : "The Javaâ„¢ Programming Language is a general-purpose, concurrent, strongly typed, class-based object-oriented language."
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)
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.
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.
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! :)
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.
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!
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.
I propose this: "C# is a modern functional programming language with a syntax that is not insane".
@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 :+1:
@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.
@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.
Here si short answer
http://i2.wp.com/www.ivankristianto.com/uploads/2010/10/csharpOrigins_3.png?w=740
That would read C plus plus plus plus.
Haha... :D
@richlander since we'd been talking about this earlier
I'll reopen for a while to encourage some more comments
@AlgorithmsAreCool C# is the language with no form or no style and no website (yet). 😆
@AlgorithmsAreCool @eyalsk Do you guys mind if I quote you in a book or an article ?
I don't mind being quoted. Feel free.
@prajaybasu I don't mind it.
Most helpful comment
I propose this: "C# is a modern functional programming language with a syntax that is not insane".