Table Masturbation occurs when a human continually visualizes tables in his mind, while spewing out comments about how everything should be put into a table. All arrays in programs, all lists, and all structs/records and objects should be tables. Strings and buffers are wrong. They are tables. Pointers to chars are much better as tables.
For the sake of masturbating about the table (visualizing her in our mind) we will see everything as a table - even if it is not practical for everything to be a table (especially on C2 wiki where we have the chance to masturbate the table thoughts out aloud).
Consider the following program:
var s: string; b s = 'hello'; // bad.. should be a database insert s = s + ' world'; // bad.. concatenation is just reinventing inserts outln(s); e.Someone skilled in TableMasturbation will immediately see a problem with the above program. The problem is that the string "hello world" should actually be in a table. Each character or the entire string should be indexed with a primary key in a table. According to one skilled in TableMasturbation, the "hello world" string cannot be placed into that program and one is just reinventing the table and database with such a program.
Consider also
var s: array [1..100] of string;The above array should be placed into a table immediately, even if it doesn't need to be in a table - because we prefer TableMasturbation.
If there is a valid need for a table, then it is no longer masturbation - but rather practical use of a table. Ideally, one should use a RelVar, and think about the relations rather than masturbating about tables.
You want table masturbation? I'll give you table masturbation. This is from http://99-bottles-of-beer.net/language-rel-1149.html
/* 99 Bottles of Beer in Rel. Rel implements an extended subset of Date and Darwen's "Tutorial D" true relational database language. This example (unecessarily and inefficiently) creates a relation variable to hold the bottles, which provides an opportunity to demonstrate some of the built-in relational operators. See http://dbappbuilder.sourceforge.net Copyright (c) 2006 Dave Voorhis */ VAR bottles LOCAL RELATION { bottlecount INTEGER, description CHAR } KEY {bottlecount}; VAR i INTEGER; DO i := 1 TO 99 VAR descript CHAR; IF i > 1 THEN descript := "bottles of beer on the wall, " || i || " bottles of beer. Take one down, pass it around,"; ELSE descript := "bottle of beer on the wall, " || i || " bottle of beer. Take it down, pass it around," || " no more bottles of beer on the wall."; END; bottles += TUPLE {bottlecount i, description descript}; END; FOR bottles ORDER DESC bottlecount BEGIN WRITELN bottlecount || " " || description; END;Note: The above is Rel2 (see RelProject) syntax. It will not work in Rel3.
-- DaveVoorhis
Dave, thank you for the "DO" loop idea in Rel. Do is shorter, and more concise than "FOR" in you first loop. I may consider this loop style for Qomp. Although you could have just used FOR instead of DO for the notation/syntax in the first loop, I suppose.
DateAndDarwen deserve credit for "DO". The "FOR" that appears later is mine. -- DaveVoorhis
I believe this topic is in retaliation. Tables don't qualify if one uses them because they fit the way one thinks. They are not an experiment for the sake of experiment, but a "user interface" from the developer's perspective. Thus, claiming thinking in tables is MentalMasturbation would be like claiming that GUI's are "interface masturbation" because users better relate to them than CUI's. Thus, its it's not equivalent. --top
Again, if I remember correctly, you didn't accept fitting the way one thinks as a good enough reason to drop the label. In addition, I recall your attitude when you were shown an example of a significant improvement. Your response indicated that it was still MM because the example wasn't from your limited domain. Thus, it is representative of one way you use it.
I sure the hell wish you paid as much attention and effort to providing evidence for your HobbyHorse technologies as you do in indexing my statements. Revenge is a waste of human energy. I would like to see the context of the above. I suspect it was taken out of context. As stated above without context, I reject it. If I made it without any ties to context, then I withdraw that statement as an error on my part. And even if I didn't reject it, that is not a valid reason to fill up wiki with personal catfight topics. --top
Or "naive script kiddie", "brain damage", "lazy", etc. At least I don't create new topics to complain about each and every new occurrence. Your reaction is much stronger than mine. You escalate rather than return in equivalence. Your "e-sin" is greater. (My only recent topic rename, "brain damage" to something like "languages that teach bad habits", was in no way intended to retaliate or offend. I merely made it less offensive and more self-describing.)
Because you don't sign your content, you have to live with errors in identification.
You ought to consider not making rash accusations. You had no evidence that I had done any of the things you have accused me of, yet you still made the accusations.
If they don't apply to you then they apply to the other non-signer(s). So why the fuss? I'm chewing out an e-ghost.
So, I guess TableWeenies? like TableMasturbation, and ObjectWeenies? like ObjectMasturbation?... and RelationalWeenies like RelationMasturbation? and... see the pattern? Maybe we need a topic called ConceptMasturbation? or TheRelationofMasturbationAndWeenies? ;)
CategoryMasturbation?