Fog Creek Software
Discussion Board




Anger-Oriented Programming (the other AOP)

First off: I'm a college student.

Last semester, I was given several programming assignments, and I chose to implement them in Ada.  Let's not get into the details--the assignments were rigged so that certain Ada language features (such as storing a data structure in the stack, not the heap) were project requirements.  Fine.

Of course, Ada is a terrible environment to program in.  I used the GNAT IDE for Windows, which is a bad imitation of a Windows application.  I used the HTML version of the Ada language Reference Manual.  It was also terrible.  Ada web sites are awful.  Ada books are good but incomplete--useless for my purposes.

Thus the anger.

Programming the Ada assignments were a repeated exercise in frustration.  Need to convert this string to uppercase?  Oh, I'll just press F1--wait, no...I'll check the language reference manual...no, it says something about a map, nevermind...I'll check Google/Google Groups--ok, there's a three-lines-wrapped-text solution that will get it to uppercase.  Great.

Reading a line (multiple words) from standard in was a problem I had to look everywhere for.  Ada books, believe it or not, don't include this as an example anywhere.  The Ada reference manual has the function listed (  Get_Line(String, Length)  ), but no examples or argument descriptions.  There is no CPAN for Ada--actually there is, but it's gone now, great.  This took me hours of looking, literally, to figure out how to read a single line, possibly the second most fundamental thing in beginner programming!

Thus the rage.


Ada is an extreme example, but I've experienced this sort of frustration with almost every programming language I've encountered.  For each language's anger-honeymoon, I'm frustrated with everything.  This happened with early Java AWT (1.1), my forays into BASH scripting, and of course, Linux in a general sense.  My earliest memory of this was attempting to set up an IPX network via a laplink connection--with one broken serial port.  8 grueling hours later, it works.  All I remember is that, at the last, my ears were red (from the anger).


Is this a common thing when breaking into new territory?  Are you (the more experienced developer) often completely flummoxed as to what to do?  Or am I doing something fundamentally wrong here?


Pete

--
Notes:

-I'm done with Ada.  No use telling me what could-have-been.  It's done, forever.

-I don't want to rank the most frustrating things, and I hope I haven't offended by saying your preferred language/OS is a deep, flowing natural wellspring of anger.  Perl is much better than BASH.  Sun's IDE and framework has improved since the days of 1.1, I know.  Linux is plainly awful to learn/use without a working internet connection. Oops, that last one wasn't positive.  It wasn't meant to be.

..
Wednesday, January 14, 2004

I'd say your teachers have taught you well.  You can reasonably expect to struggle with shoddy documentation for the rest of your professional career.  Understanding sketchy documentation is a valuable skill almost as important as being able to write code.

Alyosha`
Wednesday, January 14, 2004

"Last semester, I was given several programming assignments, and I chose to implement them in Ada."


LOL!!!!

INCOHERENT ABBREVIATOR!
Wednesday, January 14, 2004

no, seriously... LOL!!!!!!!!!!!!

INCOHERENT ABBREVIATOR!
Wednesday, January 14, 2004

Yeah, pain like that will make you want to avoid putting other people through the same thing.  Well, unless you are sadistic.  Given that I generally am sadistic, I'm surprised that I document my stuff properly ;)

I have a friend who dropped out of college because the CS program used nothing but Ada.

Flamebait Sr.
Wednesday, January 14, 2004

I haven't had those kinds of issues for a while. But then, I haven't chosen a 20 year out-of-fashion language in a while either.

I might've had those kinds of issues with BASIC-8... No, wait - it was when I convinced management that punch cards really were the best I/O method...

[grinning, ducking, running]

Philo

Philo
Wednesday, January 14, 2004

I survived 5 years of Modula 2 at university.  Wasn't reason enough to drop out of the program.

christopher baus (www.baus.net)
Wednesday, January 14, 2004

Modula-2 was great!

Matthew Lock
Wednesday, January 14, 2004

>> certain Ada language features (such as storing a data structure in the stack, not the heap)

I'm just curious here, I thought C could store structs in the stack too?

Alex.ro
Wednesday, January 14, 2004

I used to love Modula-2 and, in general, pascal-like syntax.

Then I got over myself and realized that making the language more verbose wasn't helping things, which eventually sent me towards the world of more C-like programming.

I still like := and = better than = and ==, however.

Flamebait Sr.
Wednesday, January 14, 2004

C can store things on the heap (new, malloc), or on the stack (everything else).

Ada has no heap, so new statements come of a stack type environment. There is no garbage collection, and no delete statement. When a type goes out of scope all instances of that type are deleted, hence there is basically a stack for each type. (not sure if this is right - but that was how I understood it)

And I also had to do lots of Ada on my course, and it also sucked.

Neil Mitchell
Wednesday, January 14, 2004

I agree with Alyosha`, this is a perfect introduction to the real world, where anger management is a vital skill to remain productive.

