I have some background in Python and Bash (this is entirely self-taught and i think the easiest language from all). I know that C# is much different, propably this is why it is hard. I’ve been learning it for more than 4 months now, and the most impressive thing i can do with some luck is to write a console application that reads 2 values from the terminal, adds them together and prints out the result. Yes, seriously. The main problem is that there are not much usable resources to learn C#. For bash, there is Linux, a shit ton of distros, even BSD, MacOS and Solaris uses it. For python, there are games and qtile window manager. For C, there is dwm. I don’t know anything like these for C#, except Codingame, but that just goes straight to the deep waters and i have no idea what to do. Is my whole approach wrong? How am i supposed to learn C#? I’m seriously not the sharpest tool in the shed, but i have a pretty good understanding of hardware, networking, security, privacy. Programming is beyond me however, except for small basic scripts
People seem to be misunderstanding your question. It doesn’t sound like you are lacking educational resources to learn C# but a lack of reasons. It sounds like you have been learning by getting you’re hands dirty with foss software.
C# is a sort of “enterprise-grade language” like Java. It’s meant for large applications developed by one or more teams for almost exclusively commercial purposes. If you want to learn it, deeply, you’ll have to come up with an excuse to write in it. A game is probably the best choice for this. Then learning c# is learning how to make your game.
If you’re looking for open source C# software to hack on you can try anything from the *arr stack. (Sonarr, radarr, lidarr).
Start with “absolute beginner” courses. Here’s one from Bob Taylor. He puts out a lot of good stuff.
Sit your self down and study it for a good bit, then build some things. https://youtu.be/0QUgvfuKvWU
I learned it because I had to write a WPF desktop application, so you could start with WPF tutorials. I was already very familiar with Java, which is very similar, so it wasn’t too hard. Last time I used it was in Unity. You might want to find a good free online course for C# to get a good grasp of C#/Java’s style of OOP, design patterns, and all that kind of stuff.
When I was learning c#, I found the .Net framework tutorials available on freecodecamp to be good.
Also, using the Jetbrains Rider IDE (assuming this is for private non-commercial purposes, as per the terms of their free license) rather than VSCode or Visual Studio. VSCode is still lacking in features when it comes to c#, and Visual Studio probably makes more sense if you’re already accustomed to c# dev.
You think Bash is the easiest language? I have to Google the syntax every time i need to write and IF statement!
There’s a few languages I come back to after a while to fix something and have to consult their reference manual / docs. But bash is the only one where that’s necessary just to read back my own code. Like [[ -z ${ARG} ]]? Wtf is -z doing here. Wtf kind of syntax is that.
Next time I think oh this could be automated with a little bash scrip I’m going to investigate one of those compiles-to-bash languages.
it’s the second language that comes to mind when I think of the word “footgun”, right after old c++
Thisss, it’s atrocious
one of the most popular languages, used in one of the most popular game engines, has no learning resources?
Press X to doubt
Yeah but then you have to learn MATH and I’m not doing that.
Starting with Visual Studio (not code) helps a ton. Make a simple winforms application with a button and some labels and you will start to see how it ‘starts up’ from program.cs to your form.
I did it once but needed a lot of assistance and it was very confusing
An IDE with auto-complete would help a lot.
I use visual studio
This is how I feel about music
The heck you’re talking about? There’s a ton of free resources to learn the basics.
https://dotnet.microsoft.com/en-us/learn/csharp official Microsoft learning resources.
https://dotnettutorials.net/course/csharp-dot-net-tutorials/ for C# basics and .NET framework (which is backend standard).
For game engines you need specific tutorials in those engines.
Don’t learn a language unless you need to use it for something.
That’s why you’re finding it hard. If you needed to program a game, decided on Unity, and had a specific thing to do, it would be easy to figure out how to do that in C#.
- Start writing a small game in Godot using GDScript (basically Python)
- Use the Godot docs to read about C# alternatives to GDScript as you go, compare them and see how they differ
- Translate bit by bit of your game to C# using the docs
- Congrats, you have written a game in C#
Start with the goal to create something, be it a console app, website, web api, or game. It’s hard to just study a language abstractly and learn it. Use the Microsoft Learn documentation as reference, and look for open source .NET projects on GitHub to get different perspectives on how to build things with .NET. There is a free course on freecodecamp that will get you started by building an app, and I believe it was done in partnership with Microsoft
- Make a text adventure game that runs in the console.
- Tic tac toe in the console.
Then if you want to go for a GUI web app with react use “dotnet new react” and create a to-do list with a client/server setup.
If you want to learn to make games you could make a tic tac toe again but with a GUI in Godot.
Once that’s done make tetris.
You research what you need right before you need it and use it immediately so it sticks better. You’ll need to get comfy with typing systems and I recommend using an IDE like Rider or Visual Studio to program it since they help out a lot.
It sounds like you’d benefit from having a project in mind. I always learned programming languages by building something I wanted, or by tinkering on someone else’s project.
That could be good in the future but i struggle with the basics too. I look at source code and have absolutely no idea what it does
Code is overwhelming. Even experienced professionals hate diving in to somebody else’s code. It’s scary, poorly documented and we always think we could have done it better.
Don’t let that put you off.
A lot of us are practical learners. So like you we stare at a wall of code but struggle to comprehend it. But if you dive in and start editing, experimenting etc you’ll change the output and understand why it was written in a certain way.
Eventually once you’ve got it sussed you’ll be able to adapt a script to do what you want it. That’ll trigger the dopamine reward mechanism and you’ll be hooked like the rest of us.
The comment above stands on its own. Code can be overwhelming - start by going through an existing program and write a comment for every single line - describing exactly what each line does. You’ll pick it up faster than you think.
It sounds like you either have not integrated ChatGPT into your life yet or you’d never think of asking a tech-tool tech-related questions.
All my code in the last year has been written up by AI. Sure, for now you still need to know what you’re doing, the code pretty much always needs adjustments, but your first draft is never farther than one LLM query away.
If you tell him what you just told us, like “I’ve spent months and all I can do is parse some values, what could I code to expand my horizon?” you will have new angles in minutes and all key lines of the code will be explained to you.
this is just horrible advice
Using AI is cheating and no teachers like it. We are ecouraged to learn entirely without any LLM or similiar. Sure, i could pull it off, when the teacher is not watching, but that’s very risky
I thought you were learning by yourself. If you have a teacher/class and you need to consult the internet for advice that probably doesn’t bode well for your teacher’s performance.
I’m not suggesting to use AI to cheat on a test or something, even with the existence of AI we should still try to build our own knowledge and understanding. But I mean if you got some homework or whatever and you feel like your understanding should already be further developed why not ask an advisor which has time for you 24/7? What counts is your own progress and nothing else. The goal isn’t to let AI do the work and be done with it but to gain an understanding which your teacher seemingly couldn’t convey to you.