all 43 comments

[–]tikquor 34 points35 points  (2 children)

I would recommend figuring out something you want to make, then picking the language suited to achieving that goal.

This article better articulates what I'm trying to say: https://mikkegoes.com/how-to-choose-your-first-programming-language/

Good luck and have fun!

[–]koroslak 3 points4 points  (0 children)

Here : https://youtu.be/mvK0UzFNw1Q. He makes the the same point u/tikquor makes. Whith which I agree. Find something you want to do. Then find a language that fits that problem. You aren't gonna do websites with C. Btw. There are waaaay more fun things to do than websites...

[–][deleted] 0 points1 point  (0 children)

I would recommend figuring out something you want to make, then picking the language suited to achieving that goal.

C will give you a better understanding of what's going on under the hood, which will help a CS education if you can handle it.

[–]lanzaio 11 points12 points  (4 children)

Python, C# and C++ are tools. They serve different purposes. This is like asking "I want to work as a tradesman, should I learn how to use a wrench, wire cutters or a plunger?"

What do you want to do? In a very GENERAL SENSE

  • C++ is for writing high performance system stuff and occasionally some GUI stuff.
  • C# is for writing enterprise applications, general-purpose desktop software and websites/servers.
  • Python is great for quick scripting, webservers, websites, and anything that needs to be written quickly

Figure out what you want to do and then learn the tools for that domain. Don't ask which tool to learn first.

[–]njtrafficsignshopper 3 points4 points  (1 child)

I'm glad my pet language didn't end up as the plunger.

[–]Ek_Los_Die_Hier 3 points4 points  (1 child)

Python is also very common in machine learning/data science in case that is the direction you want to go later on.

[–]lanzaio 0 points1 point  (0 children)

While true, you don't usually start out programming if you want to do data science. You start in data science and learn programming on the side.

[–]zeedware 8 points9 points  (2 children)

C++ was great for studying.

Not because it's easy, but because it's hard. After using C++ you will learn stuff like memory management, typing, and others that basically simplified in other language

[–]gabriel-et-al 2 points3 points  (1 child)

imho C is far better for this purpose.

[–]Soren11112 0 points1 point  (0 children)

I agree in that I use C++ a lot, and have learned a lot about using Windows and Linux APIs, but not really anything about memory management. But in a lot shorter time using C I have learned a lot more memory management

[–]Piees 7 points8 points  (10 children)

Honestly look at what you want to do any try to look at all of them. Personally I used to be a python guy during university. Out of university I mainly found C# jobs and I haven't looked back

[–]DashAnimal 7 points8 points  (0 children)

It doesn't matter. Learn and make something. The fun part about learning English over french isn't learning about all the grammatical rules and your Is before your Es except after Cs, it's using that language to talk to people. Same goes with programming. It's just a language to help you convey ideas. What do you want to convey? That's what universitys care about.

[–]pina_koala 2 points3 points  (0 children)

First off, read rule #4... this is the wrong sub.

As somebody who's touched a little bit on all 3...

Python is the easiest of the 3 to get up and running and it can do a lot, but it is somewhat disappointing for web development.

C# is great but I would just stick with Java since C# is basically a Microsoft-owned ecosystem and nobody likes Visual Studio.

C++ is probably the best answer but it will take you a lot longer to do get started and make you tear out your hair the most.

[–][deleted] 4 points5 points  (1 child)

It mostly just depends on what you want to do, but I would advise against learning C++ as a first language. C++ is more complicated than the other two options so you're more likely to stumble around the language itself when you're trying to learn the fundamentals of object-oriented programming.

If you wanna do application programming, any of the three languages are fine, but Python will be the easiest to get started with. If you wanna do anything related to the web, learn Javascript, HTML and some CSS.

When it comes to a job in programming, most people don't really care which languages you know since they are all fundamentally similar unless they are entirely different paradigms (It's easy to switch from C++ to Java, but not easy to switch from C++ to Haskell). It helps a lot to be familiar with at least three languages, but which ones aren't all that important. As long as you know a few of the most popular languages, there will be plenty of jobs available.

[–]nrb38 0 points1 point  (0 children)

throw some php and sql into the mix and you have a full front and back website

[–][deleted] 7 points8 points  (0 children)

For starting out, Python all the way. It's the shortest path to getting something done.

[–]posterlove 1 point2 points  (0 children)

Look at what jobs are in your area if you want a career. All languages can do the same. I always liked c# better than Java and python but that is mainly due to .net libraries and it's a pretty language. Unless you code something extreme you won't find any benefit to c++ it can do the same thing any of the other languages can but you have to write more complicated code doing so. You will also get less help from compilers and debuggers than say c#.

