IEEE Consumer Electronics Magazine - November/December 2020 - 85

One nice thing about the heritage of Lisp is
the orthogonality-the rich set of mechanisms
are built on a simple base. While there is an
emphasis on performance on high-end browsers,
it also allows for compact implementations
where appropriate.

HOW AND WHY JAVASCRIPT

In 2014, I wrote about the growing importance of HTML5.Ã Writing applets in Java was
problematic because the apps had full access to
the host computing environment. Confining
JavaScript to the browser meant the code was
portable and sandboxed.
That also meant that the code would be
sloppy, at least at first, because the damage was
limited to an errant web page. The applications
ran outside the security perimeter since the
servers could trust any code on the client side
(AKA, in the browser).
Google has a huge financial interest in
browser performance since a few tenths of a second in browser response time could translate
into billions of dollars in revenue. Thus, the
great incentive to improve the performance of
JavaScript and it worked far better than I
expected. I had been using JavaScript for simple
projectsþ when my friend Dan Bricklin commented that JavaScript had become a high-performance language with Google's V8 engine
playing a key role.
One of the techniques used is JIT or Just-inTime compilation. As computer performance
increased, the percentage of time spent translating machine code relative to the total execution
time become very small thus eliminating the
need for precompilation. This meant that the JIT
compiler could take advantage of the on-theground knowledge such as exactly which processor was being used and what special feature it
may have.
Part of this was using the knowledge of the
types of the parameters. Thus, if a piece of code
is being called with an integer parameter that
method could be compiled for just that case.
The compiled code would do a quick check for
the parameters to make sure that, at runtime,

indeed, the parameters were integers. For a simple operation like addition that might be high
overhead but such checking gets pushed back
into the containing method and a whole set of
operations can be made safe and efficient
because the type checking could cover a variety
of methods.
All this while preserving the ability to edge
cases on the fly rather than having to check for
them every time thus allowing more streamlining
that precompiled code.
Another technique is memoization that can
short circuit the entire computation by recognizing that the parameters are the same as a previous invocation and that the code has no sideeffects.
These techniques work well when the code is
regular but that is a very reasonable assumption
akin to the locality assumption that allows both
modern operating systems and machine learning
to work so well. Oddball cases can cause performance problems but are not fatal.
Declaring types in programming languages is
not merely about performance, it is also about
safety. Having strong typing means that bugs are
discovered at compilation time rather than lurking until the program runs. It turns out that using
types for safety and types for runtime performance would be decoupled. I see Microsoft's
TypeScriptz as a way to have a conversation
with the IDE-Integrated Development Environment rather than as a necessity for compilation.
The IDE can help me identify problems and,
just as important, refactor code, by following the
implications of my declarations. If I try to add 12
to a string "12" raw JavaScript would simply convert the number to a string and give me the
result "1212" which may or may not be what I
want. If I use TypeScript the IDE would flag it
thus forcing me to be explicit about what I want.
Or not-I could just tell it to ignore the type
information by using the "any" type. I get a
chance to decide what is appropriate for the
code I am writing.
TypeScript is an important part of scaling
code. I rely on its assistant to manage my own
code since I need a housekeeper. It is more important for large teams of programmers. This is why

Ã

https://rmf.vc/IEEEHtml5
https://rmf.vc/IEEEBlinky

þ

November/December 2020

z

https://en.wikipedia.org/wiki/TypeScript

85


https://www.rmf.vc/IEEEHtml5 https://www.rmf.vc/IEEEBlinky https://en.wikipedia.org/wiki/TypeScript

IEEE Consumer Electronics Magazine - November/December 2020

Table of Contents for the Digital Edition of IEEE Consumer Electronics Magazine - November/December 2020

