Re: Is PERL good for a linguist new to programming?

On May 24, 6:46 pm, p.podmos...@xxxxxxxxxxxxxx wrote:
I know that with all due effort and time devoted to learning Perl it
is possible to do it. However, only after having started the
O'Reilly's Beginner's Introduction to Perl did I realise what kind of
thinking is required to be able to write programs.

This is just my opinion, and many will disagree, some violently. I'm
of late middle age, majored in history and English in college, and
practiced law for 17 years before tranistioning into IT. I'm not a
mathematician nor a programmer but a liberal arts guy. I give this
background to warn you of my bias.

IMO, programming is NOT an academic pursuit, but a technical one. I
see learning to program the same as learning to cook, to ride a bike,
to hit a baseball, or to play a musical instrument. You don't learn
these things by reading a book, hearing a lecture, or watching people
do it. The ONLY(!) way you learn to do these things is by doing it,
and doing it a lot. Practice, practice, practice. There is a
cumulative effect, and the more languages you learn the quicker you
can pick up new ones.

It calls for a specific approach to problem-solving, logical,
sequential thinking.

The trick is learning the logic. I now have a couple of advanced
degrees in CS and SwE, and have spent a lot of time with students in
labs. The HARDEST thing for a new student to learn is the logic, but
this is no different from law. It's not hard to learn the semantics of
a language, just as it's not hard to learn what the law is. The much
more difficult part is learning to apply these. For example (taking a
very common student problem) write an algorithm to figure out how many
coins (quarters, dimes, nickles, and pennies) are in a given amount of
money. Try this and you will see that it's not an particularly easy
thing to do -- and most students who fail will fail on the cusp
between programming and logic.

There's a reason that we call this field computational science, or
combinatorial science, or algorithmic science. You can develop a good
knowledge of programming semantics and techniques, but until you learn
discrete math and algorithms, you are just a hack, not an accomplished
professional. (I don't say this to discourage you, just to make the
point that learning a language and learning to use a language are
different things.)

I was just thinking if it's possible to develop
that kind of mindframe for a person who has aptitude for languages and
humanities but not for maths (because that what programming is
ultimately - solving problems by means of mathemathics). Or will I be
fated for creating programs only by means of analysing and copying
parts of sourcecodes written by someone else?

You had better develop that mind frame. If you don't, you won't
succeed. My point is that logic is a discipline that transcends math,
really transcends all disciplines. As to your second question, the
answer is both. If you can analyze and understand program code, you
can write it. In doing so, you will come to appreciate clarity and
precision (including the art of properly commenting code).

You also need to understand that having a tool without a job is almost
as bad as having a job without a tool. It won't do you any good to
learn to program unless you have a problem domain where you can use
the tool. You will never learn to use the tool unless you can use it
to do real work -- not make work or pretend work, but real work.