Jump to content

Is C# a good programming language to learn?

ConnorJ

I have been learning C# on and off for the past about 3 and a half years and I mainly use it in Unity. As I get closer to becoming an adult I am starting to wonder if I should continue to learn C# as a language for eventually getting a job or maybe use it in hobby projects. I did do research to see what the curriculum of my local college has for computer science and it all has to do with C++ and various web development languages. It kind of just feels like C# is not worth it to learn nowadays besides for Unity.

Link to comment
Share on other sites

Link to post
Share on other sites

There's an appropriate place and task for most lanauges.

By all means, continue to develop your skills in C#.

By all means, develop skills in other languages.

You need to learn programming / development. Not just a language.

 

In this thread, there's some discussion about checking out differnent languages, and some things important to being a programmer.

 

Link to comment
Share on other sites

Link to post
Share on other sites

6 minutes ago, Canoe said:

There's an appropriate place and task for most lanauges.

By all means, continue to develop your skills in C#.

By all means, develop skills in other languages.

You need to learn programming / development. Not just a language.

 

In this thread, there's some discussion about checking out differnent languages, and some things important to being a programmer.

 

I have tried learning other languages and I started off with python but it seems worthless because all the job openings and education opportunities are all for C++, Java, or whatever the iOS programming language is.

Link to comment
Share on other sites

Link to post
Share on other sites

3 minutes ago, ConnorJ said:

I have tried learning other languages and I started off with python but it seems worthless because all the job openings and education opportunities are all for C++, Java, or whatever the iOS programming language is.

Yet AI is up and coming, and Python is used in some in that. And it's what NTPsec ported to for a more secure and robust network time protocol. So Python does have its place.

I wouldn't have suggested Python as a first language (preferring something with stronger typing), but with each language you learn basic competency in, you learn more about programming and how different languages work. With your having done some work in C#, C++ seems a logical next step. And you saw some Python too already. You want experience with more languages, so your programming thinking isn't too concentric to a specific language.

 

Looking at what the job ads are looking for is a good idea, as is checking the annual survey of what languages people are working in or inquiring about. A college needs to be producing grads with relevant skill sets, both specific skills and transferable skills. When you're writing a program to do a task / solve a problem, you're learning language specific skills and transferable programming skills. A learning institution may be lagging the scope of current needs, but you wouldn't want them to be teaching in only the latest & supposedly greatest, as that is just a subset of the current job/skills need, and some never even make that. And at some time, you have to go with a language and learn how to program and design at a professional level.

 

Link to comment
Share on other sites

Link to post
Share on other sites

10 minutes ago, Canoe said:

Yet AI is up and coming, and Python is used in some in that. And it's what NTPsec ported to for a more secure and robust network time protocol. So Python does have its place.

I wouldn't have suggested Python as a first language (preferring something with stronger typing), but with each language you learn basic competency in, you learn more about programming and how different languages work. With your having done some work in C#, C++ seems a logical next step. And you saw some Python too already. You want experience with more languages, so your programming thinking isn't too concentric to a specific language.

 

Looking at what the job ads are looking for is a good idea, as is checking the annual survey of what languages people are working in or inquiring about. A college needs to be producing grads with relevant skill sets, both specific skills and transferable skills. When you're writing a program to do a task / solve a problem, you're learning language specific skills and transferable programming skills. A learning institution may be lagging the scope of current needs, but you wouldn't want them to be teaching in only the latest & supposedly greatest, as that is just a subset of the current job/skills need, and some never even make that. And at some time, you have to go with a language and learn how to program and design at a professional level.

 

Is there a programming language the the major ones are similar to?

Link to comment
Share on other sites

Link to post
Share on other sites

16 minutes ago, ConnorJ said:

Is there a programming language the the major ones are similar to?

I think I spaced out when typing that, what I meant was "is there a programming language that is kind of like a base to the major ones."

Link to comment
Share on other sites

Link to post
Share on other sites