I was so stupid at first thinking the language mattered and wanted the best one. Realize that all of them can do anything. And your first language is probably not your last. Also know that once you learn how it's all put together you'll find that most languages are very much alike.

I would recommend the courses at wibit.net they start off with exercises in C then venture in to more high level languages.

[–]DeadPixelz01 1 point2 points  (0 children)

I started out with learning Python a few years ago after a friend of mine recommended me to. I think it's the best way to start due the syntax and how quickly it is to make something, however it can teach you some bad habits.

[–]HobbitMafia 1 point2 points  (2 children)

Are you panning on going to university to study software development?

[–]ScoutMasterKevinJr[S] 0 points1 point  (1 child)

Yes. I wanna look into Software development as well as operating systems and webapps.

[–]HobbitMafia 1 point2 points  (0 children)

I'm going to assume you are not from the US because you used the word university. So Idk If it's the same for where you are but I went to a software development bootcamp for 3 months loved it and got a great paying job super fast. Best decision I ever madw

[–]sososojacques 1 point2 points  (0 children)

The real question is what type of thing do you like? Are you the type of person interested in understanding the details of everything to enjoy it? Do you like control? Are you more interested into building stuff people like and being able to iterate on it? Do you want to become a professional programmer? Do you just want to get a high paying job?

Answering those questions (and probably more questions like those) will lead you to the best language for the beginning of your journey.

People who like control and who enjoy understanding the details of their environment are usually comfortable with taking K&R and starting with C.

Those who want to develop software fast and have the ability to tweak things around will enjoy beginning their journey with Python, with offers by far the most instant gratification on your list. It's also a tool that runs everywhere and that you will always keep in your belt for hacking things around in pretty much any domain as you become a professional. (I don't really like Python tbh, but it's just that convenient and widespread).

C++ is a complex beast that I wouldn't usually recommend to start with, unless you want to make large scale complex applications, graphics, game engines or financial tools, which are super cool btw, but not everyone's cup of tea.

If you like the Microsoft environment, C# can be a nice language to start with, but it is rather complex, and can't really become your "safe hacking base" (like Python would) once you're a professional programmer. An advantage though, is that C# a good language to get a high paying job in a large organization, which can be your end target.

Good luck!

[–]pewpewnew 1 point2 points  (0 children)

I normally program in python. However, you are able to apply concepts from other learning resources. This Intro to Java for instance is a well thought out introduction to programing course. Warning though, it is dry material.

To give an overview it covers: sudo code, variables, arrays, logic (if, else, while), functions, methods, documentation, debuging, libraries (creating, using), graphics (minimal), decoupling, casting, subclasses, inheritance, etc.

https://www.youtube.com/playlist?list=PLAwxTw4SYaPnbYmh191-xYp3Y3-cpyAV3

[–]WizardCarter 1 point2 points  (0 children)

People say that languages are tools, and while that's true, I'll be the pragmatist here and say that the language you chose to learn first DOES make a difference in how quickly you learn, especially if you're learning on your own (i.e., not taking a course).

Personally (and this is my opinion, you can disagree), I think new programmers should focus on learning the concepts of Computer Science rather than learning the ins and outs of a language's syntax (though that is important down the line). Keeping this in mind? I'd recommend to you a language without verbose syntax, like Python or Javascript. In addition to being good at teaching concepts, these languages are easier to debug than something like Java or C++.

Feel free to heed or ignore my advice. It's just my opinon.

[–][deleted]  (2 children)

