becoming a better programmer

118 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 particularl