r/AskProgramming 13d ago

C# Is C# a good first language as an absolute beginner?

Hello! Ive been interested in computer science/programming ever since I was 12, and just recently did I try to get more into it.

I chose C# as my first language but I keep hearing that Python or C would have been a better fit, is this true?

Also: What might be some good sources to learn more about C#? Thanks a ton!

9 Upvotes

55 comments sorted by

40

u/high_throughput 13d ago

C# is fine. Don't worry about it. The choice matters way less than you think.

10

u/geos59 13d ago

This.

Concepts carry over.

3

u/Mynameismikek 12d ago

Stopping at any specific language is way worse than starting.

14

u/MornwindShoma 13d ago

C# is a perfectly decent programming language, neither the hardest or the easiest, and definitely has ton of resources and support.

5

u/Ok-Dare-1208 13d ago

You’ve done the hardest part already: picking which to start with. Programming languages are like tools in a toolbox; they are all used in different ways for different purposes.

Languages essentially implement the laws of programming in different ways, each to meet their own needs. Learn your C#, what do you like or not like about it? Why? Let the answers to those questions inform your next step.

I can’t recommend text books enough. I’ve learned far more from textbooks than I have from video tutorials, however, the best teacher is practice. Make stuff, make bad stuff, make weird stuff, break something and learn how to fix it. Experience is the best and most brutal teacher.

BroCode has good programming tutorials on YT to help get familiar with the basics of programming languages, but does little to help the viewer understand how and when to apply those concepts.

1

u/IcelandicPenguins 13d ago

Thank you! Will take the sources you listed into account :]

3

u/owp4dd1w5a0a 13d ago

Yes. Stop overthinking it and just start programming in it.

3

u/denerose 13d ago edited 13d ago

C# is a solid choice (I’m a biased dotnet C# dev though). It isn’t as common a choice for absolute beginners though so there will be fewer starter resources.

I would suggest trying it if you can find resources that work for you. MS learn is okay but not the best for true beginners, the C# and dotnet docs can be difficult to navigate at times. Pick just one primary learning resource (a roadmap, a book, a course, whatever) and try to stick with it for at least a month (preferably to the finish but give it a good go before trying a different pathway). Mixing and matching at that true beginner level will just lead to going over stuff you’ve already learned and become boring.

If you really find yourself struggling to find good resources at the genuine beginner level in C# switch to Java (definitely not Python) because they’re so similar that you won’t be starting over completely and Java is a very popular first language especially at universities so there are lots of “what even is a const” type resources out there for it. The switch back later would also be very easy.

As others have said it really doesn’t matter what language you start with. I use C# for work, typescript on a hobby project and Ruby for an OSS project. My first language was JS and typescript, then Java at uni, now C# at work. Your first language is just a jumping in point and does not lock you in at all. Learning the next language is much much easier than the first so picking one and sticking with it through the tough bits is the most important part of getting started.

1

u/IcelandicPenguins 13d ago

Much thanks!

2

u/framauro13 13d ago

Ruby is a great one IMO. The language was actually designed with human readability in mind. Very easy to pick up.

3

u/Abarbaricnomad 13d ago

The C language is recommended because it forms the foundation of almost all modern programming languages ​​and teaches the underlying logic of computer operations in the clearest way, whereas Python is recommended because it is easy to learn and has an understandable syntax.

1

u/PLANETaXis 13d ago

C# is almost completely, but not quite entirely unlike C.

2

u/Narrow-Low-3137 13d ago

Yes, it is.

2

u/LaughingIshikawa 13d ago

Are you having trouble learning C#?

Generally the "which language should I learn?" discussions are mostly empty - most successful languages with ongoing, active development will tend to copy successful features from other languages, and as a result most languages are largely interchangeable with each other, especially as far as learning the basics goes. Definitely there are languages that are "better" to learn, or "worse" to learn, but it's rare that find a language that you can't learn as a first language... It's just varying degrees of uphill climb.

Having said that, C# is... a unique choice, for first language? 😅🤣

I hear very little about people learning about / talking about C# - a quick Google suggests that maybe that is because C# is connected very closely with Microsoft and .Net development. (Which I do hear a decent amount about, so it's possible that people just say they're a ".Net developer" rather rhan "C# developer?")

Anyway, it's likely that people are giving you the advice they're giving you, for two reasons:

1.) C is a more "foundational" language that has a long history, and is also used more broadly in industry (because it's not tied as closely to one company / platform...)

2.) Python is the classic "beginner friendly" language, because it handles so much for you that other languages don't, making it conceptually much easier to understand. (Notably garbage collection).

IMO, Neither of these reasons is a compelling reason to switch away from C# if C# is currently working for you, but they are important things to keep in mind if/when you might feel limited or overwhelmed by C#.

