Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

becoming a better programmer

151 views
Skip to first unread message

Scott

unread,
Sep 15, 2002, 2:20:33 AM9/15/02
to
Hello!

I need your advice! Last summer I took an introductory programming
course and learned a little bit of Scheme, even tho I didn't like it
too much...

HOwever, I realized that I want to be better at this stuff and learn
more about programming. It's fascinating. I talked to some of my
friedns and told them that I want to be a better programmer. I'm
thinking of learning a new programming language, but I do not know
which. Basically, I do not particularly care about the details, such
as if a language is windows-only. What I do care about is learning
something new.

So, one of my friends tells me that I should learn C++, because "it's
the best". But, seriously, he doesn't know anything but C++, so I'm
not too sure if he is qualified to give this type of advice...
Another friend tells me "define what you mean by 'better programmer'".
So, that guy wasn't too helpful either. So I thought about this A LOT,
and I'm wonderingif I could ask for advice on the internet.

Thanks in advance for your time...

Anony

unread,
Sep 15, 2002, 2:26:40 AM9/15/02
to

> So, one of my friends tells me that I should learn C++, because "it's
> the best". But, seriously, he doesn't know anything but C++, so I'm
> not too sure if he is qualified to give this type of advice...
> Another friend tells me "define what you mean by 'better programmer'".
> So, that guy wasn't too helpful either. So I thought about this A LOT,
> and I'm wonderingif I could ask for advice on the internet.
>

Read this book:

Code Complete
http://www.construx.com/stevemcc/cc.htm


Angelo Fraietta

unread,
Sep 15, 2002, 2:38:24 AM9/15/02
to

Scott wrote:


I believe that a programming language is just a tool -- like the paint brush is
in the hand of the artist, or the guitar in the hand of the master. I think you
should find out why you want to be a programmer -- what do you want to make? I
learnt using Pascal, because that was the language we used in computer science,
learnt C++ to design an object orientated multimedia program (which is now
becoming embedded), and now program also in VB (there is plenty of money there)
and Java. The language is only the tool -- being a good engineer is about
recognising the best tool for the job and using that -- the real power is in
your logic in the algorithms you design or implement. C++ is my favourite
language because I have the full power of accessing the underlying machine that
I am programming for. It is a bit easier from when I started now that there is
a standard library, but you have a flexibility and power with C++ that you don't
get with other languages (my opinion -- maybe biased?). Once you get C++
happening Java is a snack. Additionally, you can get a C++ compiler for free
(GNU) to do some experimenting.

Make projects for yourself -- i.e. problems -- that you can write code to solve
them. You learn the language this way (it is a bit like children playing --
they are actually building their muscles and learning coordination while having fun)


Good luck

--
Angelo Fraietta

PO Box 859
Hamilton NSW 2303

Home Page


http://www.users.bigpond.com/angelo_f/

There are those who seek knowledge for the sake of knowledge - that is CURIOSITY
There are those who seek knowledge to be known by others - that is VANITY
There are those who seek knowledge in order to serve - that is LOVE
Bernard of Clairvaux (1090 - 1153)

chuck starchaser

unread,
Sep 15, 2002, 2:44:54 AM9/15/02
to
On Sun, 15 Sep 2002 06:26:40 GMT, "Anony" <anon_...@notahost.org>
wrote:

Excellent advice! Non-language-specific, clear, funny... My all time
favorite!


Marc Spitzer

unread,
Sep 15, 2002, 3:14:51 AM9/15/02
to

Well my $0.02 is that to be a better programmer you need to get the
tools you need to program better in your toolbox(aka brain). The 2
big tools are:
1: the ability to manage complexity and keep track of the details that
you can not manage out of existance.
2: the ability to analize a problem and translate the solution to
something that a very stupid device(computer) can execute correctly.

To do this you need much more then knoledge of a given language. If
you look at CS education you do not get taught how to code, you are
expected to figure it out on your own. The hard stuff is what they
cover in class.

Here is an online book you might want to look at:
http://www.htdp.org/

and you can get the enviorment for the book at:

http://www.drscheme.org/

When you are starting out you should not spend a lot of time learning
a language but learning the tools that you need to implement your
solution in what ever language you are using.

good luck

marc

Newbie

unread,
Sep 15, 2002, 3:34:10 AM9/15/02
to

"Scott" <otmoro...@yahoo.com> wrote in message

> So, one of my friends tells me that I should learn C++, because "it's the
best".

The guy must be joking. HTML is the king. Learn it first.


Ilya

unread,
Sep 15, 2002, 4:52:13 AM9/15/02
to
Scott wrote:
> I need your advice! Last summer I took an introductory programming
> course and learned a little bit of Scheme, even tho I didn't like it
> too much...

Good choice for a start. Maybe in time it'll even grow on you...

> HOwever, I realized that I want to be better at this stuff and learn
> more about programming. It's fascinating. I talked to some of my
> friedns and told them that I want to be a better programmer. I'm
> thinking of learning a new programming language, but I do not know
> which.

Being a programmer isn't about learning new languages. It's about
learning the ideas in computer science. I remember when one of my profs
said, "Have you ever missed having closures (aka lambda) in C? Of course
not, because when you code in C, you start thinking in C, and C has no
concept of closures, so how can you want something that you cannot
imagine?" So don't seek to learn languages - seek to learn ideas.
Languages just happen to be a suitable medium for doing so, but don't
get stuck on any one type of language either.

If you're completely stuck, just learn _something_. In the worst case,
you'll hate it and learn something different, and even that may not
necessarily be a bad thing.

> So, one of my friends tells me that I should learn C++, because "it's
> the best".

Languages are just tools. C++ is good for some tasks. Other languages
are better suited for others. Learn several, then learn to chose the
best one for the job.

Ilya

Peter Ward

unread,
Sep 15, 2002, 4:53:27 AM9/15/02
to
Newbie wrote:

I hope you are joking. HTML is not a programming language.

Thien-Thi Nguyen

unread,
Sep 15, 2002, 5:13:03 AM9/15/02
to
otmoro...@yahoo.com (Scott) writes:

> as if a language is windows-only. What I do care about is learning
> something new.

learn verilog or vhdl.
design hardware.

thi

Tim Hammerquist

unread,
Sep 15, 2002, 5:41:45 AM9/15/02
to
Scott graced us by uttering:

> So, one of my friends tells me that I should learn C++, because
> "it's the best". But, seriously, he doesn't know anything but
> C++, so I'm not too sure if he is qualified to give this type
> of advice...

A good point. As the (obscure) music
artist Steve Taylor once sang:

So they love Jerry Lewis in France...
Does that make him funny?

> Another friend tells me "define what you mean by 'better
> programmer'". So, that guy wasn't too helpful either.

Looks like he was thinking like a programmer.

To be a truly good programmer, you'll have to define what you
want down to the most seemingly insignificant details, since
computers have less than intuition than Alicia Silverstone.
(She's cute, but oh so dumb.)

> So I thought about this A LOT, and I'm wonderingif I could ask
> for advice on the internet.

HTH
Tim Hammerquist
--
If Microsoft built cars, the oil, gas, and alternator warning lights would
be replaced by a single "general car fault" warning light.

Tony L. Svanstrom

unread,
Sep 15, 2002, 6:06:41 AM9/15/02
to
Scott <otmoro...@yahoo.com> wrote:

> So, one of my friends tells me that I should learn C++, because "it's the
> best". But, seriously, he doesn't know anything but C++, so I'm not too
> sure if he is qualified to give this type of advice... Another friend
> tells me "define what you mean by 'better programmer'". So, that guy
> wasn't too helpful either. So I thought about this A LOT, and I'm
> wonderingif I could ask for advice on the internet.

Figure out what you'd have to the most fun programming right now, then
just sit down and hit that huge wall of "what now"-problems and start
tearing it down.


/t
--
# Per scientiam ad libertatem! // Through knowledge towards freedom! #
# Genom kunskap mot frihet! =*= (c) 1999-2002 to...@svanstrom.com =*= #

perl -e'print$_{$_} for sort%_=`lynx -source svanstrom.com/t`'

Eric J. Roode

unread,
Sep 15, 2002, 7:56:19 AM9/15/02
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

otmoro...@yahoo.com (Scott) wrote in
news:b5a31bec.02091...@posting.google.com:

> HOwever, I realized that I want to be better at this stuff and learn
> more about programming. It's fascinating. I talked to some of my
> friedns and told them that I want to be a better programmer. I'm
> thinking of learning a new programming language, but I do not know
> which.

...


>
> Thanks in advance for your time...

In my opinion, you should learn MANY languages. You won't necessarily
use then, and don't learn them all at once (that's confusing), but
knowing how different languages approach similar problems, and knowing
the strengths and weaknesses of various languages, is an excellent way to
become a better programmer.

I would especially encourage you to learn an assembly language at some
point. You may never use it (you will probably never use it), but
knowing how the computer operates at its lowest level is extremely
useful, and will give you an edge over programmers who don't know that.

Aside from knowing several languages, the next best thing you can do is
to learn various algorithms and techniques, and how they're done in
various languages. Take a course on data structures and/or algorithms.
It may be confusing and abstract, but you'll be surprised years down the
road how much you use the information.

Also, along the way, it would behoove you to develop your own programming
style -- how you lay a program out, how you use variables, how you name
them, how you organize things to minimize your effort and the number of
bugs that you introduce. You will acquire your own style over time,
especially as you review your programs after they're written and as you
read code that others have written.

Good luck! :-)

- --
Eric
print scalar reverse sort qw p ekca lre reh
ts uJ p, $/.r, map $_.$", qw e p h tona e;

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 7.0.3 for non-commercial use <http://www.pgp.com>

iQA/AwUBPYR1mmPeouIeTNHoEQKkqgCgiuH5BbwPp+s046kQIrYIcnau1sIAoJW6
NfOa+xCh4DCgRwjQA2OFfp8D
=byAQ
-----END PGP SIGNATURE-----

Simon Harvey

unread,
Sep 15, 2002, 8:03:10 AM9/15/02
to
--
**If at first you don't succeed - destroy any evidence that you tried!**

"Scott" <otmoro...@yahoo.com> wrote in message
news:b5a31bec.02091...@posting.google.com...


Hi Scott,

Well you got a lot of good advice up there, but they kinda skipped around
the issue a bit so I'll try and fill in the gaps:

I asked about a particular language to learn and although what eveyone said
above was great advice you DO still need to pick one or two to play with:

I started learning programing about 3 year ago and though i might not be a
shit hot as a lot of the guys here, I have the added advnatage of a. still
being a learner, and b. remembering what those very very first steps were
like.

So without further adue I'm going to suggest:
Language 1:

- Java - In my opinion it is definately one of, if not the best language for
a beginner who wants to learn modern programming eg Object Oreiented.
Java takes an awful lot from C++, which is also a very impressive language,
but it is also more complicated than java.
Java is deliberately very powerful but does a great job of hiding the
complexities of C++ and does a good job of watching out for you as you
learn. It will also take you 85% there if you want to go that final mile
and take on the mother language C++

The following books in conjunction with the internet (java is very well
supported on the net!) will get you to a more than competent level:

1. Thinking in Java by Bruce Eckel - Somehow manages to cover just about the
entire language - bells and whistel en all, all in one book!. Very good at
explaining the complex stuff like it were simple as pie!

2. Java for student by bell and parr(I think) - It is the other room!

Language 2

Depends on what sort of stuff you'd like to do with your programming. If you
want to look into cgi stuff and making dynamic web pages choose perl
Perl is ok (in my opinion) I dont think its the nicest language to learn
first off. I'm glad I came from a partial java background first.

If you want another language where you can make GUIs rapidly then I'd choose
VB - its a nice and straight forward language that is good for quick and
dirty programs but then you would use C++ java for harder work


The best advice though would be to listen to what everyone in this thread
says and follow up on conflicting suggestions - look into both sides of any
disagreements

Take care and enjoy

Simon


Pascal Costanza

unread,
Sep 15, 2002, 8:27:49 AM9/15/02
to
Eric J. Roode wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> otmoro...@yahoo.com (Scott) wrote in
> news:b5a31bec.02091...@posting.google.com:
>
>
>>HOwever, I realized that I want to be better at this stuff and learn
>>more about programming. It's fascinating. I talked to some of my
>>friedns and told them that I want to be a better programmer. I'm
>>thinking of learning a new programming language, but I do not know
>>which.
>
> ...
>
>>Thanks in advance for your time...
>
>
> In my opinion, you should learn MANY languages. You won't necessarily
> use then, and don't learn them all at once (that's confusing), but
> knowing how different languages approach similar problems, and knowing
> the strengths and weaknesses of various languages, is an excellent way to
> become a better programmer.

I totally agree and want to add that you should make sure to not only
learn different languages but also languages from different programming
paradigms. Different problems need different approaches, and to know
different approaches means to be able to solve more problems adequately.

Here are some suggestions:

* functional programming: Scheme, ML, Haskell
* imperative programming: Pascal, Modula-2, C
* object-oriented programming: Java, Smalltalk, Ruby, gbeta
* logic programming: Prolog

Some other languages allow to you to mix various paradigms: C++, Common
Lisp, Objective CAML, Python, Leda

Also make sure in the long run that you get to know both dynamically
typed (for example Scheme, Lisp, Smalltalk) and statically typed
languages (for example Haskell, gbeta, CAML, Java).

(I have definitely forgotten some, and the categorization is surely not
exhaustive.)

It will take you a while to become a really good programmer but it's
worth it. There's no general recommendation which language to start
with, just go with your gut feelings. There is no single "best"
language, all have their different tradeoffs and resolve different sets
of forces. And don't believe in hype: current trendy languages are not
necessarily good languages to start with with regard to the learning
perspective. (However, it might be good for economical reasons to
include them in the long run. ;)

All the best,
Pascal

Patricia Shanahan

unread,
Sep 15, 2002, 8:37:28 AM9/15/02
to

Eric J. Roode wrote:
...


