Date post: | 27-Mar-2015 |
Category: |
Documents |
Upload: | landon-carney |
View: | 219 times |
Download: | 0 times |
10/09/1999 © 1999 CNRI, Guido van Rossum
1
Computer Programmingfor Everybody
Guido van RossumCNRI
(Corporation for National Research Initiatives, Reston, Virginia, USA)
10/09/1999 © 1999 CNRI, Guido van Rossum
2
Our Vision
• A computer on every desk…?
Yes!
• But everybody a programmer…?
...Why not?!
10/09/1999 © 1999 CNRI, Guido van Rossum
3
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
4
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
5
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
6
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
7
Why Start With Python?
• Good for teaching
• Useful in the real world
• Appealing to computer scientists
10/09/1999 © 1999 CNRI, Guido van Rossum
8
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
9
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
10
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
11
Our Goals
• Improve CS education
• Improve software development tools
• Empower end users
• ...and Python world domination :-)
10/09/1999 © 1999 CNRI, Guido van Rossum
12
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
13
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
14
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
15
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
16
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
17
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
18
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
19
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
20
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
21
Community Involvement
• Like open source software process– Feedback, fixes, improvements– Develop wide range of examples– Develop specialized courses
• New applications• Co-tutoring