Humanist Discussion Group

Humanist Archives: March 20, 2022, 5:58 a.m. Humanist 35.608 - 'No-code' AI

				
              Humanist Discussion Group, Vol. 35, No. 608.
        Department of Digital Humanities, University of Cologne
                      Hosted by DH-Cologne
                       www.dhhumanist.org
                Submit to: humanist@dhhumanist.org


    [1]    From: Gioele Barabucci <gioele.barabucci@ntnu.no>
           Subject: Re: [Humanist] 35.604: 'No-code' AI (151)

    [2]    From: Willard McCarty <willard.mccarty@mccarty.org.uk>
           Subject: trustworthy AI? (14)


--[1]------------------------------------------------------------------------
        Date: 2022-03-17 10:36:20+00:00
        From: Gioele Barabucci <gioele.barabucci@ntnu.no>
        Subject: Re: [Humanist] 35.604: 'No-code' AI

On 17/03/22 06:42, Humanist wrote:
> In essence, large collections of data, especially in images, audio
> files, or structured text (e.g., spreadsheets), or even unstructured
> text can now be used in new A.I. software that doesn't require
> programmers to write new code to reach conclusions about what that data
> contains.

Dear Robert,

allow me a slightly verbose reflection (rant?) on the words "no-code"
and "programming".

My take:

a) "to program" is just a synonym for "to explain", and
b) "no code" is, therefore, impossible.


## To program == to explain

The whole point of a program is to lay out instructions on how a machine
should perform a task to achieve a desired output/state given an input.

We cannot use the usual human-to-human communication channels to explain
to a machine the task nor the desired output.

Writing machine code (numbers) is the only way we know to instruct a
machine to perform certain tasks. Because we don't like writing machine
code we wrote some machine code (bootstrap assemblers) that turned
letters (assembly code) into machine code, and then we wrote many more
letters (compilers) to turn more complex words (programs in C,
Javascript) from an artificial language (programming language) into
other machine code.

We are so used to think that writing in a programming language is what
defines programming, that we often forget that the whole point of
writing a program in the first place is to _explain_ what we want.

The encoding of our desires and instructions in a programming language
is just an artifact that arises from the constraints that define
human-to-computer communication.

Similarly, the fact that I am encoding my thoughts as a written text in
English is an artifacts of the constraints of this conversation. I could
very well encode my thoughts in German. Or as a recording Italian.

But then I could not "program" your brain to the state I desire, namely
"you get what I mean".

After this introduction, let's move to the next point...


## "No code" is impossible

Just after the concept of _sequence_, the second most basic building
block of programming is the _if_ construct. We want something to happen
in certain situations.

Depending on your choice of language, you can encode this in many
different ways.

* English: "Could you please do this when this happen"

* BASIC: "IF condition THEN action"

* Ternary operator: "condition ? action1 : action2"

* Prolog: "foobar(condition) :- action1 / foobar(X) :- action2"

* Flowchart/Labview: a rhombus

Everybody agrees, I hope, that all these are "instructions in a
programming language".

No-code platforms promise you that you will not need to learn how to
program. Then how will I explain to the machine what is the desired
output/state? Do I just dream of it and the machine makes it happen?

How is the action of marking, say, an image in a dataset with "yes" and
another one with "no", not a form of programming?

The marking is the programming; running the "no-code AI" is the
compiling; the result is the compiled program.

If the compiled program "has a bug" (it answers "no" when it should have
answered "yes), what do you do? You go through your markings, try to
understand why the no-code tool may have come to a certain conclusion,
and make some changes to your markings so that the no-code tool behaves
better next time. How is that different from debugging a program?

One claim is that marking a piece of data in a dataset is fundamentally
simpler than programming in a conventional programming language.

To me that sounds like saying that speaking is easier than explaining.
True, but not relevant. One is strictly mechanical act, the other one
requires an understanding of the problem at hand as well as some sort of
intentionality.

Marking a couple of data points in a pretty UI is indeed easy, but that
is the equivalent of "PRINT hello world". That's also no-code, that's
plain English.

The issues arise when you try to make the machine behave in the way you
want. At that point you need much more that marking data points. You
need to know _which_ data points to mark and _how_ to mark them. You
need experience to forecast how the machine will react to changes in the
markings.

What is this if not programming? What is that series of markings if not
a program in a programming language?

Yes, you don't see the text that we usually associate with programming
languages. But all the concepts (and experience requirements) are there.

If no experience is needed on a no-code platform, then every user should
be just as expert as the creator of the no-code platform. What are the
tutorials for, then?

No-code cannot possibly exist. At best, users will engage in
domain-specific or task-specific programming via specialized UIs. But
that is and remain programming. With Visual code perhaps. Nothing new.

I understand that people are scared of the word "programming". In my
opinion the right approach is not to tell people "no programming needed"
but rather "programming is not hard" while, at the same time, improve
the ergonomics of programming. Similar discussions have been held for
decades in mathematics. People are scared of mathematics, but resorting
to the no-code equivalent "learn how to split the bill without math" is
not the solution.

Let me close this rant with an historical perspective. SQL was born as a
database interface for the masses. A no-code tool of its time. The boss
will generate the sales report they need by typing a few instructions at
the terminal. No more discussions with the IT department and the
programmers in the basement. This is reflected in the abstract of the
original 1974 SEQUEL publication [1] by Chamberlin and Boyce:

> In this paper we present the data manipulation facility for a
> structured English query language (SEQUEL) which can be used for
> accessing data in an integrated relational data base. [...] A SEQUEL
> user is presented with a consistent set of keyword English templates
> which reflect how people use tables to obtain information. [...]
> SEQUEL is intended as a data base sublanguage for both the
> professional programmer and the more infrequent data base user.
Regards,


[1] https://dl.acm.org/doi/10.1145/800296.811515

--
Gioele Barabucci <gioele.barabucci@ntnu.no>

--[2]------------------------------------------------------------------------
        Date: 2022-03-17 05:47:39+00:00
        From: Willard McCarty <willard.mccarty@mccarty.org.uk>
        Subject: trustworthy AI?

Thanks to Robert Amsler for the notice of the NYT article on 'No-code
AI'. My question is this: how reliable is the translation from what I
write and the actions taken? Would it not be foolish to assume that the
translation is perfect? And one other thing. Let's suppose the
translation is perfect. Would not the outcomes of such a facility be
analogous to all those three-wishes stories?

Yours,
WM
--
Willard McCarty,
Professor emeritus, King's College London;
Editor, Interdisciplinary Science Reviews;  Humanist
www.mccarty.org.uk


_______________________________________________
Unsubscribe at: http://dhhumanist.org/Restricted
List posts to: humanist@dhhumanist.org
List info and archives at at: http://dhhumanist.org
Listmember interface at: http://dhhumanist.org/Restricted/
Subscribe at: http://dhhumanist.org/membership_form.php