Any experience on teaching Perl programmers Java

S

saxo123

Hello,

I lately applied for quite an ineresting Java job. It turned out that
I would also have to teach Perl programmers Java. Now, there's the
rub... I once had to teach SAP developers Java. That was a little
nightmare. The SAP programmers were not all interested, had basically
no interest in computer science as such. Worst of all the boss thought
Java was something like SAP just from a different manufacturer and
everybody could learn it like SAP itself. I fear this could turn out
the same again with teaching Perl programmers Java ...

Problem is now that I have no clue about Perl. So I cannot judge
whether they would be interested. Have to ask whether I could meet
these guys, sure. Found lot's of stuff on the Internet, but that
doesn't tell me that much about how it will be to teach Perl people
Java. Anybody that gained some experience here is welcomed to drop a
comment or send me a mail to (e-mail address removed).

Cheers, Oliver
 
M

markspace

I once had to teach SAP developers Java. That was a little
nightmare. The SAP programmers were not all interested, had basically
no interest in computer science as such. Worst of all the boss thought
Java was something like SAP just from a different manufacturer and
everybody could learn it like SAP itself.


'Cuse my ignorance but what is SAP? I see the product on WikiPedia by
the company SAP, but that doesn't tell me much about it.

I fear this could turn out
the same again with teaching Perl programmers Java ...


I'd state your concerns up front to the class and gather their feedback.
I know one Perl programmer who is very concerned about structure and
organization of code. But I'll admit he seems to be the exception.

Other than that, I'd start at the beginning and teach it to them as if
they were new programmers, except in deference to the fact that they are
not, I'd go faster. I don't however have any experience teach
professionals programming, so ymmv.
 
W

William Colls

Hello,

I lately applied for quite an ineresting Java job. It turned out that
I would also have to teach Perl programmers Java. Now, there's the
rub... I once had to teach SAP developers Java. That was a little
nightmare. The SAP programmers were not all interested, had basically
no interest in computer science as such. Worst of all the boss thought
Java was something like SAP just from a different manufacturer and
everybody could learn it like SAP itself. I fear this could turn out
the same again with teaching Perl programmers Java ...

Problem is now that I have no clue about Perl. So I cannot judge
whether they would be interested. Have to ask whether I could meet
these guys, sure. Found lot's of stuff on the Internet, but that
doesn't tell me that much about how it will be to teach Perl people
Java. Anybody that gained some experience here is welcomed to drop a
comment or send me a mail to (e-mail address removed).

Cheers, Oliver

Perl is not Object Oriented.

They will understand the usual types of programming constructs, looping,
if..then..else, and so on. Biggest problem may be helping them get their
heads around objects, classes and the like.

My $0.02 Cdn.
 
B

blmblm

Perl is not Object Oriented.

Well .... It doesn't have to be, but it can be. The man page
for perl lists the following, under "Tutorials":

perlboot Perl OO tutorial for beginners
perltoot Perl OO tutorial, part 1
perltooc Perl OO tutorial, part 2
perlbot Perl OO tricks and examples

Some (many? several?) of the Perl library add-ons are packaged as
classes/objects.
They will understand the usual types of programming constructs, looping,
if..then..else, and so on. Biggest problem may be helping them get their
heads around objects, classes and the like.

Agreed that they will presumably understand basic programming
logic (assignment, conditionals, repetition) and that this will
help quite a bit (teaching complete novices is *not* easy!).
Whether you have to start from zero in teaching them about classes
and objects may depend on what kind of Perl they know. But if
all they know is Perl, the idea of variables having types will be
new to them, and that may be significant. At my PPOE I'm teaching
C to undergraduates, some of whom started in Python, and they do
seem to be struggling a bit with the notion of types.
 
S

saxo123

Hi All,

thanx for the replies. What I'm wondering about most is whether
typical Perl people out there in the companies are mentally awake and
will show interest in learning new things. That kind of question is a
bit tentative, I admit. My experience with SAP people was somewhat
negative there. SAP is a data maintenance system, basically a
programming layer on top of a SQL database with predefined business-
oriented modules for accounting, credit business, hr, stockkepping,
etc. The SAP programming language is somewhat an extension to SQL on
an Algol-68 like language level. Now, that was mean, but basically
correct.

