On Friday, 10 July 2015 07:28:39 UTC+1,
visua...@rocketmail.com wrote:
>
> Would be great to have a full transcript. I would do it, if my hearing would be better.
>
Fortunately for you, I have some neat software called Dragon Naturally
Speaking, which is a software Dictaphone thingy. So, I just spoke what
I heard, tidied it up a bit, and voila.
Enjoy.
Mark
Chuck Moore TEDx Transcript
---------------------------
Howdy. Thank you for being here. I moved into this area about 15
years ago from Silicon Valley. And I love it here. I moved first
to Ceracuse city in California, which is on Pacificest trail, or
long trail. I hiked it many times. Then I moved to [assets?],
which is 5 miles closer to the ridge of Sierra, then to incline
Village, then Carson City, and now I'm living in Wellington. In
all this gyration Reno has remained my central city. The libraries
are fantastic, I'm a great library person; have been ever since I
started this genre of software development, basically.
I invented the forth language in 1968. That was the same time that
C was invented. It was a wondrous wondrous creative period for
inventing languages - computer languages. Fortran, COBOL, Algol,
Lisp, C.
Basically there are three kinds of computer languages - based on
their notation, C for instance has expressions like A+ B equals
something. It's called infix notation; the operator is in between
the two arguments. Lisp has a prefix notation, which would be
+ A B with the operator coming first. Forth is postfix notation
when you have A B +. Now in my mind, that is by far the superior
notation. [Laughter] it leads to much, much simpler programs. For
instance in C you have a lot of parenthesis. In Lisp you have an
enormous number parenthesis. And in forth you have no parenthesis.
So it's a much more natural language for human beings who did not
learn algebra in, is it grade school? Algebra teaches you to put
the operators in between the arguments which is unnatural, the
operator really goes last you have a column of numbers and the sum
is at the bottom, the sum is the last thing you develop.
So I developed forth and I tried to, er, I used it very profitably
in my programming. I convinced a few other people to use it back
in the 70s there was quite a community of thousands of forth
programmers all over the world, a lot of them in Germany and
Russia and China, and it's faded. There are still thousands of
forth programmers but they're invisible. Partly because forth can
be used as a trade secret - if you write forth programs there'll
be smaller, faster, and bug free, and these are attributes that
people don't like to share. They like to hold them close.
I took great pride in writing programs that I could use to do
things that I wanted to do. I had to write programs for other
people in order to earn money, but those were not really
[unintelligible] experiences; it is better to do my thing my way.
One of the first things I did was to design circuit boards. So
it's very convenient that this slide is up there! [Laughter].
I would like to suggest that some of you, some of the younger of
you might like to write their own software. Back in the 70s that's
what you did; you could not buy software there wasn't software to
buy. And I thought the future would be everyone writing their own
software using the most efficient and simplest language they
could, until Bill Gates came along and persuaded everybody to buy
software, instead of building it. In fact his genius was he
persuaded you to buy it over and over and over again! [Laughter]
and that is the way he corrected the bugs and lack of features in
the original versions.
Forth software is simpler than C software. Windows is programmed
in C, Linux is programmed in C, OS I think is programmed in C.
There's only two languages in the world today. Three. C, Java, and
forth. And you'd never heard of forth, but it is orbiting Saturn.
The first program I wrote for my own use was to design circuit
boards, and all it required was a small forth program, and the
ability to draw rectangles. That is a good exercise in programming
if you can find a language any language on a computer that you
have a new can draw pictures draw rectangles and move them around
and make circuit boards. You can see the rectangles. Most lines
are rectangles, and most... well these contacts are hexagons, but
they could be rectangles, and you can do something nontrivial and
have a lot of fun doing it. You can add a lot of colour. Draw
colour pictures. And that's fun.
The reason for doing it is that current languages can do
everything. C is designed to do everything you want to do.
Windows is designed to let you do everything you want to do. Forth
does not do that. Forth let's you do anything, but not everything.
Forth is what I call extensible. If you want to add a new command
to do something that you did not anticipate wanting to do you can
do that easily. You can build a language in whatever direction you
want to go. Everything isn't there at the beginning, so you don't
have that overhead. Now the overhead is significant.
To design circuit board might take a megabyte of code. In forth it
would take a kilobyte. Three orders of magnitude less code. Three
orders of magnitude, not 1%, but one 10th of one percent the
amount of code. I have demonstrated this numerous times, but
nobody wants to know. There is a whole industry built up around
large inefficient buggy software. It starts with Windows
[laughter]. It even goes into the standards committee with this
bug they found recently in the secure socket layer. You might say
it's shocking, you might say it's fraudulent, you might say it's a
conspiracy, but it's good business because people are willing to
pay money, it makes a lot of jobs. You don't want a destructive
technology that will put 9 million of the 10 million programmers
out of work. But you can write your own software, do your own
thing and get a lot of satisfaction from it. It's a lot more fun
than crossword puzzles.
After designing circuit boards I thought it would be fun to design
computer chips. So I took the same philosophy I used with the
circuit boards and I shrank it down three orders of magnitude and
designed a computer chip. It isn't as hard as you might think.
In fact it really is quite easy, all you have to do is draw
rectangles - the fact that the rectangles are tiny instead of
macroscopic is not important - and you lay out these rectangles
nicely, three or four layers of them, and you have a computer
chip.
To actually make such a chip will cost you from $5000-$25 million
depending on exactly what you're doing - it's really not
affordable, but actually making the chip is not important. What
you want to do is design it, and simulate, and test it in virtual
space instead of real space. If you've got a really hot design
that you like and you can convince someone else to finance it
then you've got a product. Now we've got a product: we've got 144
computers on a 1 cm chip in a very conservative technology, the
cost is $5000 to make in small quantities. So it can be done. Why
would you do that? Personally I'm doing it to prove how everyone
else is doing a bad job! [Laughter] My software is maybe 100 kB to
design a chip. Cadence and retro graphics, the standard tools that
the industry uses to design chips they're 100 MB. You hear of
programs that contain a million lines of code. I know that the
software used in fighter planes, the F-22, has more than 1 million
lines of code - several million. A million lines of code is mind
boggling - it would be a stack of paper this deep. You can't read
a million lines of code, never mind write it. You have a thousand
people contributing to a million lines of code. Nobody knows what
it does. No one person does, it takes the entire corporation to
know what that code does. And, no one in that corporation can
answer your question were you to ask it. You have to trust that
somehow it all works together, and we all know how badly it works:
Windows comes out every year and it's, well it's probably a
million lines of code I don't know how big but this is as big as
some of them. Big codes. Big codes are for weather forecasting,
for nuclear test simulation for coordinating the motion of all
the ships in the world. There are big problems, and there are big
data, but they don't require big programs. You can see this
yourself when you download an app to your smart phone. The apps
are 10 MB of code. 10 MB. If you were to do that in forth it would
be 10 kB. On the other hand I would have them program the entire
phone in order to get that kind of advantage and so far I've been
unwilling to program on the smart phone. Maybe I will! [laughter]
I have a hundred and forty-four little computers that can do it.
You do need memory to store images, you need memory for large
databases, memory is a good thing, but memory is not a good thing
to store the software because 10 MB of code has bugs. 10 kB of
code does not. If you want efficiency, if you want compactness, if
you want reliability, you want small programs. That means the
program can't do everything but it can do anything.
We have written a browser in forth. It was small, it wasn't as
small as I would make it because I didn't like the way they were
doing it but it's possible, you could write an email application.
The way phones work, the way everything works in this world,
people don't really write software any more. They take software
packages from various sources and stick them together. It's the
same way of doing software [I think he meant to say Hardware] the
software [hardware?] In the cellphone contains a chip which does
amazingly many things - a component from here, a component from
there, all glued together. This uses ten times as much energy, ten
times as much area, ten times as much design effort as it needs to
but that's the way people are doing things nowadays. Not a
conspiracy. It just seems to be the easiest way to do it. It's the
way the corporate managers want you to do it. It doesn't have to
be that way. You can do better, smaller, faster cheaper, and it's
up to the younger generation, coming along to change some of these
trade-offs. The way you do it is to write a little program that
does something you're interested in, showing off a little bit, and
prove it. Write your own software.
One of the things about forth that's perhaps held it back: it's
very easy to write a forth operating system. It only takes about
ten K of code. Everyone who got interested in forth wrote their
own system, so there's many systems out there. If you want to know
about it just do a Google and you'll find all kinds of references.
I have a website out there called colour
forth.com that's
COLORFORTH. The company and working with now is called Green
arrays, they have a website. There's a
fourth.com website which
has been around for as long as the Internet. Lots of information
out there. It's a fun thing and I'm very pleased to have been
involved in it.
The conventional way of doing things is not always the right way.
It was probably arranged as a historical accident, and that's kind
of true for us also. Forth came along and became what it is more
or less accidentally. If I had not invented forth I don't think it
would have been invented. It is not a popular way of doing things,
there is no great opportunity working there, it's turned out to be
a good thing and I'm very proud of it, and I thank you for
listening to me.
[Applause]