|
What is the Set feature in Pascal...?
--
Weiter, weiter, ins verderben.
Wir müssen leben bis wir sterben.
I blog too now[^]
|
|
|
|
|
A set is a collection that doesn't allow duplicate entries.
There's at least one CP Article[^] available on creating sets support in C#.
Grim (aka Toby) MCDBA, MCSD, MCP+SB
SELECT * FROM user WHERE clue IS NOT NULL
GO
(0 row(s) affected)
|
|
|
|
|
I think Jörgen knows about sets, given the fact he holds a MSCS degree. The question was IMHO, why Pascal sets in particular?
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
|
|
|
|
|
That's something that should reside in a (standard) library rather than the language itself IMO.
A feature should only be included in the language if and only if it is required in some way. I am not a Pascal wiz, but I don't see anything in the Pascal language that requires a set. Or in any other imperative language for that matter.
--
Weiter, weiter, ins verderben.
Wir müssen leben bis wir sterben.
I blog too now[^]
|
|
|
|
|
I agree the concept, but I feel the cause and the effect had been reversed.
Pascal was definied to be "strongly typed". In it, operation like AND or OR were for BOOL only. A group of flag was mandatory to be at least an array of bool, and that was SET, as firstly implelemted: given an enumeral, a set of myenumeral was a bit array with each bit indicating the presence of a value in the set.
Further pressions from many programmers causes Pascal to "degenerate" into more efficient C-like operation on bits and integers. Thus & and | where also for int , like in C.
At thet point, set looses the most of its attractive, expecially between windows programmers, also considering the the most of the windows API makes uses of integer manifest constants (not enums or bit fields) to define flags.
2 bugs found.
> recompile ...
65534 bugs found.
|
|
|
|
|
|
yup, likely.
The most use sets got for making certain checks simpler to type (instead of x=c1 OR x=c2 OR x=c3 , you could write x in [c1, c2, c3] ), and for handling certain groups of characters (e.g. "chars allowed in my identifier").
The first is fairly ineffective, and the second useless with MBCS/UNICODE charsets. But you could sometimes "shortcut" a boring piece of code by imaginative use of sets.
A modern programming language should provide a set class through it's runtime library.
we are here to help each other get through this thing, whatever it is Vonnegut jr. boost your code || Fold With Us! || sighist | doxygen
|
|
|
|
|
|
Ah, like TSQL then. That is pretty handy.
regards,
Paul Watson
South Africa
The Code Project
|
|
|
|
|
|
it's for me the most powerful of these, kind of Level Two of "self-conciousness" of the language.
we are here to help each other get through this thing, whatever it is Vonnegut jr. boost your code || Fold With Us! || sighist | doxygen
|
|
|
|
|
I'm not so sure. Maybe I had too much C++ in my life, but reflection makes the type system more "dynamic", and I don't like that.
My programming blahblahblah blog. If you ever find anything useful here, please let me know to remove it.
|
|
|
|
|
Actually, reflection is the only thing I'm mssing, for for my company's software, I added some "manual reflection" capabilities. It's a charm. Extremely powerful really.
One "Serialize" function now can handles (binary) persistance in both directions including up/down compatibility, export to and import from a Matlab-like format, post processing update decisions, merging data sets, and data access to and from the scripting interface.
It's not complete, and adding a new type isn't done in two lines of code, I'm stuck with some early design decisions that make parts of it very hairy, and yes, I wished we'd have this right at the beginning. But that would have required reflection
we are here to help each other get through this thing, whatever it is Vonnegut jr. boost your code || Fold With Us! || sighist | doxygen
|
|
|
|
|
I agree, but nowadays u wont see much of code that does NOT contain a few goto 's.IMO used correctly (especially with switch/case blocks) is really powerful. Combine that now with some try/finaly blocks and u have very powerful flow control and subsequent cleanups. But reflection wins by a small edge.
top secret Download xacc-ide 0.0.3 now! See some screenshots
|
|
|
|
|
peterchen wrote:
it's for me the most powerful of these, kind of Level Two of "self-conciousness" of the language.
Amen!
Marc
MyXaml
Advanced Unit Testing
|
|
|
|
|
For me, it's sort of a "more work up front" vs. "more work later" decision... a good template system will speed initial development, whereas a good reflection system allows more flexibility for later changes. I chose templates, this would have been a close second.
"The time has come," the Walrus said,
"To talk of many things..."
|
|
|
|
|
Why this is not a multiple selection poll. I guess I need more than one thing out of those.
It is by Acts and not by ideas that people live-- Anatole France
My Articles
|
|
|
|
|
It focuses the mind if you have to consider which single feature you want the most. Of course I want quite a few of the language features listed, but knowing I could only choose one made me think about which ones I could do without.
I swithered a little between exceptions and templates, but in the end part of the point of exceptions is that you shouldn't really need them if you are coding defensively. Of course, we all know that's an oversimplification, but it was enough to tip the balance in favour of templates, which make a more positive contribution to a programming language. (Generics are also good, though less powerful.)
Gavin Greig
"Haw, you're no deid," girned Charon. "Get aff ma boat or ah'll report ye."
Matthew Fitt - The Hoose O Haivers: The Twelve Trauchles O Heracles.
|
|
|
|
|
My answer was the same (Templates/Generics).
That was just a thought.
It is by Acts and not by ideas that people live-- Anatole France
My Articles
|
|
|
|
|