Reports in C++

Hello.

My name is Marco and i'm taking a Msc in Mathematical Finance. So, i try to implement some of the things that i learn in C++.

I've read many, many posts saying that C++ is the language of choice of any quant aspirant. But is it possible to produce nice reports in C++ ? As a calculator, i think everyone agrees that it is effective. But is is possible to produce nice reports ? I think that Java turns this task easier... Or am i wrong ?

Thanks for your help.

Marco
 

alain

Older and Wiser
neither choice is really up to task. If you want a nice looking report, get a specialized tool for it. Crystal Reports or Jasper Report would be fine choices... Even Excel if you really want to
 
Hi Alain. Thanks for your quick reply.

So, C++ language is used in quant world as a calculator...? We can't think of it to develop some kind of application and have an output without being in "command-line world"? What language would you recommend? R, Python... As is started learning C++, i would prefer to stay there if possible...
 
C++ is known for its speed and numerical power so a lot of pricing engine has been developed in C++. It's not known to have strong user interface suit. There are lot of choice for anything you want to do and then, there are the right choice.
You can use C++ with Excel front end to display the results.
You can do calculation and visual display in C# since C# has an excellent visual tool
You can work with Python, have the dataset store as XML and use various tools to display it.
Since you just begin C++, you will work first simple IO interface such as the command line cin, cout.
The advanced stuff you can learn once you know the language well.

Now reading your first post again, I believe what you asked "reports in C++" simply means display your output in different form besides the command line.
 

alain

Older and Wiser
Hi Alain. Thanks for your quick reply.

So, C++ language is used in quant world as a calculator...? We can't think of it to develop some kind of application and have an output without being in "command-line world"? What language would you recommend? R, Python... As is started learning C++, i would prefer to stay there if possible...
What are you trying to do? Which problem are you trying to solve? These are very generic questions but I don't want to misguide you.

C++ will give you a great tool to solve all sorts of problems but if you want to write reports, it might not be the best. You can still do it but it will take you a good deal of time to produce the output. THere are systems out there able to produce reports already (look at my first post).

So far you have mentioned C++, Java, R and Python. I don't know exactly what you are trying to achieve or what sort of problem you want to solve. Are you prototyping something? Doing research and experimenting? Do you want to produce a solid system to put in some production environment? Give me some clues and I can probably offer a better advice.
 
If you need to write reports then you should use a specialized tool, like Alain said Crystal Reports or Jasper Report. I am not familiar with Jasper Report but Crystal Reports is quite complicated product in itself. If you are using SQL Server to store your data then its late versions have the built-in reporting tool which is nice and comparatively easy to learn. The output of the reporting tools is a document that is intended for printing and you you can store that document in pdf or other format.

However, I suspect that by "report" you mean displaying your output in Windows-like way and not in command window. For that, from all the choices you have been offered, I would recommend using C++ and C#. Are you using MS Visual Studio right now? Then it will be very easy. In your Visual Studio solution you can have a C++ project(s) for doing calculations, and C# project for displaying results. C# has extensive and excellent tools for data presentation. Just buy a book on C# and it will take you no more than a day to learn how to output your C++ results using windows form and simple control like ListView. With ListView you will be able to display results in multiple columns and scroll them if they do not fit on one screen.
 
Thanks for all your answers.

What i was trying to say is to display output from c++ in other way than command-line...
I´m using Netbeans right now in a macbook, and that is the reason why i'm not using Visual Studio.

But if C# does the job (and the job is to produce some report, as simple as it might be), i think i'll follow that way.

Thanks again.
 

alain

Older and Wiser
So, you have Netbeans installed so I assume you know Java and you are using it. Why don't you stick to Java then? It will work on any platform.
 
I am using Microsoft products predominantly, I cannot comment on Apple products. There is no Microsoft Visual Studio for any Apple operating system. Someone here might give you an advice how to accomplish what you need on Apple platform. On the other hand, on the job they are using some flavor of UNIX or Windows, you might as well want to switch right now. If you have Tiger OS then, I believe, you can install Windows XP or Vista with MS Visual Studio and have double boot.
 
