[NTLUG:Discuss] Wanting to speak the language

Greg Edwards greg at nas-inet.com
Thu Feb 24 11:32:42 CST 2005


Andrew Brown wrote:
> Well it is into the second day, CNN still can not make a definitive
> call... HA! 
> 
> Thanks for all the info. As one can see this is the challenge regarding
> my question. I essentially got the same spread of info from my Google
> searches. All of this leads me in one direction, if I want "TO SPEAK THE
> LANGUAGE" I just have to start "speaking" in a language and go from
> there... the C/C++ seems to be the Queen's English/Webster's English in
> the game although maybe not as eloquent as Java, the French, or as "pop"
> as Perl, the Spanish... ha!. I will move away from the initial exit
> polls on Perl and work with C++, although daunting as it may seem. If I
> can learn it; I can learn the others. 
> 
> Thanks again and I WILL be back with questions...
> 

I will go back to the basic question, what is your goal?

Is your goal is to get into open source projects?

Is your goal to understand how to write software?

Is your goal to do serious programming, or hack as a hobby?

You really need to answer this question first!  The idea of jumping into a 
programming language without understanding programming logic is a formula 
for frustration and disaster.  To get started you'll be learning how 
programming languages work, how programming logic works, along with a 
language.

If you want to build large programs you need to understand the concepts of 
encapsulation and the use of libraries.  If you want your programs to run 
in a reasonable amount of time you need to understand how algorithms 
effect processing time.  If you don't understand the differences between a 
bubble sort and a swap sort then you'll be fighting performance issues 
constantly.  Without having a full grasp on the differences between using 
dynamic and static memory for a solution you'll be fighting data set size 
limitations.

I know I'm going to piss some people off, but, I'm really tired of our 
industry getting a bum rap due to unstable code written by hacks that 
learned a language, but forgot to learn the process.  The process of how 
to build stable, well structured software is infinitely more important 
than the dialect used.  Learn the process first, then the language used is 
nothing more than selecting the tool that best fits the environment and 
learning the syntax of that language.

If you really want to learn how to write software, in general terms, I 
would suggest using Pascal as the training platform.  As far as using 
Pascal as a production language, you won't find allot of opportunities. 
However, more than any other learning tool, Pascal will force you to learn 
top down design, program structure, type management, error handling, 
bounds checking, encapsulation, pass by value/reference, pointers, 
debugging, etc.  Pascal will let you learn all these concepts while 
keeping handcuffs on you.  When you have gotten these concepts down you 
can move on to C where all of those constraints are removed and you can 
truly shoot yourself in the foot.

If you want to do anything beyond a simple reverse polish calculator, you 
better learn how to do structured programming with languages like C and 
C++.  If you want to do system file and configuration management, then 
scripting languages like Perl, Ruby, and Python are good.  If you want to 
do GUI work then Java and Tcl/Tk are good places to be.  Scientific 
analysis will send you down the Fortran and APL path.  Database gateways 
via CGIs are good reasons to look at PHP.

IMHO, C is unquestionably the king in system programming, and only 2nd to 
Assembler for performance.  Perl is probably king in the string processing 
arena.  C++ is a nice tool for presentation managers with independent 
objects.  Java has made network connectivity between distributed programs 
and hardware simpler and consistent.  And Fortran is still the top dog for 
number crunching.  However, NONE of these are good learning tools because 
they teach BAD habits.

-- 
Greg Edwards
New Age Software, Inc.
Custom software for an off the rack world
http://consult.nas-inet.com




More information about the Discuss mailing list