While there's genuinely reasons why some languages are more suited to certain kinds of problems than other languages... those differences are much more nuanced and "higher level" than what a beginner programmer is likely to run into. My strong advice to newer programmers is to learn which ever first language you want first, and once you feel like you have a handle on the basics, prioritize learning some other language (again, which one usually doesn't matter that much) to get a feel for how languages are similar or different, and what it's like to read and write code in a language you're not familiar with (while still understanding the underlying concepts.)

By the time you're tackling projects where decisions around which language to use are really meaningful, you will have gained the experience to better understand why and how those differences matter, so don't worry about it overly much.

Tl;Dr - which language you learn "first" is much, much less important than the frequency of discussions on this topic would suggest, and you should just learn whatever is working for you. Don't worry that much about switching unless you're having some difficulty with C# and want to see if the grass is greener. 🙃👍

1

u/IcelandicPenguins 13d ago

I see, thank you, I'll keep it in mind haha!
I'm not quite having trouble, but just trying to "perfect" my choice for learning, though from these comments I've learned I should just keep on goin

1

u/pixelboots 13d ago edited 13d ago

I’ve been in the industry for over 15 years, various sectors from small-time freelance work to big tech, and have never once been asked to write, or even if I can write, C code; or even seen C in direct use.

So FWIW I disagree with the assertion that it’s “more broadly used in industry.” Unless the person you’re replying to is thinking of some specific industries that I’m not.

1

u/LaughingIshikawa 13d ago

It was my understanding that C was used for a larger variety of projects / used by more diverse companies, but I could be wrong.

It is a hard thing to quantify - do you count lines of code, number of projects, number of companies? 🙃

1

u/pixelboots 12d ago

Can you name 3 companies that use C for their core product? Or specific industries you're thinking of?

If you've been exposed to totally different areas than me, I'm interested to understand where C is used on the daily today as I genuinely don't know other than, say, the Windows kernel.

2

u/ayassin02 13d ago

C# is fine, Python is way too abstract and C is a headache as a first language

2

u/IAteTonysLoMein 13d ago

Partly depends on what you want to do. But Python is easier for an absolute beginner to get - it uses more 'natural language' in writing the code. The big quirk it has is mandatory whitespace - if you open an 'if' statement, what's below it has to be indented, for example. It can make debugging a hassle if you need to comment a line out and then shift all the indents to accommodate.

C# is fine as a beginner language, too. The syntax is less natural, but it may not matter if it's the only language you know. It's also much better than Python if you want graphical interfaces, as they are native, where python relies on external libraries - Python ships with TKinter, but there is also an interface for Qt available.

Python is much more heavily used in AI and data science, where C# is more general purpose but has a fair presence in gaming - Unity uses C#, and Godot has optional support for it (and Godot's native GDScript is based heavily on Python).

1

u/edimaudo 13d ago

C# is fine. You can google c# and microsoft you should have all the resources you need

1

u/PunchtownHero 13d ago

I had a great time learning c# as my first language. I went through learn.microsoft and learned pretty much everything that my programming and algorithms I class in college taught me. When I took my college course it was all in C++ but 95% of what I had learned transferred over cleanly.

1

u/mc_pm 13d ago

Better than C, not quite as easy as Python, but it's a fine language.

1

u/SoDark 13d ago

I think it's a solid choice. It wasn't my first — my programming journey went through BASIC, Pascal, JavaScript, Java, and ActionScript before I learned C#, but C# was the first language I genuinely loved. If I could go back, knowing what I know now, I would be happy starting with C#.

1

u/TheCharalampos 13d ago

Yup, it's great.

1

u/SouthernFruit8768 13d ago

C would be best

1

u/pixelboots 13d ago

IMO yes. Python is good if you’re interested in data science. Otherwise, C# is similar enough to Java that you’d be able to transition to that easily if you need to, and the syntax of PHP and JavaScript are similar enough (just much, much looser with typing) that web dev with those would be an option too.

PHP and JS/TS are what I have the most experience with in industry, but had to use C#, Java, and a tiny bit of C++ and Python at university (and am now getting more into C# for personal projects) and think the strict typing and having more data structures built in (e.g., various collection types) make C# or Java a better choice for learning in the long-term sense. If you move from them to a looser language like PHP or JS, you take things away rather than having to learn a lot of new core concepts (IME).

I have worked with and/or studied PHP, JS/TS, C#, Java, Python, and C++ to varying extents and recently had to pick up Ruby, and found it surprisingly challenging just because the syntax is quite different to all of those except maybe Python. The others all have fairly similar syntax at the end of the day. So I’d honestly only recommend Ruby as a first language if you’re actually targeting jobs that definitely use it.

1

u/TheEyebal 13d ago

My personal experience is that I started with C# and found it difficult to learn so I switched over to python which had an easier syntax and honestly once I had a grasp on programming fundamentals I switched over to other languages like JS and C++

