• 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!

How to use C++ in real life?

Joined
4/14/13
Messages
784
Points
73
Hi,

It seems I have been out of the C++ game for a while and lot of things have improved. @Daniel Duffy probably can give me more info but I will post this opened to everybody and looking for advise.
  1. What are the libraries that people use currently in C++ for their daily tasks?
  2. I use data frames a lot, is there an equivalent for the R/Python data frame in C++? where can I find it?
  3. Downloading data from the Internet used to be a pain in C++ in the old days, is it better now? What do you use?
  4. Which library do you use for statistics in C++?
  5. Which library do you use for Machine Learning in C++?
  6. Are there any open back testing engine in C++ like there are in R/Python if I wan to test a strategy? where can I find it?
  7. How easy is to deal to dates in C++? parsing dates, date arithmetic, time zones etc?
  8. what do you use to access databases? which libraries?
If you can point me to links/tutorials/blogs, I will appreciate it.

Thanks!

PS - I can do all this in Python and R very easy. I'm just trying to find out what's out there for C++ in case I need it. I don't want to waste my time rolling my own.
 
Wilhelm von Humboldt once said

The diversity of languages is not a diversity of signs and sounds but a diversity of views of the world.

The same is probably true of programming languages' just take Fortran which was created for mathematical formula translation. It is a domain specific language in this sense just like COBOL, R and APL.

C++ is a general systems language with emphasis on efficiency and interoperability. It can be tuned to various domains by adding libraries, which does happen. In many cases these libraries don't exist and they must be built in-house.

C++ is less suitable for data/database-intensive kinds of applications. The list cited in OP most fall in this category.

So, C++ can be tuned to tackle any problem, in principle. C++11 has some new libraries as well as Boost.

In fairness, I don't see enough domain-specific (as in some items in pingu's lists) libraries in C++ in general. But that's related to the fact that many C++ library builders have a non-maths background.

I very much believe this statement when it comes to programming languages

The principle of linguistic relativity holds that the structure of a language affects its speakers' world view or cognition. Popularly known as the Sapir–Whorf hypothesis, or Whorfianism, the principle is often defined to include two versions. The strong version says that language determines thought, and that linguistic categories limit and determine cognitive categories, whereas the weak version says that linguistic categories and usage only influence thought and decisions.

In more basic terms, give someone a hammer and everything becomes a nail.
 
Last edited:
With other languages (other than C++ that is) you reach a dead-end or a point beyond which you cannot proceed. I have seen this a bit with C#. It has happened that some organization have ported C++ -> C# -> C++.
I would not see Python as a good solution for applications that are time-critical and or high reliability. It wasn't built for that. IMO is a useful prototyping tool. All applications are prototypes, some are more prototypes than others.

Regarding 5. (Machine Learning) is C++ not the most logical solution, seeing the requirements? You could have a look at what Google and Microsoft are doing.
 
Last edited:
With other languages (other than C++ that is) you reach a dead-end or a point beyond which you cannot proceed. I have seen this a bit with C#. It has happened that some organization have ported C++ -> C# -> C++.
I would not see Python as a good solution for applications that are time-critical and or high reliability. It wasn't built for that. IMO is a useful prototyping tool. All applications are prototypes, some are more prototypes than others.

Regarding 5. (Machine Learning) is C++ not the most logical solution, seeing the requirements? You could have a look at what Google and Microsoft are doing.
Actually Python has evolved in part for high reliability. That was not what C++ was built for and through the years a lot of problems plague C++ on that. Not until very recently C++ has somewhat patched those issues.

If by time critical you mean fast, C/C++ take the cake. Python and R solved those issues by inter-operating with C/C++ to solve those speed issues.
 
Wilhelm von Humboldt once said

The diversity of languages is not a diversity of signs and sounds but a diversity of views of the world.

The same is probably true of programming languages' just take Fortran which was created for mathematical formula translation. It is a domain specific language in this sense just like COBOL, R and APL.

C++ is a general systems language with emphasis on efficiency and interoperability. It can be tuned to various domains by adding libraries, which does happen. In many cases these libraries don't exist and they must be built in-house.

C++ is less suitable for data/database-intensive kinds of applications. The list cited in OP most fall in this category.

So, C++ can be tuned to tackle any problem, in principle. C++11 has some new libraries as well as Boost.

In fairness, I don't see enough domain-specific (as in some items in pingu's lists) libraries in C++ in general. But that's related to the fact that many C++ library builders have a non-maths background.

I very much believe this statement when it comes to programming languages

The principle of linguistic relativity holds that the structure of a language affects its speakers' world view or cognition. Popularly known as the Sapir–Whorf hypothesis, or Whorfianism, the principle is often defined to include two versions. The strong version says that language determines thought, and that linguistic categories limit and determine cognitive categories, whereas the weak version says that linguistic categories and usage only influence thought and decisions.

In more basic terms, give someone a hammer and everything becomes a nail.
From what I'm reading, it seems to me C++ still hasn't gone as far as I (and my team) can take python and R for daily work.

If I want to build a big system, I probably use a mix of languages but so far, it sounds that in my area of finance, C++ is only usable when I need something really fast. I can still do main processing, analytics and glue using Python or maybe R. Then implement in C++ those tiny pieces that need to be extremely fast or faster than what Python/R can provide.

it also seems that if I want time to market, Python/R might take the cake.

I want to see C/C++ get better but I haven't heard anything so far that makes me go back.
 
From what I'm reading, it seems to me C++ still hasn't gone as far as I (and my team) can take python and R for daily work.

If I want to build a big system, I probably use a mix of languages but so far, it sounds that in my area of finance, C++ is only usable when I need something really fast. I can still do main processing, analytics and glue using Python or maybe R. Then implement in C++ those tiny pieces that need to be extremely fast or faster than what Python/R can provide.

it also seems that if I want time to market, Python/R might take the cake.

I want to see C/C++ get better but I haven't heard anything so far that makes me go back.
No one is forcing you to use C++.
 
Actually Python has evolved in part for high reliability.

Depends on what you mean by 'reliability'.. software reliability I presume.

It is an interpreted language, so 'high reliability' is a relative term.

What is MTBF for Python code?
 
Wilhelm von Humboldt once said

The diversity of languages is not a diversity of signs and sounds but a diversity of views of the world.

The same is probably true of programming languages' just take Fortran which was created for mathematical formula translation. It is a domain specific language in this sense just like COBOL, R and APL.

C++ is a general systems language with emphasis on efficiency and interoperability. It can be tuned to various domains by adding libraries, which does happen. In many cases these libraries don't exist and they must be built in-house.

C++ is less suitable for data/database-intensive kinds of applications. The list cited in OP most fall in this category.

So, C++ can be tuned to tackle any problem, in principle. C++11 has some new libraries as well as Boost.

In fairness, I don't see enough domain-specific (as in some items in pingu's lists) libraries in C++ in general. But that's related to the fact that many C++ library builders have a non-maths background.

I very much believe this statement when it comes to programming languages

The principle of linguistic relativity holds that the structure of a language affects its speakers' world view or cognition. Popularly known as the Sapir–Whorf hypothesis, or Whorfianism, the principle is often defined to include two versions. The strong version says that language determines thought, and that linguistic categories limit and determine cognitive categories, whereas the weak version says that linguistic categories and usage only influence thought and decisions.

In more basic terms, give someone a hammer and everything becomes a nail.

So so cool! Enjoyed reading this. :)
 
Back
Top