I was recently searching for A GOOD programming language to cling on to.. I have a worked for some time now, looking at various programming languages to get a feel of the available programing paradigms . Considering the fact that one does not generally have the luxury of time, I thought it would be more appropriate to first understand the available tools of trade before u get your hands dirty writing your own piece of code from scratch ( I am no demoralising the ones who are enthusiastic about writing their own code.. It is just that I believe, the (more) important question is what u added to the existing body of knowledge/code).
Being a person willing to hack my way out, in case I need to get something done, I have an ardent fan and I always would vouch for open-source programs
From the point of view of a researcher, I think the choice of a programming language is all the more important. As I write this post ( as the year 2010 draws to end ) I still find that the major programming languages have a long way to go to reach what I prefer to call intuitive programming. ( Mathematica is a , which is to be released sooner, has implemented free-form input, which I think is a significant step towards this).
Now given the fact that no one is yet there, I would restate the question I posed in the beginning of this blog, about the choice of programming language. I have read some posts on the internet and have summarized some of my personal opinion here with relevant references. I hope this post would come in handy for a person who is wondering about the choice of programming languages.
I am a researcher,and simply put, I am looking for the following features in a GOOD programming language ( designers note …),
- which can crunch numbers .. and is as fast as it can get (SPEED IS A MUST).. I know that hand-tweaking a C,C++ or FORTRAN code is (currently) the ONLY solution, considering practicality. (I am not all free to write an OPTIMAL ASSEMBLY code and hand optimize it. )..I would like the compiler or the interface to do this for me
- which is intuitive to program, i.e. when I am programming, I want to be thinking in terms of MY ALGORITHM rather than in terms of the control structures or data structures what the program has to offer ( as an example, if I am thinking about an algorithm to determine the similarity of two shapes, I would like to think in terms of intuitive terms such as curvature, norms etc and not in terms of foreach pixel in row , foreach pixel in col , etc..) . (I know this is a conflicting to the above statement, meaning it is simply too much to expect the performance of a low-level language from such a high level system. But this may be A feasible solution.. give the user low level access as well, and allow the user to hand optimise sections of the code .. Say for example including sections of assembly code in the main code) .. I dont think a black box approach will comply this and hence this practically eliinates almost all closed source programming languages and packages…
- (Obviously) I expect a LOT of others to use such a language.. this goes without saying. (Being a researcher I would not like to be put to the embarassing position of writing the drivers of whichever hardware I use, JUST because I am the first person in the world who is with this DEVICE + ProgrammingLanguage combo and even if I am willing to write one, I should not be ALONE in the WORLD who does it 🙂 ).