Computer Programming for Everybody Guido van Rossum CNRI
Computer Programming for Everybody Guido van Rossum CNRI (Corporation for National Research Initiatives, Reston, Virginia, USA) guido@python. org 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. 3 D 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
- Slides: 21