Best Programming Language for CFA to learn?

Hi everyone, I’ve finanally come around to looking at my resume and It seems I may be missing a useful skill such as programming. If I plan to move to New York or London after I graduate, what prog language would be most helpful to pull down Mega $$$? Thanks, I was thinking C++, but on that note, everyone I’ve spoke to says I should not learn C++ first, but learn Python, or C??? Whats up with that? Thanks again, -Trustasst.

Where are you located now?

If you want to be a quant, then C++ is a must

ymc Wrote: ------------------------------------------------------- > If you want to be a quant, then C++ is a must In NYC. Any reccomondations where to learn this? I’m sure there is certification. I was interested in learning some programming in my off time from CFA studying.

trustasst Wrote: ------------------------------------------------------- > Hi everyone, > > I’ve finanally come around to looking at my resume > and It seems I may be missing a useful skill such > as programming. If I plan to move to New York or > London after I graduate, what prog language would > be most helpful to pull down Mega $$$? > > Thanks, > > > I was thinking C++, but on that note, everyone > I’ve spoke to says I should not learn C++ first, > but learn Python, or C??? > > Whats up with that? > > > Thanks again, > > -Trustasst. For OOP I would start with either Python or Java and then go to C++ if needed. Learning SQl is helpful as well.

If you want “programming Lite,” do VBA. It’s useful if you spend a lot of time inside Excel. If you want to be a hard-core programmer, knowing C++ is the holy grail. People assume if you can do C++, you can program anything. Also, there is a large financial codebase in C++, which is why it is often preferred for quant work. Java is a nice Object-Oriented Language. It can be a bridge to C++ since much of the syntax and structure is similar, and so the jump to C++ is relatively small from Java. I decided to learn Java. I also like how java compilers and some IDE (integrated development environments) are free and multiplatform (so you can program on mac or PC or Unix or whatever). Doing GUIs on Java sucks, though, it’s like trying to build an automobile with only a hammer and a screwdriver. I’ve heard good things about Python and Ruby on Rails, but can’t speak from experience.

I don’t know what is useful for financial jobs, but I know C++, VBA and I am also user of matlab. Besides VBA I never used any of it while I was working as a research analyst.

Mega $$$? I’d worry about a job first.

@bchad: Ruby on Rails is purely for websites. There are several good UI layout tools for Java, so its much easier than it used to be. @OP: Depends on what you want to do. VBA is probably sufficient for most financial applications short of doing quant work. I’d agree that learning sql would be very useful.

