By using this site, you agree to our Privacy Policy and our Terms of Use. Close

Forums - General Discussion - How difficult is C++???

http://www.microsoft.com/express/download/



Around the Network
Words Of Wisdom said:
billsalias said:
Words Of Wisdom said:
Lingyis said:
yeah, agreed. C++ without OOP is not C++. it's a big reason why C became C++.

indeed, on resumes, i've been told to explicitly say OOP next to C/C++ because apparently a lot of people put down C++ when what they really know is just C.

OOP is a programming paradigm akin to Functional or Procedural.

It is currently the most popular one (much akin to how relational row-based databases are the most popular), however that doesn't make it necessarily the best one for every situation.

Languages as well as techniques/paradigms are simply tools in a good developer's toolbox. Approaching any single tool as the silver bullet solution to all problems will fail.


I agree completely that OOP is just another tool. But C++ was designed from the ground up to be used for OOP. Not knowing OOP and claiming to be an expert at C++ is akin to not knowing how to read blueprints and claiming to be a master architect. Both are possible if you use other means to plan your work and communicate it to others, but it would be the exception and not the rule.


C++ does indeed add much of the necessary OOP functionality to C such as polymorphism and multiple inheritence however it is in no way a requirement. The transition from C to C++ is much akin to PHP 4 to PHP 5 (for a more modern comparison); it adds functionality and makes many more tools available to the developer without requiring them.

If you want to see languages really designed with OOP from the ground up, look to Ruby or Smalltalk.


 We are close to agreeing. As you said C++ has many features that were added to the language with OOP in mind. If you do not know OOP concept it is unlikely, though not impossible, that you are using those features to their fullest if at all.


As a counter example, templates is a feature in C++ that can be used to great benefit without any OOP concepts getting involved. So yes you can accomplish many tasks with C++ without using OOP concepts, but you are unlikely to be using C++ to its fullest.

But still considering all you can do with C++ without OOP, if I was interviewing an engineer that claimed to be a senior C++ engineer and he did not have a handle on OOP concepts, I would not consider hiring him into a senior role. For that matter a senior engineer period, be it for Java, Objective C, .NET, javascript, actionscript, or any other modern language development. 



Entroper said:
NJ5 said:

That is very good advice.

I started to learn programming with lower level languages such as Pascal and C, so that's the route I'd take. Starting with Python is probably also OK, although I fear for the new generation of programmers who can go years without knowing what's actually happening behind the scenes (which is important no matter what language you use, unless you just want to whip out a couple of simple scripts).


I'm with you on that. That's why I think starting with C++ is the best way to go (obviously get all the basics of procedural programming down before introducing classes and inheritance and all that jazz). If you begin with a lower level language like C, you will learn to "speak computer", and once you can do that, you can learn any language you want for whatever purpose you want.


Why C++?  Why not drop down even further into asm?  Understanding stack logic and register processing brings one even closer to machine code than C right?  ^_^



Well learning the basics is quite simple , but in the programming world there's a lot of shit you have to master. It really takes years to fully understand a language programming. But i think it all dependes in the effort you put to it



-Universe aeons ago.

Words Of Wisdom said:
Entroper said:
NJ5 said:

That is very good advice.

I started to learn programming with lower level languages such as Pascal and C, so that's the route I'd take. Starting with Python is probably also OK, although I fear for the new generation of programmers who can go years without knowing what's actually happening behind the scenes (which is important no matter what language you use, unless you just want to whip out a couple of simple scripts).


I'm with you on that. That's why I think starting with C++ is the best way to go (obviously get all the basics of procedural programming down before introducing classes and inheritance and all that jazz). If you begin with a lower level language like C, you will learn to "speak computer", and once you can do that, you can learn any language you want for whatever purpose you want.


Why C++?  Why not drop down even further into asm?  Understanding stack logic and register processing brings one even closer to machine code than C right?  ^_^


 which is why all good programmers should take machine architecture classes.

 

EDIT: although i do think C++ does hit the sweet spot.   



the Wii is an epidemic.

Around the Network
Words Of Wisdom said:
Entroper said:
NJ5 said:

That is very good advice.

I started to learn programming with lower level languages such as Pascal and C, so that's the route I'd take. Starting with Python is probably also OK, although I fear for the new generation of programmers who can go years without knowing what's actually happening behind the scenes (which is important no matter what language you use, unless you just want to whip out a couple of simple scripts).


I'm with you on that. That's why I think starting with C++ is the best way to go (obviously get all the basics of procedural programming down before introducing classes and inheritance and all that jazz). If you begin with a lower level language like C, you will learn to "speak computer", and once you can do that, you can learn any language you want for whatever purpose you want.


Why C++? Why not drop down even further into asm? Understanding stack logic and register processing brings one even closer to machine code than C right? ^_^


It's definitely possible to start with asm and then keep moving up the ladder, and I'm sure you'd get many good programmers with that approach. However, I'd say that starting with C gives you about the same results, without scaring off some of the people who wouldn't be attracted to asm as a first language.

It's a matter of finding the sweet spot, I for one think that C is a good place to start, with asm and higher level languages afterwards.

 



My Mario Kart Wii friend code: 2707-1866-0957

we're getting to "favorite first language" discussion territory :)



the Wii is an epidemic.

Words Of Wisdom said:

Why C++? Why not drop down even further into asm? Understanding stack logic and register processing brings one even closer to machine code than C right? ^_^


In fact, all programmers should learn some asm.  The reason to start with C is because there is only one C.  There are umpteen different kinds of asm for umpteen different CPU architectures.  C will still teach you the important aspects of "speaking computer" as well as aspects of programming languages.



C++ is a good start. It was my first "real" language (I don't count the dicking around with QBasic that I did in elementary school).

But you should also take the time to learn something that is a bit more than a simple abstraction over machine code. Lisp was a good language for me. It's a language with the sophistication to allow you to express things the way you want to express them rather than forcing you to think like the machine.

You also need to read up on the standard repertoire of algorithms and data structures (start with sorting algorithms and move onto binary trees). If I had known those things before I went to college I might have actually accomplished things during my early days in programming.



"Ho! Haha! Guard! Turn! Parry! Dodge! Spin! Ha! Thrust!" -- Daffy Duck

LOGO ftw!

(was it logo?)



the Wii is an epidemic.