![Page 1: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/1.jpg)
152 Midterm on October 19th
Review on October 17th
![Page 2: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/2.jpg)
JavaScript: The Good Parts vs. JavaScript: The Definitive Guide
For next class, read http://eloquentjavascript.net/ chapters 1-4.
![Page 3: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/3.jpg)
CS 152: Programming Language Paradigms
Prof. Tom Austin San José State University
JavaScript
![Page 4: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/4.jpg)
History of JavaScript
1995: Netscape hired Brendan Eich.
Brendan Eich
After a few meetings, Scheme was deemed too weird…
His job: implement Scheme for the web browser.
![Page 5: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/5.jpg)
In 10 days, Brendan Eich wrote the initial version of JavaScript for Netscape 2.0 Beta.
![Page 6: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/6.jpg)
JavaScript
• Superficially similar to Java • Primarily client-side programming • Sserver-side variants: – JVM: Rhino & Nashorn – Node.js
• http://w3schools.com/js/default.asp
![Page 7: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/7.jpg)
JavaScript is multi-paradigm:
• Imperative • Functional – "Scheme in C's clothing" • Object-oriented – Prototype-based
![Page 8: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/8.jpg)
Imperative JavaScript
function addList(list) { var i, sum=0;
for (i=0; i<list.length; i++){
sum += list[i];
}
return sum;
}
![Page 9: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/9.jpg)
Functional JavaScript
var addList = function(list) { if (list.length === 0) {
return 0;
}
return list[0]
+ addList(list.slice(1));
}
![Page 10: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/10.jpg)
Object-Oriented JavaScript
function Adder (amount) { this.amount = amount; } Adder.prototype.add = function(x){ return this.amount + x; } var myAdder = new Adder(1); var y = myAdder.add(7);
![Page 11: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/11.jpg)
Extended JavaScript Examples (in-class)
![Page 12: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/12.jpg)
Introduction to Node.js
![Page 13: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/13.jpg)
Node.js
• Server-side JavaScript • Based on Google's V8 engine • npm: Node.js package manager • http://nodejs.org/
![Page 14: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/14.jpg)
myFile.txt
This is my file. There are many like it,
but this one is mine.
![Page 15: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/15.jpg)
File I/O in Node.js
var fs = require('fs');
fs.readFile('myFile.txt',
function(err,data) { if (err) throw err;
console.log(""+data);
});
console.log('all done');
Callback function
![Page 16: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/16.jpg)
Resulting Output
all done This is my file.
There are many like it,
but this one is mine.
![Page 17: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/17.jpg)
Synchronous File IO in Node
var data = fs.readFileSync( './myFile.txt');
console.log(data.toString()); console.log('all done');
![Page 18: 152 Midterm on October 19th - SJSU · History of JavaScript 1995: Netscape hired Brendan Eich. Brendan Eich After a few meetings, Scheme was deemed too weird… His job: implement](https://reader033.vdocuments.us/reader033/viewer/2022042915/5f5308bafa10c74f40167f32/html5/thumbnails/18.jpg)
Lab: Intro to JavaScript
Today's lab explores both the functional and object-oriented aspects of JavaScript. See Canvas for details.