19 minutes ago, ConnorJ said:

Is there a programming language the the major ones are similar to?

"the major ones"?

Different people would give a different list.

 

C led to C with object extensions, then C++.

Java was intended to be better than and bypass some security concerns in C++.

C# was MS's own C++/Java language so they could do what they wanted with it.

 

Do some research and determine what the major ones are. Major, as in: most jobs, most advanced, most learned, most used, most expanding of use, most lessening of use, etc..

Pick the top five or six, install what you need to code "Hello world!", and see how it goes.

Research and experiment from there.

 

If there's a number of them providing jobs, and look like they'll be in use for some time (that can change), you may as well pick one that interests you and that you find interesting. Don't be surprised when that changes over time. It is extremely unlikely that you'll pick a language and that one language will be your career for life. ("programming" may be only one of three or four careers you have...) My favourite back in the day was C ("give me a c compiler and I can do anything"). Now, I'm having so much fun with Java, you'd have a fight on your hands getting me away from it. And I'm still on 8! Reading about 9 and 11.

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

10 minutes ago, Canoe said:

"the major ones"?

Different people would give a different list.

 

C led to C with object extensions, then C++.

Java was intended to be better than and bypass some security concerns in C++.

C# was MS's own C++/Java language so they could do what they wanted with it.

 

Do some research and determine what the major ones are. Major, as in: most jobs, most advanced, most learned, most used, most expanding of use, most lessening of use, etc..

Pick the top five or six, install what you need to code "Hello world!", and see how it goes.

Research and experiment from there.

 

If there's a number of them providing jobs, and look like they'll be in use for some time (that can change), you may as well pick one that interests you and that you find interesting. Don't be surprised when that changes over time. It is extremely unlikely that you'll pick a language and that one language will be your career for life. ("programming" may be only one of three or four careers you have...) My favourite back in the day was C ("give me a c compiler and I can do anything"). Now, I'm having so much fun with Java, you'd have a fight on your hands getting me away from it. And I'm still on 8! Reading about 9 and 11.

 

 

I think I will stick with C# as my main language I'm learning for right now because I use Unity a ton but I've been thinking about learning HTML (I know someone who owns a website and they can't really afford to update it with their old programmer and I think it would be an interesting experience to update it from being pretty outdated to looking decent) and maybe I'll go back to Python to mess around with AI and neural networking.

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, ConnorJ said:

I've been thinking about learning HTML

HTML can be useful.

In addition to HTML, I would suggest learning how the DOM works. It turns out that the Document Object Model can sometimes be a really good way to think about making interactive documents, modifying documents, or procedurally generating documents.

In addition, I think that a generalization of the DOM and the HTML/CSS/JavaScript model can produce a generalized interpreter framework which could be used to make implementing Domain Specific Languages, and procedurally generating programs for the DSL, much easier.

But this makes a broader point. Instead of thinking about programming as a set of languages, think about programming as a body of theory, and languages as a tool to express the ideas from that body of theory. Once this connection is made, learning new languages and technologies becomes significantly easier and you can start to take on significantly more advanced problems.

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

10 hours ago, ConnorJ said:

I have been learning C# on and off for the past about 3 and a half years and I mainly use it in Unity. As I get closer to becoming an adult I am starting to wonder if I should continue to learn C# as a language for eventually getting a job or maybe use it in hobby projects. I did do research to see what the curriculum of my local college has for computer science and it all has to do with C++ and various web development languages. It kind of just feels like C# is not worth it to learn nowadays besides for Unity.

C# is definitely still used, but in general I wouldn't worry about what language you use. Once you know how to program learning new languages is much easier, especially the ones with a C-like syntax (C/++/#, Java). If you plan on going to college they'll teach you everything you need to graduate, no need to try and "get ahead" without knowing what they'll ask you.

2 hours ago, Dat Guy said:

For AI and neural networking, you should try Lisp/Scheme. It was actually invented for that.