It's even more vital in the real world, because the people who right the stupid and undocumented crap often work withing walking (and punching) distance of you. ;)

Sum Dum Gai
Wednesday, January 14, 2004

I've noticed a lot of developers won't touch something if it isn't immediately intuitable.  I welcome this development.  When I was a student I didn't mind, hence I know Linux/DYNIX very well.  Now that I'm older, I want to spend my time thinking about the problem domain, not spending it thinking about problems within the implementation details.  I won't run software where I have to RTFM.  I don't mind scanningTFM though.

old dog, not learning new tricks
Wednesday, January 14, 2004

Philo wrote:
>>I haven't had those kinds of issues for a while. But then, I haven't chosen a 20 year out-of-fashion language in a while either.

>> I might've had those kinds of issues with BASIC-8... No, wait - it was when I convinced management that punch cards really were the best I/O method...

Putting it this way, C# goes back to 1973 or there about.  For all practical purposes, Ada is from 1995. And it is still the best choice for writing good software. You will be surprised by its popularity with companies that do know how to make  reliable software. Ok, this is also cheap.

Someone else wrote:

>> Ada has no heap, so new statements come of a stack type environment. There is no garbage collection, and no delete statement. When a type goes out of scope all instances of that type are deleted, hence there is basically a stack for each type.

Not a single of these claims is true. However, Ada allows such a set-up for certain high-integrity environments if you want to.  Now that is impossible in almost any other language I know. I am pretty sure that you have never seen any of these other languages. Or heard of.

>> (not sure if this is right - but that was how I understood it)

Well, you did not.

Ada is an improvement over all its successors
Wednesday, January 14, 2004

Heh, reminds me of my college days.  I was self taught.  6 months basic (on a TRS-80), that was slow so I learned z-80 assembly.  Then learned 8086 assembly, then C, with diversions to Fortran, APL, and other forgotten languages.  After 7 years of 8086 assembly and 3 years of C I tried to change jobs, couldn't get past HR without a degree.  Off to college I go.  Intro programming class is... PASCAL!!!. 

What an f'n pain in the ass.  I got the language fast, but I couldn't bloody do anything.  I remember one assignment was to convert Ascii to binary and back.  10 minutes in any other language without using libraries.  Took me days to figure out how to get around Pascals type checking features.

All assignments were like that, I could crank the sucker out in minutes using C, but Pascal took hours.

Some languages truly suck ass.  Pascal is one.  ADA another (yes, I worked in ADA for a year).

Snotnose
Wednesday, January 14, 2004

I liked Modula 2 as well, but it never had the mainstream support of C or even Pascal.  It certainly could have been called an obscure language.  But in the end I survived even courses in VAX FORTRAN and VAX COBOL, which were even on the more obscure side.  I suspect that the current Ada implematation are much more well supported that any of the above.  Actually Ada was one of the languages I've always wanted to learn, but never had the time. 

I could think of worse fates than having to write programs from scratch in Ada.   

christopher baus (www.baus.net)
Wednesday, January 14, 2004

Snotnose uttered the following:

Some languages truly suck ass.  Pascal is one.  ADA another (yes, I worked in ADA for a year).