> I would especially encourage you to learn an assembly language at some
> point. You may never use it (you will probably never use it), but
> knowing how the computer operates at its lowest level is extremely
> useful, and will give you an edge over programmers who don't know that.

While the model presented by an assembly language is a useful level to
know, it is way above "how the computer operates at its lowest level".
It is just a symbolic representation of the lowest level that is
directly available to the programmer.

> Also, along the way, it would behoove you to develop your own programming
> style -- how you lay a program out, how you use variables, how you name
> them, how you organize things to minimize your effort and the number of
> bugs that you introduce. You will acquire your own style over time,
> especially as you review your programs after they're written and as you
> read code that others have written.

Don't get too wedded to any one style. Flexibility in styles is just as
valuable as flexibility in choice of language.

A style that works well in one language may not work so well in another.
For example, languages have different rules about where variable
declarations can be placed.

Also, large projects often have a required style for all code in the
project.

Patricia

Thaddeus L Olczyk

unread,
Sep 15, 2002, 8:53:39 AM9/15/02
to

If you like to get advice on prgramming from a person who wrote for
a company that has a reputation of producing shody products, and
libraries that are poorly structured.

Arash Dejkam

unread,
Sep 15, 2002, 8:51:04 AM9/15/02
to
Hi!

I recommend starting with C, not because its the king of languages or
because I love it etc... just because most of todays languages use C syntax
and concepts. if you know C well learning many other languages like Java,
PHP, ... would be much easier.
Then move on to C++ and learn the concepts of object oriented programming...
my recommended source is Bruce Eckel's "thinking in C++" which is available
as PDF:
http://www.mindview.net is his url.
I also recommend not moving to C++ before learning C well, in other words
don't move to Object Oriented Programming before you feel you are good at
Structural Programming, I know many people here may object but this is my
opinion.
after this I recommend 3 steps, which are a little boring but I think
without knowing them one can't name himself a programmer:
1- Learn how a compiler works and whats acctually happening in CPU, Ram,
etc... when your program is running. learn some assembly programming just to
become familliar with it and try to write some simple assembly programs.
2- Learn general programming concepts and algorithms.
3- Learn some methodologies and analysis and design strategies.

let me add that me too learned programming just because I loved programming
and no other reason. I'm also a self-taught programmer, as I remember the
only language I learned with a teacher was C when I was 12 :)

Arash Dejkam
http://portfolio.dejkam.com


"Scott" <otmoro...@yahoo.com> wrote in message
news:b5a31bec.02091...@posting.google.com...

Dave Cross

unread,
Sep 15, 2002, 9:08:06 AM9/15/02
to
On Sun, 15 Sep 2002 13:03:10 +0100, Simon Harvey wrote:

> Language 2
>
> Depends on what sort of stuff you'd like to do with your programming. If
> you want to look into cgi stuff and making dynamic web pages choose perl
> Perl is ok (in my opinion) I dont think its the nicest language to learn
> first off. I'm glad I came from a partial java background first.

Please don't promote the fallacy that Perl is a CGI-only language. Perl
is a general purpose language and CGI programming is only one area where
it is particularly popular.

I've been programming in Perl for seven years, and well under half of
that work has been CGI programming.

Dave...

--
Shoot some of those missiles, think of us as fatherless scum
It won't be forgotten 'cause we'll never say anything nice again
Will we?

Simon Harvey

unread,
Sep 15, 2002, 9:30:33 AM9/15/02
to

--
**If at first you don't succeed - destroy any evidence that you tried!**

"Arash Dejkam" <dej...@softhome.net> wrote in message
news:am1vts$1roq8$1...@ID-97842.news.dfncis.de...


I'm not convinced - as you say, C++ is the king of all languages and it is a
great language at that, but I dont think someone just starting programming
should be needlessly exposed to the really advanced parts of the subject
unecessarily. Java would let him build experience and confidence as it would
keep a lot of the more triky elements at bay whilst he concentrate on
fundementals

Simon


Simon Harvey

unread,
Sep 15, 2002, 9:33:46 AM9/15/02
to
> Please don't promote the fallacy that Perl is a CGI-only language. Perl
> is a general purpose language and CGI programming is only one area where
> it is particularly popular.

A good point to raise Dave. I didnt (mean to) imply that perl was only for
cgi prgramming - just that if that was what he would like to do, then perl
is the obvious choice. He could indeed use C++ for cgi - it's obviously not
just for cgi either. I was just trying to imagine why he might like to
program and give him suggestions for a couple of scenarios

A good point you have! - Yoda

Simon


Arash Dejkam

unread,
Sep 15, 2002, 9:51:19 AM9/15/02
to

"Simon Harvey" <noth...@homtaild.com> wrote in message
news:810h9.5708$571.534555@wards...

Dear Simon,

First of all I didn't say C++ is the king of languages or anything like
that, read my text carefully. I even currently like Java more than C++
myself.
secondly I'm not rigid about my opinion, maybe I'm a little biased or my
opinion is becuase when I learned C and C++ there was no Java :)
Why I recommend starting with C is to feel the underlying events happening
in a computer when a program is running and to know how stupid a computer is
!
I think if one start with Java may assume that computer is a very
intelligent thing that even understands some humanly concepts like Objects,
Classes, Inheritance,etc...
anyway, I have never been a programming teacher so I may not be good person
to talk about this.
this is my own opinion extracted from my own learning experiences.

Arash


Chris Smith

unread,
Sep 15, 2002, 9:52:37 AM9/15/02
to
Thaddeus L Olczyk wrote ...

> >Excellent advice! Non-language-specific, clear, funny... My all time
> >favorite!
> >
> If you like to get advice on prgramming from a person who wrote for
> a company that has a reputation of producing shody products, and
> libraries that are poorly structured.

So? It's a good book. It gives good advice. Who cares whether the
author's employer follows that advice?

Chris Smith

avecfrites

unread,
Sep 15, 2002, 10:04:34 AM9/15/02
to
Since this is a Perl group, I'll assume you're interested in Perl.
If you're interested in Internet/web programming (versus, say,
embedded controller programming), you should probably
learn Perl and Java, along with HTML, XML, CGI, and
HTTP.

For Perl, you could read through www.perlmonks.com.
It's free, and newbie-friendly.
--
If you get any important email, mHook will push it to your cell phone.
Peace of mind, at http://www.mhook.com/


"Scott" <otmoro...@yahoo.com> wrote in message
news:b5a31bec.02091...@posting.google.com...

Joona I Palaste

unread,
Sep 15, 2002, 10:15:26 AM9/15/02
to
avecfrites <avecf...@yahoo.com> scribbled the following
on comp.lang.java.programmer:

> Since this is a Perl group, I'll assume you're interested in Perl.
> If you're interested in Internet/web programming (versus, say,
> embedded controller programming), you should probably
> learn Perl and Java, along with HTML, XML, CGI, and
> HTTP.

"This is a Perl group"? Take a look where this was cross-posted to:
comp.lang.c++
comp.lang.lisp
comp.lang.java.programmer
comp.lang.perl.misc

--
/-- Joona Palaste (pal...@cc.helsinki.fi) ---------------------------\
| Kingpriest of "The Flying Lemon Tree" G++ FR FW+ M- #108 D+ ADA N+++|
| http://www.helsinki.fi/~palaste W++ B OP+ |
\----------------------------------------- Finland rules! ------------/
"C++. C++ run. Run, ++, run."
- JIPsoft

Anony

unread,
Sep 15, 2002, 10:32:13 AM9/15/02
to

"Thaddeus L Olczyk" wrote
>
> >> Code Complete
> >> http://www.construx.com/stevemcc/cc.htm

>
> If you like to get advice on prgramming from a person who wrote for
> a company that has a reputation of producing shody products, and
> libraries that are poorly structured.

Thaddeus, have you actually read the book "Code Complete" ?

If you have read the book, please tell us why you think the book
is not useful.


Daniel T.

unread,
Sep 15, 2002, 10:56:06 AM9/15/02
to
otmoro...@yahoo.com (Scott) wrote:

How about another book suggestion:

"The Pragmatic Programmer" by A. Hunt and D. Thomas.

As far as what language to learn: Is there something that you want to do
that Scheme can't do? If so, then find out what language *does* do what
you want and learn it.

If you want to switch languages because you don't like Scheme, then
identify what you don't like about it and find a language that doesn't
do it.

Otherwise, you might as well stick with Scheme until you know more.

Simon Harvey

unread,
Sep 15, 2002, 11:10:49 AM9/15/02
to

> "I recommend starting with C, not because its the king of languages"

Apologies - I took this as the expression of an opinion. The language you
used is ambiguous, not that it matters. I still happen to disagree with you
though:

>I think if one start with Java may assume that computer is a very
>intelligent thing that even understands some humanly concepts like Objects,
>Classes, Inheritance,etc...

I think if you are thinking about programming computers, you are probably
quite aware that it isn't really smart at all! - in fact just a number
cruncher!

>this is my own opinion extracted from my own learning experiences


Mine Also


Thomas Stegen

unread,
Sep 15, 2002, 1:32:40 PM9/15/02
to
Joona I Palaste wrote:
> avecfrites <avecf...@yahoo.com> scribbled the following
> on comp.lang.java.programmer:
>
>>Since this is a Perl group, I'll assume you're interested in Perl.
>>If you're interested in Internet/web programming (versus, say,
>>embedded controller programming), you should probably
>>learn Perl and Java, along with HTML, XML, CGI, and
>>HTTP.
>>
>
> "This is a Perl group"? Take a look where this was cross-posted to:
> comp.lang.c++
> comp.lang.lisp
> comp.lang.java.programmer
> comp.lang.perl.misc

Can you say "flamewar"?

--
Thomas Stegen

ilias

unread,
Sep 15, 2002, 1:19:04 PM9/15/02
to
Simon Harvey wrote:
>>"I recommend starting with C, not because its the king of languages"
>
> Apologies - I took this as the expression of an opinion. The language you
> used is ambiguous, not that it matters. I still happen to disagree with you
> though:

I don't think his language is ambiguous.

I think you 'exraction process' is 'ambiguous'.

Could you please show me, how you extract the essence "C++ its the king
of all languages" out of the above text?

If you fail, try it again with the following, more complete text, which
i've copied for your convenience:

>> Hi!
>>
>> I recommend starting with C, not because its the king of languages or
>> because I love it etc... just because most of todays languages use C syntax
>> and concepts. if you know C well learning many other languages like Java,
>> PHP, ... would be much easier.
>> Then move on to C++ and learn the concepts of object oriented programming...

I'm very curious.

>>I think if one start with Java may assume that computer is a very
>>intelligent thing that even understands some humanly concepts like Objects,
>>Classes, Inheritance,etc...
>
> I think if you are thinking about programming computers, you are probably
> quite aware that it isn't really smart at all! - in fact just a number
> cruncher!

as you said: probably.

probably no.

probably yes.

If the OP is aware of the non-smartness, he will reject the suggestion.

If the OP is not aware of the non-smartness, he will take the suggestion
into account.

>
>>this is my own opinion extracted from my own learning experiences
>
> Mine Also

The process of extraction.

Precision.

Frank A. Adrian

unread,
Sep 15, 2002, 1:22:27 PM9/15/02
to
Thien-Thi Nguyen wrote:
> learn verilog or vhdl.
> design hardware.

Betcher ass.

A lot if the really good programmers I know have come out of hardware
design. It teaches modularity and functional thinking and an attempt at
minimizing or, at least, centralizing state (makes it too hard to test
otherwise).

Plus, nothing smokes out fuzziness of thought quicker than a piece of
hardware that won't run. You can run though millions of test cycles during
the time that a simulation would still be starting up, Of course, it is a
bit expensive if you take it all the way to silicon :-).

faa

Thomas Stegen

unread,
Sep 15, 2002, 1:30:08 PM9/15/02
to
Arash Dejkam wrote:
> Hi!
>
> I recommend starting with C, not because its the king of languages or
> because I love it etc... just because most of todays languages use C syntax
> and concepts. if you know C well learning many other languages like Java,
> PHP, ... would be much easier.
> Then move on to C++ and learn the concepts of object oriented programming...
> my recommended source is Bruce Eckel's "thinking in C++" which is available
> as PDF:
> http://www.mindview.net is his url.
> I also recommend not moving to C++ before learning C well, in other words
> don't move to Object Oriented Programming before you feel you are good at
> Structural Programming, I know many people here may object but this is my
> opinion.

I object. I would, in fact, say that what you are saying here
has very little basis in reality. And isn't OO structural programming...
In any event, both OO and procedural programming are under the
imperative paradigm and are very similar to eachother. An OO language
just offers a few more builtin abstractions to play with.

Learning C++ on the basis of the C you allready know is more often than
not a very bad idea. (most properly written C programs invoke undefined
behaviour when compiled as a C++ program)

The book you are recommending is good though.

> after this I recommend 3 steps, which are a little boring but I think
> without knowing them one can't name himself a programmer:
> 1- Learn how a compiler works and whats acctually happening in CPU, Ram,
> etc... when your program is running. learn some assembly programming just to
> become familliar with it and try to write some simple assembly programs.

Not boring.

> 2- Learn general programming concepts and algorithms.

Not boring.

> 3- Learn some methodologies and analysis and design strategies.

Maybe a bit boring to learn, but not boring to know.

Remember this. It can make boring stuff interesting if you
manage to put yourself in the right mindset.


--
Thomas Stegen

synthespian

unread,
Sep 15, 2002, 1:35:16 PM9/15/02
to
On Sun, 15 Sep 2002 08:56:19 -0300, Eric J. Roode wrote:

> n my opinion, you should learn MANY languages.

Many different approcahes? Functional, pure OOP, strong typed, weak
typed, scripting, etc


> I would especially encourage you to learn an assembly language at some
> point. You may never use it (you will probably never use it), but
> knowing how the computer operates at its lowest level is extremely
> useful, and will give you an edge over programmers who don't know that.
>
>

Is HLA (High Level Assembly) adequate? It's asembly, but it's got a
C-like syntax.
Regs
Henry


