|
|
| Author |
Message |
| 25 new of 124 responses total. |
gull
|
|
response 75 of 124:
|
Oct 7 13:20 UTC 2003 |
That's sort of the tragectory I followed, though I ended up playing with
several computers...an XT clone and a VIC-20 at home, and an Apple //e
at school. The //e was my introduction to assembly language. It had a
built-in machine language monitor and mini-assembler.
|
scott
|
|
response 76 of 124:
|
Oct 7 13:38 UTC 2003 |
Maybe the answer is BASIC on some crufty little early 80's home computer,
then. ;)
|
mdw
|
|
response 77 of 124:
|
Oct 7 19:38 UTC 2003 |
If you are rating languages by "what they do" perl has got to be near
the top of any rational list. The biggest advantage of a popular
kitchen-sink language with excellent "import" tools is that if you can
imagine any plausible interface, somebody has probably already done it.
Anybody got some rotten tomatoes?
|
cross
|
|
response 78 of 124:
|
Oct 7 23:55 UTC 2003 |
This response has been erased.
|
janc
|
|
response 79 of 124:
|
Oct 8 19:43 UTC 2003 |
I'm currently working on contract that requires me to write a lot of Java code
in a J2EE environment. This is the first time I've worked with Java.
string.length() vs. array.length
long vs. Long
javax.rmi.PortableRemoteObject.narrow()
InputStream, ByteArrayStream, FileInputStream, FilterInputStream,
BufferedInputStream, DataInputStream, PushbackInputStream, ObjectInput
Stream, PipedInputStream, SequenceInputStream, Reader, BufferedReader,
LineNumberReader, CharArrayReader, FilterReader, PushbackReader,
InputStreamReader, PipedReader, StringReader
I say, hit it with a stick.
Objects are supposed to hide complexity. But the Java library objects
glory in introducing huge amounts of needless complexity, none of which
you can ignore. It probably doesn't help that I'm fixing code written by
programmers of dubious quality, who declare variables "long" or "Long" at
random.
This shouldn't be anyone's first language.
Since we are still trying to get this person interested in programming, it
should be something you can easily get some cool results with. Probably
something like PHP or python, but I've never used either language so I
don't really know.
Learning object oriented languages early is probably a good idea - except
it so rarely seems to work. Many of the people I've seen who started with
object oriented programming are still worse at it than I am. Procedural
thinking dressed up in minimal object oriented dressing.
|
jp2
|
|
response 80 of 124:
|
Oct 8 19:46 UTC 2003 |
This response has been erased.
|
cross
|
|
response 81 of 124:
|
Oct 8 20:37 UTC 2003 |
This response has been erased.
|
jp2
|
|
response 82 of 124:
|
Oct 8 23:01 UTC 2003 |
This response has been erased.
|
cross
|
|
response 83 of 124:
|
Oct 8 23:04 UTC 2003 |
This response has been erased.
|
scott
|
|
response 84 of 124:
|
Oct 8 23:33 UTC 2003 |
#82, rephrased slightly: "Yeah, that's what I was going to say, but you beat
me to it!". ;)
|
janc
|
|
response 85 of 124:
|
Oct 9 00:59 UTC 2003 |
To expand on one issue a bit, "long" and "Long" are both long integers. The
difference, as I understand it, is that "long" is a primitive type, while
"Long" is a "long" encapsulated in an object. The most obvious difference
is that a "Long" can be "null". "Longs" also have some handy methods attached
to them. I have two problems with all this. First problem is with the
original authors of the program I am working on who declare variables and
parameters either as "long" or "Long" depending on their mood at the moment.
Second problem is with the language. If "a" is a "long" and "z" is a "Long"
then we have the following
ILLEGAL CORRECT
a= z; a= z.longValue();
z= a; z= new Long(a);
if (z < 0) if (z.longValue() < 0)
or if (z < new Long(0))
If you do any of the things at the left, the compiler will tell you it
cannot convert a java.lang.Long into a Long or vice versa. It won't just
shut and do it. If you want to support two views of a long, primitive type
or object, that's fine, but make it seamless so you can switch views
seamlessly instead of peppering the code with syntactic garbage functions
like Long.longValue().
Perl is certainly an ill-begotten nightmare of a language, but I've
developed a lot of respect for it. Whatever else you can say about it,
it never get's in the programmer's way. Everything that should be easy
is easy. If you're thinking "there must be an easier way", there is.
If it's true that if a new programmer starts with Perl, then he'll never
be able to learn anything else, is that a problem with Perl, or with
everything else?
|
gull
|
|
response 86 of 124:
|
Oct 9 02:13 UTC 2003 |
Re #79: A year or so before I left Michigan Tech switched from teaching
freshman CS majors C to teaching them Java. That struck me at the time
as a terrible mistake, but I don't know how it's worked out in practice.
Re #85: Make them learn a fascist language like Pascal first, so they
suffer like I did. Then when they learn Perl they'll APPRECIATE it,
damn it! ;>
Of course, for the first few days someone should stand behind them and
apply a mild electric shock whenever they try to debug a program without
using either the -w flag or "use warnings;".
|
cross
|
|
response 87 of 124:
|
Oct 9 04:30 UTC 2003 |
This response has been erased.
|
jp2
|
|
response 88 of 124:
|
Oct 9 12:19 UTC 2003 |
This response has been erased.
|
jep
|
|
response 89 of 124:
|
Oct 9 13:17 UTC 2003 |
Pascal is fine for illustrating algorithms and programming
principles. Lots of good programmers started out learning Pascal in
college.
Jamie doesn't want to teach his brother programming principles,
though. He wants to get him interested in learning how to make simple
programs that do something. Jamie's brother probably envisions himself
writing an improved version of Doom as a starting project, then moving
into virtual reality games when he has a few weeks of experience. He
needs something he can start with and get results he can see reliably,
and which results are entertaining to a 14 year old boy. I don't know
of anything like that myself. In a few years I'll be looking for it
too, so I'm interested in what Jamie comes up with for his brother.
|
gull
|
|
response 90 of 124:
|
Oct 9 13:26 UTC 2003 |
Re #87: I was mostly joking about "suffering" with Pascal. I used
QuickPascal (the Microsoft clone of Turbo Pascal) for quite a while, and
in my current job I've done some programming in Borland Delphi. Pascal
isn't a bad language, you can do useful work with it, and it does teach
good habits.
Re #89: A friend of mine recommends BlitzBASIC. It's a BASIC variant
that's tailored for game programming. The webpage is here:
http://www.blitzbasic.com/
|
remmers
|
|
response 91 of 124:
|
Oct 9 13:45 UTC 2003 |
I "hesitantly" suggested Java a number of responses earlier,
mainly because it's widely used and implements the object-oriented
paradigm, which I do think is appropriate for beginners. My first
and only serious brush with Java involved teaching a course in it
for beginning programmers last semester. Thought it went pretty
smoothly. With careful planning and guidance by the instructor, the
complexity can be tamed. I haven't had experience with Java beyond
what's necessary to teach a beginning course though and so haven't
run into the frustrations that Jan's experiencing all that much.
On balance he's probably right -- it's not the best language for
beginners to study on their own, although with appropriate guidance
from an instructor, it can work.
One aspect that hasn't been addressed so far in the discussion of
language choice is the "social factor". I assume that Jamie's
brother isn't a hermit who plans to hole up in his room with a
language textbook and a computer, never to see the light of day
for the next couple of years while he makes himself into a guru.
If he's studying on his own, he'd probably benefit more from
a language that's got lots of online support (e.g. tutorials,
programming examples) and that his more computer-literate friends
might actually have an interest in too. From that point of view,
Lisp and Ada tend to lose (fine languages though they may be),
and Perl and Python are better choices, warts and all.
(If intrinsic merits of the language were the sole criterion, I'd
be pushing Simula-67, the original OOP language.)
|
cross
|
|
response 92 of 124:
|
Oct 9 16:24 UTC 2003 |
This response has been erased.
|
remmers
|
|
response 93 of 124:
|
Oct 9 16:33 UTC 2003 |
(I humbly retort that there are any number of skills that are best
learned with a guidance of a teacher, and that this does not diminish
in the least their appropriateness for students.)
|
cross
|
|
response 94 of 124:
|
Oct 9 17:48 UTC 2003 |
This response has been erased.
|
mdw
|
|
response 95 of 124:
|
Oct 9 18:27 UTC 2003 |
I wasn't greatly impressed with Java's string handling; it had all of
the same complexity as Jan complains about with integers, and more. I
think people learning Java are going to be learning more about the
complexity and resulting annoyance factor than they will about any
advantages of OOP. I think perl would actually make a better learning
environment for those advantages, although I might choose python, C++,
or perhaps even Lisp first.
|
cross
|
|
response 96 of 124:
|
Oct 9 21:08 UTC 2003 |
This response has been erased.
|
tod
|
|
response 97 of 124:
|
Oct 9 21:09 UTC 2003 |
This response has been erased.
|
cross
|
|
response 98 of 124:
|
Oct 10 03:27 UTC 2003 |
This response has been erased.
|
dah
|
|
response 99 of 124:
|
Oct 10 05:12 UTC 2003 |
Kerl.
|