Linus Torvalds On Visual Basic

(Moved from ArgumentsAgainstOop)

Linus Torvalds allegedly said:

"I personally believe that Visual Basic did more for programming than Object-Oriented Languages did. Yet people laugh at VB and say its a bad language, and theyve been talking about OO languages for decades. And no, Visual Basic wasnt a great language, but I think the easy database interfaces in VB were fundamentally more important."

Great. A speculative ArgumentFromAuthority. Just what we need around here.

Aside from the fact that I don't have any reason to believe that Linus Torvalds has spent any time studying the effects of VB and OOPLs, there's also the issue that OOPLs have influenced VB for quite some time. In fact, (if I remember the events correctly) VB's easy database interfaces were enabled by OOPLs' influence on VB.

Perhaps he meant "bound data controls". But, being built with OOP under the hood may be a different issue than app developers using OOP themselves (making their own classes). This is possibly related to OopNotForDomainModeling.

I was referring to the interface itself. For this argument, it's not relevant whether OO was used under the hood, as any of the major paradigms would be capable of implementing the interface. What's relevant is that the design of the interface was influenced by OOPLs. By the way, I see no need to slice and dice what he said until I find something palatable. He said what he said, and unless he decides to correct it (or otherwise indicates that he didn't mean it), I'm going to act like he meant what he said.

There are multiple interpretations to his statement. And whether "OOP" is also a GUI technique (has a GUI counter-part) is perhaps debatable without clear rules or agreement on how to tell which GUI elements or behaviors are "OO" and which are not. Is there also a "functional GUI" (FP)?

Note that using "species" as a divider is perhaps problematic. A chihuahua is not likely to mate with a wolf due to the size difference. Does this mean the chihuahua is a different species than the wolf? Larger dogs can and do mate with wolves (which dogs are closely related to).

You didn't just slice and dice my comments, you pureed them. Why don't you try reading what I said and responding to that, instead of bringing in this GUI and species stuff out of left field.

I've read your statements multiple times. If I misinterpreted them, I assure you it was not on purpose.

To answer your questions, you look at the properties. You don't need clear rules, just clear enough, and you don't need agreement at all unless you want to have agreement about the conclusions. The question about the wolves depends on what type of wolf you are talking about. Ethiopian wolves (Canus simensis) are not the same species as chihuahuas (Canus Lupus). Grey wolves, on the other hand, are. I should note that species aren't just about being able to mate. For most creatures, that distinction doesn't even make sense as they reproduce asexually. So while for most larger animals it's a good rule of thumb, it's not the defining characteristic. Therefore, you shouldn't draw too many conclusions based off of it.

As far as "properties", lots of things have properties, or their equivalent. Each column in a database record can be viewed as a "property", for example. (I assume you meant "object properties", but I cannot rule out alternative contexts.)

As far as "species", animals that primarily reproduce asexually as not classified by "species" (TTBOMN). But rather "strain".

Everything has properties, why should that be a problem? And everything that we consider living is classified by species. Two examples of species that reproduce asexually are Pelomyxa palustris and Amoeba proteus. Strains are an even finer grained classification than species.

You are correct, but it appears that a rather arbitrary line has been drawn for asexual organisms, such as "X percent of DNA is the same", and some biologists still complain about that because it's possible for a very small percent to make very large "outer" difference.

{I must admit to some confusion: what does this 'species' stuff have to do with OOP or ArgumentsAgainstOop?}

Hmmm. There appears to have been some unobserved editing going on. The paragraph that sparked the species issue is no longer here.

[I've been following this section since the beginning, and there never was anything to do with species. As one respondent wrote, you were "bringing in this ... species stuff out of left field," and your comment that "using 'species' as a divider is perhaps problematic," appears to be the first mention of it. Looks like you mixed up this thread with something else.]

Your excess griping makes it hard to know when you gripes are real. "GUI" was NOT out of left field (unless you meant something different by "interface".) As far as "species", time to put on the memory-lane hat...

{Even a casual observation of context makes it clear that "interface" referred to "VB's easy database interfaces" (mentioned prior) and what "app-developers use themselves" being influenced by OOP as opposed to "OOP under-the-hood". So, yes, mention of "GUI" was out of left field. And unless a gripe is in jest, it's a real gripe by nature, so your sentence about 'excess griping' makes little sense to me ;-).}

"Database interface" is not clear and could mean the DAO/ADO [DataAccessObject, ActivexDataObject] API's, the GUI, or a combo, such as "bound" controls.

{It is my impression that you seek a DifferenceThatMakesNoDifference. If the shoe fits, wear it. VisualBasic's support for DAO/ADO API's are certainly OOPL influenced, and so are its GUI development facilities. Indeed, VB as a whole is strongly OOPL influenced (albeit dynamic) compared to other Basics I've used; there are many features involving a great deal of dotted-path access and polymorphic overloading. Even separate 'pages' of code are associated with objects and methods in VB's IDE. (As a caveat, my experience is dated: I used various forms of BASIC only circa 1991-1999, and VB only during 1996-1998 with a painful 3.5" floppy transition from 5.0 to 6.0.) Of course, the statement by LinusTorvalds might be even more dated. I don't know from which version of VB his impressions derive. But I strongly suspect the earlier author referred to DAO/ADO, since that is the most direct "interface" by which VB programmers access databases.}

Yes, I'm referring to DAO/ADO. I assumed that LinusTorvalds was also referring to it, since that's really the only part of VB that I can think of that qualifies as "easy database interfaces", and, unlike Top, I'm not willing to change what he said to suit myself. If he said, "easy database interfaces", I'm going to assume that he's talking about the interface to the DB, not the human computer one. Now, if he wants to make a correction....

DAO/ADO are convoluted crap in my opinion. Scriptish API's that stick a record into an associated array are generally friendlier and simpler. Anyhow, we have at least 4 candidate interpretations: API's, boundness, IDE, and GUI widgets. (VBA's integration with MS-Access could also be part of this. We cannot rule out VBA in Access.) And we have insufficient info to know which one he was talking about, or a combination. If you know how to read minds, I applaud your ability. But, us mortals don't have that ability.

Also, many open-source and Linux/Unix-based tool have not been very database-friendly because they assume one will be processing delimited text files instead of using DB queries. Perl is known for such (see GrepVsDatabase). I suspect this has a lot to do with Linus's impressions.

Top, if you weren't sure which interface I was referring to, you should have asked instead of making random responses. (And it still doesn't explain why you brought species into this thing). In addition, I hardly think that one gripe qualifies as excessive, especially when the gripe is justified. After all, what do species have to do with ArgumentsAgainstOop?

With regard to the species thing, it appears I either mixed up topics (mis-posted replies), or somebody edited out the original paragraph. I've yet to solve that mystery. As far as VB interface, I don't see anything significantly wrong with my response. I stated my assumption as an assumption. I'm inclined to blame your odd writing style, but I can accept the fact that sometimes two styles just don't jell.

[Regarding the species thing, there is no mystery. You have mixed-up topics or mis-posted a reply, because there never was an "original paragraph" to edit out.]

That's rather presumptuous. How could you quickly rule out the possibility that I didn't accidentally paste a reply from another topic into this one by mistake? You'd have to read all 50,000 or so titles here to make sure none match. You tend to assume the worst: That I randomly hallucinated a thread. Stop pretending you are above mortals; you didn't read no fricken 50k titles in 1 day. (I suppose one could Google for "species" on C2, but even that doesn't rule out misspellings of it.)

By the way, it's possible it's tied to the bottom of the AdVerecundiam topic.

[Mistakenly pasting a reply from another topic is precisely what I meant by "mis-posted a reply". It appears we (or, more accurately, you) are in violent agreement.]

Why did you say "there is no mystery" then?

[Because it's not mysterious. Mis-posted reply or mixed-up topics is the explanation. There was no mysterious "original paragraph" about which there was some mystery. I wrote "[y]ou have ... mis-posted a reply", you wrote that you might have "accidentally past[ed] a reply from another topic", hence we have violent agreement. Dig?]

So what you meant is, "there is no mystery that directly involves *this* topic". (To me, the original context is a mystery. The location of the starting point doesn't impact the magnitude of the mystery much. An orphan is an orphan.)

Anyhow, I have no problem with removing the species-oriented text of this topic. Any qualms on your part?

[None at all. Remove freely.]

Or how about to LimitsOfHierarchiesInBiology?

[I doubt it's worth keeping at all.]

It gives some examples of why classification is a difficult subject. Classification based on "greater than N% the same" is an intellectually stimulating idea, and may provide insults into other domains that struggle with classification.


For reference, my working definition of OOP is the use of maps (dictionaries) that frequently store pointers to functions, functions, and pointers to other maps, as well as values. And, perhaps with support for "parent" reference if "clone" inheritance is not used. The "map" may be static or dynamic, depending on the language. --top

{Methinks you conflate OOP and OODB.}

How so? OODB's generally don't store or reference "behavior".

{That is true. But OOP deprecates accessing objects as 'data storage' (maps/dictionaries) even a little bit, and 'pure' OOP tends to forbid it entirely (i.e. attribute accesses becomes implicit call to getter-methods and subject to override). Objects are not merely records to peruse and from which you can grab function-pointers and values. The storage access-style is very strongly OODB. The fact that it's storing 'behavior' (not common to OODB, as you say) makes me think you conflate the two.}

An "interface" version of the above would be "map of interfaces". But there's something missing from it that I cannot put my finger on yet. Perhaps "map of interfaces and/or references to other such maps". Anyhow, I invite you to submit or reference a working def also. Either way, OOP is some form of "glorified maps".

{That question makes me wonder: why do you even bother providing your 'working definition of OOP' in this topic? We have better topics for that, such as DefinitionsForOo.} I believe we must settle on a working definition(s), or at least be clear which one(s) we are using in order to communicate effectively.

{(1) Where exactly, in this page, would your working definition be useful? (2) What is the benefit of introducing the working definition at the bottom of this page? Would it not be wiser to add it to DefinitionsForOo then reference it with a PageAnchor? (3) Using a working-definition is risky, since your working definition for OOP is (a) unlikely to be the same as Linus Torvald's, (b) and likely to allow StrawMan arguments against your 'definition' that aren't meaningful in the greater context of OOP.}

If one dances between elements of all the candidate definitions, the ensuing dialog would be quite messy (even more than it already is). Everything in the world probably fits at least one listed in DefinitionsForOo. Definitions usually must be falsifiable ("this is not an X") to be useful. If it fits at least one definition, and that makes it "OO", then the application of def is not falsifiable.

{There are dozens of paradigms for which a fit against any one of the DefinitionsForOo would need be terribly convoluted. Look into term-rewrite systems (Maude, OBJ), logic programming (Mercury, Datalog), constraint programming, functional reactive programming, dataflow programming, pure functional programming, SnuspLanguage, rules-based programming, etc. You make what I believe to be a ludicrous claim - that 'everything in the world' fits one of the DefinitionsForOo. Well, I've provided a list of paradigms and a language I believe serve as counter-examples. Either demonstrate that these fit the DefinitionsForOo, or admit your argument here was ludicrous.}

You are using argument-via-mass-BookStop on obscure languages; you are not presenting an alternative definition. I'm not going to play that game.

{Are you saying "everything" doesn't include what you consider to be "obscure languages"? That seems quite illogical to me. "Everything" either must be complete with regards to the domain, or it's a lie. It isn't even a UsefulLie, in this case.}


SeptemberZeroNine


EditText of this page (last edited September 17, 2009) or FindPage with title or text search