Thank you everyone! I have come up with the following solutions. I am going to learn C and Python at the same time. I just got the python file from python.org. I apparently have to learn C if I want to pass any classes in university as they all go from Intro to Programming (easy) to Data Structures (hard) but I am an Econ major so lets not get carried away. Once I get decent in Python i will move to C++ and SAS Base and I think I can call it a decade at that point. BS Econ C/ C++ AND SAS should be a decent combo (right?) For all you who said SQL is good to know, I installed Visual Studio 2008 Pro & SQL Server 2008 but have no clue what to do with SQL. (I use a laptop and don’t see myself hosting a site anytime soon but I got SQL because I am supposed to know how to pull data from SQL with SAS before I graduate. (According to an upperclassmen - Oh the shame, so low on the food chain am I… ;-( PS - Twist - They use C# where I work, but I really don’t even care to learn C# I’d rather just go the Python to C++ route, …

http://www.amazon.com/SQL-Queries-Mere-Mortals-Hands/dp/0321444434/ref=sr_1_1?ie=UTF8&s=books&qid=1242071125&sr=8-1 great for learning how to write select statements in SQL for non-DBA’s.

sorry but i have to be honest, you are too late in the game to make mega $$$. You will never ever learn C# like a real programmer (quant) if you don’t know anything about programming. It’s a different league. If you do a Phd in a related field it’s a whole lot different story. That will speed up the process 10x. If you wanna learn a programming language for work and resume go for VBA. It won’t make you perfect but you’ll be more efficient and a more valuable employee.

I’m going to have to agree with itstoohot. I work as a software engineer, and going about learning C++ is no joke if you don’t have any programming base. One of the big differences between C++ and other object oriented languages (like Java and C#) is the memory management factor (huge pain in the a$$). Java and C# have built-in garbage collection, so you don’t have to worry about it as much. If I were you, I would learn how to manipulate Excel in VB. It’ll teach you some basic programming techniques and provide some value for any job where you use Excel a lot. I wouldn’t go the Python route, and instead I would learn Perl. From what I have seen Perl is used more widely as the accepted robust scripting language (it is OO as well). Perl has built-in modules for SQL database manipulation too. You mentioned you don’t know what to do with SQL. SQL is a query language for databases. If you need to store massive amounts of information you use an SQL database. Front end graphic user interfaces can pull information from those databases and display them in a way that is pleasing. To pull the information, languages like C# and Perl embed SQL queries in the code and execute the queries on the database using its built-in SQL classes/modules. If you aren’t planning on dedicating an absurd amount of time to learning programming, I would stay away from C++ for now. Perl will give you enough of a headache when you attempt to memorize all the nuances of regular expressions.

To the person who asked where I am now… Wilmington, Delaware. (hiding from the recession :wink:

I have a question for the hard core programmers out there. Is there a reason that C++ doesn’t incorporate garbage collection? I agree that memory management is a pain in da butt, which is why I never put in the time in try to dominate C++. Did the language stop evolving before garbage collection techniques arose? Is it that garbage collection will break old code (seems to me that one could allow destructors to be called and force the garbage collector to run on calling)?

C++ doesn’t incorporate garbage collection for efficiency purposes. The built-in garbage collection mechanisms for Java and C#, while they do their job for the most part, don’t do it in the best manner. Taking the memory management into your own hands allows you to get down to the nitty gritty and make sure everything is handled to make your code the fastest possible. Of course, this opens you up to memory leaks, putting memory in the wrong place, accessing incorrect memory locations (misuse of pointers), etc. Take a robust Java and a robust C++ application that do the same thing and run the two. If written correctly, the C++ one will outperform the Java one in terms of speed hands down. A good example of this is Telelogic’s Synergy CM software. After they switched over to Java, the software just exploded when it attempted to house a large software project (>500,000 files). Telelogic’s answer was just “Uhhhh it should work. It shouldn’t be crashing like that.” They never should have switched over to Java. However, there is something to be said for ease of use, which comes in handy if you aren’t developing absurd software that needs all the crazy memory management. I mostly do object oriented scripting in my line of work (lots of Perl), so I don’t have to deal with all of that. To be honest, I’m looking to switch to finance because all of this stuff makes me want to shoot myself in the face.

bchadwick/prosetti: I agree with you both. I would guess it takes me about 5-10x less time to develop the same piece of code in Java vs. C++. The reasons generally boil down to garbage collector in Java, safe strings, no pointers, better libraries. On the other hand, there are some applications where Java is just not very viable - e.g., anything realtime, fast throughput (like algo/program trading), anything where you can not afford the hit of garbage collection kicking in for 10 secs. trustasst: To learn C++, you are looking at about 1-2 years of effort if you have no programming background and you’ll end up being useless at it anyways. When people say they want a quant programmer, they typically mean someone with computer science background and some grounding in numerical methods, say lattices and finite element methods. To say you can do C++ is often a shortcut for saying that. So you may be setting yourself up for time waste here. But, if you are mostly after the Mega$$$, have you considered becoming a pr0n star?

btw, is OO necessary for CFA?

has anyone got an good recomendations for cources/ cert’s for vba in nyc?

I have to agree with Sherbeer on this… I was computer science major in college and granted I was never very good at programming then and have only gotten worse since but I haven’t used any of it as a research analyst not c++. not python. not java. not assembly code… not even vba now I really should get back to studying…