_________________________________________________________________
Micro$oft-Free Human 100% Debian GNU/Linux
KMFMS "Bring the genome to the people!
www.debian.org - www.debian-br.cipsga.org.br - www.debian-rs.org

synthespian

unread,
Sep 15, 2002, 1:37:43 PM9/15/02
to
On Sun, 15 Sep 2002 09:27:49 -0300, Pascal Costanza wrote:

(karate chop here)

> I totally agree and want to add that you should make sure to not only
> learn different languages but also languages from different programming
> paradigms. Different problems need different approaches, and to know
> different approaches means to be able to solve more problems adequately.
>
> Here are some suggestions:
>
> * functional programming: Scheme, ML, Haskell * imperative programming:
> Pascal, Modula-2, C * object-oriented programming: Java, Smalltalk,
> Ruby, gbeta * logic programming: Prolog
>
> Some other languages allow to you to mix various paradigms: C++, Common
> Lisp, Objective CAML, Python, Leda
>
> Also make sure in the long run that you get to know both dynamically
> typed (for example Scheme, Lisp, Smalltalk) and statically typed
> languages (for example Haskell, gbeta, CAML, Java).
>
> (I have definitely forgotten some, and the categorization is surely not
> exhaustive.)
>
>

What about Eiffel's "design by contract" approach?

A Bag Of Memes

unread,
Sep 15, 2002, 2:10:42 PM9/15/02
to

"Scott" <otmoro...@yahoo.com> wrote in message
news:b5a31bec.02091...@posting.google.com...
> I'm
> thinking of learning a new programming language, but I do not know
> which. Basically, I do not particularly care about the details, such
> as if a language is windows-only. What I do care about is learning
> something new.

As a reductionist, I recommend PDP-11 assembly language. It's elegant, easy
to pick up, and once you understand the fundamentals of how computers work
you will have a better idea of what all other languages are actually doing.

After that: Smalltalk.

synthespian

unread,
Sep 15, 2002, 2:06:39 PM9/15/02
to
On Sun, 15 Sep 2002 09:03:10 -0300, Simon Harvey wrote:


> Hi Scott,
>
> Well you got a lot of good advice up there, but they kinda skipped
> around the issue a bit so I'll try and fill in the gaps:
>
> I asked about a particular language to learn and although what eveyone
> said above was great advice you DO still need to pick one or two to play
> with:
>
>

Do you have a particular goal, or need? Maybe you just need to deploy
small scripts to do "little dirty jobs".
People like Perl for that - but that's because they hadn't come in contact
with Python, or perhaps Ruby.
Maybe you want to develop for the web. Consider Java, because of all the
bells and whistles.And it's a good general programming language, too.
Or, you want a language for operating system design: it would have
to be C/C++, because there's a huge legacy of code.
IM very, very HO, in my newbie experience (not a CS student, a medical
student with interest in bioinformatics/statistics/computer
algebra/medical informatics), Common Lisp will blow your mind. If you
study data structures in C (say, from Tannenbaum's book), for instance,
half of the time is all about what to do with the f*****g pointers. With
lisp, you can focus on the _problem_ and not so much on details that you
have to move out of your way to get the solution right.
However, be warned: it's not easy to make sense of the information that's
out there,
and it's so different, chances are you won't be able to ask some guy at
your local LUG to give you a hand on your problem. And lispers don't make
it easy for newbies, too: there aren't very many of the HOWTOs and stuff
to get you started. Apparently, they gather all their info from just
reading the code, which you don't know how to do yet And the specs:-)) We
_will_ get there, us newbies! :-) If you thought open source programming
was hard, finding out some things in lisp is cryptic or just a huge
learning curve, a huge amount of reading. And some things are just weird
:-)) Like "ring buffers" for string substitution. Turns out, you learn
what a ring buffer is, even though deep in your heart you know that there
would be an eeasier way in some scripting language. But, perhaps you end
up wanting to go and read Knuth, and that already indicates you're a
better programmer than the opens ource kid who just throws some code up on
the wall and see if it sticks...
So, for me, there's no question. When I first set out to learn an
"industrial" language (not a scripting language like Python, which BTW is
great) I did a lot of reading on the net and lurked at newsgroups. I came
to realize that there's a very good rationale for using Common Lisp, if
you just _listen_ to what the guys here at c.l.l. have to say (they're
pretty knowledgeable on other computer languages, too). And then good and
read some more. Also, you start to think deeper about programming in
general because there are a lot of things in lisp that aren't even on the
radar screen on other programming languages.

Cheers
Henry

Anno Siegel

unread,
Sep 15, 2002, 2:19:10 PM9/15/02
to
According to ilias <at_...@pontos.net>:

> Simon Harvey wrote:
> >>"I recommend starting with C, not because its the king of languages"
> >
> > Apologies - I took this as the expression of an opinion. The language you
> > used is ambiguous, not that it matters. I still happen to disagree with you
> > though:
>
> I don't think his language is ambiguous.
>
> I think you 'exraction process' is 'ambiguous'.
>
> Could you please show me, how you extract the essence "C++ its the king
> of all languages" out of the above text?

Easy: "s/I recommend starting with C, not because it/C++ i/"

Slightly more, but still not entirely, serious:

"I'll stay home, not because it rains, but because I'm tired" means, "It
is, in fact, raining, but that is not the reason I stay home, but...".
Similarly, the sentence above translates to "C++ is the king of languages,
but that's not the reason I recommend it, but...".

> If you fail, try it again with the following, more complete text, which
> i've copied for your convenience:

No need. The author of the sentence (I have lost attributions) slipped
and implied something he didin't mean to say. That was pointed out. No
one has claimed that he actually thinks C (or C++) is the king of
languages.

[rest snipped]

Anno

Scott

unread,
Sep 15, 2002, 2:23:24 PM9/15/02
to
"Anony" <anon_...@notahost.org> wrote in message news:<zKVg9.325409$aA.56983@sccrnsc02>...

> > So, one of my friends tells me that I should learn C++, because "it's
> > the best". But, seriously, he doesn't know anything but C++, so I'm
> > not too sure if he is qualified to give this type of advice...
> > Another friend tells me "define what you mean by 'better programmer'".
> > So, that guy wasn't too helpful either. So I thought about this A LOT,
> > and I'm wonderingif I could ask for advice on the internet.
> >
>
> Read this book:
>
> Code Complete
> http://www.construx.com/stevemcc/cc.htm

Thank you very much for your suggestion!

Do you think it is better to learn several languages at the same time
or to be more selective?

I would certainly like to know more languages rather than fewer, but I
thought that learning a new language is always a considerable effort.

Is it true that some languages are good for learning, while others
are better for real-wolrd programming?
If a certain language expresses programming paradigms better than
others, wouldn't it be a better choice for both learning and
real-world programming? If it is the case that , for example LISP is
better for learning, while C++ is better for real programming, would
the extra effor of learning C++ be justified if I do start with LISP?
On the other hand, would LISP's superiority for learning programming
be significant enough?


Thanks very much!

Simon Harvey

unread,
Sep 15, 2002, 2:26:07 PM9/15/02
to
>Could you please show me, how you extract the essence "C++ its the king
>of all languages" out of the above text?

"I recommend starting with C, not because its the king of languages"

- If you cant see why the words

"not because its the King of all languages"

might be read as an expression of opinion, then I don't know how to prove to
you that it does. Perhaps another example:

"I think you should like the band Metallica, not because they are talented,
articlate, witty, funky, passionate and did I say talented? You should like
them becuase they like brussell sprouts!" - In my opinion you could be
forgiven if you surmise that there is a *good chance* that I believe
Metallica to be talented, articlate, witty......

Do you get my point?

Anyway, I cant believe I'm actually discussing the finer points of English
language. I didnt even like English at school!!


Take Care mate

Simon

Simon Harvey

unread,
Sep 15, 2002, 2:28:35 PM9/15/02
to

--
**If at first you don't succeed - destroy any evidence that you tried!**

"A Bag Of Memes" <a@b.c> wrote in message
news:C24h9.457398$q53.15...@twister.austin.rr.com...


Holy s$t - you cant be serious right? Where did you pick up form the OP that
he wanted to learn assembly language!
I really love learning computing and all sorts of programming language but I
dram the line at assembly. I'm grateful that some people like it though!!

Kind regards
Simon


Russ Allbery

unread,
Sep 15, 2002, 2:45:04 PM9/15/02
to
In comp.lang.lisp, Simon Harvey <noth...@homtaild.com> writes:

> Holy s$t - you cant be serious right? Where did you pick up form the OP
> that he wanted to learn assembly language! I really love learning
> computing and all sorts of programming language but I dram the line at
> assembly. I'm grateful that some people like it though!!

I think it's a useful learning exercise for someone planning to do a lot
of programming to learn an assembly language at some point and write some
simple routines in it. I'm not saying that you should use it for anything
significant, but it's valuable to know how the processor actually executes
one's code in the end (even if you can and should ignore that knowledge
most of the time).

There are still occasional applications that can be helped by having a
touch of assembly language in a critical point, or cases where one needs
to examine the assembly language output of the compiler to figure out why
it's mis-optimizing something critical, if you do low-level programming.
It can also drill into your head some low-level concepts like how the
processor stack works and what a pointer *really* is.

And even if you're planning on living the rest of your life in a
high-level programming language that strongly discourages ever thinking
about such things, it can at least give you new-found appreciation for
just how much work that programming language is saving you. :)

I've found it useful in the same way that I found useful the experience of
implementing a file system when I took a class in operating systems. I
likely won't ever work on a file system again, but I now really
*understand* (for example) what an inode is, which has helped me a lot in
understanding, troubleshooting, and drawing conclusions about file systems
and file system behavior in areas even unrelated to programming.

--
Russ Allbery (r...@stanford.edu) <http://www.eyrie.org/~eagle/>

A Bag Of Memes

unread,
Sep 15, 2002, 2:57:33 PM9/15/02
to

"Simon Harvey" <noth...@homtaild.com> wrote in message
news:Lf4h9.8118$J47.606577@stones...

>
> Holy s$t - you cant be serious right?

Yes I can.

> Where did you pick up form the OP that
> he wanted to learn assembly language!

I didn't. He was asking how to become a better programmer. My experience
has been that programmers who know assembly have an advantage over those who
do not.

ilias

unread,
Sep 15, 2002, 3:12:27 PM9/15/02
to
Simon Harvey wrote:
>>Could you please show me, how you extract the essence "C++ its the king
>>of all languages" out of the above text?
>
> "I recommend starting with C, not because its the king of languages"
>
> - If you cant see why the words
>
> "not because its the King of all languages"

even if:

he referenced C. Not C++.

C != C++

> might be read as an expression of opinion, then I don't know how to prove to
> you that it does. Perhaps another example:
>
> "I think you should like the band Metallica, not because they are talented,

i like them.

especially

"Nothing else Matters"

Christopher Browne

unread,
Sep 15, 2002, 3:23:06 PM9/15/02
to
Quoth "Simon Harvey" <noth...@homtaild.com>:

> Holy s$t - you cant be serious right? Where did you pick up form the OP that
> he wanted to learn assembly language!
> I really love learning computing and all sorts of programming language but I
> dram the line at assembly. I'm grateful that some people like it though!!

People keep writing new Virtual Machines for /various/ languages, so
having some knowledge about this is something that any competent
programmer should have.

(Recent VMs: Everyone knows of JVMs, but recent new instances include
NET and the Perl 6 "Parrot" VM.)