Now Perl is surely on a higher level than ABAP, but you can live a
quite life as long as you know how to convert data streams with Perl.
No more interest in computer science is required then to get that kind
of job done. And that kind of people will not be able to get into
something like Java and all the tools and libraries where you need to
have an interest in computer science as such. Otherwise you ran mad,
because of all the things that pop up new every year and you then have
to learn as well.

Regards, Oliver

Regards, Oliver
 
R

Robert Klemme

thanx for the replies. What I'm wondering about most is whether
typical Perl people out there in the companies are mentally awake and
will show interest in learning new things. That kind of question is a
bit tentative, I admit.

It's also something which we cannot answer. In ignorance of the real
pupils you have we can only offer speculation and prejudice. That
would only make things worse. Better enter the training with an open
mind and find out who they are and what they expect from the
training. Then adjust accordingly.
My experience with SAP people was somewhat
negative there. SAP is a data maintenance system, basically a
programming layer on top of a SQL database with predefined business-
oriented modules for accounting, credit business, hr, stockkepping,
etc. The SAP programming language is somewhat an extension to SQL on
an Algol-68 like language level. Now, that was mean, but basically
correct.

Now Perl is surely on a higher level than ABAP, but you can live a
quite life as long as you know how to convert data streams with Perl.
No more interest in computer science is required then to get that kind
of job done.

Unfortunately that seems to be the case for many Java programmers as
well. I do not think that attitude depends on programming language.
Maybe it's the other way round (i.e. people with certain attitudes
pick specific languages) but even that is speculation and won't help
you because your group could be totally different.
And that kind of people will not be able to get into
something like Java and all the tools and libraries where you need to
have an interest in computer science as such. Otherwise you ran mad,
because of all the things that pop up new every year and you then have
to learn as well.

CPAN is also quite large and I don't think that you can get away with
only a few core library functions throughout your Perl life.

As I said: better find out who you are dealing with than try to create
expectation and press real people into that frame. Imagine this forum
would agree that Perl programmers are stupid and dumb: you would be
preoccupied and have insulted them already the very moment you enter
classroom. I do not think there would be a successful teaching and
learning experience with such a start - at least it's a lot harder
than otherwise.

In any case I believe it to be important to come to a common agreement
on what the purpose of the course is. It won't help if you want to
teach CS topics but people are more interested in learning how to
solve particular problems. If people are not interested to learn
though, then teaching anything will be hard and you will first have to
build up motivation.

Kind regards

robert
 
J

Jim Gibson

Well .... It doesn't have to be, but it can be. The man page
for perl lists the following, under "Tutorials":

perlboot Perl OO tutorial for beginners
perltoot Perl OO tutorial, part 1
perltooc Perl OO tutorial, part 2
perlbot Perl OO tricks and examples

Some (many? several?) of the Perl library add-ons are packaged as
classes/objects.

There is also the book "Object Oriented Perl", Damian Conway, Manning
Publications, 1999.

<http://www.manning.com/conway/>

Object-oriented features were added in Perl 5: classes, encapsulation,
inheritance, polymorphism, etc. The one thing Perl doesn't have is data
hiding:

³Perl doesn't have an infatuation with enforced privacy. It would
prefer that you stayed out of its living room because you weren't
invited, not because it has a shotgun² -- Larry Wall

