IEEE Consumer Electronics Magazine - July 2016 - 119
What could be simpler and more
readable? Stored program computers
could do their own programming! The
program was the Formula Translator or,
more familiarly, the Fortran language.
To today's programmers, Fortran is just
another language, and it still has a community of users [1].
Fortran solved the problem of programming. Actually, it solved one problem with programming. It was just the
start of a process of developing vocabularies that bridged our understanding
and the descriptions computing devices
can understand. What does it mean to
understand? That's part of the challenge. By the time I took a class in the
history of programming languages in
1967, our professor, Saul Rosen, had
published a thick collection of papers
Programming Systems & Languages as
people experimented with many
approaches to programming. We started
out with languages specialized for various purposes such as COBOL for business and Lisp for AI. Today's languages
are more general purpose, but we continue to develop vocabularies appropriate to classes of applications.
The ArT of ProgrAmming
I've remained fascinated by programming languages over the years as we
better understood the art of programming. I say art because deciding how to
tell a story is indeed an art. This is why
I chose the name Software Arts for the
company Dan Bricklin and I founded in
1979. An important part of the art of
programming is an articulate understanding of technique. One of the big
challenges is understanding how to
express concepts in terms that the
machine can understand. Even harder,
perhaps, is understanding what the
code is really doing as the number of
interactions increases. As I write this,
I'm trying hard to avoid jargon, but
there are limits, as the very concepts
require their own language. We tend to
use anthropomorphic language to
describe programs, but doing so runs
the risk of inferring too much understanding on the part of the computer.
Object-oriented programming is an
important concept, but stories and engi-
neering don't work if you lose perspective or, more to the point, perspectives.
Objects are useful in organizing programs, but it's important that we're working with representations. A number is a
number that we may interpret as a temperature in Celsius or Fahrenheit depending on the context. Ambiguity is essential
and fundamental. This is why we don't
do serious programming by drawing diagrams. Instead we use words to represent
concepts not just operations. We might
ask a program to print out a date, but the
details depend on the context. Programming can be tedious and error prone,
One of the big challenges
is understanding how to
express concepts in terms
that the machine can
understand.
and in the 1970s, we longed for a programmer's assistant that could keep track
of all the housekeeping tasks. Today's
integrated development environments
(IDEs) are a realization of that dream.
The growth of languages, such as
Python and JavaScript, with a more
relaxed view of objects has demonstrated the value of flexibility. Personally,
I like the approach taken by languages
such as TypeScript, which adds type
annotation to JavaScript. This allows
my assistant, the IDE, to help me. This
works well with my personal style of
kneading code or, to use more common
term, refactoring code, by helping warn
me about conflicts as I evolve the code.
Programs aren't just for web pages.
They also do creative tasks on our
devices (i.e., smartphones) to turn them
into sensors, cameras, or whatever. We
need to do more than continue to
improve on the idea of automatic programming. Software is more about
ideas than putting together programs.
ProgrAmming And
ProgrAmmers
Today, there is a burgeoning demand
for programmers who can take business
rules and represent them in code. Programmers are also needed to handcraft
websites. It is a very labor-intensive
practice and recalls the early days of
automatic programming. We still face
the challenge of translating the concepts into working code. A lot has
changed. Programs have to continue to
evolve over time. It's not so much that
they are written as that they are constantly being rewritten and evolve as
the requirements evolve. As with any
new technology, we start out by substituting programs for older technologies.
Today, much of programming is a
new form of manual labor, building
websites or making things smarter. The
focus is on creating products and the
use cases. To get more of the benefit of
software, we need to provide interfaces,
application program interfaces [2], that
enable users to create their own solutions. This shifts where value is created. We can see this with the Internet,
which changes the business of networking from providing solutions (voice and
reliable delivery) to enable technologies (best efforts packet transport).
We're still navigating the transition.
symbiosis And emPowermenT
In the 1950s, John McCarthy proposed
the idea of multiple people sharing a
single computer-time sharing [3]. He
recognized that there was a key difference between writing a program and
submitting it to run and actively interacting with the computers. The idea of
a man/machine symbiosis continued to
evolve at Massachusetts Institute of
Technology's Project MAC, which was
cofounded by an acoustic psychologist,
JCR Licklider. Licklider played a key
role in ARPA's funding of computer
science research which gave us the
Arpanet and, eventually, the Internet.
My first job, in 1966, was helping to
build an online service that would
allow analysts to explore financial data.
The system, an SDS-940, was developed at Berkeley, and one of its developers, Butler Lampson, consulted for
us and helped develop a tool, First Financial Language, intended for use by
people who didn't consider themselves
programmers. Users would specify
rows and columns. The rows might be
company names (like General Motors)
JULY 2016
^
IEEE Consumer Electronics Magazine
119
Table of Contents for the Digital Edition of IEEE Consumer Electronics Magazine - July 2016
IEEE Consumer Electronics Magazine - July 2016 - Cover1
IEEE Consumer Electronics Magazine - July 2016 - Cover2
IEEE Consumer Electronics Magazine - July 2016 - 1
IEEE Consumer Electronics Magazine - July 2016 - 2
IEEE Consumer Electronics Magazine - July 2016 - 3
IEEE Consumer Electronics Magazine - July 2016 - 4
IEEE Consumer Electronics Magazine - July 2016 - 5
IEEE Consumer Electronics Magazine - July 2016 - 6
IEEE Consumer Electronics Magazine - July 2016 - 7
IEEE Consumer Electronics Magazine - July 2016 - 8
IEEE Consumer Electronics Magazine - July 2016 - 9
IEEE Consumer Electronics Magazine - July 2016 - 10
IEEE Consumer Electronics Magazine - July 2016 - 11
IEEE Consumer Electronics Magazine - July 2016 - 12
IEEE Consumer Electronics Magazine - July 2016 - 13
IEEE Consumer Electronics Magazine - July 2016 - 14
IEEE Consumer Electronics Magazine - July 2016 - 15
IEEE Consumer Electronics Magazine - July 2016 - 16
IEEE Consumer Electronics Magazine - July 2016 - 17
IEEE Consumer Electronics Magazine - July 2016 - 18
IEEE Consumer Electronics Magazine - July 2016 - 19
IEEE Consumer Electronics Magazine - July 2016 - 20
IEEE Consumer Electronics Magazine - July 2016 - 21
IEEE Consumer Electronics Magazine - July 2016 - 22
IEEE Consumer Electronics Magazine - July 2016 - 23
IEEE Consumer Electronics Magazine - July 2016 - 24
IEEE Consumer Electronics Magazine - July 2016 - 25
IEEE Consumer Electronics Magazine - July 2016 - 26
IEEE Consumer Electronics Magazine - July 2016 - 27
IEEE Consumer Electronics Magazine - July 2016 - 28
IEEE Consumer Electronics Magazine - July 2016 - 29
IEEE Consumer Electronics Magazine - July 2016 - 30
IEEE Consumer Electronics Magazine - July 2016 - 31
IEEE Consumer Electronics Magazine - July 2016 - 32
IEEE Consumer Electronics Magazine - July 2016 - 33
IEEE Consumer Electronics Magazine - July 2016 - 34
IEEE Consumer Electronics Magazine - July 2016 - 35
IEEE Consumer Electronics Magazine - July 2016 - 36
IEEE Consumer Electronics Magazine - July 2016 - 37
IEEE Consumer Electronics Magazine - July 2016 - 38
IEEE Consumer Electronics Magazine - July 2016 - 39
IEEE Consumer Electronics Magazine - July 2016 - 40
IEEE Consumer Electronics Magazine - July 2016 - 41
IEEE Consumer Electronics Magazine - July 2016 - 42
IEEE Consumer Electronics Magazine - July 2016 - 43
IEEE Consumer Electronics Magazine - July 2016 - 44
IEEE Consumer Electronics Magazine - July 2016 - 45
IEEE Consumer Electronics Magazine - July 2016 - 46
IEEE Consumer Electronics Magazine - July 2016 - 47
IEEE Consumer Electronics Magazine - July 2016 - 48
IEEE Consumer Electronics Magazine - July 2016 - 49
IEEE Consumer Electronics Magazine - July 2016 - 50
IEEE Consumer Electronics Magazine - July 2016 - 51
IEEE Consumer Electronics Magazine - July 2016 - 52
IEEE Consumer Electronics Magazine - July 2016 - 53
IEEE Consumer Electronics Magazine - July 2016 - 54
IEEE Consumer Electronics Magazine - July 2016 - 55
IEEE Consumer Electronics Magazine - July 2016 - 56
IEEE Consumer Electronics Magazine - July 2016 - 57
IEEE Consumer Electronics Magazine - July 2016 - 58
IEEE Consumer Electronics Magazine - July 2016 - 59
IEEE Consumer Electronics Magazine - July 2016 - 60
IEEE Consumer Electronics Magazine - July 2016 - 61
IEEE Consumer Electronics Magazine - July 2016 - 62
IEEE Consumer Electronics Magazine - July 2016 - 63
IEEE Consumer Electronics Magazine - July 2016 - 64
IEEE Consumer Electronics Magazine - July 2016 - 65
IEEE Consumer Electronics Magazine - July 2016 - 66
IEEE Consumer Electronics Magazine - July 2016 - 67
IEEE Consumer Electronics Magazine - July 2016 - 68
IEEE Consumer Electronics Magazine - July 2016 - 69
IEEE Consumer Electronics Magazine - July 2016 - 70
IEEE Consumer Electronics Magazine - July 2016 - 71
IEEE Consumer Electronics Magazine - July 2016 - 72
IEEE Consumer Electronics Magazine - July 2016 - 73
IEEE Consumer Electronics Magazine - July 2016 - 74
IEEE Consumer Electronics Magazine - July 2016 - 75
IEEE Consumer Electronics Magazine - July 2016 - 76
IEEE Consumer Electronics Magazine - July 2016 - 77
IEEE Consumer Electronics Magazine - July 2016 - 78
IEEE Consumer Electronics Magazine - July 2016 - 79
IEEE Consumer Electronics Magazine - July 2016 - 80
IEEE Consumer Electronics Magazine - July 2016 - 81
IEEE Consumer Electronics Magazine - July 2016 - 82
IEEE Consumer Electronics Magazine - July 2016 - 83
IEEE Consumer Electronics Magazine - July 2016 - 84
IEEE Consumer Electronics Magazine - July 2016 - 85
IEEE Consumer Electronics Magazine - July 2016 - 86
IEEE Consumer Electronics Magazine - July 2016 - 87
IEEE Consumer Electronics Magazine - July 2016 - 88
IEEE Consumer Electronics Magazine - July 2016 - 89
IEEE Consumer Electronics Magazine - July 2016 - 90
IEEE Consumer Electronics Magazine - July 2016 - 91
IEEE Consumer Electronics Magazine - July 2016 - 92
IEEE Consumer Electronics Magazine - July 2016 - 93
IEEE Consumer Electronics Magazine - July 2016 - 94
IEEE Consumer Electronics Magazine - July 2016 - 95
IEEE Consumer Electronics Magazine - July 2016 - 96
IEEE Consumer Electronics Magazine - July 2016 - 97
IEEE Consumer Electronics Magazine - July 2016 - 98
IEEE Consumer Electronics Magazine - July 2016 - 99
IEEE Consumer Electronics Magazine - July 2016 - 100
IEEE Consumer Electronics Magazine - July 2016 - 101
IEEE Consumer Electronics Magazine - July 2016 - 102
IEEE Consumer Electronics Magazine - July 2016 - 103
IEEE Consumer Electronics Magazine - July 2016 - 104
IEEE Consumer Electronics Magazine - July 2016 - 105
IEEE Consumer Electronics Magazine - July 2016 - 106
IEEE Consumer Electronics Magazine - July 2016 - 107
IEEE Consumer Electronics Magazine - July 2016 - 108
IEEE Consumer Electronics Magazine - July 2016 - 109
IEEE Consumer Electronics Magazine - July 2016 - 110
IEEE Consumer Electronics Magazine - July 2016 - 111
IEEE Consumer Electronics Magazine - July 2016 - 112
IEEE Consumer Electronics Magazine - July 2016 - 113
IEEE Consumer Electronics Magazine - July 2016 - 114
IEEE Consumer Electronics Magazine - July 2016 - 115
IEEE Consumer Electronics Magazine - July 2016 - 116
IEEE Consumer Electronics Magazine - July 2016 - 117
IEEE Consumer Electronics Magazine - July 2016 - 118
IEEE Consumer Electronics Magazine - July 2016 - 119
IEEE Consumer Electronics Magazine - July 2016 - 120
IEEE Consumer Electronics Magazine - July 2016 - 121
IEEE Consumer Electronics Magazine - July 2016 - 122
IEEE Consumer Electronics Magazine - July 2016 - 123
IEEE Consumer Electronics Magazine - July 2016 - 124
IEEE Consumer Electronics Magazine - July 2016 - 125
IEEE Consumer Electronics Magazine - July 2016 - 126
IEEE Consumer Electronics Magazine - July 2016 - 127
IEEE Consumer Electronics Magazine - July 2016 - 128
IEEE Consumer Electronics Magazine - July 2016 - 129
IEEE Consumer Electronics Magazine - July 2016 - 130
IEEE Consumer Electronics Magazine - July 2016 - 131
IEEE Consumer Electronics Magazine - July 2016 - 132
IEEE Consumer Electronics Magazine - July 2016 - 133
IEEE Consumer Electronics Magazine - July 2016 - 134
IEEE Consumer Electronics Magazine - July 2016 - 135
IEEE Consumer Electronics Magazine - July 2016 - 136
IEEE Consumer Electronics Magazine - July 2016 - Cover3
IEEE Consumer Electronics Magazine - July 2016 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20240102
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20231112
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20230910
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20230708
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20230506
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20230304
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20230102
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20221112
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20220910
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20220708
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20220506
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20220304
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20220102
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20211112
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20210910
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20210708
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20210506
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_20210304
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_202010
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_202009
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_202007
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_202004
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_202003
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_202001
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201910
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201909
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201907
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201905
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201903
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201901
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201811
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201809
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201807
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201805
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_201803
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_july2017
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_april2017
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_january2017
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_october2016
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_july2016
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_april2016
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_january2016
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_october2015
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_july2015
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_april2015
https://www.nxtbook.com/nxtbooks/ieee/consumerelectronics_january2015
https://www.nxtbookmedia.com