If you have /some/ clue about dealing with bytecode, you have a good
understanding of how to attack /lots/ of related sorts of problems.
--
(reverse (concatenate 'string "gro.mca@" "enworbbc"))
http://www3.sympatico.ca/cbbrowne/bytecode.html
Sleep is a poor subsititute for caffeine. -Pat Dughi

Alan J. Flavell

unread,
Sep 15, 2002, 3:18:56 PM9/15/02
to
On Sep 15, Russ Allbery inscribed on the eternal scroll:

> I think it's a useful learning exercise for someone planning to do a lot
> of programming to learn an assembly language at some point and write some
> simple routines in it.

I don't want to make a big thing out of this, but...

I've been involved, at various times, with the lowest levels of
programming, i.e writing microcode below the normal assembler level,
as well as writing assembler code per se. On the whole, I would be
inclined to say that those experiences make me a worse programmer of a
high level language, since I find myself worrying quite
inappropriately about bit-level optimisation when I _ought_ to be
worrying about proper selection of algorithms and such.

Back in the Fortran-IV era and later, it was usually the case that,
for the most part, the compiler could produce better assembler code
than any of those around me who claimed to be writing their routines
in assembler for "efficiency". Just occasionally, one could get
better results by having the compiler print-out its assembler code
listing and then hand-optimising that. But only occasionally, and the
returns were rather small. On a number of occasions, taking out
instructions actually made the program slower (due to execution
pipelining and/or memory bank access interleaving being disrupted),
and it was by no means a rarity for an expert to make a program faster
by inserting NOP instructions at strategic places. But the later
optimizing compilers _knew_ how to do that anyway, and experts of that
calibre had more important things to do than save a tiny fraction of
the overall execution time of an individual piece of software.

> I'm not saying that you should use it for anything
> significant, but it's valuable to know how the processor actually executes
> one's code in the end (even if you can and should ignore that knowledge
> most of the time).

I think we're saying the same thing, but with somewhat different
emphasis...

cheers


Arash Dejkam

unread,
Sep 15, 2002, 3:39:05 PM9/15/02
to

"Thomas Stegen" <tst...@cis.strath.ac.uk> wrote in message
news:3D84C3A0...@cis.strath.ac.uk...

excuse me, I meant "procedural programming", I used "structural" word
mistakenly.

>
> Learning C++ on the basis of the C you allready know is more often than
> not a very bad idea. (most properly written C programs invoke undefined
> behaviour when compiled as a C++ program)
>
> The book you are recommending is good though.
>
> > after this I recommend 3 steps, which are a little boring but I think
> > without knowing them one can't name himself a programmer:
> > 1- Learn how a compiler works and whats acctually happening in CPU, Ram,
> > etc... when your program is running. learn some assembly programming
just to
> > become familliar with it and try to write some simple assembly programs.
>
> Not boring.
>
> > 2- Learn general programming concepts and algorithms.
>
> Not boring.
>
> > 3- Learn some methodologies and analysis and design strategies.
>
> Maybe a bit boring to learn, but not boring to know.
>
> Remember this. It can make boring stuff interesting if you
> manage to put yourself in the right mindset.
>
>
> --
> Thomas Stegen
>

I didn't say these three steps were boring for ME, I loved them when I was
learning them.
I meant it MAY be boring for scott who asked the question.

Arash

Ian Lazarus

unread,
Sep 15, 2002, 3:44:50 PM9/15/02
to
Why try to reinvent the wheel? If you want to learn computer science, read
the textbooks which form a computer science cirriculum.


Alec

unread,
Sep 15, 2002, 3:44:58 PM9/15/02
to
otmoro...@yahoo.com (Scott) wrote in message news:<b5a31bec.02091...@posting.google.com>...
> Hello!

>
> I need your advice! Last summer I took an introductory programming
> course and learned a little bit of Scheme, even tho I didn't like it
> too much...
>
> HOwever, I realized that I want to be better at this stuff and learn
> more about programming. It's fascinating. I talked to some of my
> friedns and told them that I want to be a better programmer. I'm

> thinking of learning a new programming language, but I do not know
> which. Basically, I do not particularly care about the details, such
> as if a language is windows-only. What I do care about is learning
> something new.
>
> So, one of my friends tells me that I should learn C++, because "it's
> the best". But, seriously, he doesn't know anything but C++, so I'm
> not too sure if he is qualified to give this type of advice...
> Another friend tells me "define what you mean by 'better programmer'".
> So, that guy wasn't too helpful either. So I thought about this A LOT,
> and I'm wonderingif I could ask for advice on the internet.
>
> Thanks in advance for your time...

Hi Scott

I have been programming for over 27 years now, and during that time I
have mastered well over a dozen languages that most folks probably
never even heard of.

Please do not pay attention to those who are saying that it really
does not matter what tool you use as long as <bla bla bla>. What tool
you use affects your thinking in very drastic ways that you may not
even realize.

As much as I would like to give a specific computer language
recommendation, it is hard:

As someone correctly mentioned you should certainly stay from hype
languages like Java, Perl, etc. They may make you more employable in
the short term, but in the long term they will make a crappy
programmer out of your, and there's no going back: bad habbits die
hard.

Many people expected a lot from Lisp, and given your background in
Scheme, Lisp would seem like a reasonable next step. The industry
realized over the years that while Lisp makes a fine language for
certain niche small to medium size projects, it has two serious
drawbacks: firstly, maintainability issues arise, because Lisp
programmers can never understand each other's code, and secondly, Lisp
teaches you bad programming style, as your code is usually a mess of
if's, conds, and so on. That is why it almost lost its relevance by
now. I can not say that I'm glad, because a lof of my own expertise is
wasted. Oh well, that's life.

I was one of the early adopters when C++ came out (C with classes),
and I'm still very fond of it. I think the standardization committee
and Bjarnee have done a wonderful job. C++, of course has its own
drawbacks, the most important of which being that you must not be a
half-wit if you want to learn to use it correctly. If you lack in the
brains department, you can still make a decent living as a programmer
coding in shite like Java or VB.

So it all depends on your own mental abilities and on your dedication

Good luck!

Thien-Thi Nguyen

unread,
Sep 15, 2002, 3:45:16 PM9/15/02
to
otmoro...@yahoo.com (Scott) writes:

> Is it true that some languages are good for learning, while
> others are better for real-wolrd programming?

it is true and false depending on the learner and how they relate
to the world. do you think these glyphs floating in front of your
face are "real"?

thi

Tim Josling

unread,
Sep 15, 2002, 3:46:06 PM9/15/02
to
Thaddeus L Olczyk wrote:

>
> On Sun, 15 Sep 2002 02:44:54 -0400, chuck starchaser
> <chuck_st...@email.com> wrote:

> >>Code Complete

> >>http://www.construx.com/stevemcc/cc.htm

> If you like to get advice on prgramming from a person who wrote for
> a company that has a reputation of producing shody products, and
> libraries that are poorly structured.

Another good related book is "Rapid Development". These books are in part
about getting a defined level of quality. Depending on the circumstances, a
poor level of quality may be what the company wants.

MSFT has a sophisticated system for monitoring the level of quality of systems
as they move through the development cycle. When the level of quality is
optimal for the company, they release. This does not mean the optimal level
for the customer though.

Time to market and competitive issues often take precedence over quality.

In a similar vein, ease of use take precedence over security, thus the many
Microsoft related viruses and security failures.

In summary, these are good books and you can use them to produce quality
systems, whatever your definition of quality is.

Tim Josling

Newbie

unread,
Sep 15, 2002, 3:52:00 PM9/15/02
to

"Peter Ward" <h...@ha.ha> wrote in message
news:am1hq7$gri$1$8302...@news.demon.co.uk...

> Newbie wrote:
>
> >
> >
> >"Scott" <otmoro...@yahoo.com> wrote in message
> >> So, one of my friends tells me that I should learn C++, because "it's
the
> >best".
> >
> >The guy must be joking. HTML is the king. Learn it first.
> >
> >
>
> I hope you are joking. HTML is not a programming language.
>
Alright, I'll take it back. Assembly is the king. Learn it first.


Jon Bell

unread,
Sep 15, 2002, 3:49:23 PM9/15/02
to
In article <b5a31bec.02091...@posting.google.com>,

Scott <otmoro...@yahoo.com> wrote:
>
>Do you think it is better to learn several languages at the same time
>or to be more selective?

Unless you're already really comfortable with programming in general, and
already know a couple of languages well, I sugggest you try to learn only
one language at a time. Less chance for confusion and linguistic
interference.

--
Jon Bell <jtbe...@presby.edu> Presbyterian College
Dept. of Physics and Computer Science Clinton, South Carolina USA

Arash Dejkam

unread,
Sep 15, 2002, 4:06:36 PM9/15/02
to

"Simon Harvey" <noth...@homtaild.com> wrote in message
news:Lf4h9.8118$J47.606577@stones...
>
>

You know why I learned assembly ??? because when I used to write C++
programs without knowing assembly and the program had a bug and the computer
was showing me a bunch of assembly code for debugging but I didn't know
anything about it, I thought what is this language that this stupid computer
understands and I don't. so I felt disrespect and learned it :)
just joking.
Assembly (actually machine code) is the only language that computer
understands directly, so knowing this is essential.
I don't mean every programmer must learn assembly (human readable version of
machine code), but knowing it opens a new view to the programmer. I think
learning it is a revolution in the live of a programmer! at least it was for
me :)

Arash


John W. Krahn

unread,
Sep 15, 2002, 4:30:32 PM9/15/02
to
Alec wrote:
>
> As someone correctly mentioned you should certainly stay from hype
> languages like Java, Perl, etc.

Excuse me, I don't want to start a flame war but, under what definition
of hype are you using to define Perl?


John
--
use Perl;
program
fulfillment

Arash Dejkam

unread,
Sep 15, 2002, 4:30:10 PM9/15/02
to

"Ian Lazarus" <nob...@nowhere.net> wrote in message

> Why try to reinvent the wheel? If you want to learn computer science, read
> the textbooks which form a computer science cirriculum.

this is true in the case of fight between Betamax and VHS, but not in this
case!
Assembly does not belong to the history, every program running on any
computer is still converted to Assembly (Machine Code) before running. and
probably will be converted in future as long as computer technology is based
on 0-1.

Arash


Roy Smith

unread,
Sep 15, 2002, 5:06:20 PM9/15/02
to
"Arash Dejkam" <dej...@softhome.net> wrote:
> Assembly does not belong to the history, every program running on any
> computer is still converted to Assembly (Machine Code) before running. and
> probably will be converted in future as long as computer technology is based
> on 0-1.

Well, that may be true, but by the same logic, every programmer should
learn about microcode, and digital circuit design, and semiconductor
physics. Where does it end? The idea is to build abstractions which
eliminate the need to know what's going on at the deeper levels.

In some ways, knowing about machine architecture can be a detriment. I
remember when I first learned C on a pdp-11, I knew the machine
architecture inside and out, and my C code showed it! At the time, I
thought I was being clever and efficient, when in reality I'm sure I was
just writing unportable code.

Then I moved to the Vax and 68k-based Suns, where I was vaguely aware of
how the instruction set worked. Eventually I moved to machines
(PowerPC, Sparc, Alpha) where I honestly have no clue what the
architecture, let alone the assembly language, looks like. It's just
not important.

Pascal Costanza

unread,
Sep 15, 2002, 5:17:42 PM9/15/02
to
Scott wrote:

>
> Thank you very much for your suggestion!
>
> Do you think it is better to learn several languages at the same time
> or to be more selective?

You have to keep in mind that computer science is a relatively young
field, at least in comparison to other sciences. So there are still no
general rules that have come up as of yet. Mostly you have to figure out
for yourself what works and what doesn't work.

My guess is that it's better to concentrate on one language at a time,
but your mileage may vary.

> I would certainly like to know more languages rather than fewer, but I
> thought that learning a new language is always a considerable effort.
>
> Is it true that some languages are good for learning, while others
> are better for real-wolrd programming?

This depends on how you define "real world". ;)

> If a certain language expresses programming paradigms better than
> others, wouldn't it be a better choice for both learning and
> real-world programming? If it is the case that , for example LISP is
> better for learning, while C++ is better for real programming, would
> the extra effor of learning C++ be justified if I do start with LISP?
> On the other hand, would LISP's superiority for learning programming
> be significant enough?

Programming languages that are pure in the sense that they support a
single programming paradigm are interesting because they show you how
far you can go in a single direction. However, there are studies that
show that good programmers can easily switch in their minds between
different programming paradigms and that this the main reasons why they
are good. So in the long run it's probably better to choose a language
that supports different paradigms. However, such language have to make
some compromises and are therefore harder to learn. I think that "pure"
programming languages are somewhat easier to learn in the beginning.

Don't worry though. If you are willing to invest in learning several
languages/paradigms you will, at some stage, have a very easy time to
learn new ones. Don't let anyone tell you what _the_ best language or
_the_ best tool is - if you stay open-minded you will have developed
your own criteria and your own judgements, and that's the best thing
that can happen to you!

Pascal

White Wolf

unread,
Sep 15, 2002, 5:25:21 PM9/15/02
to

Is there a computer programming language for trolls? ;-)

White Wolf

unread,
Sep 15, 2002, 5:29:31 PM9/15/02
to
Scott wrote:
> Hello!
>
> I need your advice! Last summer I took an introductory programming
> course and learned a little bit of Scheme, even tho I didn't like it
> too much...
>
> HOwever, I realized that I want to be better at this stuff and learn
> more about programming. It's fascinating. I talked to some of my
> friedns and told them that I want to be a better programmer. I'm

> thinking of learning a new programming language, but I do not know
> which. Basically, I do not particularly care about the details, such
> as if a language is windows-only. What I do care about is learning
> something new.
>
> So, one of my friends tells me that I should learn C++, because "it's
> the best". But, seriously, he doesn't know anything but C++, so I'm
> not too sure if he is qualified to give this type of advice...
> Another friend tells me "define what you mean by 'better programmer'".
> So, that guy wasn't too helpful either. So I thought about this A LOT,
> and I'm wonderingif I could ask for advice on the internet.

Since I see that this topic gets cold-flame, and linguistics and
philosophy I guess I add my wisdom here. I believe I have the best ever
possible advice ;-)

The best way to become a better programmer is to write many good programs.

Really! This was not meant to be a joke.

WW

Angelo Fraietta

unread,
Sep 15, 2002, 6:15:40 PM9/15/02
to

White Wolf wrote:

> Scott wrote:
>
>> Hello!
>>
>> I need your advice! Last summer I took an introductory programming
>> course and learned a little bit of Scheme, even tho I didn't like it
>> too much...
>>

> Since I see that this topic gets cold-flame, and linguistics and
> philosophy I guess I add my wisdom here. I believe I have the best ever
> possible advice ;-)
>
> The best way to become a better programmer is to write many good programs.
>
> Really! This was not meant to be a joke.
>
> WW
>

Good advice. Try to get work in a team environment and try not to get
emotionally involved with your code. This will enable you to look critically at
your code rather than just feeding your ego.

--
Angelo Fraietta

PO Box 859
Hamilton NSW 2303

Home Page


http://www.users.bigpond.com/angelo_f/

There are those who seek knowledge for the sake of knowledge - that is CURIOSITY
There are those who seek knowledge to be known by others - that is VANITY
There are those who seek knowledge in order to serve - that is LOVE
Bernard of Clairvaux (1090 - 1153)

Arash Dejkam

unread,
Sep 15, 2002, 6:26:30 PM9/15/02
to

"Roy Smith" <r...@panix.com> wrote in message
news:roy-2E6D58.1...@reader1.panix.com...

> "Arash Dejkam" <dej...@softhome.net> wrote:
> > Assembly does not belong to the history, every program running on any
> > computer is still converted to Assembly (Machine Code) before running.
and
> > probably will be converted in future as long as computer technology is
based
> > on 0-1.
>
> Well, that may be true, but by the same logic, every programmer should
> learn about microcode, and digital circuit design, and semiconductor
> physics. Where does it end?
>
> The idea is to build abstractions which
> eliminate the need to know what's going on at the deeper levels.
>

