10/09/1999© 1999 cnri, guido van rossum 1 computer programming for everybody guido van rossum cnri...

21
10/09/1999 © 1999 CNRI, Guido van Ro ssum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston, Virginia, USA) [email protected]

Upload: landon-carney

Post on 27-Mar-2015

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

10/09/1999 © 1999 CNRI, Guido van Rossum

1

Computer Programmingfor Everybody

Guido van RossumCNRI

(Corporation for National Research Initiatives, Reston, Virginia, USA)

[email protected]

Page 2: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

10/09/1999 © 1999 CNRI, Guido van Rossum

2

Our Vision

• A computer on every desk…?

Yes!

• But everybody a programmer…?

...Why not?!

Page 3: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 4: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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”

Page 5: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 6: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 7: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 8: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 9: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 10: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 11: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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 :-)

Page 12: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 13: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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?

Page 14: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 15: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 16: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 17: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 18: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 19: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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!

Page 20: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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

Page 21: 10/09/1999© 1999 CNRI, Guido van Rossum 1 Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston,

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