152 midterm on october 19th - sjsu · history of javascript 1995: netscape hired brendan eich....

18
152 Midterm on October 19 th Review on October 17 th

Upload: others

Post on 17-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Lab: Intro to JavaScript

Today's lab explores both the functional and object-oriented aspects of JavaScript. See Canvas for details.