Sounds like he has found the scripts to be deficient in some ways. I am not familiar with those products, other than name. They may have options that allow extensions, or the scripting may allow extensions, so he should first see if such are allowed and follow that trail to an appropriate programming language.
As others have written, a lot depends on the computer operating system he is using.
My favorites were also "C", assembly and for the old Burroughs medium system, "BPL". But in most cases I had to use what was available.
I concur with Tom. It really depends on what you're trying to do or to
whom you're trying to make yourself marketable.
Visual Basic .net is a pretty good place to start. You can make
programs that are very structured, or not so much, and it's pretty
easy to debug.
I hear a lot of good things about Python from people I know and respect
from newsgroup postings. In particular, it is recommended for numerical
analysis. I haven't used it, and I know it has some quirky properties
(apparently indentation level has semantic meaning, which makes me
shudder). But like I said -- folks that I know and respect from other
newsgroups have mentioned using it, and have liked it.
So if his primary interest is things that will help him deal with data,
and if he's got people he works with that he can go to with questions,
I'd say that Python is a not-too-bad choice.
My next two recommendations would be general-purpose numerical analysis
programs -- Scilab, which I use personally and can highly recommend, and
R, which I've heard about and is specifically for statistics. Scilab
makes it very easy to prototype communications and control systems
algorithms, and generally unpacks into C++ at a ratio of ten C++ lines
to one line of Scilab. R -- I dunno, but given that it's made by and
for statisticians, he may find it useful.
One additional plug: if he does any control systems analysis as part of
his economics work then he wants to look into Scilab. Scilab is made by
control guys, and has a lot of built-in functionality that make it a
natural for control systems analysis. (And yes, economists _do_ study
control theory -- I had a coworker once who got introduced to control
theory as part of her coursework for a bachelor's in economics. She
decided that the control theory was so fun she ended up getting her PhD
in mathematics, specifically in control theory).
Sounds like he's going to deal with very large data sets. If he's OK
with m$oft, I'd suggest the data is kept in Access or Excel. Then
start with VB.net or visual basic to work the data.
It does depend on what he wants to do, but the various flavors of
basic are easy to learn and teach you programming concepts.
John Larkin, who hangs out at sci.electronics.design, swears by "Power
Basic." He says he doesn't like programming per se, so PB kind of relieves
him of some of the details - it's "BASIC," after all. I don't know anything
about Python, but it would probably be worth a look-see.
I've been known to hack "Matt's" perl scripts, for example:
but I've heard that his scripts are really sucky when it comes to hostile
people hacking them.
Python is a 3rd generation scripting language and is pretty good.
(Perl was 2nd generation, and Tcl was 1st generation.) It has its
flaws (as do all languages), but it has a huge user community so there
are plenty of books and forums to buy or visit.
If he is into statistics, R is what everybody is using.
He should probably start with R, then think about Python.
By far and away, plain old C is the most useful and durable, and code
written in C will always be able to find a new home.
C++ is far more complex, so I would not start there. But all C++
compilers will happily compile plain old C, which is by design a subset
of C++. (The development went the other way: C++ is a superset of
Stay away from C# unless you don't mind being trapped by Microsoft.
Lots of business coding is done in Java, such as for websites. Java
works, but is slow. Microsoft has their own variant, J#m which works
quite well. Again, the question is if being entrapped in a proprietary
language is a problem.
Perl, Python, et all are fine languages for what they do, but C/C++ is
the heavy-duty language.
And so on. I made my living as a programmer for 20+ years.
C isn't an exactly subset of C++. It comes pretty close, and it comes
closer yet if the C code in question is written with good style.
Certainly if you say "All C++ compilers will happily compile C that is
_well written_ to _modern coding standards_", then you'll be much closer
to the mark.
Here's the story from the Stroustrop's mouth, with examples:
While this is true, it's far too deep in the details to matter in the
In a sense, and to overstate the case, it's a bit like saying that US
English and UK English are not quite identical, so let's learn Chinese
instead. (Only to later discover that Chinese has hundreds of dialects.)
The newer C and/or C/C++ compilers tend to be more rigorous about
enforcing the rules of the language than in the 1970s, which means that
perfectly functional old code is often rejected by new compilers. There
is a big debate in the programming community on if this is a good thing
or a bad thing. I'm in the just-fix-the-errors-and-get-on-with-it
school, but if the old codebase is valuable and huge, people just
disable the warnings. I think all modern compilers have a single switch
to return to the laxity of yore.
you can't go wrong with C, just read Kernigan and Ritchie and start
coding - pretty much any language is like any other language, just some
syntactic differences. If cost is an issue, use the VBA within MS
office apps and write clever macros
It is more like a missing link between assembly language and a
Things like C++ have too many layers of abstraction, and result
in massively bloated programs, so I tend to avoid that.
Given his intended use, I think that C (for all that I use it a
lot) is not the best choice. Among old languages, FORTRAN has massive
math libraries which could help.
Or for something somewhat newer and *very* math focused, APL is
a likely choice -- though it does use a weird characterset to represent
all the math operations.
It is infamous for being a write-only language. You can do
amazing things in a one line program, and weeks later not be able to
figure out how you did it -- but the program still works.
I've not taken the time to learn it, however -- I'm not that
strong in math.
If he were interested in artificial intelligence, the best
language is probably lisp -- or at least used to be.
Pascal is a good language to start with, actually, because it
makes it very difficult to write poorly-structured programs. However,
most implementations of it also make it rather difficult to make complex
programs which deal with strings a lot. (I wrote a membership database
program in it when I was learning it, and when I ported the basics of
that program to C, it was *much* easier.
BTW -- with linux systems, you can usually get gcc (GNU C Compiler)
which also includes A couple of versions of FORTRAN and possibly
even ADA (A language written for the DOD patterned after Pascal,
but designed for writing serious application programs, not for
teaching as Pascal was.)
However what you *don't* get with that Fortran is the ton of
math libs -- which are usually sold to mainframe users at
serious prices. You'll get a reasonable subset, but nothing
like the massive collection which is out there in the mainframe
Thanks for the tips, Don. FWIW, Fortran is what I learned in college.
Actually, I took a course, but never really learned it, because we had
exactly two computers on campus, both of which were IBM 360s. I think it was
Tuesdays that I had to turn in my punch cards at the computer center. On
Monday, I'd get my output -- which almost always had an error or two. <g>
You could go a month or more getting one program to run right. That meant
four tries. It's a wonder we learned anything then, huh?
I may have been one of the first computer hackers. I noticed a
Doctoral candidate submit a stack of punch cards, two full boxes, to
the computer operator for the IBM 360. I was punching up a large stack
for my GPSS (general purpose simulation system) class. That person
came back in only two hours!
Next day, I struck up a conversation and asked to see her header
cards, I must have something wrong. Anyway, started using those
mysterious codes and getting my runs back in two hours. I aced that
class and was even recognized by the prof. as writing some of the best
code he'd seen.
Heh, heh....I wasn't devious enough to do things like that. At least, not
That whole experience turned me off about programming. It wasn't until I got
my first Apple II+ and started programming in BASIC that I regained any
Then I got a RS M100 laptop and really started to have fun. I wrote a
merchandise-distribution program for my wife -- she was a fashion buyer for
26 retail stores -- in assembly, which saved her and her staff 30 hours or
so per week. So the company's IT department asked if they could convert it
for use on their minicomputers. I said sure, and gave it to them.
But I had written it for the 80C85, using all of the commands, and they
couldn't make head nor tail out of it. My wife continued to run it on the RS
Ed, that reminds me of my experience with Fortran. I was working for a service bureau in Portland, Oregon. I had taken a Fortran class at the community college, so was given the task of converting IBM 1130 Fortran to IBM 360 Fortran to run on a model 40 machine.
Huge difference in the versions and the way each handled the instructions. The customer was using the programs to schedule the loading of logs into ships for shipment to Asia. Had to load properly to keep from upsetting the ship's balance in the water.
Finally got the reports to satisfy the customer, but when the 360 would print a line on the printer, all the lights on the console would turn on for about 3 seconds, then one line would print! The Model 40 ran DOS with three partitions. All would stop while the line of print was assembled. What a POS! that Fortran was when it came to I-O.
We never took on another Fortran conversion and never had another customer try to use it.
Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here.
All logos and trade names are the property of their respective owners.