I'm not against abstraction, how can one be against it. but I think we
cannot have "pure abstraction", thats possible only if we program for a
"pure abstract machine" with infinite resources. but such machine does not
exist! our resources (ram,speed,...) are finite. so we should be concerned
about it! this is why I think a programmer must be FAMILIAR with Assembly,
machine code even digital circuits as you mentioned. also I don't mean
knowing about these is necessary for writing a good and efficient program
but knowing them is an ADVANTAGE for the programmer.
Also I have a personal feeling. after I have learned assembly and about Cpu,
ram... and how they work, even when I'm programming in a High Level language
like java in the background of my mind I see the assembly code, cpu
instructions,... needed for each line which may not be accurate but somehow
gives me clue about how to write a better program. this have had practical
increase in quality of my programs, I can't justify what I'm saying because
its just a personal feeling. maybe it just gives me more self-confidence!, I
don't know, but it is good, I don't want to go back to the time when I
didn't know assembly :)

Arash


Alan J. Flavell

unread,
Sep 15, 2002, 6:12:41 PM9/15/02
to
On Sep 16, Arash Dejkam inscribed on the eternal scroll:

> every program running on any computer is still converted to
> Assembly (Machine Code) before running.

Really? I suppose that's a question of definition.

We were already playing with an interpreted "bytecode"[1] in the
1960's (Zebra Simple Code, in my case - a language which itself had an
interesting history ;-).

Virtual machines have been "old hat" for quite some time now. It's
just another way of implementing layers of abstraction, after all.

Zebra "Normal code" was more fun though (programmed with a "railway
sidings" diagram, and in effect what we'd now probably call a
microcode).

Why do I get this strange feeling that each new wave of newbies has to
reinvent the past? Oh well.

[1] as it would be known nowadays.


Scott Palmer

unread,
Sep 15, 2002, 6:43:25 PM9/15/02
to
Perl is certainly not a good language to learn as a beginner. Most Perl
code you will find is obfuscated, as Perl syntax promotes obfuscation.
(After learning another language then taking a look at Perl, this will be
self-evident.) Only a very disciplined Perl programmer would be able to
escape the self-obfuscating nature of Perl.
Perl is the ultimate shorthand. You can express quite a bit in only a few
lines of Perl... quite powerful.. but those few lines will look like a
monkey was bashing at the keyboard unless you are a Perl expert.
Perl has it's place, but learn something easier first.
It sounds like I am bashing Perl, and I admit I find it to be a ridiculous
language, but I will certainly admit that if you can stomach it, there are
many things that can be done in a few lines of Perl that would take many
more lines of code in other languages. Some people really like that.

Scott

"Dave Cross" <da...@dave.org.uk> wrote in message
news:pan.2002.09.15.13...@dave.org.uk...
<snip>
> Please don't promote the fallacy that Perl is a CGI-only language. Perl
> is a general purpose language...
<snip>


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.386 / Virus Database: 218 - Release Date: 2002-09-09


Wade Humeniuk

unread,
Sep 15, 2002, 7:31:33 PM9/15/02
to

"Alec" <alec...@ziplip.com> wrote in message
news:f2da8e5d.02091...@posting.google.com...

> otmoro...@yahoo.com (Scott) wrote in message
news:<b5a31bec.02091...@posting.google.com>...
> Many people expected a lot from Lisp, and given your background in
> Scheme, Lisp would seem like a reasonable next step. The industry
> realized over the years that while Lisp makes a fine language for
> certain niche small to medium size projects, it has two serious
> drawbacks: firstly, maintainability issues arise, because Lisp
> programmers can never understand each other's code, and secondly, Lisp
> teaches you bad programming style, as your code is usually a mess of
> if's, conds, and so on. That is why it almost lost its relevance by
> now. I can not say that I'm glad, because a lof of my own expertise is
> wasted. Oh well, that's life.

Many people expect a lot out of C++, and given your background in Scheme, C++
would be seem like a reasonable next step. The industry realized over the
decade that while C++ makes a fine language for certain small to medium size
projects, it has two serious drawbacks: firstly, maintainalbility issues arise,
because C++ programmers can never understand each other's code and class
heiacrchies, and secondly, C++ teaches and encourages one and only one bad
programming style, as your code is usually a mess of if's, for's, function
calls, include files, overloaded operators and so on. That is why it it losing
its relevance. I can say that I'm glad, because I have not wasted a lot of my
expertise on it. Thank God that's life.

Paul Bilnoski

unread,
Sep 15, 2002, 7:31:30 PM9/15/02
to

"Peter Ward" <h...@ha.ha> wrote in message
news:am1hq7$gri$1$8302...@news.demon.co.uk...
> Newbie wrote:
>
> >
> >
> >"Scott" <otmoro...@yahoo.com> wrote in message
> >> So, one of my friends tells me that I should learn C++, because "it's
the
> >best".
> >
> >The guy must be joking. HTML is the king. Learn it first.
> >
> >
>
> I hope you are joking. HTML is not a programming language.
>

But it is a good way to get your feet wet in programming.
Most people are familiar with a word processor, so learning "how" the text
changes from plain to bold to italic is a start.
Then once you understand how HTML formatting changes your code into
something the browser interprets, you can move into client side scripting
such as JavaScript.
The syntax is very close to C/C++/Java and others, and it already has a
large base of objects to play around with in the document object model.
Once you learn how to swap images or make a div fly around the screen, you
should be able to move comfortably into applications with a language that
can make applications.
From there, it's just time and experience before you can develop some things
on your own, or get enough practice to find a job and work your way into the
industry.
--Paul


chuck starchaser

unread,
Sep 15, 2002, 7:39:02 PM9/15/02
to
>real-world programming? If it is the case that , for example LISP is
>better for learning, while C++ is better for real programming, would
>the extra effor of learning C++ be justified if I do start with LISP?
>On the other hand, would LISP's superiority for learning programming
>be significant enough?


Lisp is powerful but uses too many parenthesis.. ;-) ) ) ) )

No, seriously. There's 2 big distinctions in languages:

Between Interpretive and Compiled
and
Between Procedural and Declarative.

The first distinction relates to the difference between, for example,
Basic and C. In Basic, you type the program, then you RUN it,
immediately. So it's quick for testing code, but the code runs slowly.
If you want to program a First Person Shooter game in 3D, you would
not use Basic, or Lisp. You'd want to use a compiled language that
produces optimized, small and fast executables. But if you want to
program interesting experiments in Artificial Intelligence, then,
definitely, Lisp is the way to go. Actually, what I'm saying is not
exactly accurate, since, nowadays, a lot of interpretive languages
have compilers available for them. But you'll always get best
performance from languages which are natively compiled.
Again, C++ is not the fastest language around, if you were to need
highest performance, C and FORTRAN beat C++ to a pulp; but at a huge
loss of power and expressiveness, by comparison.

The Procedural versus Declarative distinction is more or less like
this: In procedural languages like C, C++, FORTRAN, Eiffel, Basic,
etceteras, a = b means assign the value of b to variable a.

In a Declarative language, like Prolog, and to some extent in so
called 'functional' languages, a = b might simply be a statement of
truth, just so the program knows it. In a declarative language, you
typically inform the program about a lot of things relating to the
problem you're trying to solve, and, eventually, the program will know
enough to solve your problem (perhaps when you might have already
forgotten what the problem was.. :-)

So, take your pick.

At the beginning you might be fascinated by fancy features in
languages. Eventually, most of us end up marrying the language with
the least number of feature *** ommissions ***.

A few years ago I fell in love with Eiffel, (a procedural, compiled,
object-oriented to the core language). I still miss the clarity of its
keywords:

once
deferred
implies
is
precondition
postcondition
variant
invariant
real
integer

But it has no "unsigned char", which means that if I want to create a
type to express an RGBA color, it would take a whopping 16 bytes.
And it has no function overloading, meaning that initializers that
take different kinds of arguments, must all be named differently, for
example; and would not support the "visitor" pattern.
And it has no template specialization, which is a deadly crime.
And it has automatic garbage collection, which means that it has no
destructors, which means that many beautiful idioms that rely on the
constructor/destructor symmetry, cannot be implemented.
So, that's it for me.

C++ is neither the fastest language, nor the safest, nor the most
beautiful or expressive, nor the most powerful; but it has a half
decent amount of each of the above, which is, in itself, a feature no
other language can offer.

But then again, there's INTERCALC and QUANTUM INTERCALC; search for
them. That may be the way of the future... ;-)


Russ Allbery

unread,
Sep 15, 2002, 7:58:11 PM9/15/02
to
In comp.lang.lisp, chuck starchaser <chuck_st...@email.com> writes:

> No, seriously. There's 2 big distinctions in languages:

> Between Interpretive and Compiled
> and
> Between Procedural and Declarative.

That first distinction is by and large no longer a valid one. There are
very few interpreted languages left; even Perl and Python byte-compile
first and then execute bytecode.

> So it's quick for testing code, but the code runs slowly. If you want
> to program a First Person Shooter game in 3D, you would not use Basic,
> or Lisp. You'd want to use a compiled language that produces optimized,
> small and fast executables.

Lisp is a compiled language. Lisp can also be an interpreted language.
So can C. Commercial Lisp development is generally compiled, however,
just like you would compile C. The speed advantages are nowhere near this
clearcut.

> I'm saying is not exactly accurate, since, nowadays, a lot of
> interpretive languages have compilers available for them. But you'll
> always get best performance from languages which are natively compiled.

Once a compiler is available, there's really no useful distinction to be
made between "native" and not, only in how good the compiler is.

--
Russ Allbery (r...@stanford.edu) <http://www.eyrie.org/~eagle/>

Kenny Tilton

unread,
Sep 15, 2002, 9:10:05 PM9/15/02
to
i did not like it either. nothing interesting. threw it in the garbage.
if only i could learn to look at books more closely before buying them.
the microsoft heritage showed, too.

fwiw

Anony wrote:
> "Thaddeus L Olczyk" wrote


>
>>>>Code Complete
>>>>http://www.construx.com/stevemcc/cc.htm
>>>
>>If you like to get advice on prgramming from a person who wrote for
>>a company that has a reputation of producing shody products, and
>>libraries that are poorly structured.
>
>

> Thaddeus, have you actually read the book "Code Complete" ?
>
> If you have read the book, please tell us why you think the book
> is not useful.
>
>
>
>

Software Scavenger

unread,
Sep 15, 2002, 10:29:41 PM9/15/02
to

> So, one of my friends tells me that I should learn C++, because "it's


> the best". But, seriously, he doesn't know anything but C++, so I'm

I've used C++ since the 1980's, and I prefer other languages, such as
Smalltalk and Common Lisp. My personal preference is Common Lisp, but
it takes a long time for most programmers to learn it fluently. What
I like about it is that I can program much faster in it than in other
languages. In the future, as computer hardware gets cheaper and more
powerful, the value of being able to write sophisticated programs fast
will increase more and more. Learning to program is a lifelong
effort, and you never quite reach a plateau where you can consider
most of your learning behind you. Considering how much of an
investment of my time that is, I can't see wasting it anymore on
anything less powerful than Common Lisp. I'm still looking for
something even better, but have not found it yet. Meanwhile, the more
I use it, the better I get at it, and the bigger my personal software
library in it grows, so I can do more and more work with less and less
effort.

On the other hand, what's best for a novice? I think it depends on
your personality and talent more than anything else. Do you need
something that will keep you constantly motivated, or are you
self-motivated to learn more faster regardless of immediate feedback?
Nobody but you can really know the answers to such questions. You
have to know yourself, and seek out something that fits you like a
glove. Other people's advice is based on their own experience in the
context of their own talents and motivations. And for those who need
constant positive feedback, there are different kinds of feedback,
fitting different personalities different ways. For example, do you
need to build a GUI and see it work while you add your program's
features while learning how to use your programming language? Or do
you prefer to use a workspace paradigm where you can test small
snippets of code easily and see the results of those immediately
without putting them in the context of a larger program? And what
about money? Some people can only learn on the job, because their
personality won't let them spend time doing something they aren't
getting paid for. And some just need the constant feeling that the
work they're doing will soon result in more money for them, such as
when they're working towards an advanced degree and are getting good
grades constantly, and knowing they will be able to get a good job as
a result. This is the kind of stuff you have to know about yourself,
as well as a lot of other aspects, such as how well you learn at
different levels of abstraction, etc.

Wade Humeniuk

unread,
Sep 15, 2002, 10:47:47 PM9/15/02
to

"Scott" <otmoro...@yahoo.com> wrote in message
news:b5a31bec.02091...@posting.google.com...

> Hello!
>
> I need your advice! Last summer I took an introductory programming
> course and learned a little bit of Scheme, even tho I didn't like it
> too much...
>
> HOwever, I realized that I want to be better at this stuff and learn
> more about programming. It's fascinating. I talked to some of my
> friedns and told them that I want to be a better programmer. I'm
> thinking of learning a new programming language, but I do not know
> which. Basically, I do not particularly care about the details, such
> as if a language is windows-only. What I do care about is learning
> something new.

To learn you have to start where you are at. You already know some Scheme, so
what I would suggest is to program some non-trivial application in Scheme. My
first suggestion is to write a web-server (as the www is all the rage these
days). Give yourself a deadline, say 30 days, and get at it. If you have any
problems just ask for help in these forums (or just comp.lang.scheme). Post
your code for critical review (put a copyright on it).

The RFC for the HTTP protocol is at

http://www.w3.org/Protocols/rfc2068/rfc2068

After this brief excursion you will better understand what is needed in a
programing language and then you can pick your next application and programming
language. Repeat the procedure, continue until happy.

See you in 30 days.....


Wade (comp.lang.lisp)

Chris Smith

unread,
Sep 15, 2002, 11:50:01 PM9/15/02
to
Alec wrote ...

> As someone correctly mentioned you should certainly stay from hype
> languages like Java, Perl, etc. They may make you more employable in
> the short term, but in the long term they will make a crappy
> programmer out of your, and there's no going back: bad habbits die
> hard.

I missed the step in your logic where you demonstrated that if a language
is getting media or popular attention, then it must produce bad habits
for programmers. I find that's far from the case. There are far more
niche languages that encourage poor style and practice. Programmers are
not, on the whole, stupid people. Many times if a language is popular,
it's because a lot of people over a long period of time found it to be a
useful solution to real problems that they have had.

