Wassily Kandinsky Willem de Kooning Joan Miro Russ Abbott, California State University, Los Angeles.

10
Wassily Kandinsky Willem de Kooning Joan Miro Russ Abbott, California State University, Los Angeles

Transcript of Wassily Kandinsky Willem de Kooning Joan Miro Russ Abbott, California State University, Los Angeles.

Wassily Kandinsky

Willem de Kooning

Joan Miro

Russ Abbott, California State University, Los Angeles

04/18/23 What is abstraction? 2

PHILOSOPHY conceptualization: the process by which people develop concepts either from experience or from other concepts. (Encarta.com)

04/18/23 What is abstraction? 3

When an entity, biological or mechanical, makes a distinction (e.g. by behaving differently under different circumstances) it has not created an abstraction.

An abstraction is a reified distinction, a distinction for which the entity has a name and to which it can refer—abstractly.

Abstraction implies conceptualization, which implies a mind that holds the abstraction.

04/18/23 What is abstraction? 4

eval(A + B, C) :- eval(A, AVal), eval(B, BVal), C is AVal + BVal.eval(A - B, C) :- eval(A, AVal), eval(B, BVal), C is AVal - BVal.eval(A * B, C) :- eval(A, AVal), eval(B, BVal), C is AVal * BVal.…

eval(Expr, Result) :- Expr =.. [Op | Args], isArithmeticOp(Op), !, map(eval, Args,

ArgsVals), Expr1 =.. [Op |

ArgsVals], Result is Expr1.

Liskov: Abstraction by parameterization extracts an essential core of some computational element and reifies it as a named element of its own, leaving parameters to be filled in when the abstraction is instantiated.

04/18/23 What is abstraction? 5

switch (expression) {

case 1: code_1; case 2: code_2; …}

class SuperClass;class Class1 extends

SuperClass;class Class2 extends

SuperClass;…

Convert a distinction (switch) into a concept (class)

04/18/23 What is abstraction? 6

Since abstraction results from the extraction and reification of the essence of something, one cannot extract an essence of something until that thing exists.

A significant thread in computer science is the process of becoming aware of and then reifying a thought process as an abstraction. Backus conceived Fortran when he realized that

it was possible to program a computer to do the same sort of translation that programmers did mentally.

Then came compiler generators, etc.

04/18/23 What is abstraction? 7

Software composition involves (a) organizing software elements (b) to serve a given purpose.

Bottom-up. The pieces existed—even if only in one’s mind—before they could be organized.

Top-down. The intended meaning existed before the software could be written.

Software composition—i.e., implementing an abstraction—is where top-down meets bottom-up.

That’s the magic that we as human beings can do.

04/18/23 What is abstraction? 8

Yes. We teach abstraction when we teach programming languages and techniques. We are reasonably successful at doing this. Students can

learn how to use abstractions. But learning abstraction tools requires a lot of work.

primes = sieve [2 .. ] where sieve (p:xs) = p:sieve [x | x xs, (x `mod` p) /= 0]

fib = 0 : 1 : zipWith (+) fib (tail fib)

Yes, self-awareness can be taught, but with difficulty. To do that teach design patterns by giving problems for

which a design pattern is a solution but require students to come with it themselves.

No, abstraction as brilliance cannot be taught. But one can be taught to recognize good abstractions. This

is similar to recognition (P) vs. generation (NP), which is typically much harder.

04/18/23 What is abstraction? 9

To be successful software engineers students must be able to construct conceptual—i.e., abstract—models of different customer domains.

Give students as much experience as possible in seeing the world in different ways.

Teach how different disciplines model the world—especially how they use visualization and modeling programs to think.

04/18/23 What is abstraction? 10

Abstraction by parameterization extracts an essential core of some computational element and reifies it as a named element of its own, leaving parameters to be filled in when the abstraction is instantiated.

Abstraction by specification abstracts from the implementation details (how the module is implemented) to the behavior users can depend on (what the module does).