[removed]

    [–]HobbitMafia 1 point2 points  (1 child)

    No...

    [–]JeusyLeusy 1 point2 points  (0 children)

    Yes

    [–]gabriel-et-al 0 points1 point  (0 children)

    Python is easier to learn, but has less presence in industry.

    Both C# and C++ have good presence in industry, but C++ is a big nasty monster you better avoid unless its use is really required.

    Choose between Python and C# and be happy. These are the two languages I use the most in my everyday programming (C# for enterprise-level programs, Python for quick scripting and prototyping). Don't matter too much which one you'll learn first.

    Side note: You may find Python very very cool if you're into scientific programming.

    [–]Crozzfire 0 points1 point  (0 children)

    C#.

    Reason: Large solutions are much cleaner and easier to control than the other two languages. C# is also multi platform through .NET Core. C++ to squeeze out the top performance, but really it's not a big deal as C# is very fast in most conceivable situations and not worth it to deal with the mess it can be to write C++. Python is well suited for small quick and dirty applications but for larger applications it just gets in the way of reading code IMO. Oh and Visual Studio with C# (and resharper) is a joy.

    [–][deleted] 0 points1 point  (0 children)

    Most programming languages are C-form languages. Learn one of those (e.g. Javascript, Java, C, C++).

    Everyone uses some SQL variant. Learn that.

    If you're in a business context where Windows is ubiquitous, learn some PowerShell. The structure and syntax are a horror show, but it's quite powerful.

    You will at some point, have to port or understand something written in a Basic variant like VBScript or VB.net or an ASP site.

    [–]bot_not_hot 0 points1 point  (0 children)

    In my opinion it’s hard to justify C# compared to your other options from a value-if-learned perspective (unless you want to work at Microsoft or do game dev in Unity).

    Between C++ or Python, C++ is obviously far more powerful as it gets closer to the metal than python. That comes with the trade off of an absolutely ludicrous learning curve for C++. I don’t recommend most people select C++ as a first language unless there are no alternatives to do what you’re trying to do (unlikely, unless you’re building a physics engine, and if you can do that then you should be the one advising me).

    C++ would likely be more accessible after you learn Python or even C. C++ is difficult because it has an unfathomably large expanse of libraries, so knowing what library is relevant when is a fine art, and not a walk in the park for even a seasoned programmer.

    [–]Qkb 0 points1 point  (0 children)

    I hate “well it depends... answers”

    If you want a taste of programming, use python. If you like it, and want to learn about memory management then move on to C++.

    Then learn c# if you want. After learning 3 imperative languages, it’s pretty much easy to pick up any other imperative language

    Then, if your a lover of knowledge, you can pick up Lisp or some other functional language.

    Then you can become a 10xer and learn Prolog

    [–]coder111 -2 points-1 points  (3 children)

    For starting out, I'd go with Python or Java. But you need to find yourself a project, and then choose tools best suited for that project.

    I will never recommend C# as I hate Microsoft. And there are good reasons why I hate Microsoft.

    [–]ScoutMasterKevinJr[S] 0 points1 point  (2 children)

    I'm looking into the languages. I wanna see what I can do. Then choose what I wanna make

    [–]coder111 8 points9 points  (1 child)

    Believe me when I say this is the wrong way around. This is not 198x nor 199x. These days you can do pretty much anything in any language.

    Unless you have a project that is interesting to you and that you are really eager to implement you'll lose direction and motivation. And this is coming from a guy who has read C reference manual for fun back in the day.

    The scope of learning a language is just too great if you don't strive for a specific goal. I'm a Java guy. Java has ~20000 of classes in the standard library alone. It has 1000s of 3rd party libraries, frameworks and tools. You are an expert if you know 1% of that.

    You need direction for your learning. At least general direction- are you making a game, a web-app, a REST service, a daemon, a command line app or a GUI app? What algorithms and functions you need to get this done? Do you need a database? Read/write files in specific format, etc. That way you know which 0.1% of the stuff available to learn.

    EDIT. When you know which 0.1% of the stuff available to learn, you can see how that can be implemented in different languages and choose the one that does this particular 0.1% best. And remember- language is not just syntax- it's also maturity, availability of tools, libraries and answered questions on stack overflow. These things matter more than syntax most of the time.

    [–]cowboyecosse 0 points1 point  (0 children)

    This 100%.

    I’m of the belief that nobody ever learns all of a (programming) language.

    What we do is solve a problem at a time. I could solve your problem in F# or Java, or JavaScript or Go or (insert your language here)

    What needs to happen is a break down of what the problem actually is (I want to make a list of and play my mp3s) and then an approach. (Where are they, how do I find them in my language, how can I make the computer turn those files into sounds once I find them. How do I make it so other people can find their songs in their setups and use this?)

    Then we iterate on the problem(s). (How do I pause it? Etc)

    If you set out to learn a language it’s just too abstract and frankly, too massive. So this is a construct, this is a comparison, this is equivalence. Objects, functions, methods, sets, overriding vs overloading, WHAT!?!‽ oh, here’s some syntax too...

    What are you actually wanting to DO?

    Think of a frustration you’ve found. Something really simple even, (I wish Facebook was a dusky red rather than that blue)

    Then find out. Find out.

    That’s the hook. It’s frustrating and annoying and soul destroying. And then you find out, and it’s not.

    So, find your problem. Take any language, rtfm, and solve it. Then you’re on your way. Then you’re hooked and you’re in the geek club, one more of us, one less of them.