I agree with the more general suggestion to avoid forming bad habits.

Chris Smith

Henrik Motakef

unread,
Sep 16, 2002, 12:22:54 AM9/16/02
to
chuck starchaser <chuck_st...@email.com> writes:

> No, seriously. There's 2 big distinctions in languages:
>
> Between Interpretive and Compiled
> and
> Between Procedural and Declarative.

Being Interpretive or Compiled is not a property of languages, but of
implementations. There are interpreters for C and native-code
compilers for (parts of) Python programs around. Objective Caml comes
with an interpreter, a bytecode compiler and a native-code compiler
out of the box.

> But then again, there's INTERCALC and QUANTUM INTERCALC; search for
> them. That may be the way of the future... ;-)

Scince someone mentioned Assembler as a way to learn how the basics of
a computer work, perhaps Brainf**k and Unlambda might be of interest,
to go down to the basics of computability... ;-)

Regards
Henrik

Alf P. Steinbach

unread,
Sep 16, 2002, 12:40:47 AM9/16/02
to
On Sun, 15 Sep 2002 19:39:02 -0400, chuck starchaser
<chuck_st...@email.com> wrote:

>>real-world programming? If it is the case that , for example LISP is
>>better for learning, while C++ is better for real programming, would
>>the extra effor of learning C++ be justified if I do start with LISP?
>>On the other hand, would LISP's superiority for learning programming
>>be significant enough?
>
>
>Lisp is powerful but uses too many parenthesis.. ;-) ) ) ) )

Very true. Why don't they reintroduce Logo in primary schools?
A very nice language specially designed for learning, by
children, where you can draw some amazing graphics by
controlling a pen-equipped turtle.

To learn basic programming today, I'd recommend JavaScript!

Except that there's no easy way to produce graphics... Perhaps
the "dot" package could serve for that. I don't know.


>No, seriously. There's 2 big distinctions in languages:
>
>Between Interpretive and Compiled
>and
>Between Procedural and Declarative.

Another and perhaps more useful distinction:


General language.

Small, dedicated language.

>The first distinction relates to the difference between, for example,
>Basic and C. In Basic, you type the program, then you RUN it,
>immediately. So it's quick for testing code, but the code runs slowly.

Let me add to that. With interpretation some representation of the
program (could be the original text, could be a machine translated
form) is "run" by a program, the

interpreter,

instead of some representation of the program being run directly
by the machine.

This doesn't mean that an interpreted language cannot rely on
compilation (machine translation between different forms). We
call a language a compiled language when it's designed primarily
for compilation and not for direct interpretation.

The advantage of direct interpretation of program text is primarily
that it allows


Treating data as program code, and vice versa.


E.g., in Lisp and JavaScript you can let the program "eval" an
expression typed in by the user, as if it were part of the program.

Without this powerful but dangerous capability there's no real
difference.

>...


>A few years ago I fell in love with Eiffel, (a procedural, compiled,
>object-oriented to the core language). I still miss the clarity of its
>keywords:
>
>once
>deferred
>implies
>is
>precondition
>postcondition
>variant
>invariant
>real
>integer
>
>But it has no "unsigned char", which means that if I want to create a
>type to express an RGBA color, it would take a whopping 16 bytes.
>And it has no function overloading

I'm not sure you're right here, but I think you're simply using the
wrong name for the concept you're thinking of.


>meaning that initializers that
>take different kinds of arguments, must all be named differently, for
>example;

That's a feature. One quickly gets tired of inventing ways to
circumvent the corresponding limitation of C++. E.g., think of
creating a new complex number: you can supply x and y, or r and
angle; two equivalent ways that both involve two numbers, so
that some way to distinguish between them (other than argument
number/type) is required.


> and would not support the "visitor" pattern.

It does. The visitor pattern doesn't rely on anonymous
constructors.


Cheers,

- Alf


Frank A. Adrian

unread,
Sep 16, 2002, 12:44:07 AM9/16/02
to
White Wolf wrote:

> Is there a computer programming language for trolls? ;-)

Obviously not Lisp, because so many trolls seem to end up in comp.lang.lisp
bashing it. Probably Perl. That's because it's the programming language
for everyone, right?

faa

Jeff 'japhy' Pinyan

unread,
Sep 16, 2002, 12:45:51 AM9/16/02
to
On 16 Sep 2002, Henrik Motakef wrote:

>Scince someone mentioned Assembler as a way to learn how the basics of
>a computer work, perhaps Brainf**k and Unlambda might be of interest,
>to go down to the basics of computability... ;-)

What about Befunge? ;)

Befunge teaches you stack-based programming, and the true horrors of
writing spaghetti code...

--
Jeff "japhy" Pinyan RPI Acacia Brother #734 2002 Acacia Senior Dean
"And I vos head of Gestapo for ten | Michael Palin (as Heinrich Bimmler)
years. Ah! Five years! Nein! No! | in: The North Minehead Bye-Election
Oh. Was NOT head of Gestapo AT ALL!" | (Monty Python's Flying Circus)

Frank A. Adrian

unread,
Sep 16, 2002, 12:51:21 AM9/16/02
to
Scott wrote:
> I need your advice!

Stop trying to be a better programmer. First start concentrating on being a
mediocre programmer. When you're through with that, you can graduate to
being a good programmer. Maybe at that point you'll be able to skip being
better and go directly to excellent. It all may take a few years, though.
I'd get started soon.

The fact that you can ask your question with a straight face means you still
have a long way to go. At this point, no particular language will make you
a better programmer.

Bottom line, there is no "royal road" to programming. If there was one, it
certainly would not be ensconced within any particular language. Just
start programming, reading programs as you go, learning new languages as
they come up. Come back in a few years and let us know how it's going.

faa

Dave Cross

unread,
Sep 16, 2002, 1:54:00 AM9/16/02
to
On Sun, 15 Sep 2002 23:43:25 +0100, Scott Palmer wrote:

> Perl is certainly not a good language to learn as a beginner. Most Perl
> code you will find is obfuscated, as Perl syntax promotes obfuscation.

This is nonsense. Please present some evidence to back up your claims.

Dave...

--
It was long ago and it was far away
And it was so much better that it is today

Alec

unread,
Sep 16, 2002, 3:14:00 AM9/16/02
to
"Wade Humeniuk" <wa...@nospam.nowhere> wrote in message news:<pL8h9.3771$6L6.3...@news1.telusplanet.net>...

> "Alec" <alec...@ziplip.com> wrote in message
> news:f2da8e5d.02091...@posting.google.com...
> > otmoro...@yahoo.com (Scott) wrote in message
> news:<b5a31bec.02091...@posting.google.com>...
> > Many people expected a lot from Lisp, and given your background in
> > Scheme, Lisp would seem like a reasonable next step. The industry
> > realized over the years that while Lisp makes a fine language for
> > certain niche small to medium size projects, it has two serious
> > drawbacks: firstly, maintainability issues arise, because Lisp
> > programmers can never understand each other's code, and secondly, Lisp
> > teaches you bad programming style, as your code is usually a mess of
> > if's, conds, and so on. That is why it almost lost its relevance by
> > now. I can not say that I'm glad, because a lof of my own expertise is
> > wasted. Oh well, that's life.
>
> Many people expect a lot out of C++, and given your background in Scheme, C++
> would be seem like a reasonable next step. The industry realized over the
> decade that while C++ makes a fine language for certain small to medium size
> projects, it has two serious drawbacks: firstly, maintainalbility issues arise,
> because C++ programmers can never understand each other's code and class
> heiacrchies, and secondly, C++ teaches and encourages one and only one bad
> programming style, as your code is usually a mess of if's, for's, function
> calls, include files, overloaded operators and so on. That is why it it losing
> its relevance. I can say that I'm glad, because I have not wasted a lot of my
> expertise on it. Thank God that's life.
Wade, thanks for attempting to be funny and for sharing with us your
dilettante opinion, of course. Since, as you mentioned yourself, you
have not spent a lot of time on C++, what makes you think you are even
remotely capable of judging it: what exactly have you "learned" about
it? I suspect you are simply repeating whatever FUD you have heard or
read. Do not let slashcrap and similar sources do your thinking for
you.

Simon Harvey

unread,
Sep 16, 2002, 3:15:47 AM9/16/02
to
All the above comments are very fair points. I think he should maybe come
back to it though once he has his feet planted in a decent high level
language


Richard Krush

unread,
Sep 16, 2002, 3:18:24 AM9/16/02
to
alec...@ziplip.com (Alec) writes:

> otmoro...@yahoo.com (Scott) wrote:
>
> Many people expected a lot from Lisp, and given your background in
> Scheme, Lisp would seem like a reasonable next step. The industry
> realized over the years that while Lisp makes a fine language for
> certain niche small to medium size projects, it has two serious
> drawbacks: firstly, maintainability issues arise, because Lisp
> programmers can never understand each other's code, and secondly, Lisp
> teaches you bad programming style, as your code is usually a mess of
> if's, conds, and so on. That is why it almost lost its relevance by
> now. I can not say that I'm glad, because a lof of my own expertise is
> wasted. Oh well, that's life.
>

Could you please be more specific about the maintainability issues and
bad programming style? Perhaps you could give a few examples?

Regards,
Richard

--
Richard Krushelnitskiy "I know not with what weapons World War III will
rkrush (at) gmx.net be fought, but World War IV will be fought with
http://rkrush.cjb.net sticks and stones." -- Albert Einstein

Alec

unread,
Sep 16, 2002, 3:37:23 AM9/16/02
to
"John W. Krahn" <kra...@acm.org> wrote in message news:<3D84EDE2...@acm.org>...

> Alec wrote:
> >
> > As someone correctly mentioned you should certainly stay from hype
> > languages like Java, Perl, etc.
>
> Excuse me, I don't want to start a flame war but, under what definition
> of hype are you using to define Perl?
>
>
> John


When I say "hype" languages, I am not merely referring to languages
that are popular, but those that are at the same time mediocre or bad.
For them, popularity comes from aggressive marketing, etc. In case of
Java, it was Sun's desire to take a bite of Microsoft's market, and in
case of Perl, it was a bunch of things, not the least of which was
OReilly of course. If it were up to them, they would be feeding us new
revolutionary "tech" every month.

Erik Naggum

unread,
Sep 16, 2002, 3:49:08 AM9/16/02
to
* otmoro...@yahoo.com (Scott)

| Another friend tells me "define what you mean by 'better programmer'".

You have received much advice, most of which I find useful given a prior
understanding of what it means to be a programmer, but it occurs to me that
this is far from as obvious as one might think. What kinds of things would
you like the computer to do for you? What kinds of things are you already
good enough at that you can teach a computer to do it? Do you have extensive
experience with hardware so you want to control devices and do things like
play music or movies and such? Are you adept at human-computer interaction so
you want to write software that embodies your psychological insight to write
software that makes a human being more efficient at some task? Have you
succeeded in teaching children or adults anything and would like to write
computer-aided teaching software? Do you enjoy graphic arts and typography
and would like to use the computer to automate the production of, say, flyers
and posters? Are you interested in photography and would like to write
software for digital image processing? Is optical recognition and artificial
vision on your list of interests? The list of questions obviously goes on and
on, extending into every field of human endeavors.

In my view, to be a programmer is to be sufficiently well versed in some non-
computer-related field that you can see how the computer can aid practioners
of that field accomplish their goals. Many programmers never progress beyond
the point of aiding their own use of the computer and never do anything "real"
-- the number of software packages that help people read mail and news and
waste enormous amount of time in front of the computer are legion, but they
tend to make people spend /more/ time on these tasks than they would or should
have done compared to actually productive tasks.

Take spam, for instance. Varying amounts of effort by an enormous number of
people have been poured into getting rid of this problem, including many
pretty clever filtering tricks. However, the opportunity arises for machine
recognition of meaning in electronic texts such that computers can analyze and
classify them according to, say, Dewey's or Universal decimal classification.
If this problem was solved, such things as the Semantic Web and search engines
that produced topic maps would provide vastly different perspectives on the
enormous emount of web pages out there. Spam detection would fall out of this
work simply by being classified in areas most people have no interest, and if
you should be interested in some of the things that are advertised by this
means, you would be able to locate it. Imagine a world in which you could ask
your computer to retrieve news articles and web pages according to a semantic
classification instead of having to try out different search words. Imagine
that this classification would not need a human to classify the documents but
where machines would "understand" them. What would you need to know as a
programmer before you could successfully implement something like this?
Clearly, being a good programmer, you would need to know many algorithms in
addition to understanding the nature of classification better than most of the
people who do it by hand, perhaps instead writing a system that finds patterns
in what has already been classified instead of actually understanding things.

Often, a the solution to a problem is very different from the solutions that
come to mind immediately. High intelligence and good creativity is needed
atop a vast mass of knowledge from many fields is necessary to solve the many
remaining interesting problems.

However, if all it means to be a programmer is to be able to code up something
from a specification and a design provided by others, "all" you need is a good
command of the tools you use and the language grammar and idioms to express
the ideas that somebody else have dreamt up. This part of programming is not
the most interesting in my view, but many people who hire programmers want
them to think as little as possible and be as faithful as possible to designs
made by others. To be a "better" programmer in this regard is very different
from a better programmer who can solve unsolved problems.

--
Erik Naggum, Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.

synthespian

unread,
Sep 16, 2002, 4:28:33 AM9/16/02
to
On Mon, 16 Sep 2002 04:49:08 -0300, Erik Naggum wrote:

