Is c# a good programming language? is it a good language for someone's first language who wants to make games...

is c# a good programming language? is it a good language for someone's first language who wants to make games? what is it useful for?

Other urls found in this thread:

learnxinyminutes.com/docs/lua/
love2d.org/
twitter.com/NSFWRedditVideo

no, no, nothing

-____________-

>is c# a good programming language?
yes

please back up your answers ffs don't just write yes or no

dont kid yourself into thinking anyone here knows shit

yes I like curry

Eh, it's alright. Me? I'd use Javascript ES2 for games. It's fast, slick, quick, smart, intelligent, intuitive, easy to use, fun, and most of all, bold.

C# is a very good language.

You can system development/ Web Development/ Hybrid app development (Xamarin) and game development (Unity).

It's a guaranteed 6 figure income in any industry. Learn it and succeed in life.

oops, my bad

>.NET

Just how bad is mono?

Is net core a viable alternative to it for cli and tui apps?

i prefer Java 2bh, it's much more open and has way more FOSS tools and frameworks
also more job opportunities :^)

If you want to do any real development you need Windows and VS.

>is c# a good programming language?

Yes. It's Microsoft's answer to Java.

> is it a good language for someone's first language who wants to make games?

Maybe. In my opinion, Python is probably the best first language right now.

> what is it useful for?

Enterprise. That's Microsoft's focus. It was the focus of Java, too. But Java has the advantage of running *everywhere*. When that was first announced, we thought it was ridiculous, but they pulled it off. You can run Java on enterprise servers, web servers, and all the way down to embedded devices.

C# is useful for general Windows development, but man, I don't know if there's any future in that. And I say that as a long-time Windows developer. The world has gone *so* web focused, and Microsoft is trying to slowly raise a walled garden.

Anyway, for languages I recommend Python, then C if you want fundamentals, then C# or Java for employability, then other stuff (JavaScript, web backend stuff, functional, whatever).

The problem with C# is that Microsoft instead of creating a fully cross-platform .NET Framework, went with some half-assed shit like Mono or .NET Core. Mostly because of that they will never beat Java in terms of amount of job opportunities and market share.

I assume that .NET Core is about making C# a viable language for writing services that run on cheap Linux servers.

Is that not the case? Is .NET Core not sufficient for writing backend software?

Find me a hosting site that sells Linux servers that support ASP.NET.

>language forces me to use wangblows
Why is this allowed
Windows is cancer of .NET

Just go Python -> Java and enjoy getting employed with minimal effort.
Worked for me.

I'm not saying it's happening, I'm saying that's what .NET Core seems to be about.

I mean, it's pretty obviously NOT about making cross-platform UI applications, right? And Linux is what made the modern Internet possible. MS wants to keep their big Enterprise business while also staying relevant in the exploding FOSS-based Internet software realm.

As for ASP.NET, I have no idea about it. I assume it depends on much more than what .NET Core offers. Or does it? Personally, I imagined .NET Core being used to write ground-up Internet services, not as something tied to ASP.NET.

I just don't see it being used at all ATM. I don't know what will happen in the next few years but as of now it's pretty irrelevant.

just write a new compiler

>is c# a god programming language
depends, do you want to make money or shitpost in your basement about freedom?

> someone's first language who wants to make games
"wanting to make games" is the worst start imaginable. If you can't think your way around Vectors, multidimensional arrays, databases, etc, you will have a very bad time.
If you can write code a bit, but can't optimize for shit, you'll still have a bad time.

You can start with literally any language these days. Though I am obliged to advise you against python because I fucking hate it (it's oversimplified and if you start forming your writing habits with it, you'll never be efficient with an real language)
I started with free pascal, moved on to C# and got a job with it.

And yes, C# is viable for games. Unity uses it and I'm personally fond of MonoGame for Linux and OsX friendly,simple games.

>I assume that .NET Core is about making C# a viable language for writing services that run on cheap Linux servers.

Which brings us right back to what I originally wrote:

>I assume that .NET Core is about making C# a viable language for writing services that run on cheap Linux servers.

>is c# a good programming language?
Yes, it is very well designed and it removed a lot of the pain points of Java. Anders Hejlsberg is a fantastic software engineer with proven track record and has done a great job in all the compilers he's worked on.

The compiler infrastructure changed in Roslyn to be a more "compiler-as-a-service" and became completely open. C# runs on Windows, OS X, and Linux through either Roslyn or Mono depending on the platform (though Roslyn running on all three is in-progress).

