I'm a physicist with a very hard problem at hand and I could really use an advice. My problem - think an ugly mix of classical and quantum physics with a lot of monte carlo looping and stiff, nonlinear ODE solving - by far the most complex task I was to do and had it planned to finish it by summer. My programming reach is very limited, indeed, I usually write monolithic C codes (MinGW, Netbeans, Windows), smuggling C++ features every now and then, spawning ugly console and common controls dialog applications that spit out hard to read .dat files. If you think of all the bad things real programmers advise us against, all the bad habits I can shot my leg with, all the crappy ways to handle pointer or allocation bunched - I call that my programming skill. And I'm boring you with this so you get to grasp my shock and awe with this python thing.
Shocked, I tell you! Looking at python examples and documentation, PTSD kicked in. I felt like my old-school-catholic OCD grandmother witnessing a loose Mardi Gras party. Classes touching with no }; in between them, variables that can be this or that, no compiler overlord to serve ... I've seen things, man! I CLI'd man scanf just to slap myself back to reality.
So I just need a help with a strategic decision. Do I continue with my old ways or should I join this travesty?! On C/C++ up side, there is a familiarity with the language and work environment, some experience with numerical problems and threading. On the down side, I really lose a *lot* of time figuring programming details rather than figuring physics and that annoys me. I will get program done faster in C than in py because I still have to learn the damn thing, and it's clear advantage for C. Also I have to have some graphics for the problem at hand and I'm just loving what I see with wxGlade and mathlibplot. What I had in mind for graphing is some lib to throw in or maybe just some BitBlting and handling WM_PAINT to draw variables and parameters and how they relate to each other. Now, this is no small thing in several ways - when you have thing written and debugged, there is a lot of test runs to explore configuration space and having vector field drawn with MayaVi2 and not just have a history graph of an average of a single vector component is a great comparative advantage for python. But my concern is - is python really easier to write than C/C++? Anyone, who has done 5000+ LOC projects in both of them - I'd really appreciate input from an experienced developer.
As for debugging phase, I'm loving the fact that python is interpreted, but it seems to me that modern IDEs cancel this comparative advantage for python. But if bug *production* is much lower for py than c, this could be up side for python. But really can't get a good insight googling - how would you people compare debugging on C/C++ against python?
Science: it is my impression that py community has done unbelievable effort so you can do good science with it. And I'm loving scipy and gsl interfaces and all, but it's all in vain if ...execution times. I read of it a lot, but still not sure. What of threading in py? When I write C, I can make damn sure to load all my CPU's cores mouthful. Can a skilled programmer do the same in py? What about tight loops? Montecarlo is all about loops and having Interpreter and loops share the sentence? Yikes! How reliable is this pypy thing? I've seen runtimes of py with pypy au pair with c coding. Like, 10-20% behind, but I can live with that, especially if I can make it up in development time and preserved nervs. On the other hand, does pypy have compatibility issues known? Specially against scipy and gsl interfacing.
Calculations are to be done overnight at work, eight cored Intel's beasts with 24GB of RAM and brutal performance bus - a beauty. Actually, I got half of dozen of those, but I don't thing I can manage across network parallel computing.
So I know this is just a pile of random thoughts and no central question asked, maybe bordering with forum rules. But I'd really appreciate if someone would reflect, especially if my skills are subset of yours. If total time, from zero to final numerical results, and efficiency of the time spent - meaning focus on physics rather that language details - is to be used as criteria, do I stand the chance to get my money back with py?