CS 150: Computing from Ada to the Web

Download Report

Transcript CS 150: Computing from Ada to the Web

CS 150: Computing from Ada to
the Web
The Philosophy of Programming
Liberal Arts Recap
• Language/Literature
– Grammars and defining languages
– Recursion in literature
• Visual Arts
– Recursion in Escher’s drawings
– Fractals
• Music
– Bach’s Canons
– Foo Fighters’ in recursion
Philosophy
• Definition: “Philosophy is the discipline
concerned with questions of how one should
live (ethics); what sorts of things exist and
what are their essential natures
(metaphysics); what counts as genuine
knowledge (epistemology); and what are the
correct principles of reasoning (logic).”
How does Philosophy relate to CS?
• A more general definition: “How we view the
world.”
• How do we represent the world around us?
• How do we turn what we see into the world
into something digital? Something a
computer can understand and operate on?
Topics we’ll cover in Philosophy
• Modeling the world
– Object-oriented programming
– Abstract Data Types
– Data modeling
• Inheritance
– How objects relate to each other
• Requirements and Design
– Understanding the needs of others
• Ethics in Computer Science
What have we been programming
• Functional Programming Paradigm
– “treats computation as the evaluation of
mathematical functions and avoids state and
mutable data. It emphasizes the application of
functions, in contrast with the imperative
programming style that emphasizes changes in
state.”
How do we view the world?
• Some take the world and can turn it into
mathematical functions…
– Mathematicians
– Physicists
• How do you view the world?
How I (Mark Sherriff) View the World
• Millions of interconnected and interrelated
objects
– Example: this classroom
• The room sits in a particular spot in a particular building
at a particular place on grounds.
• Inside the room is a set number of seats is a prescribed
formation
• In some of the seats are students
Object vs. Instance
• What is an object?
– Is it a thing? Is it a place? Is it a person?
• An object has attributes
– Where is the object?
– What is the object like?
• An object has functions
– What can the object do?
– What is it used for?
Object vs. Instance
• An instance is a particular object
– I (Mark) am an instance of a professor
– My Civic is an instance of the general object car
• What instances are there in this room?
• What differentiates one instance from
another?
Another way to say it
• Entity vs. Entity Set
– An entity set is the general category that an object
comes from (i.e. desks)
– A particular entity is a specific object from the set
(i.e. the desk at the very front on the right)
The Philosophy of OO
• Why does the way we view the world matter?
• How does a computer “view the world?”
– What is machine language like?
– Can we read/understand machine language?
• The programs we have written so far are nice,
but are they things you’d use in your everyday
life?
• What are programs you use every day?
List of programs
•
•
•
•
•
•
•
Internet Browsing: Firefox, Safari, Opera
Email: Thunderbird, GMail, Webmail
Calendar: iCal, GCal
Music: iTunes, Rhapsody, Napster, … others
Games: Solitare, Wii, XB360, DS
IM: AIM, Adium
Office: MS Office, iWork, OpenOffice
What are the purposes of these
programs?
• Solve real-world problems
• Provide real-world solutions
• Improve quality of life
• So, how do you represent all that in 1’s and
0’s?
The world you are trying to model
• How do you tell a computer what any of this stuff
is?
• Each programming paradigm has a different
“language” it speaks to model the world
• Functional programming models the world in the
terms of mathematics.
• OO programming models the world by saying
that everything is an object unto itself, with
attributes and functions that it can carry out,
affecting other objects.
Finding Objects
• Define the object Book.
Finding Objects
• Define the object Book.
• A book has:
– A title
– An author
– A publisher
– Copyright
– Pages of text
– Pages with pictures
Finding Objects
• Well… what’s a page?
– A page is a single sheet of paper that has text on
it.
• Well… what’s paper?
• How far down do we need to go?
• Remember: What is the world you are trying
to model?
Finding Objects
• Consider a library
• Now, what do you need to know about a
book?
How do we represent objects in code
• Classes
– Classes are made up of primitive types and
functions.
– Classes are entity sets / objects because they
define an entire category of objects
– Classes can be instantiated, creating instances
– An instance is a particular entity from the class
• i.e. the front right desk is an instance of the Desk class
The building blocks of a class
• Attributes
– Pieces of data that define the object
• Functions / Methods
– Functionality that the object has
– Functionality that can be performed on the object
Class in PHP
<?php
class Book {
var $title;
var $author;
var $publisher;
var $pages;
var $callNumber;
}
?>