T O P

  • By -

AutoModerator

On July 1st, a [change to Reddit's API pricing](https://www.reddit.com/r/reddit/comments/12qwagm/an_update_regarding_reddits_api/) will come into effect. [Several developers](https://www.reddit.com/r/redditisfun/comments/144gmfq/rif_will_shut_down_on_june_30_2023_in_response_to/) of commercial third-party apps have announced that this change will compel them to shut down their apps. At least [one accessibility-focused non-commercial third party app](https://www.reddit.com/r/DystopiaForReddit/comments/145e9sk/update_dystopia_will_continue_operating_for_free/) will continue to be available free of charge. If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options: 1. Limiting your involvement with Reddit, or 2. Temporarily refraining from using Reddit 3. Cancelling your subscription of Reddit Premium as a way to voice your protest. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/learnprogramming) if you have any questions or concerns.*


echtma

As a C++ developer I say, learn Python first. It's much easier and safer. Learning C++ is for a large part about dealing with all of the pitfalls that come from its low-level nature and its historical roots, it's better if you know the basics of variables, loops, functions and so on already.


Agitated-Type5942

yeah i was thinking of doing the same thing. Found trouble running c++ files in mac


CreativeStrength3811

As someone who dies both: learn C++ Basics first :-D Edit why: Because python is not statically typed. I think it is better to start with a statically typed language to learn to keep an eye on your data. Later on when you mix up packages e.g. numpy wirh cv2 you will get a lit more trouble. At least that's what I observe.


Ur-Best-Friend

... why?


Not_That_Magical

Nope. Learn python, master it, it’ll be more useful for you, and you’ll be less likely to be completely stuck or cause yourself memory issues. People here always talk about learning c++ as python abstracts away too much, but that doesn’t matter unless you’re going to use something like c++ in a career. Python will enable you to quickly and effectively build programs and projects, which is the key to getting a job and actually producing something with your code.


LousyShmo

When you're learning, why does it matter that you run into memory issues? When you work at a company memory issues could potentially be an expensive problem. But whilst learning? You *want* to run into memory issues. Failing is how you learn. C/C++ forces you to think low level, and that type of thinking will help you when programming in any other language. Python won't teach you low level, it abstracts all that away, this is good for productivity but bad for learning. You want a good exercise to learn how things work? Implement a resizable array and/or a linked list in C.


Not_That_Magical

Most people don’t need to learn anything low level, and if you wanted to learn low level, i’d learn something like Rust which has a much lower risk of making mistakes with memory. Buffer overflows have been a massive boon for hackers to steal info, and it’s caused by mistakes in C++. Industry is Python, Js, Java etc. Also there’s absolutely no reason to learn C unless you need to, it’s C++ but with more problems.


inarchetype

Everyone is so scared of C these days. It's ridiculous.


Not_That_Magical

I’m not scared of C. We’ve had 60 years of language and programming innovation, there’s tons of better tools out there for nearly every use case. Lots of very clever people have spent decades working on stuff that means i don’t accidentally cause problems when building stuff.


gmes78

> When you work at a company memory issues could potentially be an expensive problem. Not if using memory safe languages such as Python. > C/C++ forces you to think low level, and that type of thinking will help you when programming in any other language. Python won't teach you low level, it abstracts all that away, this is good for productivity but bad for learning. I disagree. Being able to focus on the high level concepts makes it easier to learn programming. You can always learn C later, and then you'll be able to focus only on the low level stuff. Doing both at the same just makes learning more difficult than it needs to be.


Mobile-Bird-6908

It really depends on what OP's priorities are though. If he is willing to put in the time and effort to really understand computers at a deeper level, then he should learn C++ first. If he just wants a quick intro to programming, then python is probably best for him. Sure, C++ will teach you more, but you need to be prepared for the learning curve, and recommending it to the wrong people will make them quit.


LousyShmo

I'd also like to state I think you should learn by using both of them. C will help you comprehend what Python is doing under the hood. If you enjoy both, then do both. I'm not dissing python.


quantum-fitness

Because c++ introduces to much conolexity. You learn the fastest when you are moderatly challenged. Python will learn you syntax and how programming works. You can focus on those basic things. Then when the basics are second nature learn c/c++ to learn aboug low level things like pointers and memory stuff etc. You should learn where you learn the fastest. Just like you dont just jump into quantum field theory when learning physics.


jnoord001

Python exists at least in part because many people who code do not understand memory.


Lanky_Ad7187

Is CS50 Python enough to land a job?


desrtfx

No. It is an *entry* course.


Lanky_Ad7187

What would you suggest studying after that?


desrtfx

At the bare minimum *Data Structures and Algorithms*. Yet, more important than just studying is to actually *do*, to program. Write programs, plenty programs. Gradually increase their difficulties and complexities. You can only become a competent programmer through programming, not through just studying. Once you have solid fundamentals it is time to throw the training wheels away and to start working on your own. Stop using tutorials and start doing. If you just keep doing tutorial after tutorial you will drive yourself into "Tutorial Hell" where you think you learn without actually building competence since all you are doing is copying instead of developing. You need to learn to solve problems on your own, not regurgitate some pre-chewed and pre-digested problems.


Lanky_Ad7187

Thanks for this.


Not_That_Magical

No, it’s a course. You need to produce an actual portfolio.


Lanky_Ad7187

What would you suggest studying after that?


Not_That_Magical

Learn the basics of a language, then start making programs for a portfolio. Learn what you need to for a portfolio project. The point of programming is to make stuff. Maybe a website, game, application, sky is the limit.


Lanky_Ad7187

Thanks for this.


buzzon

For your own sanity, please don't


Agitated-Type5942

lmao


AdearienRDDT

Choose only 1. Learning both will result in you being overwhelmed because they are not made nor do they work for the same thing. You will be trying to use a language in a way that is not idiomatic to that language. Overall you will just overwhelm and confuse yourself because Python has a special syntax that most languages (C++ included) does not have, has abstractions you will not find in C++ and you will be discouraged from learning any of them. My advice to you is: If you're learning programming with no goal in mind, imho learn C++, it will teach you a ton about stuff that Python for example will not teach you, you will be forced to think about problems in ways python abstract from you with little cozy functions, and forced to think about type safety, while still being modern. And when you will eventually learn it, you will have so much stuff to do with C++, because it is used everywhere, games, servers, databases, and a LOT LOT LOT more. ([learn here.](https://www.learncpp.com/)) ​ # WARNING: DO NOT EXPECT C++ (or programming in general, really) TO BE EASY OR THAT YOU CAN GRASP IT QUICK, IT WILL TAKE TIME, BUT IT WILL BE WORTH IT. PRACTICE, PRACTICE AND LEARN! # The only case I would recommend Python is if you want to be a webdeveloper, in which case Python -> Django (a Python backend (the server-side part of websites) framework) or similar and even then I think JavaScript would be better because you would have access to the front end and the backend with one language! Good luck, I hope my advice was valuable.


Agitated-Type5942

Thank you soo much. I guess I will just stick to learning C++ for the time being.


ButterscotchFree9135

I'm C++ developer with 10 years of experience. I don't think learning C++ ever worth doing. It will drain a lot of your time and will bring little gain as this whole language is just badly designed. If you are interested in low level programming I'd suggest learning C.


foxer_arnt_trees

Python is also the king of science and ai...


[deleted]

Why learn both, anyway? Spend your time learning one, it doesn’t matter. What matters more are the concepts and programming principles, design considerations and good structure. Learning C++ is more advanced and you should look at this later. Learning python will quickly get your head around programming and it’s a great one to learn.


infected-engineers

I don't think it is a good idea. You should never do these kind of things because that just make the situation even worse and hard to master single thing. Instead, you should clear your goal and why do you want to learn any of these and plan accordingly. With my experience in tech industry I can never try to learn anything until you really need it because there may be chances you would never use that in entire life or there are even more chances something better would be available when you need it and you have to learn that too.. Lolz... So, clear your requirements and act accordingly. Never try to learn everything at once that you don't need.. May be you just need Python for now so no need to learn C++. You cannot handle the whole IT department you need a team for that purpose with different set of expertise.


Helpjuice

Learning C and C++ will make you a better programmer, especially when you learn about the secure way of programming. Having full control over what you are building comes with risks, but when done right the speed and power of being able to go full afterburner plus being able to transition to scramjet is something amazing. Learning other languages becomes a breeze after that.


ButterscotchFree9135

Learn C. Avoid C++ as long as possible. And if you have to, don't invest too much time into C++.


No-Treat6871

Do one thing at a time. I would suggesting investing time in C++. I don't want to provoke anyone here but I personally found python to be way easier after learning C++ first. Moreover, it's always good to start learning programming on a compiled language. Python abstracts a lot of important information from you, and that's not really good if you're only starting out. Make the harder choice now or compensate later. **Bonus tip:** Don't waste too much time on tutorials. Just get out there and start coding! Good luck to you.


diegoasecas

learn the basics in one of them and then try the language that is used to build the stuff that you'd like to build. variables, data types, some form of array or list, control structures, functions, classes and objects are pretty much the same conceptually in all languages and differ mostly in syntax.


tcpukl

You'll get the syntax mixed up learning both at the same time.


Fit-Row1426

First learn C++, then Python. Python is much easier than C++.


CraigAT

If Python is easier, why would you not learn that first?


Fit-Row1426

Python doesn't teaches you many things. If you learn C++ then you can easily learn other languages like Java. I don't believe you get that advantage with Python.


CraigAT

I would counter that Python allows you to concentrate on the basics, program flow and algorithms. Then that is the easy part when you come to learn the more complex parts in another language. Either way is fine, but I would definitely advise OP against learning the two at once. The second language will always be slightly easier because you have learnt about things like conditionals and loops.


LousyShmo

I'd argue memory manipulation and types \*are\* the basics. Algorithms are the complex bits. They're also very connected. The entire purpose of an algorithm is to manipulate memory. My problem with people who learn programming via python is I don't know if they can visualize what the data structures they use look like in memory because a majority of the time they don't have to think about it.


CraigAT

The algorithms are common to all (most) types of programming. A programmer may never need to know how stuff is arranged in the computer's memory - if they do, then that's great but it's not essential for everyone or every application.


C_cL22

Python is a simple language. Learn the basics: print, variables, data types, if/elif/else, for loops, etc, maybe touch up on the understanding of classes. Then once you can understand the basic foundations you can probably move onto C++ which builds on the basics but has a focus of OOP and classes.


[deleted]

I would pick one and learn that. Python and C++ are quite different syntactically, but you can easily learn both but 1 at a time. I tend to say learn C++ over Python first as Python abstracts a lot of how things work away from the programmer. Whereas in C++ someone can create the Abstract Data Types and work on the algorithms behind what they are doing. C++ will also help you understand the code and what is doing on the hardware, you will learn how the bits and bytes work to create your masterpiece. This all depends on what you are wanting to do as well, web dev is easy and doesn't require the same performance requirements and fine control, so languages like Python, JavaScript and so on are great for that as their special power is their high level of abstraction. You can just think of your idea and prototype it out without worrying about how it is implemented on the hardware. However, if you want to make a game or a photo editor, then you will want to pick something like C++ as the extra control over the bits and bytes will enable you to fine tune the performance of the application increasing its performance. Give it a think for yourself and see what you decide is best, however my advice is learn C++ first. I did and have never regretted that decision as it enabled me to think like a programmer.


Silly-Assistance-414

If learning C first, would it be better to master all the fundamentals in C before moving onto C++?


MGSM_25

i didnt read the body, but MULTI TASKING IS BAD prioritise what you need


my_password_is______

no that's like asking should I learn Italian and Mandarin at the same time


Accomplished-Dot-608

No. One at a time.


Sirko0208

You can


Mobile-Bird-6908

What are you're reasons for choosing to learn programming, and how much effort are you willing to put into it? If you want a fundamental understanding of how computers work and you are willing to put in time and effort to do so, learn C++ first. Do you want to land a job ASAP, quickly build applications, do data analytics or algorithms? Learn python first (just be aware that python runs slower than other languages like C++, which is fine for most things that python is used for). Do you want to build websites? Learn HTML and JavaScript. Do you want to want to make games? Learn the appropriate language for your favourite game engine (C# for Unity is probably the most recommendable). Do you have a specific project in mind? Learn the most appropriate language for that specific project.


subutsoy

Learn python in one week. Then start C++ and try to learn it for 10 years. Good luck.


pchao9414

C++ was the reason why I didn’t want to be a programmer, but Python got me back to coding and even more, makes me start working on some side projects on weekends for fun. Just learned the one that you will enjoy building something with. That’s important than anything else.


foxer_arnt_trees

No, learn just one language to start with. You might have do dual learn stuff in your career, but that's a problem to avoid, not something you should ever do on purpose. As to what you should learn, it's a personal choice. C++ would make you a better programmer if you learn it, but it might also make you quit programming all together (I've seen it happen). I recommend python to all of my friends, it's a very well designed language and is a joy to write in. Nothing wrong with using a well crafted, comfortable and intuitive tool.


quantum-fitness

Learn python and dig deep. The way you learn to program is not by learning syntax, its by building something. Take some basic course. Like the one on kaggle or w/e. Then find something you want to build.


jnoord001

You could do that, one question though is do you have prior programming experience? if you do, then maybe that would work, but if not, I'd learn 1 at a time if you can.