CS 1321 - PowerPoint PPT Presentation

1 / 23
About This Presentation
Title:

CS 1321

Description:

Who you are (photos) Need one volunteer ... Need three pieces of information: X coordinate of label. Y coordinate of label. Label text ... – PowerPoint PPT presentation

Number of Views:19
Avg rating:3.0/5.0
Slides: 24
Provided by: ronfer
Category:
Tags:

less

Transcript and Presenter's Notes

Title: CS 1321


1
CS 1321
  • Focus Lecture Wonders of Scheme
  • Spring 2003

2
Outline
  • Introduction and Whos Who
  • Whats hard about designing programs?
  • Why arent we learning language X?
  • Why Scheme is special

3
This recitation isnt really a conventional
recitation
  • One lecture a week
  • Required
  • Pop quizzes may occur
  • Focus on a critical aspect of programming, but a
    little off the beaten path
  • Example Today well talk about why Scheme is a
    useful language for design
  • Syllabus will be covered in main lecture
  • 2nd hour of recitation will be with TA
  • One goal of this recitation is to know you a bit
    better

4
Now, lets introduce ourselves
  • Who I am
  • Ron Ferguson, Asst. Professor, College of
    Computing
  • Office hours Monday, 1-3 pm, CCB 162
    (pied-a-terre in the Deans area of CCB)
  • Email rwf_at_cc
  • Who you are (photos)
  • Need one volunteer

5
Lets use some instant demographics to get to
know the class a bit better
  • Raise your hand if
  • Your major is
  • CS, EE, ME, AE, Psych
  • Youve written a computer program (longer than 10
    lines).
  • Pascal C
  • C Java
  • HTML XML
  • Others?
  • Have designed something?
  • Your own web page
  • Carpentry
  • Music
  • A play or skit
  • An engine or other mechanism
  • Which brings us to our next issue

6
Outline
  • Introduction and Whos Who
  • Whats hard about designing programs?
  • Why arent we learning language X?
  • Why Scheme is special

7
In design, finding a way to formulate your
problem is half the battle
  • Composer
  • The first few minutes are the hardestbefore I
    find a theme to play with
  • Architect
  • Initial theme, followed by a number of
    elaborations
  • Computer programmer
  • Describing the problem
  • Breaking it down into parts
  • Abstracting those parts in an effective way
  • Which brings us to why were using Scheme

8
In 1321, the goal is to teach you how to
problem-solve using computer programs
  • Not about learning esoteric aspects of a
    particular language
  • You will learn the syntax of Scheme
  • Yet, our goal is not to teach you about Schemes
    syntax as such
  • Analogy Teaching someone tennis
  • Hitting a ball within the boundary is important
  • Goal, however, is to teach you how to interact
    with the ball
  • Learning how to serve swing for the parking
    lot!
  • By analogy, Scheme will allow you to focus on the
    truly difficult issues in programming

9
Outline
  • Introduction and Whos Who
  • Whats hard about designing programs?
  • Why arent we learning language X?
  • Why Scheme is special

10
Why arent we learning Language X?
  • Where X Java, C, Matlab, etc.
  • Language of choice changes frequently
  • 1980 FORTRAN, COBOL, Assembler
  • 1985 Pascal
  • 1990 C
  • 1995 C
  • 2000 Java
  • 2005 ???
  • Other languages Perl, Smalltalk, Python, LISP,
    Lingo, C
  • Trend is toward more powerful languages with
    better abstraction abilities
  • Even more true for applied domains AutoCAD LISP,
    Director Lingo, others

11
Scheme A Golden Oldie?
  • Whats ironic about Scheme is thats its been
    around awhile
  • First specification in 1975
  • FYI Top hit in 1975 Love Will Keep Us Together
    The Captain Tennille
  • Based on LISP, which goes back to the 50s
  • LISP is almost as old as FORTRAN
  • LISP is still in common use in AI applications,
    along with complex data handling
  • Orbitz and YahooStores both use LISP

12
Scheme Everything Old is New Again
  • So why is Scheme important now?
  • Faster hardware
  • Better interpreters and compilers
  • People are more expensive, and MIPS and memory
    are much, much cheaper.
  • Save six person/months of development 30K
  • Code easier to maintain
  • Despite its age, LISP and Scheme introduced a
    number of programming concepts that werent in
    common use until recently
  • Automatic memory management (garbage collection)
  • Functional programming style
  • Nested symbolic descriptions of data (Hello,
    XML!)
  • Late binding (non-static types)
  • Let me say a little more about these special
    features of Scheme

