Title: JavaScript: The Good Parts Part One: History
1JavaScript The Good PartsPart One History
- Douglas Crockford
- douglas_at_crockford.com
2Overview
- Part 1 - The History of the Language
- Part 2 - A Survey of the Language
- Part 3 - Pseudoclassical Inheritance
- Part 4 - Prototypal Inheritance
- Part 5 - Functional Inheritance
- Part 6 - Performance
- Part 7 - Security
- Part 8 - Style
- Part 9 - JSLint
- Part 10 - ADsafe
- Part 11 - JSON
- Part 12 - Theory of the DOM
3Herman Hollerith
4Hollerith Card
51890 Census
6Mainframes
7Console
8Control Data 6600
9Timesharing
10Timesharing
11Timesharing
12Timesharing
- A timesharing system was a community.
- File sharing.
- Email.
- Chat.
- Blogs.
133270
14Douglas EngelbartThe Mother of All Demos
15Personal Computing
16Personal Computing
17Personal Computing
18Personal Computing
- Personal computing killed timesharing.
- A big step forward in affordable computing and
interactivity. - A big step backward in social computing.
- It would take 20 years for networks to fill the
gap.
19Personal Computing
20Hypercard
- Stacks of cards containing images, buttons, and
text fields. - Didn't anticipate color.
- Didn't anticipate text links.
- Didn't anticipate networking.
- A decade later, cards would become pages.
21ARPANET became the Internet.
- All of the world's computer networks coalesce
into one.
22Information Retrieval
- FTP.
- Archie.
- Gopher.
- WAIS.
- WWW.
23The Web
- 3270 for the
- Twenty-First Century
24Interactivity
25Interactivity
- Java was a huge failure.
- Very popular. High acceptance.
- The "Write once, run everywhere" promise not
kept. - Unworkable "blame the victim" security model.
- Tedious UI model.
- Successful as a server technology.
26Interactivity
- Netscape
- JavaScript
- Programming model similar to HyperCard
- Domains of HTML pages instead of stack of cards
27Interactivity
- Microsoft
- JScript
- High fidelity clone of JavaScript
- Generalized document model
- All elements are scriptable
- XMLHttpRequest
28Five Years Later
- Jesse James Garrett
- discovers Ajax
29Ajax
- Applications without installation.
- Highly interactive.
- High social potential.
- Easy to use.
- Great network efficiency.
- But it is too damn hard to write applications.
301992
- Jim Gosling at Sun Microsystems
- Greentalk Oak Java
311995
321995
33Influences
- Java
- Syntax, conventions
- Self
- Prototypal inheritance, dynamic objects
- Scheme
- Objects as first-class values, loose typing
- Perl
- Regular expressions
34Netscape's LiveWire
- LiveScript is the scripting language
- in the browser ltscriptgt
- in the server ltservergt
- LiveConnect is the api that LiveScript uses to
connect Java with the page. - Sun wanted Netscape to abandon LiveScript.
- The name was changed to JavaScript.
351996
361998
- European Computer Manufacturers Association
- ECMAScript
371999
- ECMAScript, Third Edition
- Still the current standard
381999
- Work begins on the fourth edition.
- JScript.net
- Flash ActionScript 3
39E4X
- Extensions to ECMAScript for XML
- Proposed by BEA
- Allows ltXMLgt literals
- Not included in ECMAScript Third Edition
- Not included in ECMAScript Fifth Edition
- Not widely adopted
- Not in IE7
402005
412007
- The most popular language in the world.
422009
- The Fifth Edition might be approved this year.
43The World's Most Misunderstood Programming
Language
44Sources of Misunderstanding
- The Name
- Mispositioning
- Design Errors
- Bad Implementations
- The Browser
- Bad Books
- Substandard Standard
45JavaScript is the only programming language that
people don't bother to learn before using.
46There is no standard that says that a web browser
must implement JavaScript.
- JavaScript is the only language implemented in
all popular web browsers.
47There was no careful review of the language or
its problem domain. There was no review of its
suitability or the soundness of its design. It
was slapped together at Netscape, and then copied
elsewhere.
- Given the process that created JavaScript and
made it a de facto standard, we deserve something
far worse.
48Platforms
- Browsers
- WSH and Dashboard
- Yahoo!Widgets
- DreamWeaver and Photoshop
- SilverLight and AIR
- Embedded
49A language of many contrasts.
- The best ideas and the worst ideas.
50The broadest range of programmer skills of any
programming language.
- From computer scientists to cut-n-pasters and
everyone in between.
51Complaints
- "JavaScript is not a language I know."
- "The browser programming experience is awful."
- "It's not fast enough."
- "The language is just a pile of mistakes."
52Hidden under a huge steaming pile of good
intentions and blunders is an elegant, expressive
programming language.
- JavaScript has good parts.
53JavaScript is succeeding very well in an
environment where Java was a total failure.
54The Very Best PartStability
- No new design errors since 1999!
- (But that's about to change.)