[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