Computer Programming for Everybody

Download Report

Transcript Computer Programming for Everybody

Computer Programming
for Everybody
Guido van Rossum
CNRI
(Corporation for National Research Initiatives, Reston, Virginia, USA)
[email protected]
10/09/1999
© 1999 CNRI, Guido van
Rossum
1
Our Vision
• A computer on every desk…?
Yes!
• But everybody a programmer…?
...Why not?!
10/09/1999
© 1999 CNRI, Guido van
Rossum
2
Everybody a Programmer!
• Computers need programming
– Programming skills will become as
essential as reading and writing
• Don't leave it to the experts
– Empower users
– Escape canned dialogs, “wizards”
– Scratch your own itch
– Solve your own problem, improvise
10/09/1999
© 1999 CNRI, Guido van
Rossum
3
But How?
• Isn’t programming too hard?
– Yes, with current languages
• C++ a nightmare in high schools
• Java not much better
• VB? Ha!
– Yes, with current tools
• even professionals cuss their tools
• tools for beginners lacking or “dumbed down”
10/09/1999
© 1999 CNRI, Guido van
Rossum
4
Our Vision
• “A Python on every desk”
• Based on Python...
– Next generation programming tools
– New CS curriculum
– New language
» Initially, use a subset of Python
» Improve language based on experience
10/09/1999
© 1999 CNRI, Guido van
Rossum
5
What is Python?
• OO HL rapid prototyping language
– Not just a scripting language
– Not just another Perl
• Extensible (add new modules)
• C/C++/Fortran/whatever
• Java (through JPython)
• Embeddable in applications
10/09/1999
© 1999 CNRI, Guido van
Rossum
6
Why Start With Python?
• Good for teaching
• Useful in the real world
• Appealing to computer scientists
10/09/1999
© 1999 CNRI, Guido van
Rossum
7
Why Teach Python?
• Easy to teach the principles
– see trees through forest
– structured programming
– object-oriented programming
– programming large systems
• Interesting, realistic examples
– connect to real applications
10/09/1999
© 1999 CNRI, Guido van
Rossum
8
Python in the Real World
• Python prepares for Java, C, C++
• Python is used in many places
– Industrial Light & Magic
– Infoseek, Google (crawlers)
– Lawrence Livermore National Lab
– Red Hat Linux
– CGI scripts everywhere
10/09/1999
© 1999 CNRI, Guido van
Rossum
9
Academic Elegance
• Small set of high level data types
– numbers, string, array, hash, objects
– “everything is an object” philosophy
• Elegant high-level syntax
– expressive and readable; intuitive
• indentation for grouping
• Good mix of static, dynamic binding
10/09/1999
© 1999 CNRI, Guido van
Rossum
10
Our Goals
• Improve CS education
• Improve software development tools
• Empower end users
• ...and Python world domination :-)
10/09/1999
© 1999 CNRI, Guido van
Rossum
11
Specific Plans
• Teach Python to beginners
– middle/high school
– college freshmen (CS / non-CS)
– fun examples, e.g. 3D games
• Develop easy programming tools
– super version of IDLE (Python’s IDE)
– add program analysis tools
10/09/1999
© 1999 CNRI, Guido van
Rossum
12
Funding
• DARPA funding for first task
– 1.5 people, 2 years
• May fund expanded proposal
– 5 people, 5 years
– plus collaborations (CMU, Chicago,...)
• Looking for other sources
– NSF? Industry? Bill Gates?
10/09/1999
© 1999 CNRI, Guido van
Rossum
13
Educational Plans
• Classroom materials
– student textbook; exercises
– teacher handbook; answers
– develop interesting examples
– also suitable for home schooling
• Self-study materials
– slight variation on student textbook
10/09/1999
© 1999 CNRI, Guido van
Rossum
14
Educational Goals
• Fundamentals of programming
– datatypes, variables, control structures
– datastructures, algorithms
• Object-Oriented programming
– classes, methods, inheritance
• Program structure, good style
– modules, libraries; idioms, patterns
10/09/1999
© 1999 CNRI, Guido van
Rossum
15
The Role of Python
• Teach programming, not Python
• Python doesn't get in the way
• Python focuses on high level
concepts rather than bits & bytes
• Python allows interesting examples
• Python paves way for Java, C++, ...
• Python is useful in itself
10/09/1999
© 1999 CNRI, Guido van
Rossum
16
Software Plans
• Programming environment
– novice-friendly
– based on existing IDLE
– interactive (>>> prompt)
– syntax coloring, friendly messages
– module editor, debugger, etc.
– smart tools
10/09/1999
© 1999 CNRI, Guido van
Rossum
17
Software Goals
• Useful for novices and experts
– novices become experts
– everybody is an expert in some field
• Smart program analysis tools
– Incremental semantic analyzer
• my ideal: works like a spell checker!
– Abstraction finder
– Large program structure analyzer
10/09/1999
© 1999 CNRI, Guido van
Rossum
18
The First Year
• First half of 2000
– develop first classroom materials
• working with teachers
– develop some software (extend IDLE)
• Fall 2000
– first classroom exposure
• watch students
• watch teachers!
10/09/1999
© 1999 CNRI, Guido van
Rossum
19
Beyond the First Year
• Incorporate experience, feedback
– improve classroom materials
– improve software
• Widespread distribution
– via Python website & community
• Develop advanced software
• Possibly changes to the language
10/09/1999
© 1999 CNRI, Guido van
Rossum
20
Community Involvement
• Like open source software process
– Feedback, fixes, improvements
– Develop wide range of examples
– Develop specialized courses
• New applications
• Co-tutoring
10/09/1999
© 1999 CNRI, Guido van
Rossum
21