Monday, October 12, 2020

Video of panel discussion with Joe Armstrong, Carl Hewitt, and Tony Hoare

The video is here:
            https://www.youtube.com/watch?v=37wFVVVZlVU

In a wide ranging discussion, there were some fundamental disagreements among the panelists as follows:


  • I disagreed with Tony Hoare about using synchronized communication as the primitive because it is too slow for both IoT and many-core chips. Instead, the primitive for communication should be asynchronous sending and receiving, from which more complex protocols can be constructed. 
       Also, I disagreed with Tony about sequential actions (using ";") as being
       foundational. 
Instead, concurrent actions are foundational for digital
       systems as follows:

    • Receipt of a communication activated sending other communications
    • An Actor received one communication before it received another communication
       Consequently, a computation is a partial order of causality. Tony and I
       did agree that tooling is needed for navigating the partial order. We just
       disagreed about whether sequential actions (using ";") are foundational.


       Furthermore, class hierarchies are not a suitable foundation for Scalable
       Intelligent Systems
.  Interfaces instead of subclassing should be used for
       IoT communication.  Also,  entities and descriptions in large ontologies do
       not fit in an object class hierarchy
, e.g., Java and C++. Subclassing is
       not secure because it allows a subclass to impersonate a superclass.

  • I disagreed with Joe Armstrong about requiring use of external mailboxes because they are inefficient in both space and time.
    Instead of requiring an external mailbox for each Actor, buffering/reordering/scheduling should be performed inside an Actor as required.
Of course, Tony and Joe made other great points with which we agree entirely.