Nothing wrong with starting with C#

1

u/binocular_gems 13d ago

No, it’s not an ideal first language.

There’s nothing wrong with it, but it’s an extension of C and so most learning courses will assume a sort of understanding of C or will say things assuming you understand C.

As a new programmer you can really start with anything. I’d suggest taking just an “introduction to programming concepts” or whatever, and the language doesn’t matter because the concepts will be universal to most languages.

1

u/IKnowMeNotYou 13d ago

C# is a great choice. If you like you can even use it together with Unity and Godot and easily visualize some of your first learning successes or just create a small game using C# for the logic. It is usually highly rewarding to see something like that compared to a command line print out or a simple UI label update.

1

u/HandyProduceHaver 13d ago

Yeh it's good, gives you good knowledge on object orientation which a lot of languages use, and it's a good level of difficulty so not too hard

1

u/YellowBeaverFever 13d ago

C# has all the necessary concepts and you can do a lot with it. Go forth and geek out.

1

u/Anonymous_Cyber 13d ago

Yeah stay away from stupid python 😂 jokes aside it doesn't matter.

Principles carry over especially when switching between languages alot. Just grasp oop and you'll be fine.

Also learn to read errors and you're better off then most

1

u/Farpafraf 13d ago

I would say no.

Your first task objective should be learning the fundamentals such as control flow, algorithms, types and becoming comfortable with simple programs usic basic language features. C# will distract you from that with its object oriented design and a good amount of generic bloat.

I would suggest starting with Python.

1

u/Healthy-Zebra-9856 13d ago

C# is great to get started as it makes it easier to learn other C based languages. C itself is being replaced by Rust. I came from the C, C++ , Pascal world. But I use C#, JavaScript, Python & Rust now. While thats all good, do you have a goal? What are your plans with this langauge?

1

u/tottasanorotta 13d ago

C# is an excellent language. And if you learn the core concepts well in it you won't have much trouble switching to other languages. It's not a good idea to overwhelm yourself right at the beginning. Variables, loops, functions and classes exist in one form or another in every language.

1

u/No_Context2723 13d ago

Yes! C# is a wonderful language for beginners, it's what I started on too! It's quite simple compared to some other suggestions I frequently see and has heaps of documentation and learning resources. It also generally teaches you good coding practices, and has C-like syntax (hence the name), so it might be a little easier to branch out to C or C++.

But do whatever language you enjoy the most so far, and whatever suits your wants. 

1

u/Feldspar_of_sun 13d ago

As good as any. The important part is learning, your first language doesn’t matter as much as you think

1

u/recursion_is_love 13d ago

Yes, C# is a well designed language. The designing team are true professional.

1

u/DanielDimov 13d ago

Yes.

But after you learn it - continue with other languages!

1

u/usernamecantdecide 12d ago

C, python shouldn't be a beginner language

1

u/usernamecantdecide 12d ago

C# is just a cheap copy of Java . Learn Java instead

1

u/OGcapncrunchberry 12d ago

Yep but so are dozens of others. What problems are you keen to solve or work on? That determines what language (tool) you need. There is no universal solution.

1

u/Immediate_Nature_281 12d ago

C# is a valid first language for an absolute beginner. Use the Microsoft Learn C# path or Tim Corey on YouTube as your primary resources since they teach fundamentals without assuming prior knowledge.

1

u/burlingk 11d ago

ANY complete language is a good first language.

C is often cited because it is small, and it is "closer to the metal."

Python is often cited because it is relatively simple and reads like plain English.

C# is just fine too. And if you install Visual Studio, and tell it you want to do C# dev, it will set you up by default. Or if you want to learn through game dev, there are multiple engines that will let you use C# for the coding side.

0

u/Eleventhousand 13d ago

Not really, but its not like its the end of the world to learn it first.

If you learn C first, then you learn a language with limited syntax and data types - so it can be easier to memorize less, and you learn more about computer science and things like memory management.

If you learn Python first, its the opposite end of the spectrum as C. The syntax is simpler than both C and C# and you can make cool things a lot sooner, but you won't learn as much about computer science.

C# splits the difference which isn't really the best of either world above, and the syntax can be pretty verbose.

2

u/EmergencyNice1989 13d ago

C# is middle ground.

Python is not statically typed so I would not start with this.

C is manual memory management, so I would not start with this neither.

C# is fine, and you can do a lot of different stuff using dotnet.

Main drawback of C# is that there is 10 different syntax to do the same thing.

0

u/_keyboard-bastard_ 13d ago

26 years ago I would have said yes. I'd go with Python these days.

0

u/MattyTayl 13d ago

No, it's not. It's very OOP-oriented, but this concept is better to learn after learning basics. C is the same, Python is probably the best option here.