Contents
IEEE Consumer Electronics Magazine - November/December 2020 - Cover1
IEEE Consumer Electronics Magazine - November/December 2020 - Cover2
IEEE Consumer Electronics Magazine - November/December 2020 - Contents
IEEE Consumer Electronics Magazine - November/December 2020 - 2
IEEE Consumer Electronics Magazine - November/December 2020 - 3
IEEE Consumer Electronics Magazine - November/December 2020 - 4
IEEE Consumer Electronics Magazine - November/December 2020 - 5
IEEE Consumer Electronics Magazine - November/December 2020 - 6
IEEE Consumer Electronics Magazine - November/December 2020 - 7
IEEE Consumer Electronics Magazine - November/December 2020 - 8
IEEE Consumer Electronics Magazine - November/December 2020 - 9
IEEE Consumer Electronics Magazine - November/December 2020 - 10
IEEE Consumer Electronics Magazine - November/December 2020 - 11
IEEE Consumer Electronics Magazine - November/December 2020 - 12
IEEE Consumer Electronics Magazine - November/December 2020 - 13
IEEE Consumer Electronics Magazine - November/December 2020 - 14
IEEE Consumer Electronics Magazine - November/December 2020 - 15
IEEE Consumer Electronics Magazine - November/December 2020 - 16
IEEE Consumer Electronics Magazine - November/December 2020 - 17
IEEE Consumer Electronics Magazine - November/December 2020 - 18
IEEE Consumer Electronics Magazine - November/December 2020 - 19
IEEE Consumer Electronics Magazine - November/December 2020 - 20
IEEE Consumer Electronics Magazine - November/December 2020 - 21
IEEE Consumer Electronics Magazine - November/December 2020 - 22
IEEE Consumer Electronics Magazine - November/December 2020 - 23
IEEE Consumer Electronics Magazine - November/December 2020 - 24
IEEE Consumer Electronics Magazine - November/December 2020 - 25
IEEE Consumer Electronics Magazine - November/December 2020 - 26
IEEE Consumer Electronics Magazine - November/December 2020 - 27
IEEE Consumer Electronics Magazine - November/December 2020 - 28
IEEE Consumer Electronics Magazine - November/December 2020 - 29
IEEE Consumer Electronics Magazine - November/December 2020 - 30
IEEE Consumer Electronics Magazine - November/December 2020 - 31
IEEE Consumer Electronics Magazine - November/December 2020 - 32
IEEE Consumer Electronics Magazine - November/December 2020 - 33
IEEE Consumer Electronics Magazine - November/December 2020 - 34
IEEE Consumer Electronics Magazine - November/December 2020 - 35
IEEE Consumer Electronics Magazine - November/December 2020 - 36
IEEE Consumer Electronics Magazine - November/December 2020 - 37
IEEE Consumer Electronics Magazine - November/December 2020 - 38
IEEE Consumer Electronics Magazine - November/December 2020 - 39
IEEE Consumer Electronics Magazine - November/December 2020 - 40
IEEE Consumer Electronics Magazine - November/December 2020 - 41
IEEE Consumer Electronics Magazine - November/December 2020 - 42
IEEE Consumer Electronics Magazine - November/December 2020 - 43
IEEE Consumer Electronics Magazine - November/December 2020 - 44
IEEE Consumer Electronics Magazine - November/December 2020 - 45
IEEE Consumer Electronics Magazine - November/December 2020 - 46
IEEE Consumer Electronics Magazine - November/December 2020 - 47
IEEE Consumer Electronics Magazine - November/December 2020 - 48
IEEE Consumer Electronics Magazine - November/December 2020 - 49
IEEE Consumer Electronics Magazine - November/December 2020 - 50
IEEE Consumer Electronics Magazine - November/December 2020 - 51
IEEE Consumer Electronics Magazine - November/December 2020 - 52
IEEE Consumer Electronics Magazine - November/December 2020 - 53
IEEE Consumer Electronics Magazine - November/December 2020 - 54
IEEE Consumer Electronics Magazine - November/December 2020 - 55
IEEE Consumer Electronics Magazine - November/December 2020 - 56
IEEE Consumer Electronics Magazine - November/December 2020 - 57
IEEE Consumer Electronics Magazine - November/December 2020 - 58
IEEE Consumer Electronics Magazine - November/December 2020 - 59
IEEE Consumer Electronics Magazine - November/December 2020 - 60
IEEE Consumer Electronics Magazine - November/December 2020 - 61
IEEE Consumer Electronics Magazine - November/December 2020 - 62
IEEE Consumer Electronics Magazine - November/December 2020 - 63
IEEE Consumer Electronics Magazine - November/December 2020 - 64
IEEE Consumer Electronics Magazine - November/December 2020 - 65
IEEE Consumer Electronics Magazine - November/December 2020 - 66
IEEE Consumer Electronics Magazine - November/December 2020 - 67
IEEE Consumer Electronics Magazine - November/December 2020 - 68
IEEE Consumer Electronics Magazine - November/December 2020 - 69
IEEE Consumer Electronics Magazine - November/December 2020 - 70
IEEE Consumer Electronics Magazine - November/December 2020 - 71
IEEE Consumer Electronics Magazine - November/December 2020 - 72
IEEE Consumer Electronics Magazine - November/December 2020 - 73
IEEE Consumer Electronics Magazine - November/December 2020 - 74
IEEE Consumer Electronics Magazine - November/December 2020 - 75
IEEE Consumer Electronics Magazine - November/December 2020 - 76
IEEE Consumer Electronics Magazine - November/December 2020 - 77
IEEE Consumer Electronics Magazine - November/December 2020 - 78
IEEE Consumer Electronics Magazine - November/December 2020 - 79
IEEE Consumer Electronics Magazine - November/December 2020 - 80
IEEE Consumer Electronics Magazine - November/December 2020 - 81
IEEE Consumer Electronics Magazine - November/December 2020 - 82
IEEE Consumer Electronics Magazine - November/December 2020 - 83
IEEE Consumer Electronics Magazine - November/December 2020 - 84
IEEE Consumer Electronics Magazine - November/December 2020 - 85
IEEE Consumer Electronics Magazine - November/December 2020 - 86
IEEE Consumer Electronics Magazine - November/December 2020 - 87
IEEE Consumer Electronics Magazine - November/December 2020 - 88
IEEE Consumer Electronics Magazine - November/December 2020 - 89
IEEE Consumer Electronics Magazine - November/December 2020 - 90
IEEE Consumer Electronics Magazine - November/December 2020 - 91
IEEE Consumer Electronics Magazine - November/December 2020 - 92
IEEE Consumer Electronics Magazine - November/December 2020 - 93
IEEE Consumer Electronics Magazine - November/December 2020 - 94
IEEE Consumer Electronics Magazine - November/December 2020 - 95
IEEE Consumer Electronics Magazine - November/December 2020 - 96
IEEE Consumer Electronics Magazine - November/December 2020 - 97
IEEE Consumer Electronics Magazine - November/December 2020 - 98
IEEE Consumer Electronics Magazine - November/December 2020 - 99
IEEE Consumer Electronics Magazine - November/December 2020 - 100
IEEE Consumer Electronics Magazine - November/December 2020 - 101
IEEE Consumer Electronics Magazine - November/December 2020 - 102
IEEE Consumer Electronics Magazine - November/December 2020 - 103
IEEE Consumer Electronics Magazine - November/December 2020 - 104
IEEE Consumer Electronics Magazine - November/December 2020 - 105
IEEE Consumer Electronics Magazine - November/December 2020 - 106
IEEE Consumer Electronics Magazine - November/December 2020 - 107
IEEE Consumer Electronics Magazine - November/December 2020 - 108
IEEE Consumer Electronics Magazine - November/December 2020 - 109
IEEE Consumer Electronics Magazine - November/December 2020 - 110
IEEE Consumer Electronics Magazine - November/December 2020 - 111
IEEE Consumer Electronics Magazine - November/December 2020 - 112
IEEE Consumer Electronics Magazine - November/December 2020 - 113
IEEE Consumer Electronics Magazine - November/December 2020 - 114
IEEE Consumer Electronics Magazine - November/December 2020 - 115
IEEE Consumer Electronics Magazine - November/December 2020 - 116
IEEE Consumer Electronics Magazine - November/December 2020 - Cover3
IEEE Consumer Electronics Magazine - November/December 2020 - 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