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

  • @nutcase2690@lemmy.dbzer0.com
    link
    fedilink
    24 months 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.

  • @BehindTheBarrier@programming.dev
    link
    fedilink
    6
    edit-2
    4 months ago

    I found C# to pretty much be python just with strict types and semicolons. Jumped right into it really on my first job and it worked out pretty fine, granted I got to orient myself in the existing project where I started.

    You are perhaps already familiar, but some things stand out like public/private annotations and other class related things like interfaces which work to create a more organized and controlled use compared to pythons “we are all consenting adults” approach were nothing ever really truly blocked from you. It depends a little on what you want to do/use it for, there’s frameworks and different uses like WPF / .NET for the frontend.

    While it may be too basic for you, ZetCode was useful for me back when learning PyQt in python, so you might find some use with the C# intro: https://zetcode.com/all/#csharp

    • @kekmacska@lemmy.zipOP
      link
      fedilink
      English
      04 months ago

      You propably don’t know how bad i’m in C#. Basic console apps are giving me trouble. I think it is very different from python. Like nothing is the same, at all

      • I sure don’t sound helpful saying this, but it’s mostly about finding the equivalent to the python action/types, and typing them out when making functions and variables. Though 99% of the time, you are completely fine defining variables as var to avoid excessive typing.

        I assume you dealt a bit with classes in python, if not then you’re doing double time with both changing language and learning object oriented classes at the same time.

        If there is any specific I can try to give some clarity since I also came from Python to C#.

          • Then you have a bit more to do yeah, you should look into object oriented programming and classes. Classes are pretty much everywhere in C#. At the beginner level they aren’t as bad as they seem but you need to understand it’s basics. The guide I linked in another comment also has short introduction to using a class for example.

  • @Dunstabzugshaubitze@feddit.org
    link
    fedilink
    -74 months 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
      1
      edit-2
      4 months ago

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

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

      • @aluminium@lemmy.world
        link
        fedilink
        14 months ago

        I personally find Java easier in the sense you have to get things done with pretty simple tools, while C# you have 10 different options for a problem.

        Also makes it easier when looking at other people’s code since everyone uses the same basic tools.

      • Mark with a Z
        link
        fedilink
        44 months 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
      8
      edit-2
      4 months 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
        link
        fedilink
        English
        24 months 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#.

  • Depends how you learn. Being mindful of what your goal is helps. C# can be used for console apps, it can also be used to make ASP.Net websites, further afield you can program the Unity games engine with C#. Each of these will have “absolute beginner most basic first steps” type tutorials out there. They’ll all have some similarity as you’ll need to just learn the C# syntax one way out another, but it miles easier doing this if you’re vaguely interested in the types of apps you’re heading towards.

    If all else fails, message me, I was there once, about 20 years ago…

  • Kogasa
    link
    fedilink
    54 months ago

    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

  • @Waterboat555@lemmy.zip
    link
    fedilink
    12 months ago

    C# is very powerful and object oriented programming language that help us to make web application, desktop application, games, client server application, mobile application. But many other programming language does not provide all these features in one programming language. If one support mobile developement but may it will not support web development or if one support web development may it can support desktop developement. But C# is versitle language that also run on different platform very easily and friendly. C# also support small web application and software to till large web application and enterprise software. So https://c-sharptutorial.com/ is an complete site for learning C# tutorials with real life examples.

  • Rimu
    link
    fedilink
    English
    5
    edit-2
    4 months ago

    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

    It seems like you find an environment that requires the language and then kinda sink-or-swim? If so then yes, your whole approach is wrong. You need a process with a lot more structure. Get a Udemy course or a book from the library.

  • @Michal@programming.dev
    link
    fedilink
    404 months 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
      34 months 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.

  • Caveman
    link
    fedilink
    44 months 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.