Right now I'd say python is by far the most used language for all things AI...

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

Just now, Sauron said:

Right now I'd say python is by far the most used language for all things AI...

In programming languages, quantity does not have any remote relation to quality. Use the best tool for the job, not the most widely used one.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, Dat Guy said:

In programming languages, quantity does not have any remote relation to quality. Use the best tool for the job, not the most widely used one.

Yes, but in this case I'd say the two things overlap. Python has the widest availability of AI libraries and by far the most documentation on the topic, plus it's just a comfy language to work with in general thanks to the great tooling whereas Lisp is... not quite that. Further, if you're looking to be hired in an AI related position then python is simply a requirement, no matter how good or bad you think it is.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

2 minutes ago, Sauron said:

Python has the widest availability of AI libraries

Shouldn't one be enough if it covers everything you need? Again: Quantity vs. quality.

 

3 minutes ago, Sauron said:

plus it's just a comfy language to work with in general

I disagree. The lack of syntactical structure that is not whitespace is incredibly annoying once you're comfortable with literally any other programming language.

 

3 minutes ago, Sauron said:

thanks to the great tooling whereas Lisp is... not quite that.

Which tooling would Lisp need for you to call it "great" as well?

 

4 minutes ago, Sauron said:

if you're looking to be hired in an AI related position then python is simply a requirement

Not everything in life is about being paid.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

What languages you learn is highly dependent on what your goals are. If you want to do web development JS/HTML/CSS/REACT/NODE.js, but for desktop development you'd learn different languages. Decide on what type of development you want to get into, then decided on what languages you want to learn.

 

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, Dat Guy said:

Shouldn't one be enough if it covers everything you need?

Different libraries do different things in different ways, more importantly different work environments have different requirements. I would argue a God library that does literally everything you may ever need would be a pretty bad antipattern. Not that anything like that exists for Lisp or Schema - it seems to be you're working with double standards here.

1 hour ago, Dat Guy said:

I disagree. The lack of syntactical structure that is not whitespace is incredibly annoying once you're comfortable with literally any other programming language.

If you're using any type of decent linter this will never be a problem. I've definitely spent more time hunting down mismatched brackets than I have missing whitespace. Regardless, that's personal preference - not a measure of "quality".

1 hour ago, Dat Guy said:

Which tooling would Lisp need for you to call it "great" as well?

We could start with a decent native package manager that doesn't rely on emacs. Also maybe a standard native linter that, again, doesn't rely on emacs. That's not to say working in Lisp is exceptionally hard or that it's far worse than python in that respect - just that it's not a better tool than python in this case.

1 hour ago, Dat Guy said:

Not everything in life is about being paid.

Which is why I said "if", though the OP was pretty adamant about this being a career oriented choice. Also just the fact that people are doing research with it means that you have a lot more previous work to build upon - if you want to start from scratch in Lisp that's your prerogative, you'll just have to put in 100 times as much work to get at the same point as a python user who just imported premade libraries made by hundreds of people who have worked on them for years.

 

Also I'm not hearing any arguments on your side for why Lisp would be any better than python for AI.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

11 minutes ago, Sauron said:

Not that anything like that exists for Lisp or Schema - it seems to be you're working with double standards here.

Nor does it for Python.

 

11 minutes ago, Sauron said:

If you're using any type of decent linter this will never be a problem.

If your language needs a "decent linter" to have syntactically valid code, your language is bad.

 

11 minutes ago, Sauron said:

I've definitely spent more time hunting down mismatched brackets than I have missing whitespace.

That was not my point. You can accidentally leave out any character in any language. Except that Lisp will let you format your code freely, even when nested:

 

(when CONDITION
    (DO-ACTION
        (LIST 1 2 3)
    )
)

Python won't.

 

11 minutes ago, Sauron said:

We could start with a decent native package manager that doesn't rely on emacs. Also maybe a standard native linter that, again, doesn't rely on emacs.

