in reply to A tutorial for Perl to teach Beginners
The biggest question is that "programming language" is different to "know how to program". The 2 concepts can be similar in the 1st view, but actually are very different, since is much more easy to teach a programming language to who already knows other, but over the topic "how to program" we also have a lot of areas, like structured languages and the mature way to program, the Object Oriented Style.
Over the years I saw a lot of people learning different programming languages with different styles, and saw the final result. In my opinion, if you want to create a complete programmer, you should start to teach from the base, with a structured languages where is possible to know how the bases are built. We don't need to work with assemble code, but know how an enverioment without OO works and how to create complex algorithms is very important. So, in the structured level the student will learn algorithms.
Then, after learn the basics of algorithms, it can start to play with a well orgnized enverioment with a OO language. In this level it will need to learn how to make elegant codes, not only creating a well formated style to write the code, but in how to make interaction of each chunk of methods and classes. In the OO level the developer will learn discipline and organization.
Note that learn the basics of structured programming is important, but the student need to learn that we can't, actually we never should, use a pure structured program for production softwares. The structured level is just to learn how the things work and to not have a dumb programmer, that only knows the easy job, since we know that the easy job can't do everything, and the hard chunks of codes are small, but this small chunks make a good job and a real software. The structured level will also teach how to be creative, since we alwasy write complex codes and complex solutions on that.
In the university I saw teachers trying to teach programming languages directly with OO. Do that for people that never saw a programming language is a crime, since they will think too hard to program an will lost the motivation. Also I saw people that can learn programming languages directly in the OO level, but they never will be able to go to a lower level and create solutions that can't be resolved with a static and already built OO enverioment. We can't forget that OO was created to make structured codes more organized, were we can isolate each part of the solution, what opens the oportunity to reuse codes. So, the student need to know that structured code exists to know for what OO exists, since only a OO declaration do nothing, it just delcare a DATA structure, and methods, who really do the job, are small chunks of structured codes that work over this declared DATA.
I think that in the begin the biggest problems is to teach in a way that we create motivation for the students to learn this thing that 90% think that is too annoying. So, start to show the power to be able to create things that we always use, like some intercomunication software, were we send some MSG to another computer, making a simple chat. Also we can show how to work with the internet, let's say, get a Web page or build a dynamic page, and the list goes. So, never start showing boring and stupid things, 1st get the attention, than you start with the exercises. Is like to teach a musical instrument, first we get the attention with simple but interesting musics, than we past the exercises that will create the technic, and only after the technic we start to teach discipline with score.
So, you need to show the different levels of programming and I think that Perl is a good way to show all of this, since we are free to use or not all of this levels. We also are able to run our code in different OS, we have http://cpan.org, we are free to change, create and recreate Perl, etc...
I think that the final tip is that a programmer is always a developer of something. So, a developer need to be able to work alone, to learn by it self how to create a solution for the problems that it have. Some people are able to just get the problem and discover by it self that it need to learn language X, with the methodology Y, and resouces Z. But normal people need to have someone to show that X, Y and Z exists, how to use them, for what they exists and the list goes... So, be beware to not create dependent programmers, since a dependent programmer is like a musician that can't learn a new music by it self. Is someone closed in the world that someone taught to him, and won't be able to create new things, and for me a dependent programmer is for nothing, I just won't hire him.
Well, this is the basics of what I have experienced on teaching programming languages, and I holp that this can be useful. ;-P
Graciliano M. P.
"Creativity is the expression of the liberty".