Funny, you claim to have worked with the language for a year, yet you still misspell the name of the language.  A powerful static type checking system is really beneficial for this type of clerical errors (-8

Karel Thönissen
Wednesday, January 14, 2004

"Funny, you claim to have worked with the language for a year, yet you still misspell the name of the language"

If you're talking about "Ada" vs. "ADA," then you're the one that has it wrong. Ada is not an abbreviation/acronym, it's named for Ada Lovelace, regarded to be the world's first programmer.

Philo

Philo
Wednesday, January 14, 2004

"Putting it this way, C# goes back to 1973 or there about.  For all practical purposes, Ada is from 1995."

Okay, I've just gotta ask, because I don't get this comment at all - I said (somewhat hyperbolically) "20 years out of fashion," NOT "20 years old."

C# is absolutely current, and was reengineered over the past 5-6 years based on a long history of software languages. Ada debuted in 1983 and from what I understand, started stagnating immediately [g,d,r].

(Disclaimer: I haven't written in Ada, but I've suffered with a LOT of Ada applications)

Philo

Philo
Wednesday, January 14, 2004

Returing to the original topic, I divide programming tasks into two categories.

Sometimes you're trying to figure out how to do something, like how to query or update data in database. At other times you're combining well understood building blocks to create a useful program, like a database application.

The first category is generally frustrating and I often feel as though it takes longer than it should. Many, though not all, programmers share that frustration. The second category is the fun part of programming, and I can crank out high-quality code of that sort.

Julian
Thursday, January 15, 2004

Um, Philo, I think that was Karel's point. It was "Snotnose" who got the capitalization wrong.

I've observed that there's some correlation between (1) disliking a programming language and (2) tending to write its name in all-caps. But that may be because the effect is particularly strong for Fortran and Lisp, where there's a simple reason: all-caps *used* to be correct for both of those, and their most vehement detractors tend to be people who've used an old version and aren't aware that the language has improved in, say, the last 20 years. :-)

Gareth McCaughan
Thursday, January 15, 2004

Philo: "If you're talking about "Ada" vs. "ADA," then you're the one that has it wrong. Ada is not an abbreviation/acronym"

Whilst I agree with your naming, I disagree with your reasoning. The usage of Unix or UNIX is also confusing so it is hardly fair to get at someone for capitalisation. See http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?query=UNIX&action=Search and particularly the last sentence of the last paragraph :-)


Thursday, January 15, 2004

Ada was waved threateningly at us when I first started learning in around 78/79.  All of us learning PL/1 and COBOL were going to be out of date, because the DOD was going to insist everything was going to be in this newly packaged language and what happened at the DOD would affect everything and everyone else.

Well guess not.

Simon Lucy
Thursday, January 15, 2004

I'm not sure writing a word in all caps counts as a spelling error.

As for the original post, no I don't think it is normal to get angry about the frustrations naturally encountered in learning something new.

Name withheld out of cowardice
Thursday, January 15, 2004

[As for the original post, no I don't think it is normal to get angry about the frustrations naturally encountered in learning something new]

I do. Use that anger! Beat the machine! It has taken your time and hence needs to be punished with MORE work.

If that doesn't work take out your angle grinder and cut a HDD in half. Thats a good start for an art project, albeit not very original. But originality can be "padded" in the art world using bullshit. Say it's a piece describing the lack of 18 inches of personal space in today's machine world then draw a blank look and scoff at them if they question.

And if all else fails, quote Occam's Razor.

trollbooth
Thursday, January 15, 2004

"Last semester, I was given several programming assignments, and ___I chose___ to implement them in Ada"

you chose to implement them in ada. haha. um. dude. you made the wrong choice.

.
Thursday, January 15, 2004

I understand your frustration.  Some tools/languages/whatever suck.  Maybe it's the missing features, maybe it's the poor documentation/help, maybe it's the lack of standards support... whatever.  Best thing to do is avoid those when possible.

Sometimes, though, it's not the tool, but the user.  I am absolutely convinced that a jointing plane is a great woodworking tool, because I know that it will produce a wonderfully flat, smooth surface.  But I don't have enough experience with one (yet) to get those results.  Same with some software tools: I simply don't have the experience yet to get what I want out of them.  It's my own ignorance and inexperience that are "at fault", not the tool.

I too get frustrated at having to use a crappy product, though.

-Thomas

Thomas
Thursday, January 15, 2004

*  Recent Topics

*  Fog Creek Home