User Tools

Site Tools


Programming Languages



Thoughts On ...

Below is some excerpts from an e-mail I sent a colleague:

As you finish up your dissertation and look for the tools capable of
providing the manipulation power and ease of use you need you asked me for
recommendations.  I'll provide them with reasoning and some of this
reasoning could be used to justify the future tool sets employed by the 14
WS.  Mind you these are my opinions but are formed by experience with all
the tools discussed.
Main general use programming language:
1. Python - no surprise here as I'm now the squadron's python fan
boy.  However, I have used C, C++ and Java at various points and recommend
Python for several reasons.  Stick with version 2.7 for now as all the
libraries you need are available and heavily tested on this version.  See me
if you need some pointers on making your code portable to python 3.  With
the addition of libraries; numpy, scipy and matplotlib this language may do
everything you need.
    a. Ease of use.  Even a non-programmer can grasp how to program Python
    easily.  This is not saying they can program a complex several thousand line
    program overnight but within a week can be effective enough to accomplish
    real work.
    b. Clean syntax.  This goes with ease of use but also forces format
    rules without the flame wars and other issues associated with languages
    requiring more syntax, i.e. Java and C++.  Makes maintenance easier and with
    just a dash of comments can make a re-work a year later much more enjoyable.
    c. Large Library Set.  Python's batteries included philosophy ensures
    common tasks, i.e. reading files, database access and networking protocols
    are built-in and relatively easy to use.
    d. Rapid code-execute-debug cycle.  As a dynamically typed interpreted
    language Python allows you to code, run, debug, run again in a very tight
    cycle.  This increases productivity, a lot.   
2. C/C++ -- Faster than Java and closer to the machine.  If a compiled
language becomes necessary I recommend these over Java for the task you are
completing.  Doing numerical functions in Java is possible and it is possible
to do it quickly.   However, it takes a deeper knowledge of the language
than for C or C++ and in my opinion is cumbersome at best.  Java was not designed to be a
numerical language and the JVM can be a burden when trying to work on a
numerically intensive task.  Python can easily call C and C++ code and thus
you can easily write your slowest pieces of Python as a C function if you
really need the speed.  There is FORTRAN, it was specifically designed for
numerical computing.
3. Java - If you have to, use Java.  It is safer for inexperienced
programmers due to the lack of pointers.  It also works very well for large
complex projects and has many libraries for writing enterprise capable web
applications.  Java is also extremely good for embedded systems but given
the description of you tasks you are not doing either.
Statistical Language:
1. R - Open Source and free.  Works well with python, do a google
search for rpy2.  Is gaining ground on SAS but is not without its own sets
of issues.  Below are some reviews comparing R and SAS.  R works well on
Windows 7 Pro 64 bit, I have it installed on my laptop.  Let me know if you
want a demo.
Installing Rattle and R:  (Rattle is a data-mining GUI, you can use R
without coding R) 
As an aside:  look up TeX and LaTeX on google.  This is an extremely
powerful typesetting tool required by some of the current math and
scientific journals.  As a PhD/Scientist you should at least know what it
is, even if Word is your tool of choice.

These were just my thoughts and opinions to a non-computer science colleague, if there is a better way to frame the discussion or if you have any disagreements with the above let me know.

lang/start.txt · Last modified: 2013/03/01 13:03 by lowcloudnine