Microsoft also bought Xamarin and open-sourced the APIs so you can write mobile applications on the 3 major platforms for free as well (except iOS, but that's due to Apple not Microsoft).

>is it a good language for someone's first language who wants to make games?
First language? Perhaps something like Python + Pygame would be better suited, so before you jump to C# give that a look as well. But C# has both MonoGame and Unity (which is extremely popular, though I'm not a fan. Lots of companies use it and love it). Statically typed languages usually have nicer tools for things like auto-completion so that may be a plus for you.

>what is it useful for?
It's a general purpose language, so basically anything that you'd want to write as a beginner. The .Net standard library is pretty comprehensive. Where languages like C# do not do so well are very low power, embedded devices and things like real-time operating systems where you cannot afford garbage collection and need extreme control. Languages like C# cater toward programmer productivity "in the large".

>is c# a good programming language?

Yes. It's Java without being a huge pain in the ass, and I think it's the best of the "Big" languages (C++, Java, etc.). It has anonymous functions and closures, which makes things really convenient. You don't have to manually write for-loops every time you want to iterate over something. Shit ton of libraries and you can interface with cool languages like F#. It makes it easy to write cross-platform programs with GUIs without being a huge pain in the ass.

>is it a good language for someone's first language
No, because it's strongly opinionated towards inheritance OOP and a very large language. Learn Scheme or Racket instead. C# is a great 2nd language.

>who wants to make games?
Sure, since Unity uses it.

>what is it useful for?
General purpose programming with an emphasis on object-oriented programming. A lot of businesses use C#.

no

Kek

>Though I am obliged to advise you against python because I fucking hate it (it's oversimplified and if you start forming your writing habits with it, you'll never be efficient with an real language)
If your definition of good programming is counting indecies and wading through syntactic clusterfuck, I guess that's accurate.

> Yes, it is very well designed and it removed a lot of the pain points of Java. Anders Hejlsberg is a fantastic software engineer with proven track record and has done a great job in all the compilers he's worked on.

> very well designed
> great job in all the compilers

> proven track record
> proven
> proven

If it's flamebait, you got me there.

My opinion: It's Java-tier language. It's quite terrible but usable if you don't care that much. Modern Java is cleaner. Compared to Java, C# didn't remove any pain, it only removed checked exceptions and that is pain only for idiots. It dirtied itself with banal "features".

it's garbage

c++ for stupid people

>is c# a good programming language?
Yes. C# is really coming into its own right about now.

>is it a good language for someone's first language who wants to make games?
Do you know math? Things like linear algebra, discrete math, maths up to calc 2? If no to any of these, don't think about making "real" games, even in Unity.

>what is it useful for?
Enterprise and desktop applications for Windows and some cross-OS development with .NET Core/Mono. There's also cross-platform mobile development with Xamarin. Oh, and Unity for games.

If you're starting, it shouldn't matter at all what language you start with, even if you pick up some garbage that has no direct educational support because some Sup Forums memester normalfag has some shitty uninformed opinion about languages and hates things that "normies" use. Programming is about (some) math, depending on what you do, and general problem solving. Oh, and reading. Make sure you can read and you develop some of that good liberal arts thinking, the type that is basically being able to think about what you read. Some people will actually shit their pants about languages being bad because they have the reading skill of a 2nd grader and blame it on the language.

>is c# a good programming language?
it's fairly good
imagine Java but less shit
> is it a good language for someone's first language who wants to make games?
unity uses it, so sure
>what is it useful for?
it's good for writing software, what kind of question is this

Learn Lua and use Love2D;
learnxinyminutes.com/docs/lua/
love2d.org/

It's an easy language and a simple but very powerful framework.

>Iis c# a goodd programming language?
Yes, it's a perfectly fine language. Not my favorite, but it's comfortable. C++ would allow you to achieve greater levels of proficiency if you know what you are doing. However, less experienced programmers (which you likely are if you are asking this question) usually end up reinventing the wheel (poorly) a lot. C# has a lot of high-level methods built right in to the standard libraries. Often times they are very well designed (although they do require more overhead) and will outperform most custom built solutions put together by a beginner.

>is it a good language for someone's first language who wants to make games?
Yes. If you are an aspiring indie game developer, there are very few excuses not to use Unity Editor with C#. Unless you really know what you are doing, or really want to take the long hard route to get your game finished, I would use Unity with C# ("Mono", specifically)


>what is it useful for?
It depends on what you are interested in doing. If you use Windows, apparently it is fairly simple to design a graphical interface for desktop applications with Visual Studio and .net. I personally use Linux, so I can't really speak to that. There are similar things on Linux, such as Qt libraries and the IDE QtCreator. The Mono implementation of .Net is very useful for making applications which run on a wide variety of platforms. However, this is also true of a variety of other languages. The closest competitor to C# in terms of what it provides would be Java. C# feels more comfortable to me than Java. However, there are other languages which can run in the Java VM such as Groovy and Ruby.

tl;dr
Ultimately it's very subjective. I think you should use C# with Unity Editor if your primary goal is to create a game. I think you should use C++ or C if your goal is to learn how to write code.

>Modern Java is cleaner
I didnt know it was possible to be so wrong

Yes C# is a good language for someone new. Everything low level is done for you.

You can write anything, from game bots, cheats, desktop apps, games, and pretty much anything except low level stuff like drivers.

Is it a good language? Depends, are u happy being dumb and never going deeper but earning a shit ton of money? Then yeah, go ahead. My friend earns $30k a month selling mmo bots written in C# while I earn $50 from assembly and C.

>only for idiots
>It's a Java-tier language.

>goes on to talk about how good Java is.
Pajeet, it's time for you to sign off and go take care of your family.

>But Java has the advantage of running *everywhere*.
.NET Core will soon accomplish this.

We're in the rewriting a lot of legacy systems at work, and we actually had the discussion of what language and framework to use on our Linux servers. We narrowed it down to C# and Java.
If we had this discussion even last year, Java would have been the only viable option.

>We're in the rewriting
I accidentally a word.

We're in the process of rewriting*

Bold, indeed

>It's quite terrible but usable if you don't care that much. Modern Java is cleaner. Compared to Java, C# didn't remove any pain, it only removed checked exceptions and that is pain only for idiots.

You are retarded. Just off the top of my head

- unsigned fucking integers
- Properties
- Events
- Real generics (covariance, contravariance, accessible through reflection)
- using statement for resource management
- LINQ, Lambda expressions (Java 8 fixed this a bit but it's still more annoying and verbose than C#)
- Stack allocation through structs (value types)
- Async / await
- Extension methods
- Non-insane architecture astronaut standard library
- Easy C interop
- Nullable types
- Overloadable operators for math classes

Some guy on Sup Forums thinking he's better than Hejlsberg. That's great.

>Yes. If you are an aspiring indie game developer, there are very few excuses not to use Unity Editor with C#.
this

Poo in loo

IMO, the only big advantage Java has over C# is unsafe.sun.misc and related libraries.

C# will never have those types of things but it is exactly what makes things like Spring and Hadroop possible which wouldn't happen with C#.

Isn't C# just Java but actually good?

C# has full reflection capabilities, plus the unsafe keyword to use raw pointers and the like.

Fucking know the language you're critiquing before doing so.

Out of all the languages that will get you paid, absolutely yes.

Post of the year

>bumping a thread that hasn't had a post in over an hour just to say this.

What's the diff between .NET core and mono?
Which is better?

Learn Lisp.

The most powerful programming language is Lisp. If you don't know Lisp (or its variant, Scheme), you don't know what it means for a programming language to be powerful and elegant. Once you learn Lisp, you will see what is lacking in most other languages.

Unlike most languages today, which are focused on defining specialized data types, Lisp provides a few data types which are general. Instead of defining specific types, you build structures from these types. Thus, rather than offering a way to define a list-of-this type and a list-of-that type, Lisp has one type of lists which can hold any sort of data.

Where other languages allow you to define a function to search a list-of-this, and sometimes a way to define a generic list-search function that you can instantiate for list-of-this, Lisp makes it easy to write a function that will search any list — and provides a range of such functions.

In addition, functions and expressions in Lisp are represented as data in a way that makes it easy to operate on them.

When you start a Lisp system, it enters a read-eval-print loop. Most other languages have nothing comparable to `read', nothing comparable to `eval', and nothing comparable to `print'. What gaping deficiencies!

Lisp is no harder to understand than other languages. So if you have never learned to program, and you want to start, start with Lisp. If you learn to edit with Emacs, you can learn Lisp by writing editing commands for Emacs. You can use the Introduction to Programming in Emacs Lisp to learn with: it is free as in freedom, and you can order printed copies from the FSF.

You can learn Scheme (and a lot of deep ideas about programming) from Structure and Interpretation of Computer Programs by Abelson and Sussman. That book is now free/libre although the printed copies do not say so.

Please don't buy books (or anything) from Amazon!

>went with some half-assed shit like Mono or .NET Core

.NET Core is .NET minus the components that have dependencies on Windows only components like WPF that will never be open sourced.

Its not going to be a half-assed effort, the goal re implement as much of .NET into .NET Core as possible.

To give you an idea of how serious they are, Nano Server uses .NET Core and PowerShell Core exclusively.

Mono is an implementation of the .NET framework based on the ECMA standard (of which Microsoft's Windows-based implementation is the main one), a C# compiler based off of Microsoft's open-source Roslyn compiler, and an implementation of the Common Language Runtime.

.NET Core is an open-source subset of the .NET framework aimed towards crossplatform development and running which is being developed my Microsoft. It's a modular framework where you use the package manager to download other parts, instead of downloading the full CLR. The goal is that .NET core is will be the basis of a future modular .NET framework itself. Right now it's still in a development stage.

Microsoft bought Xamarin, the developers and owners of Mono, and are working with them on advancing .NET crossplatform development. Right now, if you need cross-platform work, use Mono. Later, use .NET core. Xamarin software is bundled with official Microsoft software now for cross-platform development.

No, but the .NET and other Microsoft™ APIs are available when programming in C#®

You forgot type it as Micro$oft too lad.

Now we'll never never think of you as a cool anti-establishment hacker.

F# > C#
prove me wrong.

>is the x language good to make gayms/something specific something
please stop this stupid meme it makes me sick

...

Well Windows acquired Xamarin and RoboVM by extension. I started out in C# and have coded some simple games on it (read: github toxic waste). It's a good language on a strong platform especially for muh gayms.
This. As much as I hate the current Microsoft, they're really providing us with a solid package on this end now. And it's not like you're entirely restricted into their ecosystem...
This though.
Kinda this. I don't think Wangblows is going anywhere though and even if it did C# could still be salvaged and used elsewhere. Python is good for starting out, but when progressing to more useful and specialized languages, I'd say C# is where to go first. Hell learning other languages so far has been ez cruising after immediately diving into C#.
Fucking this. As others said, it's simply comfy.

For more discussion and everything else. What would you use as your development platform? I hate all the newer versions of VS. It just keeps getting huger and most of the fluff I will never actually need. VS Code so far seems more comfy. They've taken some steps, but I'd appreciate if I could take C# entirely off the Microsoft ecosystem.
Anything else you'd use for writing C# code and developing C# programs?

>is c# a good programming language?

C# is really good, as is Visual Studio. The 3rd party ReSharper add-on is a good productivity booster as well, particularly when you need to refactor code.

And for the love of God, learn how to use Lambda expressions.

> - unsigned fucking integers
So much wow. True I missed them in Java and they'd be better for FFI but for things you regularly do in Java/C#, lack of unsigned integers is not such a big deal. I don't hear Python code monkeys screaming because of that and its ecosystem is much bigger than C#.

> - Properties
Crap. Actually, I thought that properties in C# are good until I started using them. For any non-trivial property (one with logic in get/set) you have to make object attribute anyway. Not saying that Java classes filled with getters and setters are better but that's fault for enterprise coders. Property is just method(s) anyway. It's silly syntactic sugar (language bloat). Scala's approach is better.

> - Events
Crap. I don't understand why this shit has to be baked in the language when there's so many ways to implement notifications. If you want the ability to enumerate observers you'll have to make your own implementation anyway. It's silly syntactic sugar (language bloat). If the language was powerful enough, it wouldn't need to bake in such crap in ad-hoc manner.

> - Real generics (covariance, contravariance, accessible through reflection)
> No higher kinded types
> Real generics
Generics in Java are accessible through reflection too. Use other language for proper type system. C# generics are as real as Java ones - half-baked.

> - using statement for resource management
Java has that since 7 with try statement. But again, if the language was powerful enough, it wouldn't need to bloat itself with such crap ad-hoc language features. Check Scala (scala-arm) or Haskell.

We'd have to learn about F# first. Ain't happening.

> - LINQ, Lambda expressions (Java 8 fixed this a bit but it's still more annoying and verbose than C#)
> LINQ
> 2016
> Make lambda expression look like SQL to drag in fresh college code monkeys who seek enterprise job.
Java 8 lambdas are as verbose as C# ones.

> - Stack allocation through structs (value types)
Will be in Java 10.

- Async / await
LOL. Thanks for pointing out how crappy the language is that every feature of the year has to baked in its syntax forever. Next year, C# will have baked special syntax for node.js or whatever will be cool thing of the year at that time. Someone implemented it as a _library_ in Scala. The resulting code has same syntax as in C#.

- Extension methods
OK, not bad. Scala's implicits are more powerful.

- Non-insane architecture astronaut standard library
I beg to differ having worked with both. Especially C# generated documentation is the biggest piece of shit I've ever seen. You have list of methods with missing parameter names and missing return types. Clearly, it was designed by idiots. Java's collections are better than C#.

- Easy C interop
JNA/JNR in Java.

- Nullable types
Good.

- Overloadable operators for math classes
Much wow. I absolutely hate that.

I knew Sup Forums was filled with fags.

Some guy on Sup Forums favours social status over rational technical arguments. That's quite common.

>is c# a good programming language?
If your name is Sanjit, it may not be shit.
But if you're aiming for something bigger, then don't be a curry nigger.

>For any non-trivial property (one with logic in get/set) you have to make object attribute anyway.

Yeah, but it doesn't have to be a traditional object attribute per property setup. Example:

>Lead can't into database and worried about having to make changes to the database schema whenever we add properties to our transactional objects.
>I tell him 'no problem'
>Refactor our transactional objects to use getters and setters to access a key-value store property of that instance with a composite key based on the type of object and the nameof() the property.
>Add database table for saving the key-value store, templated SQL class to search for transaction instances based on arbitrary properties
>Team merrily proceeds to change the properties of our transactional objects constantly for months
>They never bother me to make database changes

I consider it a success.

Its the enterprise language of choice.

Company I work at switched to C++ and Qt because microsofts loves squeezing useless features in their apis and products and they start to bloat very fast.

Still, if you are aiming nothing but windows (linux support is still shit, no update on the .net port so far) its worth knowing.

F# doesn't have anywhere near the amount of support that C# does though. It's a good language, but that statement will only be true in a few years.

>Java programmer complaining about language bloat
HahahaHAHAHAHA HOLY SHIT.

>writes in C#
>calls someone a Pajeet

When will .NET niggers learn that ecosystem matters more than some features?

What are some good, cross-platform C# IDEs? And i mean IDE, so if you're going to say VS Code or Vim then don't respond.

>language forces you to use w*ndows
DROPPED

Incorrect.

Xamarin Studio/MonoDevelop.

...

Underrated

You clearly don't know the difference between code bloat and language bloat.

java has both.

lol

You're lieing. Modern Java is clean, fast, efficient without bloat.

>using closed source Java

That's actually an old /prog/ meme about Java.

If anything, it would be a joke, not a meme you cancerous newfag

openjdk

>i want to make games

lmao

>ITT: java curry niggers defending their shit language from .net curry niggers

Why not drivers? C# allows to manipulate pointers

Do you earn 50 bucks or 50k?

Microsoft actually wrote a kernel in a C#-variant with support for low-level contracts and assembly-level strong, static typing in order to use high-level features without losing the performance necessary to write a kernel. Spec# features still aren't fully supported in the main C# compiler though, but but some Cω features are. Really fascinating stuff to be honest.

Isnt it for dirty, own-skin-eating communist hippies?

Nop just use java retard

You can dockerize it easily. I'm developing a bunch o microservices with .Net Core and deploying them o ECS

It used to be decent (at least for indie devs) back in the days when XNA was still supported by Microsoft.

No, my definition of a "real" language is one that anyone actually uses if they want to get taken seriously. Try to get a multi PB/Day servers admin to use the literally slowest language there is.
You can fuck off right back to glorified scratch now.

C# supported functional programming since C# 2.0 though. If you like current C#, there's a chance that you'll end up learning F# very quickly.

C# is a great programming language trapped in a microsoft ecosystem.

>Compared to Java, C# didn't remove any pain, it only removed checked exceptions and that is pain only for idiots. It dirtied itself with banal "features".

According to Anders Hejlsberg there was fairly broad agreement in their design group to not have checked exceptions as a language feature in C#. Hejlsberg explained in an interview that:
>The throws clause, at least the way it's implemented in Java, doesn't necessarily force you to handle the exceptions, but if you don't handle them, it forces you to acknowledge precisely which exceptions might pass through. It requires you to either catch declared exceptions or put them in your own throws clause. To work around this requirement, people do ridiculous things. For example, they decorate every method with, "throws Exception." That just completely defeats the feature, and you just made the programmer write more gobbledy gunk. That doesn't help anybody.