![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Cast your mind way, way back, to the Dark Ages of personal computing.
Children like me sat at home playing with a Sinclare Spectrum or a
Commodore 64 - great chunks of grey plastic which load files from audio
cassette (remember those?), and produce blocky 16-colour graphics. All
of these machines are powered by low-end 8-bit microprocessors clokced
at around 1MHz, they have a few KB of RAM, and they each have a ROM
containing a BASIC interpretter of varying sophistication which also
doubles as a kind of Disk Operating System. (Not that anybody *has*
disks yet...)
It is a sobering thought to realise that as children like me sat at
home, glibly typing in the source code listings from computer magazines
(remember those?), PostScript had just been released, SQL was 5 years
old, C was 10 years old, Smalltalk was almost 15 years old, and BASIC
itself was already 20 years old. The mighty Lisp was over 25 years old
already. And just a few years later, C++ was invented.
When the C64 was designed, extremely powerful languages such as List,
Prolog, Smalltalk and even Pascal were already decades old. And yet, the
C64 came with... BASIC?
Even as Borland released TurboPascal 5.5 for DOS [that's the one with
the object-oriented extensions which aren't actually object-oriented],
Eiffel, Erlang and Miranda already existed. (Miranda is the [proprietry]
language which eventually gave rise to Haskell.) And Haskell 1.0 itself
was formalised only a year or two after TP 5.5 came out. For MS-DOS. (!)
Have a look at the attached chart. (Excel was less than helpful in
producing this, BTW.) There are several interesting anomolies:
- C and Prolog appeared at the same time. This doesn't make a lot of
sense. C is a crude, simplistic low-level bit-twiddling langauge, while
Prolog is a powerful high-level logic manipulation language. If there
were computers capable of running Prolog, why did C need to exist?
- Pascal predates C, and yet C fails to incorporate almost any of the
good ideas from Pascal.
- Smalltalk was doing OOP before home computers were even *invented*,
and yet it wasn't until 20 _years_ later that commercial products like
TP 5.5 and Delphi started to take the idea mainstream.
- SQL existed 15 years before high-capacity storage devices appeared.
(This is worse than it appears. You wouldn't even realise that a
language like SQL was *necessary* unless databases themselves had
already existed for some considerable length of time. And after that
there would obviously be a rash of incompatible proprietry languages
until people decided to design a standardised one.)
- PostScript was invented 10 years before laser printers existed. (It
was apparently designed specifically with laser printers in mind, as I
had always believed.)
- That splodge next to it is C++ and Ada. They were apparently invented
at the same time. And yet, 10 years later, nobody had heard of C++ yet.
- Haskell was invented back when people were still using green screens
and MS-DOS. It brings a slight chill to my spine to know that way back
when I was still coding with AMOS Professional, minds immeasurably
superior to ours had already constructed the most powerful programming
language known.
- Perl predates the Internet by half a decade. (WTF?) I can only imagine
it began life as a Unixy text-munging system in the style of awk, sed, etc.
- JavaScript predates Java. (WTF?!)
- Visual Basic is significantly older than Delphi.
- Ruby, PHP and JavaScript were all around at the same time as Delphi.
This is puzzling because when Delphi was new, the Internet didn't really
"exist" yet.
- C# (by which I denote the entire zoo of .NET languages) is the only
thing in the chart to have been invented this millennium.
Post a reply to this message
Attachments:
Download 'programming languages.png' (26 KB)
Preview of image 'programming languages.png'
![programming languages.png](/povray.off-topic/attachment/%3C4adefed8%40news.povray.org%3E/programming%20languages.png?preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> - C and Prolog appeared at the same time. This doesn't make a lot of
> sense. C is a crude, simplistic low-level bit-twiddling langauge, while
> Prolog is a powerful high-level logic manipulation language. If there
> were computers capable of running Prolog, why did C need to exist?
Speed?
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"scott" <sco### [at] scott com> wrote:
> > - C and Prolog appeared at the same time. This doesn't make a lot of
> > sense. C is a crude, simplistic low-level bit-twiddling langauge, while
> > Prolog is a powerful high-level logic manipulation language. If there
> > were computers capable of running Prolog, why did C need to exist?
>
> Speed?
How'd you imagine writing libraries for said high level logic manipulation
language to interface hardware? Assembler? I'd think C is your best bet there
since it's low level enough to do the bit twiddling to control hardware and high
level enough to not be a PITA.
Just my 2 cents
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
----- Original Message -----
From: "Invisible" <voi### [at] dev null>
Newsgroups: povray.off-topic
Sent: Wednesday, October 21, 2009 8:30 AM
Subject: Programming langauges
> Cast your mind way, way back, to the Dark Ages [...]
Wow... so many thoughts, and the coffee is only beginning to swirl in my
brain...
Bear in mind that the world wasn't as connected then as it is now.
Advancement in technology was slower, people used books and published papers
to share technical ideas, not the Internet. Even now, people use different
programming languages because, for the most part, programmers are
provincialists who tend to think the first language they learned is the best
one.
Pascal was never intended to be efficient on the inside, and was often
rejected by people working to create real-world software for that reason.
Wirth invented Pascal specifically as a teaching tool to educate students in
the concepts of nested, structured programming with a hierarchy of
visibility of token names. He himself never intended for it to be used in
the real world. OTOH, Ritchie (and Kernighan, but mostly Ritchie)
implemented C as a way to take a step back from machine code and assemblers
to make it easier to port system software across radically different
hardware architectures.
BASIC was also developed as a teaching tool, but it was also considered the
best choice by many for popular use (the name itself may have lead that
charge, based on the power of suggestion). More importantly, BASIC is
interpreted, so you can ship it without a compiler, linker, or memory for
large symbol tables. Slap it in a ROM, stick it in your gray box, and start
selling.
Myself, I was programming a PDP 11 (and a VAX 11/780 shortly thereafter)
using both C and Pascal at about the same time you were loading your
cassette tapes. I did have a Vic 20 about then, which I tried to program a
duplicate of Q*bert on. Good times, that. :D
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Captain Jack wrote:
> Wow... so many thoughts, and the coffee is only beginning to swirl in my
> brain...
Y'aarrr! ;-)
> Bear in mind that the world wasn't as connected then as it is now.
> Advancement in technology was slower, people used books and published papers
> to share technical ideas, not the Internet.
Sure. Back then, if you wanted better graphics, you had to wait for the
next home computer to be released. Today, more powerful graphics cards
come out almost weekly. (Although we have long since reached the point
where the graphical quality is as high as anybody needs, and you're only
arguing about 3D rendering power.)
Look at the C64 with it's 16-colour graphics. 5 years later the A500 has
12-bit colour and up to 64 colours on-screen at once. Another 5 years
and the A1200 gives you 24-bit colour and 256 colours at once. That's a
while to wait. ;-)
> Even now, people use different
> programming languages because, for the most part, programmers are
> provincialists who tend to think the first language they learned is the best
> one.
That must make me rare then. I can program in BASIC [I MEAN OLD SKOOL
BASIC WITH ALL-CAPS AND LINE NUMBERS INSTEAD OF A TEXT EDITOR], Pascal
(which is structured), PostScript (which is weird), JavaScript, Java,
Smalltalk, Eiffel (which are all OOP), Haskell (which is functional),
SQL (which is relational), and I have a vague grasp of Lisp and Prolog.
I've also written in machine code. (No, I don't mean assembly. I *mean*
machine code. I couldn't afford an assembler, so I assembled the program
by hand with a big book of op-code tables...)
Did I mention POV-Ray SDL in there?
The first langauge I learned was BASIC, and it sux. Even fancy AMOS sux.
[For anybody that doesn't know: AMOS is BASIC with bells on. Sort of
vaguely like Visual Basic, in that AMOS gives you an IDE and powerful
multimedia features, but the actual language itself has a billion syntax
features but still isn't all that powerful. AMOS Professional comes with
a 2,000-page user guide and has over 800 commands. It arrives on 14 DD
floppies - most of which are bitmaps, music, sprites and demo programs.]
> Pascal was never intended to be efficient on the inside, and was often
> rejected by people working to create real-world software for that reason.
> Wirth invented Pascal specifically as a teaching tool to educate students in
> the concepts of nested, structured programming with a hierarchy of
> visibility of token names.
I've heard this before. I never really understood why Pascal couldn't be
a useful real-world language. (Aside from a few obvious flaws which
should have been easy to fix.)
> BASIC was also developed as a teaching tool, but it was also considered the
> best choice by many for popular use (the name itself may have lead that
> charge, based on the power of suggestion). More importantly, BASIC is
> interpreted, so you can ship it without a compiler, linker, or memory for
> large symbol tables. Slap it in a ROM, stick it in your gray box, and start
> selling.
Lisp isn't too hard to interpret either. (But arguably too hard for
8-year-olds to program with.) Smalltalk is pretty easy to interpret, and
easy on the brain too. Prolog would also not be hard to interpret, but
probably not especially useful for home users.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Invisible" <voi### [at] dev null> wrote in message
news:4adf12fc$1@news.povray.org...
>
> That must make me rare then. I can program in BASIC [I MEAN OLD SKOOL
> BASIC WITH ALL-CAPS AND LINE NUMBERS INSTEAD OF A TEXT EDITOR], Pascal
> (which is structured), PostScript (which is weird), JavaScript, Java,
> Smalltalk, Eiffel (which are all OOP), Haskell (which is functional), SQL
> (which is relational), and I have a vague grasp of Lisp and Prolog. I've
> also written in machine code. (No, I don't mean assembly. I *mean* machine
> code. I couldn't afford an assembler, so I assembled the program by hand
> with a big book of op-code tables...)
>
> Did I mention POV-Ray SDL in there?
>
> The first langauge I learned was BASIC, and it sux. Even fancy AMOS sux.
Hmmm... lessee... Coursewriter, Fortran, COBOL, Pascal, Lisp, BASIC
(Dartmouth, A-BASIC, GWBASIC, VB et cetera on and on), C, C++, C#, Providex,
BBx, ZPL, Psion AXL, Forth, Prolog, APL (not much), Erlang, x86 Assembler,
System 36 Assembler--
There's more but that's enough urinating off the port bow. :)
>
> I've heard this before. I never really understood why Pascal couldn't be a
> useful real-world language. (Aside from a few obvious flaws which should
> have been easy to fix.)
As originally designed, Pascal didn't support source code modules or
including files, which made it difficult to write large programs with, and
made it almost impossible for a team to work on an application. You couldn't
make libraries to link to later, or use any kind of dynamic linking with it.
It can be (and has been) extended, but then you're getting into a gray area:
"My language is the best, so I'm going to add in bits of your language to
prove it." (Not saying that you're saying that, put down the flamethrower,
please. <g> However, I have heard that statement used in actual
conversation, in its essence)
Binary, digital computers can only do three things. They do them really
fast, and can create some amazing things from those three functions, but
still... when you get right down to it, the language we use doesn't really
matter. :D
> Lisp isn't too hard to interpret either. (But arguably too hard for
> 8-year-olds to program with.) Smalltalk is pretty easy to interpret, and
> easy on the brain too. Prolog would also not be hard to interpret, but
> probably not especially useful for home users.
What's great for that is Forth... you can fit the rules engine in about 4Kb
and include the most commonly defined symbols. All the rest of your RAM,
which doesn't have to be much, is available for code. Like Lisp, though,
it's a stack oriented language, and I think that confuses a lot of the
masses.
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
>> That must make me rare then. I can program in BASIC [I MEAN OLD SKOOL
>> BASIC WITH ALL-CAPS AND LINE NUMBERS INSTEAD OF A TEXT EDITOR], Pascal
>> (which is structured), PostScript (which is weird), JavaScript, Java,
>> Smalltalk, Eiffel (which are all OOP), Haskell (which is functional), SQL
>> (which is relational), and I have a vague grasp of Lisp and Prolog. I've
>> also written in machine code. (No, I don't mean assembly. I *mean* machine
>> code. I couldn't afford an assembler, so I assembled the program by hand
>> with a big book of op-code tables...)
>>
>> Did I mention POV-Ray SDL in there?
>
> Hmmm... lessee... Coursewriter, Fortran, COBOL, Pascal, Lisp, BASIC
> (Dartmouth, A-BASIC, GWBASIC, VB et cetera on and on), C, C++, C#, Providex,
> BBx, ZPL, Psion AXL, Forth, Prolog, APL (not much), Erlang, x86 Assembler,
> System 36 Assembler--
I might also throw in Mathematica, TeX, Tcl, MS-DOS scripting, and the
various other languages which aren't "programming languages" such as
HTML, CSS, XSLT, AmigaGuide, ARexx, Automake, the lambda calculus...
> There's more but that's enough urinating off the port bow. :)
;-)
>> I've heard this before. I never really understood why Pascal couldn't be a
>> useful real-world language. (Aside from a few obvious flaws which should
>> have been easy to fix.)
>
> As originally designed, Pascal didn't support source code modules or
> including files, which made it difficult to write large programs with, and
> made it almost impossible for a team to work on an application. You couldn't
> make libraries to link to later, or use any kind of dynamic linking with it.
When I first encountered it, Pascal already had modules and sane I/O. (I
gather that at one time this was not the case.) It still had that silly
restriction where array sizes had to be known at compile-time for no
apparent reason...
Anyway, it's irrelevant now. Pascal is a monomorphic language. It would
get laughed at today.
> What's great for that is Forth... you can fit the rules engine in about 4Kb
> and include the most commonly defined symbols. All the rest of your RAM,
> which doesn't have to be much, is available for code. Like Lisp, though,
> it's a stack oriented language, and I think that confuses a lot of the
> masses.
Heh, yeah, I can't see that one taking off really...
(You can also interpret Haskell fairly easily, but it probably requires
too many resouces.)
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Invisible" <voi### [at] dev null> wrote in message
news:4adf1def$1@news.povray.org...
> When I first encountered it, Pascal already had modules and sane I/O. (I
> gather that at one time this was not the case.) It still had that silly
> restriction where array sizes had to be known at compile-time for no
> apparent reason...
>
> Anyway, it's irrelevant now. Pascal is a monomorphic language. It would
> get laughed at today.
I had a friend who was working on a master's in Comp Sci in oh, about 1982.
His professor gave him this thesis project:
Write a Pascal compiler.
In Pascal.
I can still hear in my mind the screams coming from late at night from
friend's apartment. He was NOT a happy camper for those two years. :D
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> I had a friend who was working on a master's in Comp Sci in oh, about 1982.
> His professor gave him this thesis project:
>
> Write a Pascal compiler.
>
> In Pascal.
>
> I can still hear in my mind the screams coming from late at night from
> friend's apartment. He was NOT a happy camper for those two years. :D
Wee... I should have just grabbed a copy of Borland TurboPascal. It was
written in TurboPascal! ;-)
I once had a go at writing a Pascal interpretter in BASIC. (Because I
didn't have access to any computer that actually had a Pascal compiler
or interpretter.) Of course, not knowing anything about computer science
[because I was 11], I attempted to construct a program to edit,
tokenise, parse, type-check and execute the Pascal source code all at
once. This inevitably resulted in rapid and complete failure.
Today I understand that the correct thing to do would be to build a text
editor, *then* try to make a compiler/interpretter. And have this thing
process the souce code in several seperate stages, not all at once.
Basically I was trying to tackle a problem having no idea where to start
or how to structure it.
I was only 11, after all...
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
"Invisible" <voi### [at] dev null> wrote in message
news:4adf232d$1@news.povray.org...
> Basically I was trying to tackle a problem having no idea where to start
> or how to structure it.
>
> I was only 11, after all...
Let me think... 11, for me, would have been 1972-3, which would have been
the sixth grade... I didn't have access to any kind of computer anywhere
(that would come about four years later, when my shool got a remote terminal
attached to an IBM system 34). I *was* into electronics at that point, and a
rigged a kind of programmable light board out of some scrap wood, parts from
about a dozen flashlights and some resistors. You could patch jumper wires
into clips on the board to make little puzzles to solve by flipping numbered
switches. A couple of years after that, I spent some time building TTL
circuits, which was really cool, but not as flexible as I would have liked.
But, man oh man, when I did get started programming, I new I'd come home. :D
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |