Hacker News new | past | comments | ask | show | jobs | submit login

Alright I admit it, I'm one of these crazy people. I've been programming in C/C++ since junior high. It was the second language I learned (the first being Pascal.) I guess because of that I never really saw it as "difficult." Everything is at least somewhat difficult when you're just starting out. Since C was one of the first things I learned that's where all my intuition about languages came from, so everything seemed "natural."

I still program in C++ as my primary language, but that's mainly because of the area that I work in - computer vision. In this field your production code has to run fast. Using something like Python or Java is just not an option (unless you want to wait 3 days to process an 8 hour video.) All the major computer vision libraries - OpenCV, Gil, ITK etc. are in C/C++ so I'm pretty much stuck. Prototyping is done in MATLAB so that speeds up development a bit.

Still, I love it. I don't even know if I can really articulate why, but there is just something fun about having to work with a language that's so close to the hardware. My undergrad degree was in electrical engineering, so to me the low level behavior of the processor is just something that's always in the back of my mind, and with C you can clearly see the assembly level code right through every line - and that's kind of pleasant.

I've always been kind of a math guy - so I have a bit of an obsessive need to understand how every element of the system I'm working with functions, right down to the physics of the transistors. If I don't understand something it's kind of like using a theorem or formula that you have never seen the proof for, or don't really understand. I'll be honest, that kind of scares the shit out of me.

Anyway, so that's a look into the psyche of a person who likes to program in C :)

That being said, nothing beats a nice high level language like Python, and for most tasks that's the best choice. But there will always be room in the world for a highly optimized language like C.




I wonder if you looked at Lush? (http://lush.sourceforge.net)? Created by Yann LeCun, a prominent Machine Learning researcher, it is one of the quirkier lisps but it interfaces with C/C++ easily and takes away some of the pain. I have used it to work with OpenCV . You can prototype like in MATLAB and end up with very optimized C code for deployment.


Sounds cool. I'll definitely look into it. Thanks!

I actually haven't looked at Lisp at all, but Paul's enthusiasm about it is pretty contagious, so it's next on my list of skills-to-learn.


Part of it, for me, is that you know a C++ version is the /final/ version, it's as fast and efficient as it can be. It's canonical, you won't have to do it again.


But if you have to do new features, you're screwed. So, yeah, I guess it is the final version...new ones are such a pain. (I don't dislike C++. It's fine for systems-level programming. But I'm not using it for anything else.)


C is not C++. You sound like a C programmer more than a C++ programmer.


Nah, I use C++ features pretty heavily. I'll even admit that I use Boost. I use STL when possible, because it's usually more efficient than hand coding and saves some time on implementing common algorithms.

C++ gives you the ability to put together really powerful frameworks to work with, but deep within the code you're still working with the same fundamentals.


STL and boost are the future of C++.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: