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& 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 >
0 commit comments