So, you have Netbeans installed so I assume you know Java and you are using it. Why don't you stick to Java then? It will work on any platform.

That will probably be the best way for you right now. Java also has good tools to display your output in Windows-like fashion, the syntax is similar to C++, and it is used on the job. However, Java is very slooow.
 
So, you have Netbeans installed so I assume you know Java and you are using it. Why don't you stick to Java then? It will work on any platform.
when did sun micro system re distribute its version of java the bean machine language had bean out of gas last i heard it's biggest pay off was sold off to a bank leaving the engineers running the program department at sun out to dry even though the stock went up i can agree java works for the now but why arent we talking c plus , later guys
 
sorry no c sharp maybe if your programming the sound board for a 64 bit donkey kong game but for finance models lets go c plus are if your talking entry code work why not perl
 

alain

Older and Wiser
sorry no c sharp maybe if your programming the sound board for a 64 bit donkey kong game but for finance models lets go c plus are if your talking entry code work why not perl

Dude, did you lose the punctuations in your keyboard? It took me some time to figure out what you wrote. I think I only understood the last part "why not perl?". Well, very simple, Perl is HELL. Fast to hack around but impossible to maintain. The whole idea of "there is more than one way to do it" is a bunch of "croc" (that's my personal opinion). I like the Python mantra better.

Don't get me wrong. My group uses Perl to manipulate data to feed our models but if there is a problem, it usually takes us time to figure out exactly what the code is doing (we are migrating this piece). The issue is that the code is very clever... too clever for our own good!!!
 
Old styled text based line-by-line report using C++ may be OK, not fancy user friendly report.

I found many people tended to think C++ and Java/C# are similar. But in fact, they are not. C++ is a powerful but primitive programming language, Java/C# is a programming language + architecture support.

Bottom line: if your code output is intended for machine use, C++ is perfect. If your code output is for human being (especially not those tech geeks in the data center), you will like need something more than just pure C++

Related discussion on Wilmott

http://wilmott.com/messageview.cfm?catid=10&threadid=67484&FTVAR_MSGDBTABLE=&STARTPAGE=2
 

Daniel Duffy

C++ author, trainer
if your code output is intended for machine use, C++ is perfect. If your code output is for human being (especially not those tech geeks in the data center), you will like need something more than just pure C++

This analysis is rather simplistic and not accurate. I know your attachment to C# but am not sure what your background in C++ was. I think you need to make a statement on this issue instead of just writing it off based on somewhat emotive and subjective criteria.

(BTW I work with both C++ and C# for computational finance. Each is good.)

Draw up a list of features and give scores. For the record, I am on that Wilmott thread (as Cuchulainn).:tiphat:

edit: C# is great for GUI and Excel but C++ is years ahead on templates, boost.

Daniel J. Duffy
 
if your code output is intended for machine use, C++ is perfect. If your code output is for human being (especially not those tech geeks in the data center), you will like need something more than just pure C++

This analysis is rather simplistic and not accurate. I know your attachment to C# but am not sure what your background in C++ was. I think you need to make a statement on this issue instead of just writing it off based on somewhat emotive and subjective criteria.

(BTW I work with both C++ and C# for computational finance. Each is good.)

Draw up a list of features and give scores. For the record, I am on that Wilmott thread (as Cuchulainn).:tiphat:

edit: C# is great for GUI and Excel but C++ is years ahead on templates, boost.

Daniel J. Duffy

Well, actually I have been using C++ for much longer than C#. I love C++ (also Java). If asked to write a core analytic library, I will go for C++ in most cases. But if asked to write a front end, reporting, GUI, Excel ...., I will prefer C#.

Taking reporting as an example, if it is intended for human-being use, can you give an example which you can use C++ ("natively" without some fancy libraries) easier and more effectively than C#? (or VB/VBA ...?)

Actually I think, from report generation perspective, C++ is roughly at the same level as Fortune. Having an appealing (e.g. graphics, flexible layouts etc) was not an important design factor at that time. But maybe i am a bit too assertive.
 
Top