I often view algorithms in terms of processing collections (CollectionOrientedProgramming or COP), and TableOrientedProgramming in particular. If the data structures are organized "right", then roughly 50% to 80% of typical processing can be practically viewed as COP. It could even be 100% if you stretch things, but every technique has areas where it doesn't shine so well, and current tools don't support COP to its fullest.
COP tends to be more compact and a higher abstraction than "one-node-at-a-time" algorithms found in traditional programming and OOP. Higher abstraction includes meta-techniques that otherwise requires awkward language features like reflection to replicate.
This is to document some examples to give ideas of how COP can play a roll. I will tend toward tables as my example collections. -- TopMind
Example 1: Field selection
In CRUD apps, often different reports, screens, and forms will use a different subset of entity columns (fields). Rather than mention the column list over and over with different subsets of columns excluded, it can be useful to use something like a DataDictionary, and filter by some criteria to get the subset of columns we want. It is usually easier to change the assignments in such a table than dig around through linear and verbose code and hand edit column lists or bunches of similar-looking function/method calls.
Example 2: GooglifyDeepMenus
If we have a data structure holding attributes about most of our app options, then it gives us and/or users more tools to sift, manage, and search through bunches of options. Off-the-shelf CRUD techniques can be used as at least an optional interface to search and study the options.
Example 3: Dynamic Code Grouping
With flexible collections, what appears "together" is merely a choice of dynamic presentation. One stops viewing code as linear or tree-shaped files and instead views them as blocks which can be presented as dynamic groups of multiple factors, such as database-related code, security-related code, GUI-related code, etc. without having to hard-wire our original module or routine grouping to fit any one of these. "Together" becomes a virtual, dynamic, and relativistic concept. See SeparationAndGroupingAreArchaicConceptsDiscussion for more.
(Note that this is more of a technique than an "algorithm". Perhaps the topic title should be widened, but it's not different enough to justify.....just yet.)
More to come...
At least one person thinks this page should be deleted. Could we have some points on why to delete or not to delete?
Proposed Name Change:
See Also: PayrollExample, ConvertingImperativeToDeclarative, CollectionOrientedProgramming, LogicProgramming, KayLanguage