Top Banner
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]
21

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

Mar 27, 2015

Download

Documents

Landon Carney
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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