You mean, like Quicklisp (Common Lisp) or the various Scheme dialects' ones? (By the way: I often find myself having to install "pip" manually. Not so native, it seems...)

 

Plus: Emacs is not the only valid IDE for any language except Emacs Lisp. Your argument is invalid.

 

11 minutes ago, Sauron said:

That's not to say working in Lisp is exceptionally hard or that it's far worse than python in that respect - just that it's not a better tool than python in this case.

Python prefers a chained developer. Lisp prefers a free developer.

Your choice.

 

11 minutes ago, Sauron said:

you'll just have to put in 100 times as much work to get at the same point as a python user who just imported premade libraries made by hundreds of people who have worked on them for years.

Lisp existed for decades before Python was even a thought. So did Lisp libraries. AI in Lisp was done in the 1960s or even earlier. Your argument is invalid.

 

That said:

  

11 minutes ago, Sauron said:

Also I'm not hearing any arguments on your side for why Lisp would be any better than python for AI.

It was made for AI. Python was made as a learning language for beginners (like BASIC and Pascal).

Can you spot the difference?

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

3 minutes ago, Dat Guy said:

If your language needs a "decent linter" to have syntactically valid code, your language is bad.

It doesn't need it, it's just 1) nice to have and 2) virtually omnipresent. If you're writing code in notepad.exe then the problem is between the chair and the keyboard and you'll have an equally bad time in any language. This is like me complaining that you need to use semicolons in C... you don't need to check if you have a decent linter, if you don't you're just doing yourself a disservice.

 

Also this is literally just your personal taste. If your metric for "language x is bad" is just that you don't personally like the syntax even if it causes no hindrance to a competent developer's work then there's no point in arguing.

5 minutes ago, Dat Guy said:

That was not my point. You can accidentally leave out any character in any language. Except that Lisp will let you format your code freely, even when nested:

Just because you can doesn't mean you should. Ultraliberal formatting just leads to shitty, unreadable code that is a nightmare to refactor. Even when whitespace isn't part of a language's syntax you should use it carefully.

9 minutes ago, Dat Guy said:

(By the way: I often find myself having to install "pip" manually. Not so native, it seems...)

That's because you don't need pip to run python, so most distributions don't bundle it by default - just like they don't bundle gcc. If you download python from the website you get pip with it, not to mention it's developed in python by the developers of python and is the standard way of getting python packages across the board. So yes, it's as native as it gets.

11 minutes ago, Dat Guy said:

You mean, like Quicklisp

Ah yes, random third party beta software. Definitely comparable to pip /s

12 minutes ago, Dat Guy said:

Plus: Emacs is not the only valid IDE for any language except Emacs Lisp. Your argument is invalid.

That is actually my point, sorry it went over your head. A lot of good Lisp tooling exists exclusively as part of emacs but not everyone wants to use it. Python tooling is a lot more universal across the board.

13 minutes ago, Dat Guy said:

Python prefers a chained developer. Lisp prefers a free developer.

lmao, that's a completely meaningless statement. I could just say "Lisp is for dummies and python is for smartypants" and it would have the same value as an argument, which is none. What even is a "chained developer" ?

15 minutes ago, Dat Guy said:

Lisp existed for decades before Python was even a thought. So did Lisp libraries. AI in Lisp was done in the 1960s or even earlier. Your argument is invalid.

No, it seems to me that you're incapable of understanding my argument, let alone judge its validity. Age has nothing to do with this, there simply aren't nearly as many updated and comprehensive machine learning libraries for Lisp as there are for python. There is no TensorFlow for Lisp. There is no Caffe for Lisp. There is no (complete) OpenCV binding for Lisp. By your logic why don't you just use FORTRAN? It's older, so according to you it must have better library support...

20 minutes ago, Dat Guy said:

It was made for AI.

