Tuesday, November 22, 2005

What goes around, comes around...

I started my career as a PL/I programmer working on IBM Mainframes. It was there I first learned about databases (SQL/DS on the IBM 3080 – or was it a 3083… and DB2 on MVS).

After PL/I – I learned REXX (the restructured extended executor). A very neat language, to me it beats perl and many of the other scripting languages still.

Then came – C. C is awesome, it is simple, it is lean, mean and very clean. (There were short run ins with Pascal, Lisp, and Prologue in there too but nothing ever came of them for me). Sure, I shot my self in the foot many times learning C. The other languages protected me from many things (PL/I – very flexible, very very safe though with compile options like subscriptrange to do array bounds checking, stringrange for buffer overflows and the like), but C was rather unforgiving. Early on I spent a significant portion of my day hitting ctl-alt-delete on a DOS box when something went wrong (when de-referencing a NULL pointer typically meant wiping out your interrupt table, crash). When ctl-alt-delete didn’t work, had to pull the plug. Then I discovered Coherent unix and wiped DOS/Windows off my PC and did it right (no more reboots when something went horribly wrong).

Then, in the late 80’s/early 90’s – this “thing” called C++ came out. A fellow by the name of Bjarne Stroustrup invented it. It did this thing called “object orientation”. It was going to revolutionize programming as we knew it. I fell for it. Bought every book written about it. Learned it. Tried to use it. Thought I must be doing something wrong – the joy was gone. This was not easy stuff. This did not make my life better. This was not good. But – everyone else was saying it was so we plugged along (you cannot be the only developer saying “this isn’t good” if everyone else is seemingly happy with it. In hindsight – I think we were all afraid to be the first to say “something is horribly wrong here”. I myself escaped from there to an Ada project – never to return to C++ again. C – absolutely, still use that language to this day.

So, why am I telling you this? Because I just stumbled upon this article (http://artlung.com/smorgasborg/Invention_of_Cplusplus.shtml) last night. (Yes, I realize it is tongue in cheek, “not real”)

I am somehow reminded of some other language upon reading that… Especially when I read:

And, as I said before, every C++ programmer feels bound by some mystic promise to use every damn element of the language on every project.

Anyway, made me laugh. What goes around comes around.

And for the truly bored. Check out this.


Anonymous Anonymous said....

And for the truly bored.

I got up to about ten seconds until I remembered that I'm at work and shouldn't be playing silly things like this on company time.

The "invention of C++" link is giving me a "document missing" error, so I can't follow it. Too bad.

Funny. I cut my teeth on VAX Pascal (on a VAX 11/780), Turbo Pascal, VAX BASIC, and finally C when we moved over to Unix. Like you, I really enjoyed programming in it, though trying to debug those elusive memory errors could be a real hair-pulling experience. I coined the term "Malloc Moment" to describe the feeling of heartburn.

(This might also explain my slowly receding hairline, but never mind.)

When, eventually, I had to port several of my C programs over to Windows and Visual C++, I found myself using just enough C++ features to get the job done. Otherwise, I tended to stick with traditional C. That object-oriented stuff was giving me headaches.

I'm glad to know I'm not alone in the universe.

Bob Shepard

Tue Nov 22, 12:10:00 PM EST  

Blogger APC said....

>> The "invention of C++" link is giving me a "document missing" error

Yeah but Google is a wondrous thing, the world's brain or something, according to some bod on Radio4 last night...


Cheers, APC

Tue Nov 22, 12:16:00 PM EST  

Blogger thierry said....

and now java and j2ee will change the world...

Tue Nov 22, 12:20:00 PM EST  

Anonymous Anonymous said....

Looks like a capitalization error in the link. The "I" of invention and the "C" of cplusplus are capitlized for the actual page.

Tue Nov 22, 12:46:00 PM EST  

Blogger Thomas Kyte said....

Thanks, I fixed the link - something lower cased the entire url on me somewhere along the line!

Tue Nov 22, 12:47:00 PM EST  

Anonymous Anonymous said....

Google is a wondrous thing

Yes, it certainly is. Thanks for the link! I just about choked reading the article, I was laughing so hard.

It's been a few years since I did anything in C/C++, so I couldn't resist this experiment: under Solaris 9, I wrote the classic five-line "hello world" program as follows:

#include <stdio.h>
printf("Hello world!\n");

Then I compiled it, first with "gcc", then with "g++". The C binary was 6,375 bytes. The C++ binary was 228,882 bytes. Both give the same output.

Now that's kind of scary.

Bob Shepard

P.S. Today I learned about "HTML entity encoding", so I could get those angle brackets to render properly. Very useful.

One odd thing: when I go to edit my document after previewing it, the encoding disappears, replaced by the actual brackets. From now on, I'll do my editing in Notepad and paste this into the blogging software.

Tue Nov 22, 01:12:00 PM EST  

Anonymous Linda Seley said....

A fellow ex-PL/1 programmer! Not too many of us out there.

Tue Nov 22, 01:35:00 PM EST  

Blogger Robert said....

never Fortran eh, tom ?

Tue Nov 22, 01:42:00 PM EST  

Blogger Thomas Kyte said....

nope, never fortran - although Oracle was originally written in that language (way before my time at the company though :)

Tue Nov 22, 01:49:00 PM EST  

Blogger Bill S. said....

Linda Seley said....

A fellow ex-PL/1 programmer! Not too many of us out there.

Sure there are - you just have to know where to look to find us.

Tom - I cut my teeth on the 308x series systems as well. Both as an operator and a programmer. Fun times. :-D

Tue Nov 22, 02:29:00 PM EST  

Blogger Peter Lewis said....

Fabulous stuff, this. In ye olde days of Oracle 6 all our ancient data-loading programs were written in Pro*Fortran. They worked too...

... zmgiwcdy

Tue Nov 22, 02:37:00 PM EST  

Anonymous Andrew said....

PL/I -- what fun that language was!!!

if if

No reserved words.

Then there was the PH project manager who had never heard of PL/I but insisted that all programs be written as if PL/I was some variant of COBOL. Arrrrrrrr what pain, what agony. Until the system was rewritten as PL/I was meant to be written the nightly batch never finished before the next cycle was to start.

Tue Nov 22, 03:20:00 PM EST  

Anonymous Anonymous said....

I feed about Java the way Tom feels about C++. Actually, the real problem is J2EE app servers. If I see one more XML config file I'm going to lose my mind.

Tue Nov 22, 03:28:00 PM EST  

Blogger Niall said....

Tom wrote

sure I shot myself in the foot a few times about right.

Anonymous wrote
I feel about Java ... but ends Actually, the real problem is J2EE app servers. If I see one more XML config file I'm going to lose my mind. This is one of the reasons J2EE and .net get a bad name. Think about it a while. You have a config file for an install, what better choice for file format than self-describing text that can be sent over the wire to describe the private configuration details of your system to a foreign computer.

One could do this in any system - the language is bad decision independent here.

p.s. word verification = omkgefk isnt that either a swear phrase in txt spk or an Oracle kernel call.

Tue Nov 22, 04:19:00 PM EST  

Blogger scubajim said....

I worked with some of the guys who worked at Mentor Graphics in the '90's. I worked with them at another company. I remember the stories about hte shift to C++...

Maybe some software engineers are attracted to inordinate complexity. It is diffcult to get a good balance between straightforward and flexible design. I think sometimes we get caught up in "clever" things.

Tue Nov 22, 04:28:00 PM EST  

Anonymous Krous said....

now why would that be scary... thats like deriding an axe on its ineffectiveness to cut a tomato...

Tue Nov 22, 05:58:00 PM EST  

Blogger Connor McDonald said....

Java/J2EE/et al, n.: A series of gimmicks delivered on an annual basis.

A 2002 Oracle presentation: "EJB is the future"

A 2003 Oracle presentation: "JSP is the future, but we still support for the obsolete EJB applications out there"

A 2004 Oracle presentation: "JSF is the future, but have support for the obsolete JSP applications out there. We no longer support EJB"

A 2005 Oracle presentation: "ADF is the future, but have support for the obsolete JSF applications out there. We no longer support EJB or JSP"

blah blah blah blah

Each one accompanied by ...

"Now setting this all up is easy... all you need is an XML file here, here, here and here. A dot-properties file here, and here, and here, and although its not in the documentation, you'll also need one here...."

"And it something goes wrong, then its all very easy to track. You can find the log files here, here, here, over here, and over here as well, and here, and here, and here."

I'm always left agape at sales people who come up with gems like: "There is too much complexity in building a solution from ground up. Its much simpler to be using a J2EE-XML-JSP-ADF-OC4J-EAR-SOAP-SAX-HTTP-SSL-SOA-BPEL... framework..."

Oh yeah, sounds like a breeze

Tue Nov 22, 07:49:00 PM EST  

Anonymous JulesLt said....

Having recently picked up a Mac, I've been looking at Objective-C, which makes an interesting comparison to C++ in terms of making an object-oriented language based on a C syntax.
(It was one of the things Jobs picked up when looking for technologies for Next, and briefly excited some people at the time, but never really got the momentum C++ did).

Anyway, unlike C++ it is a strict superset of C. It even seems to make some sort of sense - there isn't a lot to learn beyond C - just a new syntax for classes and methods.

(For other platforms there's a gcc version, although you really need the whole GnuStep/OpenStep thing to actually get a useful set of foundation libraries. And seeing as it isn't much used, it's of academic interest outside the Apple world. But it is an interesting comparison).

Tue Nov 22, 09:14:00 PM EST  

Anonymous Mark said....

PL/1 - I haven't thought of that in a while. My first programming job was PL/1 on a VAX accessing a codasyl database. Fun, Fun, Fun!!! Your PL/1 ended up being about 20 or 30 loops as you went through all the sets in the DB looking for the records you needed. I talked to some guys at my old company today and they are still using that technology. The old stuff sure was built to last!

Tue Nov 22, 09:53:00 PM EST  

Blogger Aman Sharma said....

Connor said.."here here here"

thanx for a big smile.Really needed it.
best regards

Tue Nov 22, 10:08:00 PM EST  

Anonymous Roderick said....

The first language I learned was Atari BASIC. At one point I spent hours typing a small program into an Atari 800 that would plot out a strange attractor in "hi-res" (320x192!) sort of like what you see

One problem: It would take 24 hours before anything remotely cool appeared, and the rest of my family wanted to watch TV. So I backed up the program to tape (an Atari cassette player). Next day, never could read the tape back in, and I didn't have the patience to type everything in the same.

Over the years, I've dabbled with Assembly, FORTRAN, Pascal, LISP, C, Java, etc. etc. usually with the similar results as above. Almost tore my hair out writing nested CASE statements for an X11 utility program. I even wrote a "Hello World" program that core dumped and froze a PDP-11.

Sometimes I'd see customer projects that made me wonder if the latest whiz-bang languages and dev tools were chosen more so the programmers could pad their resumes, than to achieve success... Or is it just that it's easier to get budget approval if the latest fad is used?

Wed Nov 23, 01:48:00 AM EST  

Anonymous Toon Koppelaars said....

Connor, so true!
Had a good laugh reading your comment.
J2EE is way, way too complex. How that technology helps me better serve the business... beats me.

Wed Nov 23, 02:22:00 AM EST  

Anonymous Quadro said....

have you read some books by Bjarne Stroustrup?

Wed Nov 23, 04:23:00 AM EST  

Anonymous Phil said....

This is worth a good laugh if you've got a spare 10 minutes: http://thc.org/root/phun/unmaintain.html

Wed Nov 23, 05:08:00 AM EST  

Blogger Tony Andrews said....

I loved Connor's comment! It really struck a chord with me. I keep asking: why is it that application development continually gets harder instead of easier?

(Except, of course, if you are smart enough to use HTMLDB instead!)

Wed Nov 23, 06:41:00 AM EST  

Blogger Thomas Kyte said....

have you read some books by Bjarne Stroustrup?

Oh yeah, I had all of the c++ books back in the day, trying to make real sense of it all. I remember "The Annotated C++ Reference Manual" the most.

Wed Nov 23, 07:33:00 AM EST  

Blogger Sam said....


What's your opinion about Java and JEE ?


Wed Nov 23, 10:59:00 AM EST  

Blogger Thomas Kyte said....

What's your opinion about Java

Java is just a programming language, and not the last one that will ever be....

J2EE is pretty "big" and fairly "complex".

Wed Nov 23, 11:14:00 AM EST  

Blogger Peter Lewis said....

a bit amusing....:


WV: ffsvs
... like a fresh G&T

Wed Nov 23, 05:21:00 PM EST  

Blogger Noons said....

mind if I take a copy of that one?

It sums up the java/j2ee con-job like nothing else I've ever seen.

Languages from the past? Jeez, let me see:

early 70s: NEAT/3, Fortran, Cobol

mid 70s: IBM Assembler, Univac Assembler, Cobol, Fortran.

80s: Univac Assembler, Pascal, C, shell script, PSP (Prime's Systems Programming language).

90s: C++ (stupid language, gave up on it), Javascript, M$ Jscript, Pascal, C, Perl, Java, shell script

early 00s: Java, C, PHP, shell script.

mid00s: C, shell script, PHP.

ah yes: of course PL/SQL and SQL sprinkled all over the place since the 80s.

Best languages? ANSI C without a doubt. Still the most used system development language by a country mile: all of Linux, Unix, Windows and Oracle RDBMS is written with it for a reason (yeah, must be because all of those are stupid?).

shell scripting languages (bash, ksh) would be next.

Pascal is a sweet language, Delphi is still my first choice tool if I have to do something quick and dirty in Windows.

Java is not bad, j2ee and the moronic incompetents who flog it are the real problem.

And a bit of trivia: Gartner has done a survey in Australia for most used development environments, outside of web software makers. Results? In descending order:
Visual Basic, C, PHP.
Last? Java/j2ee.

They didn't publish the survey but a copy was made available in a local paper. Only to be immediately discredited by a bunch of elbonians with a vested interest in Cecil B. de Mille j2ee projects.

Got the pattern?

Thu Nov 24, 12:09:00 AM EST  

Blogger Moans Nogood said....

The truth is, we Danes had a plan:

First, Bjarne constructed Poly Pascal (big in Denmark, not big anywhere else - hey, I even used the ppas compiler on a very early TWO diskette IBM PC), then sold it to Borland, and it became big as Borland Pascal.

Trouble was, everybody in the World now had the same compiler and the same (dis)advantages.

So we shipped Bjarne out of the country with the mission of creating something that would throw the other countries off track. Calling it ++ when in reality it was a minus-minus wrt productivity was a really good idea.

Man, it wasted lots of resources in many countries, while we Danes continued to be productive in real languages.

So, OK, you found out now. Danish advantage gone.

But notice what we have asked Bjarne to do now... and he's been at it for several years, and millions of programmers are falling for it.

Man, we're clever in Denmark.

Thu Nov 24, 02:22:00 AM EST  

Anonymous Anonymous said....

I really like Java as a programming language (and even many of its library classes). But its so slow (as desktop app).

Glad I'm not the only one thinking that C++ isn't a good idea. I like C, then I learned C++ (worked a short time as C++ programmer), then hated it.

Thu Nov 24, 05:48:00 AM EST  

Anonymous Leo Mannhart said....

REXX, yes I remember. I was using it on an IBM 4143 (or something like this).
But soon, I started using a software where the binaries had names like aij.exe, bij.exe, ccf.exe and the like ... and I'm still using SQL (and PL/SQL) today :-)

Anyone with half a brain can see that object-oriented programming is counter-intuitive, illogical and inefficient.
where can you see here tongue in cheek ;-)

Thu Nov 24, 10:42:00 AM EST  

Anonymous Carl said....

Yay - Rexx! Definitely the nicest programming language. Especially when you combine it with CMS Pipelines. PL/SQL is a close second though. I miss the Mainframe.
I've done Fortran too. Definitely not the nicest programming language!
Hard to believe I'm 28, not 48....

Thu Nov 24, 11:58:00 AM EST  

Anonymous Sokrates said....

I learnt C as one of my first languages and we wrote some large
programs in C (together with 4 or 5 colleagues)

I remember we wrote OO-Code (without knowing it) and were pretty excited
when we heard of C++ - a language natively supporting OO.

I tried to learn it, but never succeeded.
Much to complicated, my brain is much too small for it (that's what I always
thought, never understood how someone can really manage to write programs in C++ and understand what he's doing).

However, I still find OO is useful
and Java is great.

(C is still my favourite after SQL and PL/SQL)

Thu Nov 24, 11:59:00 AM EST  

Anonymous Hans Henrik Krohn said....

Correction, perhaps of historical interest only, to Moans Nogood's post about Bjarne Stroustrup: It was actually the Dane Anders Hejlsberg who wrote Polypascal, which he then sold to Borland who renamed it Turbo Pascal. I have programmed in Polypascal on a CP/M microcomputer with some 50K of RAM available, those were the days!

Sat Nov 26, 03:24:00 PM EST  

Blogger Gleisson Henrique said....

Too young to comment on languages !!! How about that link for the truly bored ones ? Didn't anybody check out? I did ! My best time was 21.859 seconds ... That is a sweet little game ! Not too heavy and doesn't take a lot of bandwidth, my network admin will kill me now! Who can beat me ?

Mon Nov 28, 07:29:00 PM EST  


<< Home