(I am a Perl fan, if you can't tell.)
 
L

Lew

Jim said:
Object-oriented features were added in Perl 5: classes, encapsulation,
inheritance, polymorphism, etc. The one thing Perl doesn't have is data
hiding:

³Perl doesn't have an infatuation with enforced privacy. It would
prefer that you stayed out of its living room because you weren't
invited, not because it has a shotgun² -- Larry Wall

(I am a Perl fan, if you can't tell.)

Calling data-access control an "infatuation" doesn't make it a bad thing. Cute analogies with rabid defenders of one's home don't make an engineeringargument, either.
 
S

saxo123

The one thing Perl doesn't have is data hiding.

As a matter of fact Smalltalk doesn't have that, either. Once you add
getters and setters for a variable it becomes public. Nevertheless,
Smalltalk teaches you a lot of good things.

I remembered a former working collegue who works as a Java developer
in an IT department with some Perl programmers and asked him how he
would compare a Perl programmer to a SAP programmer. He said comparing
a Perl programmer with a SAP programmer deserves maximum punishment.
That was the information I needed ...
 
T

Ten Blade

It's also something which we cannot answer. In ignorance of the real
pupils you have we can only offer speculation and prejudice. That
would only make things worse. Better enter the training with an open
mind and find out who they are and what they expect from the
training. Then adjust accordingly.
Actually, it might be better if you found out what the person who has
booked the students into the course wants. After years as a professional
IT trainer, I can tell you that the students on the course aren't always
there because they want to be. Typically, a manager has decided that they
need to learn such-and-such and the student is not necessarily thrilled
about it or even very interested in the subject at hand. Sometimes, the
students' interests differ significantly from what their manager wants.
Sometimes, the students are more-or-less in the dark: the new language
they are enrolled to learn was not their idea and their management will
not have necessarily given them much background on why they are going to
learn it. It's possible that the students have simply been told that they
need to learn it for some upcoming project. That means that what
interests the students about the language may be at odds from what the
manager wants them to know. For instance, students may be keen to know
how to do something they do with their existing language while the
manager may be putting them on this course so that they can learn
something that the new language is better suited to doing.

The cold hard reality is that your ultimate success as an instructor will
be teaching them what the manager wants them to know, not what the
students themselves are interested in. If you please the students but not
the manager, you will not likely get the chance to teach for that
customer again. If you please the manager by covering what he wants you
to cover and the students have the expected level of proficiency when
they get back to work, you will likely get further business from that
company.
Unfortunately that seems to be the case for many Java programmers as
well. I do not think that attitude depends on programming language.
Maybe it's the other way round (i.e. people with certain attitudes
pick specific languages) but even that is speculation and won't help
you because your group could be totally different.


CPAN is also quite large and I don't think that you can get away with
only a few core library functions throughout your Perl life.

As I said: better find out who you are dealing with than try to create
expectation and press real people into that frame. Imagine this forum
would agree that Perl programmers are stupid and dumb: you would be
preoccupied and have insulted them already the very moment you enter
classroom. I do not think there would be a successful teaching and
learning experience with such a start - at least it's a lot harder
than otherwise.
I agree completely: don't go into the class assuming that the students
are not very bright or motivated because that will just put everyone in
an antagonistic mood. They may in fact turn out to be less than you hoped
but I've only had that happen a very few times in hundreds of classes
over the years and even those classes had more to do with the culture at
that company.
In any case I believe it to be important to come to a common agreement
on what the purpose of the course is.

I agree, provided that the manager who wants these students on the course
is consulted for what he/she wants the students to learn. Bear in mind
that some managers are not very technical themselves; they are, perhaps,
professional project managers with little if any programming skills.
Their input may be minimal as a result but SOMEONE in the company with
programming skills is likely to be behind the push to offer the course
you are teaching and they will likely be the best person to discuss the
focus of the class with. If you can get that person involved in the
planning of the course, you should be very successful in delivering what
the students need.
It won't help if you want to
teach CS topics but people are more interested in learning how to
solve particular problems.

Agreed. Where possible, include practical hands-on exercises that are
closely related to what students will actually need to do. Abstract
theoretical knowledge like OO Concepts is still going to be necessary but
don't dwell on that too long, especially at the expense of giving
students some practical examples of how the theory is applied in the real
world and some actual exercises for them to code that illustrate those
points.
If people are not interested to learn
though, then teaching anything will be hard and you will first have to
build up motivation.
At that point, you have become, in effect, a high school teacher in front
of a room full of disinterested, unmotivated students, not a trainer.
Luckily it only rarely comes to that. Most people being paid to program
are at least sufficient professional to make an effort to learn, even if
they are a bit dubious of the particular course or subject they have been
told to take by their employers.
 
T

Tom Anderson

I'm confused about this whole discussion, because it seems to assume
that programming in a language such as Perl has implications for the
programmer's general skills, interests, and ability to learn other
languages.

I'm a Perl programmer, as well as a Java programmer, and a Fortran
programmer, and a Forth programmer, and an assembly language programmer,
and a C programmer ...

How can you possibly deduce from the fact that someone is currently
programming in Perl anything beyond the conclusion that they probably
know Perl?

It doesn't seem unreasonable to infer that they probably either prefer
Perl to other languages, or don't know other languages. Some people might
be trapped writing Perl when they'd rather be writing something else, but
i would guess that would be a corner case.

It doesn't seem entirely appalling to proceed to infer that they either
don't know about object orientation, static typing, enterprisey
frameworks, debuggers, etc, or they don't care for them.

More generally, my experience has been that different programming
languages have different cultures around them, and it is not unreasonable
to guess that a programmer of some particular language is part of that
culture. You won't be right all the time, but you don't necessarily need
to be.

tom
 
T

Tom Anderson

Problem is now that I have no clue about Perl. So I cannot judge whether
they would be interested.

They'll be smarter than your SAP programmers. They'll be interested in new
stuff. They won't be at all impressed by static types, separate
compilation, the length of Hello World, or the need for everything to be
inside a class. They will eventually admit grudging respect for
java.util.regex.

They won't be anywhere near as good at wild generalisations as me.

tom
 
M

Martin Gregorie

Calling data-access control an "infatuation" doesn't make it a bad
thing. Cute analogies with rabid defenders of one's home don't make an
engineering argument, either.
Larry Wall has a somewhat ironic, self-deprecating sense of humour and
merely meant that Perl has much less dependence on variable scoping than
some other languages.

Self-deprecating because it was he who said that PERL is an acronym for
"Pathologically Eclectic Rubbish Lister" and, in the early days,
described it as the result of combining features of the Bourne shell, awk,
grep and several a few UNIX filters such as tr wc into one scripting
language.
 
J

Joshua Cranmer

I lately applied for quite an ineresting Java job. It turned out that
I would also have to teach Perl programmers Java. Now, there's the
rub... I once had to teach SAP developers Java. That was a little
nightmare. The SAP programmers were not all interested, had basically
no interest in computer science as such. Worst of all the boss thought
Java was something like SAP just from a different manufacturer and
everybody could learn it like SAP itself. I fear this could turn out
the same again with teaching Perl programmers Java ...

I'll admit that I don't really know Perl (I can muddle my way through
reading it, but I have no hope of writing it anytime soon), so I'm
probably more liable to grasp at stereotypes than honest truths.

My first thought of Perl is that it is often used for "little" scripts
(e.g., a script that looks through a log file to find more useful data).
I do know that it has some vague object-oriented features, but I believe
that this feature lacks things like virtual methods and inheritance that
are normally associated with object-oriented paradigms.

I suspect that you will most notably find grousing about explicit static
typing, as opposed to Perl's implicit duck typing. To a lesser degree,
people may grouse about Java needing to put methods in classes. It is
possible (I'm really bordering on stereotype here) that your Perl
programmers may grouse about how much more difficult it is to do textual
manipulation in Java compared to Perl, particularly in the difficulty of
handling stdin and running regexes.
 
W

Wojtek

As a matter of fact Smalltalk doesn't have that, either. Once you add
getters and setters for a variable it becomes public.

Um, no.

A getter/setter can also be private or default (package visible). And
the actual variable (field) is still hidden (private).

A getter/setter is a method. You can stuff as much code as you want
into it, though you should follow the basic contract of a
getter/setter, ie saving the passed value and returning it.

I've written setters that store the passed value, then manipulate it in
some way and then store that. So a single setter actually sets two
values, and there are two related getters.
 
S

saxo123

Actually, it might be better if you found out what the person who has booked the students into
the course wants.

It's about teaching Perl developers in a company Java to transfer them
to Java/OO development. It will be something like a continouing part-
time job beside my min work.
I'm a Perl programmer, as well as a Java programmer, and a Fortran
programmer, and a Forth programmer, and an assembly language programmer,
and a C programmer ...

Yes, I see. The issue is that in companies like banks or insurance
companies a Perl programmer can spend a work life time with Perl-based
stream processing without doing anything else. That kind of people
don't have a horizon like you.
I suspect that you will most notably find grousing about explicit static
typing, as opposed to Perl's implicit duck typing. To a lesser degree,
people may grouse about Java needing to put methods in classes.

Yes, but I let the moan about those things. Not my job to bother about
that. I'm thinking of letting them do some groovy programming. Teaches
them OO as well and many higher-level constructs they need for Java
development. With groovy they will feel much more at home. Once the
company wants them to do some real Java work, they'll have to switch
like myself wo would prefer some groovy/groovy++ work as well :).

--Oliver
 
R

RedGrittyBrick

It doesn't seem entirely appalling to proceed to infer that they either
don't know about object orientation, static typing, enterprisey
frameworks, debuggers, etc, or they don't care for them.

It seems appalling to me. I have written OO in Perl. There are Perl OO
frameworks; Perl debuggers. Why should they exist if (a substantial
number of) Perl programmers don't care for them?

If I was teaching Java to Perl programmers I'd show them Perl OO code
and the equivalent Java OO code. Then I'd compare thinking in Perl with
thinking in Java. I wouldn't start out assuming I was trail-driving a
bunch of illiterate curmudgeonly idiots to the pool of enlightenment.

More generally, my experience has been that different programming
languages have different cultures around them, and it is not
unreasonable to guess that a programmer of some particular language is
part of that culture. You won't be right all the time, but you don't
necessarily need to be.

There's some truth in this but I program Perl, I program Java. Which
cultural pigeon hole should I cower in? A trainer might address the
different language cultures but I wouldn't focus on it too much.
 
J

Jef

Hello, Perl is the language I use the most.
Perl programmers are in general litterate in CS and will probably be
very critic about Java language. An introduction of the reflection API
will probably please a lot. A Perl programmer wants to know the
internal to understand what can be done and can not be done with a
language.
Perl programmer have many modules available on CPAN and are not used
to IDE (like eclipse or netbeans). I think you should take time to
explain how to use the IDE and how to find help about the available
libraries. Show them how to navigate the sources of java libraries.
Perl programmers are used to very short programs to solve complex
problems thanks to the smart libraries. You should make your examples
very consise and do not hesitate to use syntactic tricks. Normally a
Perl programmer knows about objects, closure, garbage collectors (Perl
has only reference counting). Multiple inheritence is almost never
used in Perl. Interfaces are not needed because the language is
dynamic.

Perl is generally bad for creating GUI, but excellent for text
processing. If you put your examples inside a GUI, they will be less
tempted to compare. Before you start teaching them, you must undestand
that any java programm can be programmed in Perl in about a tenth of
the time and with a tenth of the code.

There are some exceptions: I have encountered some bad "Perl
programmers" that were using Perl like a shell scripting language.
They were often less literrate, but may be very good in other
languages. Switching to java maybe an excellent idea for them, but
this does give you no clue about how to teach them.
 
R

Robert Klemme

I remembered a former working collegue who works as a Java developer
in an IT department with some Perl programmers and asked him how he
would compare a Perl programmer to a SAP programmer. He said comparing
a Perl programmer with a SAP programmer deserves maximum punishment.
That was the information I needed ...

What information did that statement convey to you? I don't find it
unambiguous at all.

Cheers

robert
 
G

Gene Wirchenko

What information did that statement convey to you? I don't find it
unambiguous at all.

I find it unambiguous. It is obvious that there is ill-will.

OTOH, I do not find it useful.

Sincerely,

Gene Wirchenko
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,733
Messages
2,569,440
Members
44,830
Latest member
ZADIva7383

Latest Threads

Top