Skip to content

Commit 319946c

Browse files
committed
Various tweaks, including reference improvements
1 parent e640448 commit 319946c

File tree

11 files changed

+297
-427
lines changed

11 files changed

+297
-427
lines changed

AI/AI-and-Coding.xml

+5
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,10 @@ at. However, a ticketing system is just (you guessed it) a set of tables. So
2727
it'd be useful to have a system like this in a table-oriented RAD environment,
2828
so that we could put useful interfaces on it. </p>
2929

30+
<p>No doubt this ties in with <a href="https://en.wikipedia.org/wiki/Agent-oriented_programming">
31+
Agent-Oriented Programming</a>, which is a revamped iteration of the
32+
<a href="https://en.wikipedia.org/wiki/Actor_model">Actor Model</a>; event-driven
33+
programming also ties in here to a certain extent. </p>
34+
3035
</content>
3136
</page>
+224
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<?xml-stylesheet type="text/xsl" href="../../interface/layout.xsl"?>
3+
<page>
4+
<filename>History-of-Programming.xml</filename>
5+
<sitedir>Other-Items</sitedir>
6+
<content>
7+
8+
<div class="blockquote">
9+
The thing that hath been, it is that which shall be;
10+
and that which is done is that which shall be done:
11+
and there is no new thing under the sun.
12+
<div class="reference">
13+
<i><a href="https://www.biblegateway.com/passage/?search=Ecclesiastes+1&amp;version=KJV#en-KJV-17325">
14+
Ecclesiasties 1:9</a>, King James authorised translation of the Bible,
15+
translated 1611 (revised 1769), from the Hebrew manuscript, originating around 900BC</i>
16+
</div>
17+
18+
</div>
19+
20+
<p>This is a fairly focussed history of programming. Its purposes are:</p>
21+
<ul>
22+
<li>To help people distinguish OOP from Agent-Oriented Programming, which
23+
has often been called OOP as well, but is really a somewhat separate
24+
paradigm</li>
25+
<li>To help people see the reinvention of old ideas under new names</li>
26+
</ul>
27+
28+
<p>In some of the eras below, people often thought they had invented a new
29+
thing, when really they were just reinventing something older. </p>
30+
31+
<style>
32+
td {
33+
vertical-align: top;
34+
}
35+
td h4 {
36+
margin-top: 0;
37+
}
38+
</style>
39+
40+
<table>
41+
<tr>
42+
<th>Era</th>
43+
<th>Years</th>
44+
<th>Object-Oriented Programming</th>
45+
<th>Agent-oriented Programming</th>
46+
<th>Table-Oriented Programming</th>
47+
</tr>
48+
<tr>
49+
<th>Definition</th>
50+
<td></td>
51+
<td>The Imperative-style OOP that is mostly used in modern-day languages</td>
52+
<td>aka Message-passing OOP; see
53+
<a href="http://stereobooster.github.io/two-big-schools-of-object-oriented-programming">
54+
Two big schools of Object-Oriented Programming</a> for details</td>
55+
<td></td>
56+
</tr>
57+
<tr>
58+
<th>Mainframe Era</th>
59+
<td>1960s-1980</td>
60+
<td colspan="2">
61+
<h4>The Common Era</h4>
62+
<p>In 1963, Ivan Sutherland's <a href="https://en.wikipedia.org/wiki/Sketchpad">
63+
Sketchpad</a> was effectively the earliest object-oriented program,
64+
though its use of terminology isn't what we'd expect today. However,
65+
it wasn't written in an object-oriented language. </p>
66+
67+
<p>Object-Oriented Programming began in 1967 with the creation of Simula
68+
by Ole-Johan Dahl and Kristen Nygaard. This introduced classes, objects,
69+
inheritance, and polymorphism, and also the Actor model (cf.
70+
<a href="https://en.wikipedia.org/wiki/History_of_the_Actor_model">
71+
History of the Actor model</a>). </p>
72+
73+
<p>Alan Kay's Smalltalk in 1972 was considered widely influential in
74+
Object-oriented circles, and continued the use of the Actor Model.</p>
75+
</td>
76+
<td>
77+
<h4>Decision Table Programming</h4>
78+
79+
<p>The earliest iteration I found of table-oriented programming is the paper
80+
<a href="https://www.rand.org/content/dam/rand/pubs/papers/2006/P2608-1.pdf">
81+
What is DETAB-X?</a> published by Solomon L. Pollack in October 1962. It
82+
details DETAB, a table-oriented variant of COBOL. </p>
83+
84+
<p>This led to languages such as <a href="https://en.wikipedia.org/wiki/Filetab">
85+
Filetab</a> in the late 60s, whose descendents continued in the 70s and 80s,
86+
and a Linux version was even released in 2001. The company owning Filetab
87+
was liquidated in 2010. </p>
88+
89+
<p>This early iteration is often labelled
90+
<a href="https://en.wikipedia.org/wiki/Decision_table">Decision Table</a>
91+
programming. </p>
92+
</td>
93+
</tr>
94+
<tr>
95+
<th>PC Era</th>
96+
<td>1980-1995</td>
97+
<td>It was during this era that Object-Oriented Programming came into the
98+
mainstream. This had two effects; the first was that
99+
it brought larger encapsulation to the mainstream, replacing to a
100+
certain extent the old Procedural methodology. The second was that this
101+
also resulted in dropping the Actor model and message passing, not
102+
because there was anything inherently wrong with them, but because they
103+
weren't suited to the minds of those strongly influenced by procedural
104+
(or, for that matter, functional) programming. This was the era of CLOS
105+
and C++. </td>
106+
<td>During this era, message-passing OOP was somewhat sidelined by
107+
imperative-style OOP. However, this was also the era in which the early
108+
work on <a href="https://en.wikipedia.org/wiki/Agent-oriented_programming">
109+
Agent-Oriented Programming</a> was done. </td>
110+
<td>
111+
<h4>Data-Oriented Programming</h4>
112+
113+
<p>The Term "Data-oriented Programming" has been used in various ways around
114+
the web, but the one we're using here is the one on Wikipedia about
115+
<a href="https://en.wikipedia.org/wiki/List_of_programming_languages_by_type#Data-oriented_languages">
116+
Data-oriented languages</a>. These seem to be divided into table and tree
117+
types, but the common theme is a close integration with a database, rather
118+
than keeping it at arm's length as SQL-using systems do (but PL/SQL, or even
119+
SQL, would be an example of Data-oriented Programming). </p>
120+
121+
<p>Popularity of the table branch of data-oriented programming surged in the
122+
80s with the use of languages like:</p>
123+
124+
<ul>
125+
<li>dBase</li>
126+
<li>Clipper</li>
127+
<li>Harbour/xHarbour (Open Source)</li>
128+
<li>Visual FoxPro/Microsoft FoxPro</li>
129+
</ul>
130+
131+
<p>These languages had useful features that are not seen in modern programming
132+
languages, primarily the tight integration of database features into the
133+
language. </p>
134+
</td>
135+
</tr>
136+
<tr>
137+
<th>Web 1.0 Era</th>
138+
<td>1995-2008</td>
139+
<td><h4>Take over the world</h4>
140+
This was the era in which Imperative OOP took over the world. While
141+
the model of OOP wasn't necessarily agreed on, most languages incorporated
142+
a lot more OOP than previously. </td>
143+
<td>While some variants of agent-
144+
oriented programming lean more towards logic programming (eg.
145+
<a href="https://en.wikipedia.org/wiki/GOAL_agent_programming_language">
146+
GOAL</a>, others are definitely in line with the Actor Model (eg.
147+
<a href="https://en.wikipedia.org/wiki/SARL_(programming_language)">
148+
SARL</a>. </td>
149+
<td>
150+
<h4>Table-Oriented Programming</h4>
151+
152+
<p>With the advent of the internet, and the popularity of Object-Oriented
153+
Programming, these languages fell out of use. </p>
154+
155+
<p>In 1998-2002, as the table-oriented languages were falling out of use,
156+
Tablizer/TOPMind (aka Tablizer/TOPMind) wrote a series of articles
157+
on "Table-Oriented Programming" (TOP). These were, in their own words,
158+
unstructured and piecemeal. These advocated for various features prevalent in
159+
these languages, and a few ideas of their own. </p>
160+
161+
<p>Unfortunately, at the time, TOP was seen (especially by the biggest TOP
162+
advocate, Tablizer/TOPMind/TOPMind) as a competitor to OOP. This meant he spent a lot
163+
of time criticising the OOP community (often validly) for the weaknesses of OOP
164+
(and OOP was weak before modern ideas such as the invention of roles). </p>
165+
166+
<p>This led to a situation where the vast majority of people followed the OOP
167+
camp, without considering a multi-paradigm approach. Had more effort been put
168+
into integrating TOP into modern programming languages, everyone's lives
169+
would've been a lot easier (or at least most programmers). </p>
170+
</td>
171+
</tr>
172+
<tr>
173+
<th>Web 2.0 Era</th>
174+
<td>2008-2022</td>
175+
<td>This was a time of steadily increasing object orientation in some of
176+
the less structured languages. </td>
177+
<td></td>
178+
<td>
179+
<h4>The Interregnum</h4>
180+
181+
<p>As a part of the interregnum, Table-Oriented Programming was pushed
182+
into the database, but then the common methodology was that code was
183+
moved out of the database, mainly for efficiency/scalability reasons
184+
(though the Smart DB/Thick DB people argue that this was often just
185+
a case of bad programmers). This meant that it was no longer easy
186+
to put code in the tables. </p>
187+
</td>
188+
</tr>
189+
<tr>
190+
<th>AI Era</th>
191+
<td>2022+</td>
192+
<td></td>
193+
<td>Look what's going to flourish! There are now many agent-based systems,
194+
though few have a genuine agent-based programming language to go with
195+
them. </td>
196+
<td>
197+
<h4>Rebirth</h4>
198+
199+
<p>This site is an attempt to make use of the good parts of TOP while hopefully
200+
leaving behind the oppositional nature of previous discourse on the topic;
201+
there may still be some pointing out of the weaknesses of various technologies,
202+
but only with the intent of showing the power of multi-paradigm programming, not
203+
with the intent of making anyone abandon the named technologies.</p>
204+
205+
<p>I will consider this a success if more languages adopt table-oriented
206+
programming as one of their available paradigms. </p>
207+
</td>
208+
</tr>
209+
</table>
210+
211+
<p>As a side note, there's some similarity between Agent-Oriented Programming
212+
and Dataflow programming, but Dataflow programming is more aimed at a
213+
continuous flow of data through a few main streams, rather than message
214+
passing. While the concepts are similar, the mindsets are different. </p>
215+
216+
<p>It can also be seen by examining the history of programming that a lot of
217+
effort has been expended simply trying to drag programmers further away from
218+
the procedural model and C. C++ was the inclusion of OOP in C, but only the Classes
219+
part, not the Actor Model part. Perl was the inclusion of some Functional
220+
features in a C-like language; its successors (Ruby, Python, PHP) were usually
221+
less functional-aligned. </p>
222+
223+
</content>
224+
</page>

Other-Items/real-sitemap.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<section>
44
<title>Other Material</title>
55
<link name="Zealot-Oriented Programming" href="Other-Items/Zealot-Oriented-Programming/"/>
6+
<link name="History of Programming" href="Other-Items/History-of-Programming.xml" width="huge"/>
67
<!-- link title="English Analysis" href="Other-Items/English-Analysis.xml" width="huge"/ -->
78
</section>
89
<!--menu>
@@ -14,4 +15,4 @@
1415
<menuitem name="" href=""/>
1516
<menuitem name="" href=""/>
1617
</menu -->
17-
</sitemap>
18+
</sitemap>

RAD/Program-Editors.xml

+4
Original file line numberDiff line numberDiff line change
@@ -398,5 +398,9 @@ it. Relevant attributes include:</p>
398398
<li>Format: Is it CSV, HTML, JSON, binary, etc</li>
399399
</ul>
400400

401+
<p>This will tie in well with the <a href="https://en.wikipedia.org/wiki/Actor_model">
402+
Actor Model</a> of OOP -- see <a href="http://stereobooster.github.io/two-big-schools-of-object-oriented-programming">
403+
Two big schools of Object-Oriented Programming</a> for more information. </p>
404+
401405
</content>
402406
</page>

Raku-TOP/Operators/index.xml

+4-4
Original file line numberDiff line numberDiff line change
@@ -287,16 +287,16 @@ a superset of both operands. </p>
287287
<td>Include all of the rows in both relations, matching up where possible</td>
288288
</tr>
289289

290-
<tr><th colspan="3"><h3>Other</h3></th></tr>
290+
<tr><th colspan="3"><h3>Other Join Operators</h3></th></tr>
291291

292292
<tr>
293-
<td></td>
293+
<td>▷=◁</td>
294294
<td>Equjoin</td>
295295
<td>Like an inner join, but the only comparison allowed is the <code>=</code> sign</td>
296296
</tr>
297297
<tr>
298-
<td></td>
299-
<td>Natural</td>
298+
<td>≜ U+225C</td>
299+
<td>Natural Join</td>
300300
<td>Like Equijoin, but the column names have to be the same in both tables</td>
301301
</tr>
302302
<tr>

Raku-TOP/Relation/Relation.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ $user.select('*[id = $value and given_name ~ "^Jo"]/(@id, @given_name, @surname
392392

393393
<p>Note that the ordering above is derived from the following. </p>
394394

395-
<h5>Select Stages</h5>
395+
<h3 id="Select-Stages">Select Stages</h3>
396396

397397
<table>
398398
<tr>

TOP-content.css

+11-4
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,11 @@ h6 { font-size: 1em; }
141141
margin-bottom: 5pt;
142142
}
143143

144+
.references-reference {
145+
font-size: -10%;
146+
margin: 0 10pt;
147+
}
148+
144149
table {
145150
margin: auto;
146151
}
@@ -167,7 +172,7 @@ td ul {
167172
padding-left: 10pt;
168173
}
169174

170-
th h2, th h3 {
175+
th h2, th h3, th h4 {
171176
margin: 0px;
172177
}
173178

@@ -195,7 +200,8 @@ code {
195200
code.block {
196201
display: block;
197202
overflow-y: scroll;
198-
padding: 4pt;
203+
padding: 10pt;
204+
border: 1px solid #cccccc;
199205
}
200206

201207
.blockquote .sidebar {
@@ -217,6 +223,7 @@ code.block {
217223

218224
/* Code for CSS hover text */
219225
.hover-parent {
226+
position: relative;
220227
display: inline;
221228
}
222229

@@ -239,8 +246,8 @@ code.block {
239246
display: none;
240247

241248
width: 400px;
242-
margin-left: 36pt;
243-
margin-top: -14pt;
249+
left: 10pt;
250+
top: 0pt;
244251
border: 2px solid var(--blockquote-border-color);
245252
border-radius: 4pt;
246253
padding: 10px;

0 commit comments

Comments
 (0)