Hello people! :) I'm quite new in the programming world. I'm really interested in programming from the time I found that there's coming a game called Hytale, and I would love to be able to make mods for it. So basically I have a book that should introduce me to c++, and I'm currently learning from it. But I've heard that c++ is just kinda old, and it would be better to start from Python, since it's new and more beginner friendly. For now, I want to learn c++ anyways, then try to master Java as well. My last choices would be Python and Javascript. What do you think people? I'm asking becouse I just feel kinda lost lately. I just want to stick to one programming language and master it, for next 1/2 years at least.

My view is that you need to develop a stack. You'll learn to deal with more than one language or you won't be able to move from language to language over time.

My stack is from Microcode to a few high level languages.

I disagree with rproffitt. I think it makes sense to start with one language, focus on it, and learn it.

In the future you will eventually learn how to work with multiple technologies together. However, when first learning programming, picking one language and becoming proficient at it makes sense. Otherwise you’ll end up a jack of all trades and master is none.

Also, I think C++ is a fine introductory language. Python does introduce some more modern concepts that might translate better to other languages, but C++ makes sense to understand the fundamentals of programming and algorithm design.

I disagree with Dani. I think C++ is a terrible first language for learning the fundamentals of programming and algorithm design. I think Python is much better for that. With C++ you have to be too concerned with the underlying structure of the machine. You shouldn't have to worry about how strings are stored, null termination, pointers as opposed to variables, etc. when learning the fundamentals. Develop good programming habits first. Learn the "how" before the "why". Learn to walk before you learn to fly.

Q: "I want to learn first aid" A: "I suggest you start with brain surgery"
C++ is a nightnare agglomeration of everything that is difficult from every other language. Definitely not for beginners, nor (IMHO) for anyone else.
Almost any modern language would be a decent place to start. Loops and if tests are pretty universal, as is some kind of OO now.

Remember that what you need to learn to program in real life is like 10% programming language and 90% API/toolset/libraries etc. Some langauges come with a matching API library (eg Java. Swift) but others like need you the chose APIs to learn as well.

Thank all of you kind people! I will switch to Python then and master it, then I will try to learn Java and Javascript. I want to stick to modern solutions and modern programming languages after all.

@Lev_3

Good to read your reply. With a stack of Python, Java and Javascript you will be ready to tackle what I see in the market here. In my circles we have a few areas that require different skill sets.

  1. Embedded solutions. You might be coding in assembler on single chip controllers such as those put out by MicroChip to "C". Learning C++ would prepare you for this world. Those that learned Java had a harder time of making the transition.
  2. Web apps. Python, Java, Javascript and more live here. This is where you hear about a "stack" more than other areas.
  3. Apps. This gets close to crazy as you might be tasked anywhere from C++, Java, the .Net suite and even systems like UNITY. C++ and Java students along with those with skills in the graphic and musical arts get to work here.
  4. Mobile apps. There are systems such as UNITY here along with native dev kits from Apple and Google so you get your basics from Java, Python and can start work here. Depending on your job or app you also get to go deep on other areas such as web services.

With C++ you have to be too concerned with the underlying structure of the machine. You shouldn't have to worry about how strings are stored, null termination, pointers as opposed to variables, etc. when learning the fundamentals.

That’s precisely my reason why I suggested C++. For me, learning proper algorithm design with C++ (which was my language of choice from ages 15-21, through all of my years of formal education in computer science), it was invaluable to understand what was going on behind the scenes in order to grasp proper memory management, etc.

Nowadays I of course use a more abstracted language, but my code would be a LOT less efficient and a lot less performant if I hadn’t spent all those early years with C++.

I understand not going straight into advanced topics. However, when too much is abstracted away with toolkits and APIs, it’s just like memorizing the multiplication table without understanding what the concept of multiplication really is. Sure you can answer a simple multiplication problem. But then what? But I’m one of those people who was terrible at memorization in school. I was attracted to math and science because you just had to understand the concepts of what was going on and then you could solve any problem regardless of the complexity.

I think it's much more important to learn how to formulate a plan first. I've taught intro classes and the first thing I did was to get the students to write down in English a step by step process for a problem, in general terms, as if they were describing it to a complete idiot. Before writing a single line of code they had to know how to break down a bigger problem into smaller problems, and how to describe a detailed procedure for each smaller program.

You don't need to know anything about memory management for that, or which order bytes are stored in, or any of the other underlying cruft. I believe that such details can just overwhelm the average beginner.

I found a good, non-programming example of writing out a process was to describe to someone who had never seen shows or shoelaces, exactly how to tie a bow knot.

Diafol might appreciate this analogy - imagine that the only language you spoke was English. If you had to learn a second language, and given a choice between the following two, which would you pick:

  1. Esperanto (constructed with consistent rules)
  2. Welsh (looks like someone swallowed a keyboard and then puked)
commented: Excellent. One of the best non-programming courses I took over the years was Systems Analysis. No coding in that class. +15

I think it really depends what field of programming you are looking to go into. I, for example, wouldn’t have any use for systems analysis. However, Big-Oh notation is super important, as is being constantly aware how much memory and how many cpu cycles and how much resources are being consumed for each line of code you write. It’s ALWAYS in the forefront of my mind.

From the Reverend Jim:
"With C++ you have to be too concerned with the underlying structure of the machine." - EXACTLY!!!

That's why C and C++ have been used to teach first and second year CS courses on campuses around the globe for the last 25 years. You learn a lot about memory management and garbage collection via pointers and it's sad to think of all of those "boot campers" that will never get to experience the joy of using malloc(), calloc() and realloc() - the real programmer's "garbage collection" was actually performed by the developer.

I wholeheartedly agree that Python is easy to learn, has a smaller footprint and you won't have to worry about getting burned by those annoying statically typed errors that you encounter from trying to assign an array to a float.

C/C++ are definitely more complicated languages to learn, but they make you a better designer and developer because you've been forced to think about and solve problems just above the silicon.

Trust me, if you're willing to put in the work and really understand how and why those languages do what they do, mastering other languages in the future will be a breeze.

Good luck.

I would not compare C/C++ with any languages as they are classic but yet very powerful languages.Let me give you a case scenaria, If you want to build a application where speed is your primary objective go with C++ (like in gaming) and if you want to build an operating system(just saying),go with C. I guess now how vital they are.
On the other hand Python is a great language to learn now especially with such a boost in the field of Machine learning ,data science, Devops .Also Python can be used in web development .Because of these reasons i guess you have made a correct choice. Also here is an article which might help you selecting your career paths.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.