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

  • Michal@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    19 days ago

    You think Bash is the easiest language? I have to Google the syntax every time i need to write and IF statement!

    • alex@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      18 days ago

      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.

  • eldain@feddit.nl
    link
    fedilink
    arrow-up
    0
    ·
    19 days ago

    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.

  • Caveman@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    19 days ago
    1. Make a text adventure game that runs in the console.
    2. 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.

  • Thinker@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    20 days ago

    Microsoft produces a plethora of good learning materials if you’re struggling with the basics or specific concepts. I recommend their C# for Beginners course to get a good overview of real C#.

    Once you have a good handle on the basics, I would echo others’ advice that having some kind of project or goal to work towards is the surest path to learning, because you have external motivation to use what you’re learning and look up things as you need them. Is there some reason you chose C# specifically as your next language, maybe for game dev, web dev, or Windows apps?

    • kekmacska@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      20 days ago

      I did not choose C#, and after Python, i’d have chosen Javascript, Lua, or Java if it was my choice. I learn it in school, for some reason. My teacher is not very good at explaining things and basically leverages everything on us without teaching how to do it. And also, we learn c# once a week, which is propably not the intended way to learn a programming language anyway, and even then, most lessons are about flowcharts, number systems. Anyone who can learn c# in this enviroment is an absolute genius. Of course the whole class struggles with it

      • lolcatnip@reddthat.com
        link
        fedilink
        English
        arrow-up
        0
        ·
        20 days ago

        Getting exposure to the language only once a week will definitely hinder you a lot. When learning a language, there’s a bunch of stuff you’ll memorize without even thinking about it if you spend time working on it every day, but it will be hard to remember if you spend a week between learning sessions.

        • kekmacska@lemmy.zipOP
          link
          fedilink
          English
          arrow-up
          0
          ·
          20 days ago

          I have a lot more things to learn and it is understandable that i want to unwind a bit or learn something that i actually enjoy, rather than suck with c# with absolutely no motivation. Like i don’t know how i was supposed to learn multiple languages at once and understand both

          • atzanteol@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            0
            ·
            19 days ago

            Like i don’t know how i was supposed to learn multiple languages at once and understand both

            Because the differences between languages isn’t often that big (in most cases).

            They have the same concepts with different syntax. Like with spoken languages - you know there are verbs, nouns, etc. but not what the other languages call a “library”.

            Nearly all computer languages have an entrypoint, conditionals (if … then), loops (for, while), datatypes (integers, floating points, strings), complex structures (class, objects, structs) and functions.

            You seem motivated to learn but struggling with your instructor. Copy/paste from course material in an annoying way to learn. What helps is to really “get in there”. To debug something. Only then will you truly hate programming 😁.

            Others have suggested a personal project and I’d recommend it too. Even simple things are fine - but try to modify them to do more and more. The more you’re iterating over the same codebase the more comfortable you’ll become with it.

            Harvard University makes CS50 (an intro to programming course) freely available and it’s excellent. It does use Python, which won’t help with the specifics of C#, but it would help with the other gaps in your knowledge.

            And remember - concepts translate between languages, so if you understand classes in Python then you just need to learn “how does C# do classes?”.

            • kekmacska@lemmy.zipOP
              link
              fedilink
              English
              arrow-up
              0
              ·
              19 days ago

              The languages i used up until now do not have entry points (intrepeted). I know what is that, but i don’t know where they should be. Up until now, i only used llms for debugging, i’m far from correcting source code, i’m happy if i can write something that even remotely resembles to the correct structure. Also, is it a good idea to start adding smaller functions to already existing c# projects made by others on github (not to publish, just for myself, don’t want to ruin someone’s work with malicious commits). My python understanding is vague too. Only class i ever defined was a csv file reading class like class Class: def init(self, stuff1, stuff2): self.stuff1 = str(stuff1) self.stuff2 = int(stuff2)

              • atzanteol@sh.itjust.works
                link
                fedilink
                English
                arrow-up
                0
                ·
                18 days ago

                Checkout CS50. It’s free and should help with the basics, even if it does use Python rather than C#. As I said before - the concepts are transferable. You need to learn more than just “syntax”.

                Programming can be hard at first. Don’t be discouraged if you find it confusing or if you need to start with very simple things. There is a lot to learn so keep your expectations low, and feel free to return and ask questions. And if you’re comfortable using AI you can use it to explain concepts and code rather than just having it spit out solutions. It’s usually pretty good for this since there is a lot of material on the internet for it to have learned from.

      • atzanteol@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        0
        ·
        19 days ago

        So… When you first start leaning to code you need to learn a lot of concepts, not just the language.

        Flowcharts help to teach about code flow, conditionals, loops, etc.

        You may be concentrating too much on language specifics. You’re not learning C# - you’re leaning to program using C#. There is a lot of theory behind programming languages.

  • Dunstabzugshaubitze@feddit.org
    link
    fedilink
    arrow-up
    0
    ·
    20 days ago

    learn java, way more material for that, but conceptionally very similar to c#. I suggest a book like “Head first Java”.

    after that c# will be much easier to grasp.

    • kekmacska@lemmy.zipOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      20 days ago

      Is java easier to understand than c#, for someone who only has some experience with scripting languages?

      • Dunstabzugshaubitze@feddit.org
        link
        fedilink
        arrow-up
        0
        ·
        20 days ago

        no, i don’t think there is a big difference in ‘difficulty’ between both languages.

        there is just more material for java, and as i said the languages are very similar, so learing to program in java wont be a waste of time if you plan to only use c# after that, because the concepts you learned a long the way will easily carry over.

      • sevon@lemmy.kde.social
        link
        fedilink
        arrow-up
        0
        ·
        19 days ago

        C# is like Microsoft-branded java. No real difference in the language, but some of the tooling for java is worse.

    • lolcatnip@reddthat.com
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      20 days ago

      I considered saying the same thing, but C# has been around almost as long as Java at this point, and I believe it’s commonly used for teaching, so I have a hard time believing there’s a shortage of learning resources. Starting with Java seems like a waste of time if your goal is to learn C#, because you can learn the concepts equally well in either language, but if OP starts with Java they’ll end up spending a lot of time unlearning Java quirks and APIs while learning the equivalent stuff for C#.

      • TehPers@beehaw.org
        link
        fedilink
        English
        arrow-up
        0
        ·
        19 days ago

        Not only this, but C# has diverged enough from Java that anything but the absolute basics isn’t going to help much with C#.

  • sudo@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    18 days ago

    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).

  • vrighter@discuss.tchncs.de
    link
    fedilink
    arrow-up
    0
    ·
    19 days ago

    one of the most popular languages, used in one of the most popular game engines, has no learning resources?

    Press X to doubt

  • briggsyj@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    18 days ago

    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.

        • kekmacska@lemmy.zipOP
          link
          fedilink
          English
          arrow-up
          0
          ·
          edit-2
          19 days ago

          I heard Watch Dogs uses C# too. Should i start modding these games, with mods that add additional logic? I only have experience with localization and texture mods

  • 404@lemmy.zip
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    19 days ago
    1. Start writing a small game in Godot using GDScript (basically Python)
    2. Use the Godot docs to read about C# alternatives to GDScript as you go, compare them and see how they differ
    3. Translate bit by bit of your game to C# using the docs
    4. Congrats, you have written a game in C#
  • nutcase2690@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    0
    ·
    20 days ago

    My first projects were super janky gui stuff that was ported over from Java (very similar syntax, but connected with the visual studio built-in gui editor) and improved to a proper “c#” style using resharper (a jetbrains tool that boosts the capabilities of visual studio) Nowadays you can get a free version of Rider that will include those style tools, so I’d recommend that. But if you use Visual Studio, you can create a Winforms project which can let you drag components to make UI and easily assign code to events. If you are used to raw HTML webpage creation, you might be able to get away with using something like WPF or (cross platform) Avalonia to make a UI, but these are a bit more intense since they use something called the Model-View-Viewmodel framework. It needs you to know how to ‘bind’ variables to events using the observable class, which can be tricky the first few times you use it. I’d look into picking a simple project where you can learn how to use classes effectively (C# is based around Object Oriented Programming much more than bash and self-taught Python would cover). Also would recommend following some of the very simple Unity tutorials to get a handle on the syntax, such as the Unity-made Roll-a-Ball tutorials. These tutorials show the concepts for class-based design and overriding functions.