>
> Take spam, for instance. Varying amounts of effort by an enormous
> number of people have been poured into getting rid of this problem,
> including many pretty clever filtering tricks. However, the
> opportunity arises for machine recognition of meaning in electronic
> texts such that computers can analyze and classify them according to,
> say, Dewey's or Universal decimal classification. If this problem was
> solved, such things as the Semantic Web and search engines that
> produced topic maps would provide vastly different perspectives on the
> enormous emount of web pages out there. Spam detection would fall out
> of this work simply by being classified in areas most people have no
> interest, and if you should be interested in some of the things that
> are advertised by this means, you would be able to locate it. Imagine
> a world in which you could ask your computer to retrieve news articles
> and web pages according to a semantic classification instead of having
> to try out different search words. Imagine that this classification
> would not need a human to classify the documents but where machines
> would "understand" them. What would you need to know as a programmer
> before you could successfully implement something like this? Clearly,
> being a good programmer, you would need to know many algorithms in
> addition to understanding the nature of classification better than
> most of the people who do it by hand, perhaps instead writing a system
> that finds patterns in what has already been classified instead of
> actually understanding things.
>
>

Dear Mr. Naggum --

I don't understand your point of view, in the light of the fact that a
couple of weeks ago you said that SGML and XML were "braindead."
That really kept me wondering for days...I kept thinking "well, how
would you view, then, a thing like the Semantic Web from a Lisp
perspective?" I thought it would be, perhaps, something like the LispWeb
server, which seemed a very "intelligent" proposal (if I may make a pun
with the A.I. feature.)
Now, you're a "senior" member of this community, and I respect what you
write and have often learned a lot from you posts and interesting views
of issues posted here. That said...
Would you care to expand on your views regarding the Semantic Web, XML
being "hopeless", SGML being "braindead" and all that in what regards a
Lisp approach to those important questions? That is, how would *you* go
about it, if I may ask?
All these things matter a lot to me, being from the medical community,
and quite aware of the importance that being able to integrate the data
that continues to grow at exponential rate in the field (genome, for
instance, the barrier that tradional statistics methods are up against in
a large medical database, etc...)

Thank you

Henry


_________________________________________________________________
Micro$oft-Free Human 100% Debian GNU/Linux
KMFMS "Bring the genome to the people!
www.debian.org - www.debian-br.cipsga.org.br - www.debian-rs.org

Alec

unread,
Sep 16, 2002, 4:47:15 AM9/16/02
to
cubic...@mailandnews.com (Software Scavenger) wrote in message news:<a6789134.02091...@posting.google.com>...

> otmoro...@yahoo.com (Scott) wrote in message news:<b5a31bec.02091...@posting.google.com>...
>
> > So, one of my friends tells me that I should learn C++, because "it's
> > the best". But, seriously, he doesn't know anything but C++, so I'm
>
> I've used C++ since the 1980's, and I prefer other languages, such as
> Smalltalk and Common Lisp. My personal preference is Common Lisp, but
> it takes a long time for most programmers to learn it fluently. What
> I like about it is that I can program much faster in it than in other

Greetings, Scavenger.
With all due respect to another veteran, I have to disagree with you
regarding Lisp. While you're not blatantly recommending it to newbies,
you are being very suggestive in your tone. Time is money, and time
spent learning Lisp could be better spent more productively elsewhere.
And this is coming from someone who has worked with Lisp 2 through
Common Lisp for years in several teams and solo. Besides, he already
knows some Scheme, which diminishes the educational value of Lisp for
him even further. In any event, what was the largest Lisp team that
you have ever worked in? What is the largest Lisp team that you have
ever heard of that actually managed to deploy their product
successfully? Orbitz is more of an exception than a rule. Most large
team efforts in Lisp were failures, and that's a fact. IIRC the
notorious "Mythical Man-Month" might have even mentioned this curious
fact, although I may be confusing it with another book.

Thaddeus L Olczyk

unread,
Sep 16, 2002, 5:03:33 AM9/16/02
to

A server is too complex and vague a task.
The vagueness comes from what functionality you want to add.
Do you support CGI and virtual servers for example?
The complexity comes from serveral fronts, mainly
the complexity of HTTP itself ( which is not that complex, but
more complex than for one junior programmer ).

Instead go to:
http://icfpcontest.cse.ogi.edu/
there you will find 5 problems doable by one programmer that are
extremely well defined and should be doable by one person in 30 days.

Thome and Hunt ( aka the pragmatic programmers ) advocate a practice
called loty ( language of the year ) where a person learns a new
language each year. Recently I've begun to advocate starting your loty
on Labor day, and using the exam as your "final exam" of the last
years loty, and using the exam as a problem to probe next years loty.

Tim Bradshaw

unread,
Sep 16, 2002, 5:20:04 AM9/16/02
to
* alec2001 wrote:

> Most large team efforts in Lisp were failures, and that's a
> fact. IIRC the notorious "Mythical Man-Month" might have even
> mentioned this curious fact, although I may be confusing it with
> another book.

Most large-team software efforts are failures, full stop.