13
Outline
  • Introduction and Whos Who
  • Whats hard about designing programs?
  • Why arent we learning language X?
  • Why Scheme is special

14
Two classes of information included in a program
  • Data Bookkeeping Keeping track of the size and
    types of the information resources needed by the
    program
  • Pretty mundane, but important
  • Algorithm design How those information resources
    are processed to solve a problem
  • Includes issues like computational complexity
  • Harder key to good programming
  • Scheme lets us focus on the second class of
    information.

15
Managing memory
  • Hello, World program.
  • Puts a single label on the screen at a particular
    X,Y position
  • Need three pieces of information
  • X coordinate of label
  • Y coordinate of label
  • Label text

16
Allocating memory
Memory is then allocated for each of those
items X position 1 byte Y position 1 byte
Label string 1 byte per character. In many
languages, we must explicitly tell the system to
allocate the memory, and then to release the
memory when it is done. Bugs occur when this is
not done properly - If memory is not
released, then the program may have a memory
leak.
17
How Scheme handles memory management for you
  • In Scheme, memory is allocated automatically as
    data is created and used
  • Allocates chunks of memory
  • Creates pointers to parts of that memory
  • Make sure that the pointers dont point to the
    wrong things (e.g., pointer arithmetic)
  • Let go of the memory chunks when youre done
    (e.g., avoid memory leaks)
  • Scheme handles releasing memory by keeping track
    of which values are referenced
  • When data is no longer referenced, it is released
    automatically (garbage collection).
  • Garbage collection is much more reliable than
    handling memory automatically, though it can also
    be slower

18
How Scheme handles variable types for you
  • In many languages, we have to explicitly decide
    on that values will be stored in a variable
  • Integer values are different from floating point
    values are different from strings
  • Integer position-x, position-y
  • String label
  • Scheme is much more flexible about handling types
  • Types are a characteristic of the data value
    rather than the variable
  • Handled via boxing of values (including type
    information with the data)
  • Result Variables can point at data of any type
    at any time
  • Of course, with this much rope, you can also hang
    yourself
  • Divide a string by another string
  • Still, much more flexible than other languages

19
Schemes simplified syntax
  • Most languages have a complex syntax
  • Lots of punctuation ,.,-gt,,,(),.
  • Most common error in my old Pascal class syntax
    error
  • But learning to program is not about learning how
    to avoid syntax errors!
  • Scheme Parentheses uber alles
  • If its an expression, its delimited by
    parentheses, period.
  • The first item past the left paren is always the
    operator, the rest is always the arguments.

20
Schemes use of parentheses might be compared to
HTML or XML
  • In HTML, everything is controlled by matching
    labels
  • ltheadgt
  • lttitlegtMy web sitelt/titlegt
  • ltheadgt
  • ltbodygt
  • Welcome to my web page!
  • lt/bodygt
  • This simple syntax makes HTML easy to learn, and
    easy to extend
  • Parsers for HTML (properly written) are also
    easy.
  • XML takes this lesson to heart
  • ltLinkSet name"Working Pages"gt
  • ltSubPage name"Audio" url"audio.htm"/gt
  • ltSubPage name"Ariel" url"Service/Ariel20Ser
    vice20Log.htm"/gt
  • ltSubPage name"Clio" url"Service/Clio20Servi
    ce20Log.htm"/gt
  • ltSubPage name"Diversions" url"diversions.htm
    "/gt
  • lt/LinkSetgt
  • Parentheses in Scheme work just like this, except
    that Scheme it is more succinct and more powerful.

21
Translating XML or HTML to Scheme is easy!
  • HTML to Scheme translation
  • lttaggt lt/taggt ? (tag )
  • Now, lets translate something
  • ltheadgt
  • lttitlegtMy web sitelt/titlegt
  • ltheadgt
  • ltbodygt
  • Welcome to my web page!
  • lt/bodygt
  • In Scheme, we would write this as
  • (head (title My web site))
  • (body Welcome to my web page!)
  • By the way, this is why Scheme and LISP are great
    AI languages its easy to write complex
    representations in them. Whats being done in XML
    now was done in LISP in the 60s!

22
Outline
  • Introduction and Whos Who
  • Whats hard about designing programs?
  • Why arent we learning language X?
  • Why Scheme is special

23
Summary
  • Scheme is an oldie but goodie
  • Scheme lets you focus on algorithm design instead
    of data bookkeeping
  • Automatic memory management
  • Data types handled automatically (neednt be
    pre-defined)
  • Syntax is simple and extensible
Write a Comment
User Comments (0)
About PowerShow.com