• C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Best Programming first language

I agree with Yike. What is hard about C++? Pointers you learn in C. Objects you can learn in Python etc.

Unfortunately, the initial assumption is not inclusive enough. On the surface, it looks as if these are enough. OOP is not so shocking, you also need templates, STL, C++ 11.

I would qualify Yike's statement by saying that conclusions concerning C++ knowledge is non-transferable. Maybe Yike is a natural talent, motivated, works at it etc. etc. Others may have more difficulty.
 
What is so supposedly hard about C++?

Not hard; it's just time-consuming because of its size and it takes time to be able to code fluently in it.

I don't know, from my experience it seems the hardest thing about C++ is all the options you have available - picking the right design.

Exactly.

I donno, just seems the difficulty isn't in learning the language but in mastering it and using it effectively.

Yep.
 
What is so supposedly hard about C++?

Pointers? I never really had too much trouble with this; the name is very suggestive.

...just seems the difficulty isn't in learning the language but in mastering it and using it effectively.

Not so much pointers as memory management... and you know it's hard.

Few languages nowadays let you manage your own memory and for a good reason. It is not a trivial task. For a toy application is simple but when the code base grows and there are multiple pieces interacting together, it becomes a messy issue and C++ is the grandaddy of messy memory management.

The task is somewhat easier now with the introduction of smart pointers in boost and C++11 but it took almost 30 years to get to a somewhat clean solution.
 
A very prejudice and non sensible comment. Does this mean that those who have programming background other than C++ will have problems to pick up C++? So, can I say for students that enter any MFE program or Baruch program without C++ knowledge will have program to comprehend the programming language. In short, they know little after the course. I don't want to pro long this but it is really funny.

When someone asks question like which programming language to learn first? Obviously this guy wants to get to destination ASAP trying to reduce the learning time frame. Anyway...I would like shout out loud - OLD SCHOOL.

They might not have problems picking up C++ but it's not as easy as you put it. Learning the basics of any language is easy but getting a deep understanding is hard. Being able to write code as part of a team or for a big system will be complicated and the results won't be pretty.

Among other things, memory management/C++ multiple inheritance/templates/overloading operators are all complex concepts that seem trivial but in real life can turn bad really quickly.
 
I wouldn't consider myself "good" at C++.

I never found it intellectually "hard". Contrast eg multiple inheritance with Haskell's monads.

It's hard to get things done though... the assistance of an IDE as almost indispensable, and so much boilerplate is required. Because of the extra freedom, the complexity of design choices increases very fast.

The fundamental challenge of computer programming is to tame the incredible power that comes with freedom; to prune the design tree. C++has done very little to do this as a language and so it's very easy to blow off your leg.

They might not have problems picking up C++ but it's not as easy as you put it. Learning the basics of any language is easy but getting a deep understanding is hard. Being able to write code as part of a team or for a big system will be complicated and the results won't be pretty.

Among other things, memory management/C++ multiple inheritance/templates/overloading operators are all complex concepts that seem trivial but in real life can turn bad really quickly.
Right, this is the impression I am getting.

The fundamentals aren't too bad, but in application it's just too much complexity. But for what it's worth, it seems like most languages have trouble handling the "type problem" that OO and templates are supposed to deal with.
 
Contrast eg multiple inheritance with Haskell's monads.

Monads are sort of hard to understand but once you get it, everything works as expected. OTOH, multiple inheritance in C++ is a surprise box depending on the compiler you are using... and that, my friend, is one of the issues of C++.
 
Just take an example: input and return arguments in C++. Options are;

By value
[const] pointer
[const] reference

And then we have to decide if data transfer is push or pull.


Choose.

edit: not to mention the zillion places where 'const' can be used; how, when, where, why etc. Life in Python, Java and C# is much easier.

C++ demands insight.
 
IMHO Pointers are not so easy.
When you think you know it all, I bet you are half the way.
The key point is that pointers are extremely useful, you can not avoid learning how they work and when to use them. Pointers make C/C++ sophisticated and elegant compared with other computer languates.
 
Just take an example: input and return arguments in C++. Options are;

By value
[const] pointer
[const] reference

And then we have to decide if data transfer is push or pull.

Choose.

Well, I wish it also had call-by-name (lazy parameters) like Scala:
http://twitter.github.com/effectivescala/#Functional programming-Call by name
Would help with consistently overloading operators like &&: http://blog.tmorris.net/a-fling-with-lazy-evaluation/
:)

edit: not to mention the zillion places where 'const' can be used; how, when, where, why etc. Life in Python, Java and C# is much easier.

C++ demands insight.

Oh, that's easy -- start with "const" everywhere by default, then you only have to think when not to use it :]
 
Back
Top