OOP
Barry Shien
25 August 2019 ·
Object-Oriented Programming — The Trillion Dollar Disaster (article linked below.)
Among other things I too have wondered, for decades, whatever has become of message-passing semantics which was what a lot of the important early papers on "object-oriented programming" were really about.
The core idea was to sort of merge programming with databases as a single concept, this is ca 1980 (or a bit before) so SQL was still a hot new idea.
So for example a ship was kind of like a table definition and a
particular ship was kind of like a row in that table holding the state (e.g., current position, captain's name) and qualities (e.g., weight, max speed.)
And you changed that by passing a particular ship a message like tell it to change its position or even tell it to draw itself on a map perhaps at the new position.
(I remember ships in a lot of MIT examples and suspected the US Navy had shown a lot of interest.)
But the "rows", objects, were more like Unix daemons and you were passing them something like JSON.
And whole systems were glued together from that.
What I DON'T remember was all this stuff like protected, private, interfaces, traits, and so on mostly used to protect the state and/or accessibility of an "object".
No more than one needed to protect a running unix daemon's state (to run with that analogy) from applications trying to send it messages, other than perhaps checking the validity of the messages.
In a nutshell they weren't in the same memory (or name) space and could only communicate via well-structured messages.
And then somewhere everything went kablooey and it seemed like 90+% of OOP language design was going into controlling a single shared (w/in an application) memory and name space with ever more complicated type systems which often had about zero to do with actually solving the problem they were paying you to solve. It often felt more like a vast, complicated ritualized tribute to the OOP gods.
And despite various heroic efforts (persistence and all that) the database part mostly remained external to the language.
Maybe I should look into Erlang which the author mentions in that article.
Object-Oriented Programming — The Trillion Dollar Disaster
MEDIUM.COM
OOP is considered by many to be the crown jewel of computer science. The final solution to code organization. The end to all of our…
11Nii Quaynor and 10 others
96 comments
3 shares
Steven Schoch
Doesn't Qt do something like that?
Barry Shein
Qt is a UI/graphics library (on steroids) but maybe it's structured like this, I've only used it indirectly (packages I've worked on used it) so couldn't really say.
1
Tim Pierce
Go has taken up some of the message-passing approach to software design. Ironically (or perhaps appropriately) Go isn’t object-oriented at all, but manages to fake it well enough to feel like that’s what you’re doing most of the time.
Barry Caplan
Tim Pierce I just started looking at go last night... Any useful summaries to can recommend?
Chris Devers
From the little bit I’ve dabbled in Objective-C and Swift, it seems like they lean heavily on the message-passing approach too, even if they also have a lot of the rest of the modern OO baggage. Some language designer at Apple, at least, seems to remember this stuff…
Richard Welty
OO covers a variety of concepts, from the extremely (excessively?) powerful but slow models of Lisp and Smalltalk to the very constrained models of Java and C++. so there's a matter of which OO are you talking about?
3
Barry Shein
I wouldn't call Lisp object-oriented tho object-oriented systems such as Bobrow's LOOPS and later CLOOPS were implemented for Lisp and were interesting, particularly LOOPS, CLOOPS kind of shoe-horned the ideas into Common Lisp.
But one can generally argue the elements were there. And you could put function ptrs into C structs along with data which got you pretty close, RPC written in C for BSD 4.3 and the file system switch for NFS &c looked very object-oriented in concept or at least had a nice notion of encapsulation.
But I guess like the article we're talking about Java and Java-like modern languages, OO php is similar in general structure for example.
Richard Welty
a lot of things happened shoehorning OO into strongly typed languages in the C style. the Lisp implementation i learned on (ZetaLisp on the Slime) was closer conceptually to the original message passing mode. i had to learn C++ after years of Zetalisp and Common Lisp, and found it very aggravating. Java was a little less frustrating to me.
Barry Shein
LOOPS was written for the Xerox Dandelion (and other models, Dolphin?) Lisp machines.
It was pretty amazing in that it was completely integrated into the LISP environment and OS and window system.
So for example you could browse the entire lisp system w/ mouse clicks, right down to the device drivers etc.
To add or modify a method you just double-clicked something and began typing into a window.
I implemented IP and UDP (and then TFTP so I could save/restore files to our Vax) using LOOPS so mostly it started with take your mouse and drill down to the ethernet driver, add a new method name for IP packets in its ethernet type table, write IP, etc.
CLOOPS was more like just coding with a bunch of OO primitives.
Andrew Tannenbaum
I always wondered why programming languages got more complicated and difficult over the years, when I assumed they would get simpler and easier.
4
Dave Crocker
It appears to be remarkably difficult to teach people to keep things simple. They constantly believe the way to enhance something is to add to the core. To be fair, it often does take extra effort to figure out how to make things simpler. So the adage about the letter being long, for lack of time, applies equally to design, including PL design.
1
Richard Welty
systems anyone?
Bernie Cosell
I think Dave's right. If you barely know what you're doing in setting up the object model, you make this huge complicated cascade of object and inheritances and containers of objects. If you understand what you've got, you can make the object model a lot less deep, obscure and complicated
Dave Crocker
The "if you know" point hinges on maturity of the work, and of course for most interesting work at the start, we don't know. Hence most interesting design work has to be iterative, where the real challenge is having iterations able to refine or substan… See more
Scott Brim
reminds me of RISC/CISC/etc.
1
Rich Rosen
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone.” --Bjarne Stroustrup
1
Robert La Ferla
Interesting but I have to disagree with the article. Object-oriented programming made everything today possible. However, there were "horrible" languages like C++ that were complex and confusing which led to disasters. See: http://harmful.cat-v.org/software/c++/linus
HARMFUL.CAT-V.ORG
Linus Torvalds on C++
1
Bernie Cosell
Any of you guys mess with the original C++ -- when it was still just a collection of preprocessor hacks? I took a course in it when we were thinking of moving to it. I though it mostly stunk and never gave it another thought.
2
Barry Shein
Mess with it! I spent quite a bit of time debugging a "bug", it was pretty amazing/disgusting. In a nutshell someone had a C++ program which was ok on the regular Unix portable C but wouldn't compile if they used Greenfield's commercial C.
What it turned out was the code the C++ pre-processor generated was wrapping an if statement into a switch like:
switch(x) {
case a:
astuff...
if(cond) {
case b:
bstuff;
case c:
cstuff;
}
case d:
dstuff;
default:
defstuff;
}
My language lawyer friends decided that was legal C but wow just wow.
I think Greenfields begrudgingly took it as a bug report only because they wanted C++ to be usable w/ their compiler tho I don't remember if they fixed it.
3
Barry Shein
...if they fixed it or the C++ people removed that after I reported it to them.
Frank Wales
Bernie Cosell Yes, I remember getting cfront working on HP-UX, only to discover that the error messages from the actual compiler often bore little relation to the code that I'd written, because cfront was inventing its own set of identifiers to make things work. And good luck if you ever wanted to use the C debugger for anything.
Bob Frankston
I'm working on a deeper essay though I touch upon some of this in https://rmf.vc/IEEEAboutSoftware.
I read a similar (but far shorter and more to the point) article and it helped crystallize my thinking about why the rigid object-orientation is problematic. Another form was object-oriented operating systems like Caro. One fundamental fallacy is that an object is unambiguous when much of the power of computing (in a larger sense) is that you can interpret bits differently in different contexts.
Some languages allow you to program around this though operating systems less so.
This is one reason I like JavaScript and a return to the power of Lisp and why I refer to TypeScript as type annotation and as a conversation with the IDE rather than with the compiler
While languages like Java/C# are vast improvements over C++ they are still more in the tradition of rigid objects while JavaScript has returned us to the more general concepts in LISP.
The Stories of Software
RMF.VC
2
Don Hopkins
Was it SICP or Alan Kay who said that computer programming languages should be first and foremost a way of communicating with other people, not computers? But at least having a conversation with the IDE is better than talking to the compiler directly.
David Henkel-Wallace
Office of naval research administered most of the ARPA money at MIT
1
Barry Shein
I kinda knew that but nonetheless it seemed they were interested in this particular research path.
ONR was also the sponsor of BU's ARPAnet connection tho we didn't do much with them beyond that.
Marshall T. Rose
Erlang, now elixir, a winner! https://en.m.wikipedia.org/.../Elixir_(programming_language)
EN.WIKIPEDIA.ORG
2
Miles Fidelman
Actors. The only way to go. Yay Erlang.
Bernie Cosell
First off, the earliest program I know that uses that technique was Steve Russel's SpaceWar on the PDP-1. The inner loop of the program cycled through a list of the "objects" on the screen. Each "object" was a few variables and pointers to subroutines. I don't recall the details [I have alisting of spacewar someplace around here if you really need to know], but the callouts were, as you suggested for things like "draw yourself", "move". When you fired a torpedo, it simply added a torpedo clump to the list and set it in motion. I was amazed at how compact and easy to understand [and simple and fast] the code was.
Second, I don't know about message passing. I think of OOP as being overly complicated layer upon layer of intertwined "objects" -- my mind was boggled when I saw the "map" of the object model for Excel VBA. It struck me as crazy. I think they went crazy with the abstractions, so that even the simplest thing [in Excel] turned out to have a half dozen or more impossible to understand flelds as you made it walk its way down the object-model-tree. I can get onboard for OOP if the objects are reasonably simple and have some intuitive meaning.
3
Barry Shein
Which is also reminiscent of what later came to be known as "sprites" in graphics programming.
Barry Shein
You can download Dan Weinreb's very influential 1980 paper on "Flavors" from the following link, look in the left hand column for the pdf download link:
https://dspace.mit.edu/handle/1721.1/5700
Flavors: Message Passing in the Lisp Machine
DSPACE.MIT.EDU
2
Bernie Cosell
Actually, I implemented Flavors in BBN-Lisp. We were porting some fancy lisp/flavors program to the SUN workstation [I think it was intended to monitor oil drilling rigs, but I dunno -- I was the systems guy to get lisp and flavors working, other people had to make it do something [sorta the story of my life at BBN]. I don't recall that it had message passing.. I recall "mixins" I think but that was like 30+ years ago]
Can't get the report -- its a postscript file and I don't feel like fighting with ghostscript just to read it.
2
Barry Shein
I can't find a direct browsable link to the flavors paper tho it's probably on an MIT CSAIL machine somewhere.
1
Richard Welty
mixins were an aspect of the inheritance mechanism. but in zetalisp/flavors, you sent "messages" to objects, e.g. (send :foo arg0 arg1 ...)
1
Don Hopkins
;;; -*- Mode: LISP -*-
;;;
;;; Bouncy pushy window mixin
;;; By Don Hopkins
(defflavor pushy-bounce-window-mixin (x-vel y-vel gravity friction proc delay)
()
:gettable-instance-variables
:settable-instance-variables
:initable-instance-variables
(:required-flavors tv:window))
https://www.donhopkins.com/.../lisp/bounce-and-push.lisp
Joseph Szep
is the language of the future.
Barry Shein
fortran
1
Ross Stapleton-Gray
kickboxing
1
Frank Wales
If you squint at them right, you could think of microservices with RESTful APIs as clusters of objects of a similar type whose namespace happens to be addressable via URLs, and the API interactions as message passing with their clients.
All the private/protected malarkey then becomes something that happens at different auth*n layers from the objects themselves, as do any ACID-type characteristics of the objects and their behaviour that you care about.
Done right, the APIs even become composable and (somewhat) discoverable.
Of course, instead of being a chunk of memory with some code around it, even the tiniest object becomes a database with an app tier, a cache layer, an auth layer and probably a bunch of subscribers, actors or promises floating about in fleets of semi-undebuggable virtual containers.
But then we have to do something with the embarrassment of hardware we have these days, right?
1
Kragen Javier Sitaker
This is very much the idea of REST.
Frank Wales
Indeed, although it's also why I said "Done right...", because I've encountered many so-called REST APIs that are basically XML RPC over HTTP, which is just a terrible misunderstanding of the concept.
Leo L. Schwab
(Fair warning: Written while consuming a fine wheat & rye stout:)
My peculiar upbringing via-a-vis programming left me cold to C++ and its strictly hierarchical class structure (though I could never put my finger on why until relatively recently). I also wondered why books on OOP programming (C++, Objective C, NewtonScript, etc.), when describing how to define object classes and methods to act thereupon, insisted on speaking of, "sending a message to the object," when in fact no such thing was happening.
Because I knew what message passing looked like, and it didn't look like what they were describing. What they were describing was a function call with an implicit parameter. Message passing, OTOH, looks like:
msg.action = ACT_FOO;
msg.arg0 = foo;
msg.arg1 = bar;
msg.reply_port = &reply_port;
/* ... */
SendMsg (dest_port, &msg);
reply = WaitPort (&reply_port);
if (!reply.error) {
. . . retval = reply.retval;
}
...Because that's how it was done on the Amiga computer.
Interestingly: Amiga's multitasking executive, and its message passing primitives, were designed by Carl Sassenrath, who was a fan of LISP at the time, which is probably why doubly-linked lists are everywhere in AmigaDOS.
So here we are in 2019, the intracacies of C++ and its STL remain largely a mystery to me, and five years ago I picked up on Golang and its channels almost instantly.
At the moment, I'm reading up on Rust, which looks fascinating.
David Henkel-Wallace
Leo L. Schwab objC messageSend does essentially that. It’s very dynamic, basically Smalltalk grafted onto C.
I find c++ quite expressive, actually, but don’t use that much “classism”. Lots of generic functions and strong use of the type system and RAII. Some mixins
1
Joel B Levin
I spent a lot of time in the '90s using the CORBA framework for distributed objects among network servers. The concept of messaging is pretty explicit (or even literal) in that kind of framework.
Mike O'Brien
FWIW I used Smalltalk to gen up a GUI for a constantly-shifting research engine built in Prolog. I understand Smalltalk is, or was, extremely popular in the locus of the NYSE for building GUIs for financial software FAST, where not having the software running cost $billions/day. These folks don't care about antecedents and architecture, they just care about shortening the time from original request to running software as much as possible. I couldn't have done what I did (new GUI in a day) without Smalltalk.
Barry Shein
I had it on pretty good authority (a Sun salesman I knew pretty well who was involved) that an important step in Sun becoming SUN was when they demo'd that the pile of CRT's on traders desks could be a bunch of windows on one screen and they (some big brokerage house) said basically "we want 1,000 of those asap" and then every brokerage house had to have them.
That's actually what led to Sun's x86 "roadrunner" product, there were trader apps which only ran on x86 not the 68K and later Sparc Sun was selling.
The Point: GUIs were important on Wall Street.
Mike O'Brien
Barry Shein Funnily enough, Sun came to Dave Patterson at Berkeley and asked him, “We wanna design our own RISC chip. Got anything for us?” And he said, “It just so happens I brought my music with me.” He pulled off the shelf the plans for their recently-completed “Smalltalk on a RISC” processor, and that became the basis for SPARC. So when various versions of Smalltalk came to the Sun, they ran like a bat out of hell (relatively).
1
Barry Shein
Similar story, sort of, Sun (specifically Steve Bourne) came to us at Encore because we had very good, working, production, truly parallel versions of BSD, SysV, and Mach (we actually shipped all of them...which was part of the problem, focus!!! Ok there were reasons.)
Sun at that point only had master/slave working so we talked about who knows, maybe buying Encore, licensing our OS, etc. (side note: Bourne was wearing one of the nicest suits I'd ever seen and I was once a suit salesman in NYC.)
It didn't go anywhere unless you count Sun hiring away some of the engineers he met...ugh.
2
Eugene Miya
Oh, there was Linda, and Ada, and. . . .
1
15 replies
Don Hopkins
Both named after Ms. Lovelace! (Two different Ms. Lovelaces, that is.)
Don Hopkins
https://en.wikipedia.org/wiki/Ada_Lovelace
Ada Lovelace - Wikipedia
EN.WIKIPEDIA.ORG
Don Hopkins
https://en.wikipedia.org/wiki/Linda_Lovelace
Linda Lovelace - Wikipedia
EN.WIKIPEDIA.ORG
Eugene Miya
David Gelernter's system.
1
Don Hopkins
David Gelernter is a right wing, anti-intellectual, Trump loving, climate change denying, intelligent design supporting, Apollo moon landing denying, birtherism defending, racism justifying, piece of shit.
https://en.wikipedia.org/wiki/David_Gelernter
Russell Jacoby was sharply dismissive in his review of Gelernter's book America-Lite, describing it as "woeful" and containing insufficient arguments. Jacoby said that Gelernter blamed Jews for causing the breakdown of patriotism and the traditional family, writing "Gelernter is Jewish, and it is not likely that a non-Jew would airily argue that obnoxious leftist Jews have taken over elite higher education. But Gelernter does so with enthusiasm untempered by facts."
David Gelernter - Wikipedia
EN.WIKIPEDIA.ORG
Don Hopkins
Computer scientist David Gelernter drinks the academic Kool-Aid, buys into intelligent design
https://whyevolutionistrue.wordpress.com/.../computer.../
Computer scientist David Gelernter drinks the academic Kool-Aid, buys into intelligent design
WHYEVOLUTIONISTRUE.WORDPRESS.COM
Don Hopkins
David Gelernter, fiercely anti-intellectual computer scientist, is being eyed for Trump’s science adviser
https://www.washingtonpost.com/.../david-gelernter.../
WASHINGTONPOST.COM
Don Hopkins
TRUMP SCIENCE ADVISOR DENIES APOLLO MOON LANDINGS EVER HAPPENED
“How can we manage to organize a U.S.-crewed orbital Mars mission by the mid-2030s when we never even went to the moon? The idea is laughable, as was Obama’s administration, if I may add” – Yale Professor David Gelernter
“The Apollo moon landings are the biggest fraud in mankind’s history, even worse than all that global warming nonsense,” he added.
https://worldnewsdailyreport.com/trump-science-advisor.../
Trump Science Advisor Denies Apollo Moon Landings Ever Happened
WORLDNEWSDAILYREPORT.COM
Don Hopkins
David Gelernter of Yale is very wrong about Trump
https://24ahead.com/gelernter-wrong-trump
24AHEAD.COM
Don Hopkins
https://slate.com/.../david-gelernter-donald-trump-why...
The Yale Professor Who Knows “the Real Reason” Liberals Hate Trump Defends His Op-Ed, the President, and Birtherism
SLATE.COM
Eugene Miya
He also got one of the Unabomber's bombs, which as you point out, would actually make them more sympathetic than antagonistic.
Don Hopkins
Eugene Miya I know he was injured by a bomb from the Unabomber, but my parser can't resolve what you mean. What did I point out? Who would be more sympathetic? Sympathetic to what? I'm sorry if anyone receives a bomb in the mail, but that's certainly no justification for being a Trump cock sucking piece of shit like Gelernter is. Remember, Trump's most inspired supporter the MAGABomber ALSO sent bombs to people in the mail, but he's just more incompetent than Ted Kaczynski. The choices Gelernter made after he got bombed, and the way Facebook and other technological companies helped Trump rise to power, only make me wonder if the Unibomber had a valid point, but just expressed it in the wrong way.
Image may contain: 5 people
Don Hopkins
The Unabomber was a tech-obsessed crazed killer – but 40 years on, technologists are starting to wonder if some of his theories might be true
Of course, it goes against the grain to credit a killer. But as Dr David Skrbina, a philosophy lecturer at the University of Michigan-Dearborn, puts it: “The challenge is to make a firm separation between the Unabomber crimes and a rational, in-depth, no-holds-barred discussion of the threat posed by modern technology”. Kaczynski, says Dr Skrbina, “has much to offer to this discussion [and] his ideas have no less force, simply because they issue from a maximum security cell”.
https://www.thenational.ae/.../the-unabomber-was-a-tech...
The Unabomber was a tech-obsessed crazed killer – but 40 years on, technologists are starting to wonder if some of his theories might be true
THENATIONAL.AE
Don Hopkins
Then there’s the rise of giants like Google, Facebook and Twitter, tracking and harvesting every facet of our digital lives, to say nothing of the Trojan horse toys we willingly bring into our homes, such as Amazon’s Echo and Google’s Home – always listening, increasingly watching and constantly learning about you and your habits.
Consider Kaczynski’s observation that “if the use of a new item of technology is initially optional, it does not necessarily remain optional because the new technology tends to change society in such a way that it becomes difficult or impossible for an individual to function without using that technology”. Now contrast that with the declaration by the United Nations that access to the internet is nothing less than an inalienable human right, right up there with food, shelter and education.
Eugene Miya
Modern society is still optional Don. The question from the decade older phrase "Internet road kill" is How much longer? I still know people who don't have cell phones for instance.
Don Hopkins
"My favorite is always the billion dollar mistake of having null in the language. And since JavaScript has both null and undefined, it's the two billion dollar mistake." -Anders Hejlsberg
"It is by far the most problematic part of language design. And it's a single value that -- ha ha ha ha -- that if only that wasn't there, imagine all the problems we wouldn't have, right? If type systems were designed that way. And some type systems are, and some type systems are getting there, but boy, trying to retrofit that on top of a type system that has null in the first place is quite an undertaking." -Anders Hejlsberg
https://www.youtube.com/watch?v=csL8DLXGNlU
A Language Creators' Conversation: Guido van Rossum, James Gosling, Larry Wall & Anders Hejlsberg
YOUTUBE.COM
Don Hopkins
HN discussion: https://news.ycombinator.com/item?id=19568378
A Conversation with Language Creators: Guido, James, Anders and Larry [video] | Hacker News
NEWS.YCOMBINATOR.COM
Don Hopkins
Andrew Hejlsberg:
Maybe I'll just add, with language design, you know one of the things that's interesting, you look at all of us old geezers sitting up here, and we're proof positive that languages move slowly.
A lot of people make the mistake of thinking that languages move at the same speed as hardware or all of the other technologies that we live with.
But languages are much more like math and much more like the human brain, and they all have evolved slowly. And we're still programming in languages that were invented 50 years ago. All the the principles of functional programming were though of more than 50 years ago.
I do think one of the things that is luckily happening is that, like as Larry says, everyone's borrowing from everyone, languages are becoming more multi-paradigm.
I think it's wrong to talk about "Oh, I only like object oriented programming languages, or I only like imperative programming, or functional programming".
It's important to look at where is the research, and where is the new thinking, and where are new paradigms that are interesting, and then try to incorporate them, but do so tastefully in a sense, and work them into whatever is there already.
And I think we're all learning a lot from functional programming languages these days. I certainly feel like I am. Because a lot of interesting research has happened there. But functional programming is imperfect. And no one writes pure functional programs. I mean, because they don't exist.
It's all about how can you tastefully sneak in mutation in ways that you can better reason about. As opposed to mutation and free threading for everyone. And that's like just a recipe for disaster.
Don Hopkins
"The features I wanted to add were negative features. I think all of us as language designers have borrowed things. You know, we all steal from each other's languages all the time. And often we steal good things. And for some reason, we also steal bad things. [Like what?] Like regular expression syntax. [Oh, yeah, I'll give you that one.] Like the C precedence table. [Ok, another.] Ok, these are things I could not fix in Perl 5, and we did fix in Perl 6. [Ahh, ok. Awesome!]" -Larry Wall
Don Hopkins
James Gosling wants to punch the "Real Men Use VI" people.
"I think IDEs make language developers lazy." -Larry Wall
"IDEs let me get a lot more done a lot faster. I mean I'm not -- I -- I -- I -- I -- I'm really not into proving my manhood. I'm into getting things done." -James Gosling
Don Hopkins
Anders Hejlsberg also made the point that types are documentation.
Programming language design is user interface design because programmers are programming language users.
"East Coast" MacLisp tended to solve problems at a linguistic level that you could hack with text editors like Emacs, while "West Cost" Interlisp-D tended to solve the same problems with tooling like WYSIWYG DWIM IDEs.
But if you start with a well designed linguistically sound language (Perl, PHP and C++ need not apply), then your IDE doesn't need to waste so much of its energy and complexity and coherence on papering over problems and making up for the deficiencies of the programming language design. (Like debugging mish-mashes of C++ templates and macros in header files!)
Don Hopkins
"I have a feature that I am sort of jealous of because it's appearing in more and more other languages: pattern matching. And I cannot come up with the right keyword, because all the interesting keywords are already very popular method names for other forms of pattern matching." -Guido van Rossum
Don Hopkins
"In the Java universe, pretty much everybody is really disciplined. It's kind of like mountain climbing. You don't dare get sloppy with your gear when you're mountain climbing, because it has a clear price." -James Gosling
Don Hopkins
I saw Alvy Ray Smith give a talk in which he mentioned how when he was writing code, he had to just keep flipping the signs and coordinates around in the equations until the math worked out right.
That made me feel a lot better about having to do the same thing all the time too! Nothing ever works right (or runs fast) the first time, and you have to just keep fiddling with it until it does.
https://en.wikipedia.org/wiki/Alvy_Ray_Smith
Alvy Ray Smith - Wikipedia
EN.WIKIPEDIA.ORG
Peter Norvig
Proebsting's Law: http://proebsting.cs.arizona.edu/law.html
PROEBSTING.CS.ARIZONA.EDU
2
Phill Hallam-Baker
True in general but possibly not so for compilers that allow the capabilities of massively parallel GPUs to be unlocked. But then you hit Moore's law unless you are dealing with very specific problems.
Phill Hallam-Baker
What I think the article overlooks is that the main focus of the OOP movement was not coding efficiency or reliability but maintainability. Give me some code written in a strongly typed language and I am much more likely to be able to make use of it th… See more
Bill Westfield
some "things" are more-or-less fundamentally "objects", and OOP makes a lot of sense - GUI elements like Windows and Buttons and such. Non-OOP languages had a big problem initializing the data, and especially the data with reasonable default values, f… See more
Barry Shein
But how much thought have you given to an object-oriented M4?
define(`CLASS',`fruit')dnl
Bill Westfield
The m4 hack was 1988, so OOP wasn't much of a thing yet, except in CS classes where they would bring a perfectly zippy Sun machine to its knees by running Smalltalk...
Hmm. (digs into email archives) OTOH, I might have come close to something like that:
For example, the sequence:
startcmd(name,flags)
_cmd_(CON_TEST, "test", CM_PRV)
_cmd_(CON_FOO, "foo", CM_ASM)
endcmd(MAXCON, char * commandnames, int commandbits)
generates:
#define CON_TEST 0
#define CON_FOO 1
#define MAXCON 2
char * commandnames[MAXCON]= { "test", "foo" };
int commandbits[MAXCON]= { CM_PRV, CM_ASM };
Chuck Hedrick got inconsistent results ("You have succeeded in producing an excellent validation test for m4 implementations. I tried 6 versions ... I got at least 4 different results, none of them reasonable") and converted it to an awk script.)
I don't recall for sure which we used (if either.)
Like
· Reply · 1 y · Edited
Don Hopkins
Here's Owen Densmore's and David Rosenthal's patent on "Method for apparatus for implementing a class hierarchy of objects in a hierarchical file system". It's a lot like the Smalltalk-like object oriented programming system in NeWS that uses the dictionary stack, except that it uses the shell's $PATH instead. Good thing they patented it to prevent other people from attempting that feat! 😉
https://patents.google.com/patent/US5187786A/en
A method and apparatus for implementing a class hierarchy of objects in a hierarchical file system is disclosed, which does not require the support of additional file attributes by the hierarchical file system, and has particular application to object oriented programming in window-based computer systems. The class hierarchy comprises a root class, a plurality of classes and a plurality of class instances. The root class is implemented with a hierarchy of root class directory and root class files. Each class is implemented with a hierarchy of class directories and class files comprising the class methods, and the initial values of the class instance variables. Each class instance is implemented with a hierarchy of class instance directory and class instance files comprising the class instance variables. Each hierarchy of directories and files also comprises a path file. The content of these path files are logically related to each other, based on their class' relationships. By controlling the invocation of class methods, using these path files, inheritance is achieved. By accessing the class instance variables through the class methods, data abstraction is also achieved. Additionally, the method and apparatus also supports the pseudo class instance/class "Self" and " Super" when invoking another class method by a class method.
US5187786A - Method for apparatus for implementing a class hierarchy of objects in a hierarchical file system - Google Patents
PATENTS.GOOGLE.COM
1
Barry Shein
Bill Westfield: Chuck Hedrick! I haven't heard that name in a while. I remember getting a copy of common lisp he'd written for the DECSYSTEM-20 from him. On the tape was also a Pascal. I installed it and it all worked. I thanked him and said well I consider Pascal to be bad for the wires and he said he'd written that Pascal (basically telling me he found that insulting.)
In truth it was probably the best Pascal as Pascals went, for example very well integrated into TOPS-20, libraries to access all sorts of system services which was unusual for Pascal which elsewhere was mostly used to teach students about apples, peaches, pears 🙂
Bill Westfield
yeah, the DEC10/20 pascal was pretty nice for its day. I worked briefly on its internals (add "formatted" output, so it could compete better with Fortran.) (I don't think the work I did ever saw the light of day...)
Chuck did a lot of good stuff for cisco - IIRC he essentially wrote our DECNet IV support. I've always felt like he was one of the people who didn't reap enough of the rewards 🙁
Barry Shein
He still seems to be working at Rutgers.
Phill Hallam-Baker
The author tells us that they are not trying to proselytize for functional programming then does exactly that but uses the claim he isn't to avoid actually making the case he is arguing. It is a rhetorical sleight of hand I detest.
I have programmed t… See more
Phill Hallam-Baker
If you want to write a UI, the correct approach is to use (or write) a domain specific language. The abstract description of a UI is neither functional nor procedural, it is declarative.
Every time I have had to write UI code of any size, I have writt… See more
Barry Shein
There is a general theory of "How To Program" which is you start by writing a "language" (could be a library) which would be useful in solving the problem at hand, then you use that to solve the problem.
Basically top-down design, bottom-up implementation.
1
Kenton A. Hoover
(Thank you Barry and all contributors for providing one of the few interesting threads I've read on facebook recently)
1
Bill Westfield
Actual message-passing OO systems ended up having some spectacular failures. iAPX432, for example. Probably ios-ng (and/or the Chorus thing before that?)
I think it turns out that message passing is too expensive for the sorts of objects that programmers actually (need to?) create.
I remember being particularly unimpressed by the suggesting that the Async Serial Interrupt should "send a message" to the driver, which would then actually read/write data to the device. 🙁
Shel Kaphan
Of course not all OOP systems were based on message passing. To me polymorphism is probably the most important concept. Apply the same-named function (or pass the same message) to objects of different types and something different happens. I always wanted objects to just be closures that give you some kind of dispatching mechanism. Then at least there would be some kind of well- (or at least better-)understood underlying semantics.
Bill Westfield
Not always a good thing. I ran across someone who had set up "A = B + C;" to modify B and/or C. 🙁
And I'm still nonplussed about "stdout << "the answer is "<< a;"
Shel Kaphan
Anything can be misused, starting with a hand axe. I never liked operator overloading though.
Eugene Miya
We had Guido give a talk in Spring quarter at Stanford.
Robert La Ferla
"A language that doesn't affect the way you think about programming is not worth knowing." - Alan Perlis
Barry Shein
I once had dinner with Perlis. He liked APL, for everything, he made his grad students write a fortran compiler in APL as a test of their programming skills.
2
Bernie Cosell
Barry Shein And it only two 485 character lines of code
Barry Shein
It didn't take much since he was also against formatting code, I remember him saying at dinner you have 132 columns on a line printer USE THEM!
1
Steve Pelikan
I've enjoyed this discussion. Just because I have them both on hand (and no major projects) I'm 50/50 scheme/python. Whatever I think will take less time.