Talking to Computers
Adapted from an article by
physicist and programmer Stephen Wolfram
published in Eureka, 2013
Do we really need computer languages
to tell computers what to do?
Why can't we just use
natural human languages,
like English or Spanish, instead?
If one would have asked this question
a few years ago, most of the experts
would have said it was hopeless.
That perhaps one could make toy examples,
but that ultimately natural language
just wouldn't be up to the task
of creating useful programs.
But then came along programs
like Wolfram | Alpha in which
they have been able to make
free-form linguistics work, vastly better,
than one ever thought possible.
But still, the input is essentially
just set up to request knowledge
- and responds
by computing and presenting
whatever knowledge is requested.
But programming is different.
It is not about
generating static knowledge,
but about generating programs
that can take a range of inputs,
and dynamically perform operations.
The first question is:
how might we represent these programs?
In principle one
could use pretty much
any programming language.
But to make things practical,
particularly at the beginning,
we need a programming language
with a couple of characteristics.
The most important is that programs
a user might specify with short pieces
of natural language must typically
be short - and readable -
in the computer language.
Because otherwise the user
won't be able to tell
- at least not easily -
whether the program
that's been produced
actually does what they want.
A second,
somewhat related criterion
is that it must be possible
for arbitrary program fragments
to stand alone - so that
large programs can realistically
be built up incrementally,
much like a description
in natural language
is built up incrementally
with sentences and the like.
To get the first of these characteristics
requires a very high-level language,
in which there are already many constructs
already built in to the language -
and well enough designed
that they all fit together
without messy "glue" code.
And to get the second characteristic
essentially requires a symbolic language,
in which any piece of any program
is always a meaningful symbolic expression.
Conveniently enough,
there is at least one language
that satisfies rather well
both these requirements: Mathematica.
The linguistic capabilities of Wolfram | Alpha
gives one the idea that one might be able to understand
free-form natural language specifications of programs.
Mathematica, for instance,
is what gives one the idea
that there might be a reasonable target
for programs generated automatically
from natural language.
Stephen Wolfram express that for him,
there was also a third motivating idea
- that came from his work displayed
in his book A New Kind of Science.
One might have thought, he says,
that to perform any kind of complex task
would always require a complex program.
But what he learned there
is that simple programs
can often do highly complex things.
And the result of this
is that is often possible
to find useful programs
just by searching for them
in the computational universe
of possible programs -a technique
that he says he use with increasing frequency
in the actual development of both
Wolfram | Alpha and Mathematica.
__________
I transcribed Stephen Wolfram's short article
because, although his work is meritorious
he invest too much time in selling himself
and his products, every time he has the opportunity.
Probably this is the part of the way to stay alive after
thirty years in the business. It seems not enough to
work on the frontier, you have to invest continually
time, words and effort, to present
your contributions, as the last word of everything.
It seems this work for the market
but it can be a little bit tedious
when one expect ideas instead
of the speech of a salesman.
No hay comentarios:
Publicar un comentario
COMENTE SIN RESTRICCIONES PERO ATÉNGASE A SUS CONSECUENCIAS