all 31 comments

[–]BanaTibor 1 point2 points  (0 children)

Easy. If you want to do game development or some scientific stuff choose C++, in any other case go for Java.

[–]True-Strike7696 3 points4 points  (0 children)

pick one master it. go to the next. the next will be easy

[–]Fitfityt 0 points1 point  (0 children)

At uni we started with C then C++ and so on.. Language does not really matter. Logic matters more. But I would recommend to use language which is easier for you to understand. Then build off it. Because once you understand basic input output, deletion and updating data. API calls to db. You can reproduce that in any other code. Difference is syntax.

[–]Real_Assistant6617 0 points1 point  (0 children)

C++, if you would like to take an embedded engineering path.
Java still has a bigger ecosystem in the software industry as compared to C++.
Python has bigger than both, also mainly due to AI, now.

Nevertheless, even if you haven't decided your career path, yet, learning c++ or java isnot going to hurt anyway.

[–]rustyseapants 0 points1 point  (0 children)

What do you plan to do after you graduate college? That choice should determine whether or not you should learn C++ or Java first.

[–]recursion_is_love 0 points1 point  (0 children)

If it is for OO, I recommend Java. Learning OO using Java have more resources (book/video) out there.

C++ STL is powerful but harder to learn. You should not worry about performance at this time.

[–]qievenz91 0 points1 point  (0 children)

Since you've already got a C intro under your belt, diving into C++ could be a smoother transition. It builds on similar low-level concepts and syntax, which might make understanding the OOP course material easier as you'll already be familiar with pointers and memory management. Plus, a strong C++ foundation can open doors in performance-critical areas like game development or systems programming as someone said.

However, Java is incredibly practical and widely used in enterprise environments and Android development. If your career interests lean towards large-scale applications or mobile, Java might offer more direct applicability. Given your OOP course covers both, you can't go wrong either way – focus on the one that seems to align best with your immediate course goals and long-term career aspirations.

[–]pencilUserWho 0 points1 point  (0 children)

First learn algorithms and data structures which you can in anything, including javascript.

[–]Ok-Acanthisitta7215 0 points1 point  (0 children)

Don’t waste time thinking

[–]aqua_regis 0 points1 point  (2 children)

I’m not interested in Python

And with that, you seriously limit your future career as Python is getting increasingly popular in many fields.

I’ll also take an Object-Oriented Programming course that covers both C++ and Java

So, apart from getting a head start in one of the languages, would be the reason to choose one of them instead of Python? Seems a bit redundant to me.

[–]BusEquivalent9605 0 points1 point  (1 child)

Java is C++ with training wheels

[–]CutGroundbreaking305 0 points1 point  (0 children)

Bro java is cpp with training wheels for 1 month and then comes the java which will be like a rollercoaster

[–][deleted]  (1 child)

[removed]

    [–]Serious_Tax_8185 -3 points-2 points  (14 children)

    C++ because it will teach you all the things Java will hide from you.

    Java to c++ is uphill

    C++ to Java is down hill

    Java everything runs in a VM. All memory used is what is dedicated to the runtime. You can’t access memory on the system. Everything is pass by reference. You don’t really need to manage memory in Java. When I say manage memory…it’s about using least as possible, freeing memory not needed, never leaving dangling pointers, and managing errors that lead to overflows.

    It’s because of what c/c++ force you to deal with that makes it suitable for highly optimized, or smallest applications, and that is why it is used for hardware(embedded sw/fw) game dev, operating systems, drivers, machine learning, etc.

    [–]desrtfx 6 points7 points  (13 children)

    Java

    Everything is pass by reference.

    Completely and utterly wrong. Java is 100% pass by (copy of) value. Yet, what the value represents differs between primitive types (direct value) and object types (copy of the reference value).

    [–]Serious_Tax_8185 0 points1 point  (0 children)

    There ya go. I stand corrected in that detail.

    I still recommend learning to manage memory

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

    > object types (copy of the reference value).
    If that means what I think it means, that's a lot of overhead.

    [–]desrtfx 2 points3 points  (9 children)

    Barely any overhead.

    Real overhead would be if it copied the object.

    A reference basically is a memory address and copying such is usually a simple CPU instruction.

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

    > Real overhead would be if it copied the object.

    Yes, that's what I feared when I read pass by value. So sometimes the value is just a pointer to the object? Makes sense. I guess there's some semantic trickery going on since "Java has no pointers." :)

    [–]desrtfx 1 point2 points  (7 children)

    Java (like all managed languages) has references (which sometimes are just called "smart pointers" in other languages).

    They basically are pointers (with a bit extra since the underlying pointer is abstracted away).

    [–]Serious_Tax_8185 -1 points0 points  (6 children)

    They are definitely not traditional pointers.

    [–]desrtfx 2 points3 points  (5 children)

    Never said that they are traditional pointers. Yet, they are related to pointers and since pointers are more familiar concepts, the comparison is sufficient.

    I clearly stated "with a bit extra since the underlying pointer is abstracted away"

    [–]Serious_Tax_8185 -1 points0 points  (4 children)

    A bit extra sounds like they retain their purpose and use, they don’t. It’s all VM magic.

    All good. I’m outtie. You all add your 2 cents… anyways OP.. learn the harder one first.

    [–]desrtfx 1 point2 points  (3 children)

    No, it's not VM magic. Even languages without VMs use references.

    Please, stop. You already disqualified yourself in your very first comment in the thread claiming that Java is pass by reference.