Some of my CS (Computer Science) oriented friends always wondered why I do not use OOP (Object-Oriented Programming) and I always answered “Because I have no idea what it is”. But this was until last summer, when Mr. Dogan Cem Gunduz gave me an introduction to OOP, over Java. Although I still have no idea about Java, I liked the idea as it would help greatly in development of greater projects.
First of all, the distinction is that, civil (or actually any other engineering discipline except Electronics and Computer) usually build one time solutions. The reusability is limited. Therefore, when a software package; for simulations, or optimization etc.; is being developed, assistance from more programming oriented professionals is definitely required. However, for one-shots such as thesis, homework or project based applications; development of complete system architecture is not needed.
Strict development guidelines for one-shot applications increase development time drastically, and as we are talking about non-CS people developing these products, the efficiency loss is even greater. Although some might claim that a proper development process will result in better runtimes, my personal view is that it does not cover the loss from development time.
This was my main reason for dropping development in FORTRAN and C++ for any scope of projects. As I do a lot of numerical work, Intel’s FORTRAN compiler and MKL (Math Kernel Library, which is built on the old standard IMSL, available on both FORTRAN and C++) provides everything I would need to work with. However, I do not want to go into the troubles of defining every variable, following strict pointer-related stuff, memory allocation procedures or string formats (Damn you “\0”) that crash my program with the tiniest mistake.
Now here is a big if. If I was developing a commercial product, I would completely disagree with what I said above. It’s just that I’m not; I’m working on an engineering problem and its solution. It’s no different than using your TI-89 to solve the same thing.
And MATLAB provides all of this. Is it slower in runtime compared to high-level languages where you can optimize your memory and CPU usage? Definitely. Does it have weird variable systems? Sure, it took me around 3-4 days to work around cells. But then again, do I have to pre-allocate memory for my huge x huge matrices or define them before? No. Can I actually edit them on the run? Yes, even though it creates a complete temporary copy and eats huge chunks of memory, I still can.
Finally, is it easier to use compared to other languages, for people with minimal CS education? Yes.