The book you are referring to is probably `software runaways' by
someone-or-other which is a collection of papers describing various
software project catastrophes. It has a chapter the failure of
a project at MCC and blaming it on Lisp. This is, essentially,
bullshit - there ware a lot of other problems which caused this
disaster. I suspect that many of its other papers are also bullshit
although I haven't checked up on them.

Here's a description from someone who was there (you can probably find
this by searching on google groups, although I have it in a file with
no reference, sorry).

A dozen years later, that BS paper still gets my blood boiling!
Lisp was NOT MCC's problem. Incompetent management was! The
director of the CAD group kept overriding the system architect and
made technical decisions about which he knew nothing. His constant
interference completely underminded any chance of it being a
success. As a result of his interference, each group leader went
and did their own thing, giving no consideration to the overall
goals. As an example of how disfunctional management became, I and
another engineer attended a meeting with the director and the
system architect to discuss design size problems, namely that TI
and LMI lisp machines didn't have enough address space to handle
the size of problems that MCC wanted. (Not without doing software
"overlays".) Half way thru the meeting, the director was sitting
in one corner staring out the window and the system architect was
sitting in the opposite corner staring out that window. The
director just didn't want to hear about any problems with the TIs
and LMIs. Or anything else! It become clear to me at that moment
that MCC was doomed to failure because of the internal politics
and incompetence of management.

ALthough I didn't always agree with the decisions of the system
architect (more often than not, I disagreed!), I knew that for a
large system to have any hope of success, one person had to be
responsible for the global design. Due to the director at MCC
CAD, there was no ONE person responsible for the system
design. Well, that's not quite true. The system architect WAS
responsible for the design. He just had no authority to carry it
out.

I know of no real evidence that large Lisp systems have worse problems
than large systems in any other languages. Since Lisp is a left-field
choice it's a fairly obvious candidate for blame when large software
projects screw up - better to blame the language than the
mismanagement if you want to keep your job, and, like buying IBM,
no-one ever gets sacked for choosing C++ or Java.

--tim


Duane Rettig

unread,
Sep 16, 2002, 6:00:01 AM9/16/02
to
Erik Naggum <er...@naggum.no> writes:

> * otmoro...@yahoo.com (Scott)
> | Another friend tells me "define what you mean by 'better programmer'".

[ ... ]

> However, if all it means to be a programmer is to be able to code up something
> from a specification and a design provided by others, "all" you need is a good
> command of the tools you use and the language grammar and idioms to express
> the ideas that somebody else have dreamt up. This part of programming is not
> the most interesting in my view, but many people who hire programmers want
> them to think as little as possible and be as faithful as possible to designs
> made by others. To be a "better" programmer in this regard is very different
> from a better programmer who can solve unsolved problems.

Another way to look at what makes a better programmer is by looking at
the endpoints, i.e. the best and worst possibilities. To me, the closest
I can come to the endpoints are these:

- Most elemental programmer: I don't consider a person who learns to
use a word-processor (or any other shrink-wrapped app, for that matter)
a programmer. However, if that app has a preferences option, and the
user is using it to customize the app for their own usages, well that
becomes programming. Some may argue that this is not really programming,
because it is so common, but then where else would we draw the line?

- The Ultimate Programmer: I saw an original Star Trek episode, when it
first came out, and as I recall (but it may be fuzzy) Kirk and Spock
break into an ancient computer room, and find a computer not built
by any Federation life forms. Spock had never seen the computer, but
proceeds to discover what it is (I think it was an archive library of
some sort) and then to access the data, so that their adventure could
go on. Being fairly new to programming at the time, and having seen
several completely different languages, operating systems, and even
I/O devices, I scoffed at this episode at first; I didn't think it was
possible to encounter a completely foreign computer and figure out how
to access it, let alone work it. But now that I am more experienced,
I believe (without proof) that it is possible, although I still admire
the scientific and programming expertise of Spock to be able to figure
it out so quickly.

--
Duane Rettig du...@franz.com Franz Inc. http://www.franz.com/
555 12th St., Suite 1450 http://www.555citycenter.com/
Oakland, Ca. 94607 Phone: (510) 452-2000; Fax: (510) 452-0182

Alain Picard

unread,
Sep 16, 2002, 6:50:55 AM9/16/02
to
Dave Cross <da...@dave.org.uk> writes:


> On Sun, 15 Sep 2002 23:43:25 +0100, Scott Palmer wrote:
>
> > Perl is certainly not a good language to learn as a beginner. Most Perl
> > code you will find is obfuscated, as Perl syntax promotes obfuscation.
>
> This is nonsense. Please present some evidence to back up your claims.

Which claim, that Perl syntax promotes obfuscation? What more evidence
do you want than the perl man pages?

p.s. I'm a reasonably fluent perl programmer, before you flame on.


Kenny Chaffin

unread,
Sep 16, 2002, 6:58:14 AM9/16/02
to
In article <pan.2002.09.16.05....@dave.org.uk>,
da...@dave.org.uk says...

> On Sun, 15 Sep 2002 23:43:25 +0100, Scott Palmer wrote:
>
> > Perl is certainly not a good language to learn as a beginner. Most Perl
> > code you will find is obfuscated, as Perl syntax promotes obfuscation.
>
> This is nonsense. Please present some evidence to back up your claims.
>
> Dave...
>
>

check out the obfuscated perl contest....

KAC
--
Kenny A. Chaffin
KAC Website Design - http://www.kacweb.com
Custom/Contract Programming, Graphics, Design
Poetry Page: http://www.kacweb.com/poems/

Erik Naggum

unread,
Sep 16, 2002, 6:59:07 AM9/16/02
to
* synthespian

| I don't understand your point of view, in the light of the fact that a
| couple of weeks ago you said that SGML and XML were "braindead."

Well, let me put it this way: The XML crowd believes that if you only add
enough markup, everything humankind has ever dreamt of will suddenly emerge
from the chaos. I believe that this is a very serious misunderstanding of
both chaos and emergent properties and that more markup will, in fact,
prevent them from emerging. XML-style markup effectively prohibits the
multiple perspectives on the same information that makes it usable for
multiple purposes. In this sense, the more you employ XML to achieve your
goals, the more irrelevant the result will become.

| That really kept me wondering for days...I kept thinking "well, how would
| you view, then, a thing like the Semantic Web from a Lisp perspective?"

Note that the Semantic Web so far is being realized with tons and tons of
markup that fail miserably in being the flexible declarative language to
describe semantics in web pages that we need. I consider the efforts by the
people who work on this without any understanding of how people have dealt
with semantic classification of information prior to the Internet to be a
colossal waste of effort. They will, in all likelihood, reinvent everything
badly, being more interested in concocting useless syntactic monsters than
the information infrastructure that is necessary to realize their ideas.

| Would you care to expand on your views regarding the Semantic Web, XML being
| "hopeless", SGML being "braindead" and all that in what regards a Lisp
| approach to those important questions? That is, how would *you* go about
| it, if I may ask?

This is a very broad question. I think the Semantic Web will be realized
when the analytical capacity of software has progressed to the point where
people are actively encouraged to help the computer by communicating their
intent and our human-computer-human communication changes out language and
our communication skills. For instance, when it becomes rewarding for the
user to make the steps of his argument clear to the computer so the computer
can help him communicate with other computers that might more effectively
argue his point with the originating human who will listen more to his
computer than to other people, the user will benefit from communicating in a
way that removes much of the ambiguity of our current language. This will
not happen if the amount of work necessary to communicate with the computer
is as immensely complicated as the current XML-based Semantic Web.

| All these things matter a lot to me, being from the medical community, and
| quite aware of the importance that being able to integrate the data that
| continues to grow at exponential rate in the field (genome, for instance,
| the barrier that tradional statistics methods are up against in a large
| medical database, etc...)

I envision a future where people are sufficiently encouraged by computers to
learn the skills of rhetoric, argumentation, and logic to actually achieve
what education cannot achieve when there is no clear benefit to learning
either of these skills. I also believe that something like Dewey's or the
Universal decimal classification system needs to be taught as the optimal
means of searching for information with computers. (The actual numbers is
not the point -- the hierarchical structuring of human knowledge that is
embodied in the coding into numbers is an unparallelled achievement. The
silly re-invention of "ontologies" in the Semantic Web context is pathetic
in comparison.) All of this actually means that philosophy, epistemology,
the nature of concepts, etc, will have to become fundamental in people's
approach to information. Today, we are hampered by many false starts in
these areas and much muddled thinking and expression thereof. I believe
that over time, probably many decades, perhaps even centuries, we will get
rid of many of the historical accidents in our language and communication
and will consider the new accident of using computers a more fundamental
property than it is today. When you cannot get anything /done/ being sloppy
and incoherent, people will just adapt. The school that says that computers
should adapt to people is wrong for many reasons, the most important of
which is the misguided notion that what people do today is better than whet
they will do tomorrow under new technological influences, that yesterday's
(or yestercentury's) technology that shaped our language and thinking, is
better than our current or future technology, is keeping us all back.

I am, obviously, not advocating that we go into some "logical" language or
that we "speak mathematics" (frequent hysterical rejections of improvements
in human communication usually take this form by mathofobes), but that we
consider the benefits that befall us when adapting our natural language to
the requirements that follow from wanting to get the most out of exchanges
with our communication peers. When our peers become computers, as the
Semantic Web clearly foresee, people should, indeed must, change to make
themselves better understood and the exchange more fruitful for all parties.

If the Sapir-Whorf hypothesis holds, we must change our language in order to
become more "rational" vis-a-vis the computer. This could become a "class
distinction" in the future, where the educated communicate mostly with their
computers and the illiterate mostly with people. It is at times like this
that my desire to see immortality in our lifetime just gets more intense.

Alan J. Flavell

unread,
Sep 16, 2002, 7:19:44 AM9/16/02
to
On Sep 16, Kenny Chaffin inscribed on the eternal scroll:

> da...@dave.org.uk says...
> > On Sun, 15 Sep 2002 23:43:25 +0100, Scott Palmer wrote:
> >
> > > Perl is certainly not a good language to learn as a beginner.

petitio principii

> > > Most Perl
> > > code you will find is obfuscated, as Perl syntax promotes obfuscation.
> >
> > This is nonsense. Please present some evidence to back up your claims.
>

> check out the obfuscated perl contest....

Why? If "most Perl code" was obfuscated, there would be no point in
holding a contest. The exception proves the rule.

Perl is certainly _capable_ of being used to write well-structured and
transparent code. As far as learning a language is concerned, surely
that is the key, rather than bandying dubious statistics about its
users, many of whom - present company excepted, of course - appear to
me to be writing FORTRAN in Perl4 -- but then, "physicists write
FORTRAN in any language" (attribution not known, but heard quoted at
CERN many years ago).

cheers

Helgi Briem

unread,
Sep 16, 2002, 7:47:49 AM9/16/02
to
On Sun, 15 Sep 2002 18:43:25 -0400, "Scott Palmer"
<Scott....@sympatico.ca> wrote:

>Perl is certainly not a good language to learn as a beginner.

Yes it is. It is a very easy language for beginners to
learn. You can accomplish a lot of useful tasks knowing
only a few functions. It has the best and least
obfuscated documentation system (perldoc) I have seen
in a programming language, by far the best system
for sharing reusable code (CPAN) and many other
features.

>Most Perl code you will find is obfuscated, as Perl syntax
>promotes obfuscation.

No it doesn't. A bad programmer can write obfuscated
code in any language. Good Perl code is as clear as
anything in existence.

--
Regards, Helgi Briem
helgi AT decode DOT is

A: Top posting
Q: What is the most irritating thing on Usenet?
- "Gordon" on apihna

Tassilo v. Parseval

unread,
Sep 16, 2002, 7:48:50 AM9/16/02
to
Also sprach Kenny Chaffin:

> In article <pan.2002.09.16.05....@dave.org.uk>,
> da...@dave.org.uk says...
>> On Sun, 15 Sep 2002 23:43:25 +0100, Scott Palmer wrote:
>>
>> > Perl is certainly not a good language to learn as a beginner. Most Perl
>> > code you will find is obfuscated, as Perl syntax promotes obfuscation.
>>
>> This is nonsense. Please present some evidence to back up your claims.

> check out the obfuscated perl contest....

Eh? Just because a thing like the OPC is feasible in a language doesn't
mean it is its only way of writing code. I suggest you go to
http://search.cpan.org/, pick up a random module and view the
corresponding source.

And if you think that Perl promotes obfuscation, why not come up with a
piece of real obfuscated Perl code? You'll realize that it's not that
easy to do it 'properly', that's why an OPC and also Perl Golf can
exist.

Tassilo
--
$_=q!",}])(tsuJ[{@"tnirp}3..0}_$;//::niam/s~=)]3[))_$-3(rellac(=_$({
pam{rekcahbus;})(rekcah{lrePbus;})(lreP{rehtonabus;})(rehtona{tsuJbus!;
$_=reverse;s/sub/(reverse"bus").chr(32)/xge;tr~\n~~d;eval;

Erik Naggum

unread,
Sep 16, 2002, 9:08:56 AM9/16/02
to
* "Alan J. Flavell" <fla...@mail.cern.ch>

| Why? If "most Perl code" was obfuscated, there would be no point in
| holding a contest. The exception proves the rule.

Since you bring this age-old expression up, perhaps you should know what it
really means to those few who know what it really means. From The Concise
Oxford Dictionary of Proverbs, Oxford University Press 1998, Oxford
Reference Online, 16 SEPT 2002 (they make me say all this, sorry)

The very fact of an exception proves there must be a rule? (Brewer); now
frequently misunderstood and used to justify inconsistency. Cf. L. exceptio
probat regulam in casibus non exceptis, the exception confirms the rule in
cases not excepted.

This URL is also a required part of the reference, but it appears not to
work unless you are a subscriber. Oh, well, for the IP lawyers, then:

<http://www.oxfordreference.com/views/ENTRY.html?subview=Main&entry=t90.000645>

Norman Smith

unread,
Sep 16, 2002, 10:02:55 AM9/16/02
to
I have been prgramming 30+ years and agree with this! I'd like to
add Forth to the language list here. Haven't used it for years, but
it taught me how to factor an application/system/program to the
proper pieces!!! I am sure that my coding style for every programming
language I have learned since then is influenced by what I learned
in programming Forth!

Also, there is a long out of print book called "Thinking Forth" that
would be an all time computer science classid if it had been written
about C (same time period). If you can get past the Forth examples,
it will teach you a lot about system design!!!

Norm


Pascal Costanza <cost...@web.de> wrote in message news:<3D847CC5...@web.de>...
> Eric J. Roode wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > otmoro...@yahoo.com (Scott) wrote in
> > news:b5a31bec.02091...@posting.google.com:


> >
> >
> >>HOwever, I realized that I want to be better at this stuff and learn
> >>more about programming. It's fascinating. I talked to some of my
> >>friedns and told them that I want to be a better programmer. I'm
> >>thinking of learning a new programming language, but I do not know
> >>which.
> >

> > ...
> >
> >>Thanks in advance for your time...
> >
> >
> > In my opinion, you should learn MANY languages. You won't necessarily
> > use then, and don't learn them all at once (that's confusing), but
> > knowing how different languages approach similar problems, and knowing
> > the strengths and weaknesses of various languages, is an excellent way to
> > become a better programmer.
>
> I totally agree and want to add that you should make sure to not only
> learn different languages but also languages from different programming
> paradigms. Different problems need different approaches, and to know
> different approaches means to be able to solve more problems adequately.
>
> Here are some suggestions:
>
> * functional programming: Scheme, ML, Haskell
> * imperative programming: Pascal, Modula-2, C
> * object-oriented programming: Java, Smalltalk, Ruby, gbeta
> * logic programming: Prolog
>
> Some other languages allow to you to mix various paradigms: C++, Common
> Lisp, Objective CAML, Python, Leda
>
> Also make sure in the long run that you get to know both dynamically
> typed (for example Scheme, Lisp, Smalltalk) and statically typed
> languages (for example Haskell, gbeta, CAML, Java).
>
> (I have definitely forgotten some, and the categorization is surely not
> exhaustive.)
>
> It will take you a while to become a really good programmer but it's
> worth it. There's no general recommendation which language to start
> with, just go with your gut feelings. There is no single "best"
> language, all have their different tradeoffs and resolve different sets
> of forces. And don't believe in hype: current trendy languages are not
> necessarily good languages to start with with regard to the learning
> perspective. (However, it might be good for economical reasons to
> include them in the long run. ;)
>
> All the best,
> Pascal

Wade Humeniuk

unread,
Sep 16, 2002, 10:24:47 AM9/16/02
to

"Alec" <alec...@ziplip.com> wrote in message
news:f2da8e5d.02091...@posting.google.com...
> "Wade Humeniuk" <wa...@nospam.nowhere> wrote in message
news:<pL8h9.3771$6L6.3...@news1.telusplanet.net>...
> Wade, thanks for attempting to be funny and for sharing with us your
> dilettante opinion, of course. Since, as you mentioned yourself, you
> have not spent a lot of time on C++, what makes you think you are even
> remotely capable of judging it: what exactly have you "learned" about
> it? I suspect you are simply repeating whatever FUD you have heard or
> read. Do not let slashcrap and similar sources do your thinking for
> you.

I have 5 years experience with C++. Using one of the very first beta compilers
from DEC. I think the years were from 1993-1998. I do not consider this a lot
of time ( I have been programming since 1977). The largest programming project
I have worked on involved 85 people with the C++ team consisting of 5
programmers (it was experimental at the time).

Mostly what I learned from the language is that programmers using C++ attempt to
force the understanding of the world into the OO paradigm. They also attempt to
use all the OO features of the C++ language (inheritence, multiple inheritence,
overloading) and this just slows down the whole development effort. It also
results in tons of useless code that basically does nothing. All the code that
really implements functionality is bound into a few key functions. Also I have
found that programming teams spend in inordinate amount of time "talking" about
the design and not enough "doing" the work. Its like people feel they are
actually accomplishing something, but one does not truly understand the problem
until one writes the code. In some ways getting the coding (a truly technical
specification) done will facilitate getting the design done.

Here is an article I basically agree with:

http://www.paulgraham.com/noop.html


As with most languages like C/C++/Pascal/Compile-Link-Test-Languages great
amounts of test scafolding (unit testing and intergration testing) programs have
to be written, which in a substantive testing environment, exceeds the actual
code written. For larger and larger projects this can be the kiss of death
since the test code is always more complex than the actual tested code. Much of
the time people also resort to scripting languages to do the testing as the
underlying language is not expressive enough.

I have mostly given them all up to develop in Common Lisp where multiple
programming styles are supported, test code is integrated with the development
environment (the test script language is also in CL) and all in all I am many
times more productive. Unit testing is a snap in CL and integration testing is
in some ways is an expanded form of unit testing.

Wade

grelbr

unread,
Sep 16, 2002, 10:26:55 AM9/16/02
to
Kenny Tilton <kti...@nyc.rr.com> wrote in message news:<3D853072...@nyc.rr.com>...
> i did not like it either. nothing interesting. threw it in the garbage.
> if only i could learn to look at books more closely before buying them.
> the microsoft heritage showed, too.

As somebody else asked, what exactly was wrong with _Code Complete_?
grelbr

Wade Humeniuk

unread,
Sep 16, 2002, 10:36:45 AM9/16/02
to

"Thaddeus L Olczyk" <olc...@interaccess.com> wrote in message
news:pt6bouo4mkvu09pcm...@4ax.com...

> A server is too complex and vague a task.
> The vagueness comes from what functionality you want to add.
> Do you support CGI and virtual servers for example?
> The complexity comes from serveral fronts, mainly
> the complexity of HTTP itself ( which is not that complex, but
> more complex than for one junior programmer ).

Yes it is vague, but it is real life. This task has real-world programming
issues stamped all over it.

It has a deadline and a specification.

Choices will have to made about the programming language implementation,
trade-offs of what can be implemented in the alloted time. The programmer will
have to learn about HTTP, sockets, data structures, files, parsers,...., the
list goes on. Even if he only gets a very simple server done (no general URI
parsers) that only serves files I would consider that a success. He will also
hit the issue of testing and how to do that. Part of the conclusion is to see
how well the programming language enables the programmer to be productive within
the timeline.

Wade


Craig Brozefsky

unread,
Sep 16, 2002, 10:39:47 AM9/16/02
to
"Wade Humeniuk" <wa...@nospam.nowhere> writes:

> the design and not enough "doing" the work. Its like people feel they are
> actually accomplishing something, but one does not truly understand the problem
> until one writes the code. In some ways getting the coding (a truly technical
> specification) done will facilitate getting the design done.

I reply to this only a a foil to any who would take your statement as
reason to sneer at those who talk with other programmers on their
team, but it is vitally important to not go the other way here, and
not communicate with one another and attempt to let the code do that
work. A balance is needed. Sitting down and talking thru the problem
with others is very helpful in my experience.

--
Sincerely,
Craig Brozefsky <cr...@red-bean.com>
Free Scheme/Lisp Software http://www.red-bean.com/~craig

Michael Carman

unread,
Sep 16, 2002, 9:40:56 AM9/16/02
to
On 9/15/02 5:43 PM, Scott Palmer wrote:
>
> Perl is certainly not a good language to learn as a beginner.

On the contrary, Perl is unique (in my experience) as a language that
lets you be productive while learning only a small subset of the
language. I find it terribly frustrating to have to learn (almost) an
entire language before I can do anything useful in it.

> Most Perl code you will find is obfuscated, as Perl syntax promotes
> obfuscation.

Perl syntax promotes expressiveness (which looks a lot like obfuscation
until you're well versed in the language. ;) )

> Only a very disciplined Perl programmer would be able to
> escape the self-obfuscating nature of Perl.

It's difficult not to take advantage of that /expressiveness/, once
you're aware of it's power.

> Perl is the ultimate shorthand. You can express quite a bit in only a few
> lines of Perl... quite powerful.. but those few lines will look like a
> monkey was bashing at the keyboard unless you are a Perl expert.

Sometimes yes, sometimes no.

Perl is non-orthogonal by design. That flexibility in the syntax often
allows you to write things that are both shorter *and* clearer. IMHO,
the hardest code to read is where the programmer was going through
contortions trying to get around the limitations of a langauge;
something that's rarely necessary in Perl.

-mjc

Wade Humeniuk

unread,
Sep 16, 2002, 10:49:43 AM9/16/02
to

"Craig Brozefsky" <cr...@red-bean.com> wrote in message
news:87hegqk...@piracy.red-bean.com...

> "Wade Humeniuk" <wa...@nospam.nowhere> writes:
>
> > the design and not enough "doing" the work. Its like people feel they are
> > actually accomplishing something, but one does not truly understand the
problem
> > until one writes the code. In some ways getting the coding (a truly
technical
> > specification) done will facilitate getting the design done.
>
> I reply to this only a a foil to any who would take your statement as
> reason to sneer at those who talk with other programmers on their
> team, but it is vitally important to not go the other way here, and
> not communicate with one another and attempt to let the code do that
> work. A balance is needed. Sitting down and talking thru the problem
> with others is very helpful in my experience.

Yes I agree, much of he work getting a software team to work together is to use
a common vocabulary. This vocabulary is what I think OO proponents are aiming
for but the popular methodology of Spec->Design->Code->Integrate that goes along
with it precribes the vocabulary too soon.

Wade

It is loading more messages.
0 new messages