WebFund 2015W Lecture 24

From Soma-notes
Jump to navigation Jump to search

Audio

The audio from the lecture given on Monday, April 6, 2015 is now available.

Notes

On-screen notes

Administrative

  • Optional review session in SC 103 (Steacie Bldg), Friday, April 10, 2-3:30 PM
  • Assignment 10 solutions will be discussed in the review session (and posted then)
  • Assignment 8 and 9 solutions are posted
  • Final exam is on Tuesday, April 14th in Alumni Hall, rows 1-13

The Future

Before the web

  • The Internet started late 1960s-early 1970s
  • Web is 1993
  • LAN protocols: file sharing (NFS), directory services (yp), remote login (rsh), remote "desktop" (X windows)
  • WAN protocols: file transfer (ftp), email (smtp), remote login (telnet), net news (UUCP)

Why the web?

  • hypertext - linked information
  • many older systems: MEMEX?, Xanadu, gopher, WAIS
  • what was different about the web?
    • presentation-oriented markup ("pretty" documents) - HTML
    • IMAGES
    • simple to implement renderer (browser) and network protocol (HTTP)
    • stateless: scalable servers
    • URLs

What's changed since the beginning of the web?

  • CSS: prettier pages
  • JavaScript: dynamic pages
  • plugins came and went: Java, Flash, Silverlight...
  • kitchen sink, aka HTML5 - video, video chat, sockets, location, touch, WebGL
    • richer input and output
    • in the framework of HTML, CSS, JavaScript

Why not just build separately?

  • universal platforms tend to suck the oxygen out of the room

Web is the future

But won't anything else take over?

  • evolution works, not revolution
  • Java applets
  • Flash
  • Dart (now just compiled to JavaScript)

What about other technologies?

  • run on the server
  • translate for the browser

Other classes

  • COMP 3000 (operating systems): what runs a browser or a web server
  • COMP 3007 (programming paradigms): functional programming, which you kind of do in JavaScript
  • COMP 3005 (databases): learn about SQL, data modelling
  • COMP 3004: bigger programs, read code
  • COMP 3804: see patterns underlying code

Student notes

Before the Web

Before the Web, there was the Internet. The Internet started around the late 60's / early 70's. The Web itself began around 1993.

Internet protocols before the Web were LAN (local area network) and WAN (wide area network). LAN protocols:

  • File sharing (NFS)
  • Directory services (yp)
  • Remote login (rsh)
  • Remote “desktop” (X windows)

WAN protocols:

  • File transfer (ftp)
  • Email (point to point) (smtp)
  • Remote login (telnet)
  • net news (UUCP)

Each of the services using these protocols required a client which knows the protocol in order to be used. Just as a web browser is a client, email requires a client, remote login requires a client, etc...

Beginnings of the Web

What was it that the Web added to all of this? Hypertext - linked information. There were many other previous systems which attempted to do this as well such as MEMEX, Xanadu, gopher, WAIS.

So what did the Web do differently from these?

  • The Web had more presentation-oriented markup (it made 'prettier' documents) and handled things like images.
  • It had a simpler implementation of its renderer (the borwser) and protocol (HTTP).
  • HTTP was also particularly beneficial because of the fact that it is stateless. This greatly helps the scalability of web servers since the protocol needs to do no extra work with states, it is all managed (or ignored) by the code on the server.
  • The standardization of URLs brought about uniformity and universal access of resources.

Side note: The NeXTSTEP operating system is the OS on which modern Apple operating systems are based. The previous Apple OS was not able to browse the web without crashing and thus required NeXTSTEP system to fix this problem.

The modern Web and the future

What has changed now since the beginnings of the Web?

  • CSS - Providing the ability to better manage layout and make pages look nicer
  • JavaScript - Providing the ability to make dynamic pages
  • Plugins - Providing the ability to extend functionality (Things like Java, Flash, Silverlight... although these have somewhat come and gone)
  • The kitchen sink, aka HTML5 - Provides video, video chat, sockets, location, touch, WebGL... (Allows for richer input and output)

Things are now generally implemented within this framework (HTML, CSS, JavaScript) to extend functionality. This is done in the form of new tags, new functions, etc...

Things could be implemented separately and may have a better implementation if done in that way but we do not usually want to do this. Universal platforms tend to suck the oxygen out of the room. Windows was the universal platform before the Web, and before Windows, Unix sort of held this title. Having a universal platform provides simplicity and easy adaptability.

While the platform may continue to evolve and look different, the same basic pieces are likely to be used for quite some time. For example, while the communication protocol is continuing to change, it is still the same base HTTP concept.

Won't other newer technologies take over?

  • Evolution works, not revolution.
  • There have been technologies like Java applets and Flash but these have had issues and are proprietary software. They are mostly on the way out now.
  • Google created Dart to try to improve on JavaScript... now Dart is just compiled to JavaScript. Nobody wants to support multiple runtimes if it is not necessary.

What about other languages?

  • Other languages can be run on the server.
  • Code written in other languages to be run in the browser is cross-compiled. This can be done using asm.js: an extraordinarily optimizable, low-level subset of JavaScript.

If you look on Wikipedia, you can see that there are many server frameworks available. You can choose whatever matches your programming style and needs (although you may be stuck without a choice when working for a company that has already made their decision).

How does all of this relate to other courses that you will be taking (or have already taken)?

  • Comp 3000 (Operating systems): what runs a browser or a web server
  • Comp 3007 (Programming paradigms): functional programming, which you kind of do in JavaScript)
  • Comp 3005 (Databases): SQL, data modelling, more sophisticated databases
  • Comp 3004: Bigger programs, reading code
  • Comp 3804: See underlying patterns in code and algorithms