You repeating this doesn't make it a valid argument. Just because thing A was originally made to do thing B doesn't mean it's any good at it or that it hasn't been surpassed in the decades since its release. AI in the '60s had nothing to do with modern AI research beyond the most basic concepts. Lisp was great at building perceptrons, which are obsolete and pretty much useless now. There aren't even any decent CNN implementations for Lisp.

25 minutes ago, Dat Guy said:

Python was made as a learning language for beginners (like BASIC and Pascal).

Lol, no. Python was build to improve readability and speed up development, which it does in spades. It also has the (strictly positive) side effect of being fairly easy to pick up. If you have nothing to add but first year CS student memes then I think we're done here.

Don't ask to ask, just ask... please 🤨

sudo chmod -R 000 /*

Link to comment
Share on other sites

Link to post
Share on other sites

if you think you can get a job in software development and only focus on one language you gonna have a rude awakening sorry to say.

 

i started with c# but in the field youll notice you need to know a bit of everything sometimes and at one point the actual language is secondary. 

 

its like writing a book. you need to be a great writer no matter if you use pen and paper or punsh your words into stone with a hammer, or use a typewriter or draw words into sand with your finger. you get my point the actual language and syntax is good to know. certain limitations and when to use which language is all fine and good but in the end its about your skills in programming not what languages you know.

"You know it'll clock down as soon as it hits 40°C, right?" - "Yeah ... but it doesnt hit 40°C ... ever  😄"

 

GPU: MSI GTX1080 Ti Aero @ 2 GHz (watercooled) CPU: Ryzen 5600X (watercooled) RAM: 32GB 3600Mhz Corsair LPX MB: Gigabyte B550i PSU: Corsair SF750 Case: Hyte Revolt 3

 

Link to comment
Share on other sites

Link to post
Share on other sites

AFAIK C# is also used for back-end development, do you like web dev?

Link to comment
Share on other sites

Link to post
Share on other sites

I love how this quickly derived into a personal thing here. Pythoneers are weird.

 

Python was ABC initially. Guess why the name.

 I’m out here.

Write in C.

Link to comment
Share on other sites

Link to post
Share on other sites

29 minutes ago, Hi P said:

AFAIK C# is also used for back-end development, do you like web dev?

Yes C# can do back-end. As a matter of fact C# is very easy to code any kind of software you can think off. Since it can do very low level as well as high level stuff It's like C/C++ it can do everything.

Link to comment
Share on other sites

Link to post
Share on other sites

14 hours ago, ConnorJ said:

I have been learning C# on and off for the past about 3 and a half years and I mainly use it in Unity. As I get closer to becoming an adult I am starting to wonder if I should continue to learn C# as a language for eventually getting a job or maybe use it in hobby projects. I did do research to see what the curriculum of my local college has for computer science and it all has to do with C++ and various web development languages. It kind of just feels like C# is not worth it to learn nowadays besides for Unity.

C# is useful for Windows based ecosystems, but outside of that I haven't really seen a use for it. Still, that doesn't mean it isn't a good language to learn.

 

Also I feel it doesn't really matter what language you know, just that you know how to program.

Link to comment
Share on other sites

Link to post
Share on other sites

I would say learning c# is super easy if you already know java and c++. 85% of its syntax is the same as Java and the rest are c++. I burned through c# tutorials on sololearn(good app for beginner coder) blazingly fast because I already know like 90% of the syntax already and kept skipping most of it. 

Sudo make me a sandwich 

Link to comment
Share on other sites

Link to post
Share on other sites

7 hours ago, Mira Yurizaki said:

C# is useful for Windows based ecosystems, but outside of that I haven't really seen a use for it. Still, that doesn't mean it isn't a good language to learn.

It's still small, but growing quickly in the non Windows scene. As Core grows it grows in the non-Windows space as well.

Even Microsoft recommends that you should target .Net Standard and develop new applications on .NET Core if possible. C# developers tend to follow Microsofts recommendations and guidelines, so as time goes on it will become more and more of a multi-platform language.

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×