programming legends - the world's most famous programmers

30
Programming Legends BY ARNO HUETTER

Upload: arno-huetter

Post on 21-Feb-2017

1.510 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Programming Legends - The world's most famous programmers

ProgrammingLegendsBY ARNO HUETTER

Page 2: Programming Legends - The world's most famous programmers

About the Author

Arno HuetterArno wrote his first lines of code on a Sinclair ZX80 in 1984.

Over the years, he has programmed internet banking systems, mobile phones (pre-smartphone), public administration and healthcare software, and application performance monitoring solutions in C/C++, Java and C#, including a fair amount of database development. Today he works as development lead at Dynatrace. Arno is also a mentor at CoderDojo Linz, a coding club for children.

Being a history buff in general, he enjoys reading and writing about computer history, too.

Page 3: Programming Legends - The world's most famous programmers

Programming Legends• "Programmers who contributed hugely to and had a lasting influence on the

software development profession, linked with an extraordinary personal story."• Technical brilliance is one thing, but it might also require being at the right place at

the right time, finding a congenial partner or having recent innovations at one's disposal.

• Most "top 10 influential / famous / rockstar programmer lists" have the usual suspects:• [1] Ritchie, Stroustrup, Gosling, Torvalds, Hejlsberg, Berners-Lee, Kernighan, Thompson, van Rossum,

Knuth• [2] Ritchie, Torvalds, Stroustrup, Berners-Lee, Kernighan, Knuth, Thompson, van Rossum, Gosling,

Gates• [3] Ritchie, Torvalds, Knuth, Thompson, Stroustrup, Berners-Lee, Kernighan, Gosling, Stallman,

Lovelace• Alan Turing? Mathematician, cryptanalyst, specified electromechanical code-

breaking devices, proposed universal computing machine.• Steve Wozniak? Great programmer, but his genius was in electronic engineering.• This small selection is based on a voting within a developer-only Facebook group

plus one author choice (Ritchie/Thompson).

Page 4: Programming Legends - The world's most famous programmers

Ada Lovelace• Born 1815 in London.• Daughter of Lord Byron, one of England‘s greatest

poets.• In order to prevent Ada from becoming a romantic like

her father, her mother supports Ada‘s interest in mathematics and logic. She is tutored by some of the best mathematicians of her time.

• Her analytical skills are truly remarkable.• Lovelace is widely recognized as "the first

programmer". (Bernoulli numbers algorithm for a Turing machine).

• US Department of Defense even named the programming language "Ada" in her honor.

Page 5: Programming Legends - The world's most famous programmers

Ada Lovelace• 1833: At age 17 she is introduced to Charles Babbage,

inventor of the so called „Difference Engine“, a mechanical device used to calculate polynomial functions (only a prototype was finished during his lifetime, first full engine constructed in 1989-1991).

• Lovelace gets to see the Difference Engine prototype, visits Babbage often and exchanges letters on the topic.

• 1837: Babbage proposes the „Analytical Engine“, a general-purpose computer (input via punch cards, an idea originating in the Jacquard loom; base-10 arithmetic, 10,000 number storage via gear wheel state - never built - but emulators exists today incl. visual interface).

Page 6: Programming Legends - The world's most famous programmers

Ada Lovelace• In 1842 Babbage explains his plans to Luigi Federico Menabrea

(future Italian prime minister), who in turn describes the invention in a French article.

• Lovelace translates Menabrea's article on the Analytical Engine to English and adds her own notes. These notes end up two times longer than the original article itself, and become famous.

• She provides a detailed algorithm for calculating Bernoulli numbers, including loops, conditional branches and subroutines. The "translated" source code can be found on GitHub today.

• She also describes the engine as a general purpose computer, as opposed to a pure calculating machine.

• Lovelace is the first one to grasp that the engine's concept goes beyond numerical computations, but can be applied to any symbolic representation. For example the machine might create music.

Page 7: Programming Legends - The world's most famous programmers

Donald Knuth• Born 1938 in Milwaukee. Ingenious problem solver at school, wins

a contest in finding the most words that can be created from a set of letters, 2,000 more than judges had on their list.

• While studying Physics at Case Institute, Knuth is introduced to the IBM 650 computer (first mass-produced). He programs in machine code, later assembler, notices he can improve most existing programs. PhD from Caltech (later becomes Professor at Stanford).

• Knuth gets a contract to write an Algol compiler for Burroughs. • In 1962 receives an offer from Addison Wesley to write a book on

compilers. Decides he must initially cover the elemental theory and composes the first chapters of "The Art of Computer Programming".

• Knuth covers every topic in great detail, and conducts in-depth preparation. The first volume (Fundamental Algorithms), based on a 3000 page handwritten manuscript, is published in 1968.

Page 8: Programming Legends - The world's most famous programmers

Donald Knuth• Volume 2 (Seminumerical Algorithms) follows in 1969, volume 3

(Sorting and Searching) in 1973 and volume 4 (Combinatorial Algorithms) in 2011.

• The New York Times hails the books as “the profession's defining treatise”.

• TAOCP includes samples in MIX assembly language, for the hypothetical MIX computer (only exists as emulation).

• Book exercises have a difficulty rank up to 50, with Fermat's Last Theorem ranking at 50 originally, downgraded to 45 after being solved by Andrew Wiles.

• Knuth offers a USD 2.56 reward check for every mistake found in his books. People usually don't cash them in, but put them into a frame.

• He receives the Turing Award in 1974.

Page 9: Programming Legends - The world's most famous programmers

Donald Knuth• When receiving galley proofs of the 2nd edition of TAOCP 2 in

1975, Knuth notices the poor quality of the typeset, as photo typesetting had replaced hot metal typesetting.

• Knuth is aware of the advances in digital typesetting from Xerox, and concludes to design his own typesetting system: TeX, aimed to produce high-quality at minimal effort and create the same results on any system.

• He invents the font description language Metafont, and provides mathematical specifications for each letter. The letter "S" alone takes weeks to finish.

• TeX is implemented in the WEB language (also created by Knuth, code is usually converted to C), and published in 1978. It is ported to many operating systems, and very popular within academia up to this day.

Page 10: Programming Legends - The world's most famous programmers

Dennis Ritchie and Ken Thompson• Ritchie: born in 1941 in New York, graduates from Harvard with a

PhD in Physics and Applied Mathematics.• Thompson: born in 1943 in New Orleans, graduates from Berkeley

with a Master in Electrical Engineering and Computer Science.• In 1966 resp. 1967 they start working at Bell Labs (AT&T division,

Computing Research Center). Thompson creates the language B, the precursor of C.

• Bell had developed a timesharing OS called MULTICS for a General Electric Mainframe in the 60s. In 1970, Ritchie and Thompson implement the first version of Unix (based on MULTICS). They use assembly on a PDP-7, then port it to a PDP-11.

• Set up as an internal skunkworks project, officially they are working on a word processor (nroff) for the Bell Labs patent department.

Page 11: Programming Legends - The world's most famous programmers

Dennis Ritchie and Ken Thompson• 1972: Development of C starts on a PDP-11, mainly by Ritchie. He

creates a perfect balance between language expressiveness and efficiency. C soon gets ported to other platforms.

• Unix is then rewritten in C by Ritchie (I/O subsystem) and Thompson (most other subsystems). Unix Philosophy: Minimalist design, make each program do one thing well, and work together, over text streams as interface.

• As a regulated monopoly, AT&T is not allowed to enter the computer business directly. Instead they are required to license non-telephone technology to anyone who asks.

• Academia picks up Unix, where it is being improved, e.g. at the University of Berkeley under Bill Joy. First BSD release in 1977.

• Ritchie and Brian Kernighan publish "The C Programming Language" in 1978.

Page 12: Programming Legends - The world's most famous programmers

Dennis Ritchie and Ken Thompson• In 1979 Bell Labs finishes Version 7 Unix.• 1983: AT&T releases Unix System V. First TCP/IP

implementation in BSD 4.2. System V and BSD are the two roots for all following Unix implementations.

• Also in 1983, Ritchie and Thompson jointly receive the Turing Award "for their development of generic operating systems theory and specifically for the implementation of the UNIX operating system".

• 1999: Bill Clinton presents Ritchie and Thompson with the National Medal of Technology.

Page 13: Programming Legends - The world's most famous programmers

Bill Gates• Gates is born in Seattle in 1955. Father lawyer, Mother board

member of United Way (charitable organization, together with IBM president / CEO John Opel). Paul Allen is born in 1953. Both attend Lakeside High School.

• Gates plays lots of competitive games during childhood with rewards for winning and penalties for losing. He reads Fortune magazine, plans for his first company and develops a strong business instinct. Gates is generally described as intense in everything he does.

• At age 14, his high school receives a teletype terminal and timesharing slots on a General Electric computer. He immediately takes an interest. Quoting his teacher: "On day one I knew more than him, but only on day one".

• Gates uses Basic for creating a course enlistment program, putting him into classes at the time and with the girls he wants.

Page 14: Programming Legends - The world's most famous programmers

Bill Gates• Later Gates and Paul Allen are offered computing time on a DEC PDP-10 in

exchange for finding operating system bugs at a Seattle-based company named CCC. They meet Steve Russel there, creator of the first computer game "Space War" back at MIT.

• They learn Assembler, read operating system manuals, and dig the CCC dumpsters for source code listings. They hack user accounts to get more timesharing time.

• At age 17 Gates works with Allen on the Traf-O-Data project, building traffic counter devices using an Intel 8008.

Page 15: Programming Legends - The world's most famous programmers

Bill Gates• January-February 1975: Gates and Allen develop Altair Basic on

Harvard University‘s PDP-10 (using an Intel 8080 emulator). Gates manages to strip down the code to a 3.2k mem footprint.

• Gates basically sells a non-existing product to MITS on the phone.• Delivered on paper tape, Basic is the first commercially available

software for microcomputers. Microsoft is founded on April 4th, 1975 in Albuquerque. Gates leaves Harvard (receives honorary PhD many years later), Allen quits at Honeywell.

• Gates is quite a rebel, being arrested for speeding, also breaks into a construction site, unlocks and drives construction vehicles.

• Basic is ported to most 8bit computers, sets foundation for the Microsoft empire. DOS follows in '81, Gates outsmarts IBM in the deal.

• His charity foundation has donated 37 billion USD up to today.

Page 16: Programming Legends - The world's most famous programmers

John Carmack• Born 1970 in Kansas.• Highly talented as a kid, excels in math, starts programming as a

teenager.• At one point breaks into a school to get access to an Apple II, is

sentenced to live in a juvenile home for a year. • Carmack sells games to distribution companies. Drops out of

college and joins Softdisk, where he meets John Romero.• In 1990 Carmack is the first one to develop smooth side-scrolling

on PC hardware (EGA), AKA Adaptive Tile Refresh. In a one-nighter Carmack and Tom Hall code the "Dangerous Dave in Copyright Infringement" demo (referring to Nintendo's Super Mario).

Page 17: Programming Legends - The world's most famous programmers

John Carmack• Adaptive Side Scrolling on limited PC hardware:

• EGA: 2 screen buffers, with 64 additional pixels and a drawing offset.

• Carmack's code paints a new column of tiles in that extra 64pixel space, ready to be displayed when reached.

• As only those border tiles are repainted, the tiles touched by sprites need refreshing too.

• That would lead to flickering, which is fixed by utilizing two buffers, writing one while displaying the other, AKA double-buffering.

• Carmack, Romero, Tom Hall and Adrian Carmack decide to continue development privately, carrying their company computers home back and forth from Softdisk on weekends.

• They build a Super Mario clone for the PC, send it to Nintendo, but it gets rejected.

https://www.youtube.com/watch?v=cj4HJkeQSg0

Page 18: Programming Legends - The world's most famous programmers

John Carmack• Next the group creates Commander Keen, a side-scrolling

jump and run PC game. Distributed as shareware, Keen is highly successful. They found id Software.

• Carmack also pioneers Raycasting, Binary Space Partitioning and Surface Caching for Wolfenstein 3D (1992), Doom (1993) and Quake (1996).

• His 3D engines are running within Half-Life and Call of Duty.• Trivia: Doom was developed on a NeXT in C, using the

Watcom C/C++ compiler.• In 2000 Carmack founds Armadillo Aerospace.• In 2013 he joins Oculus VR as CTO.

Page 19: Programming Legends - The world's most famous programmers

Linus Torvalds• Born 1969 in Helsinki. Mother and father work as journalists (and

are declared communists).• At the age of 11 Torvalds learns Basic on a Commodore VIC-20

with the help of his grandfather, a statistics professor.• Teaches himself 6502 machine code, then purchases a Sinclair QL,

and implements an assembler and editor.• Torvalds enters University of Helsinki in 1988. At university he

gets to know and appreciate Unix (ULTRIX on DEC MiniVAX). He also listens to a talk by Richard Stallman about GNU.

• In 1991, he buys a hi-end 386 PC on a loan, and a copy of MINIX, a POSIX-compliant Unix for x86 based on a microkernel.

• As Torvalds doesn't like MINIX's terminal emulation, he decides to implement his own standalone terminal, starting right off BIOS.

Page 20: Programming Legends - The world's most famous programmers

Linus Torvalds• As his terminal should be able to download files too, he

short-handedly creates a disk driver and MINIX-compatible file system.

• Slowly morphing the project into an operating system, he starts coding system functions based on POSIX.

• Getting bored writing one function after the other, Torvalds uses the Bourne shell, printing out missing system functions. In August 1991 bash and gcc are working.

• In September 1991 Torvalds publishes the Linux 0.01 kernel via FTP under his own license, as well as for version 0.12 in January 1992. 0.99 follows in December 1992, already under GPL.

• Trivia: "Linux" was the project's working title, but Torvalds wanted to name it "Freax". Ari Lemmke, who ran the hosting FTP server, didn't like that and simply renamed the files to "Linux".

Page 21: Programming Legends - The world's most famous programmers

Linus Torvalds• Linux is adopted quickly, as it is free and runs on PC hardware. Users

send Torvalds postcards from all over the world, and collect money to pay back his PC. Developer community grows rapidly thanks to GPL.

• Andrew Tanenbaum, OS guru and creator of MINIX, kicks off the Tanenbaum–Torvalds debate in January 1992, criticizing Linux's monolithic kernel, in a famous Usenet posting titled "LINUX is obsolete".

• Torvalds moves to the states in 1997, working for Transmeta, and continues to develop the Linux kernel. In 1999 he receives stock options from VA Linux and Red Hat as gratitude for his creation.

• In 2005 Torvalds develops git, as BitKeeper was no longer freely available.

• Since 2007 the Linux Foundation sponsors Torvalds's work.• Today about 1 mio Android (Linux kernel) devices are activated every

day, most TVs run it, 7 out of 10 financial trades are powered by Linux.

Page 22: Programming Legends - The world's most famous programmers

More LegendsGrace Hopper, born 1906, first programmer on Harvard Mark 1 computer in 1944, invented the compiler, US navy rear admiral.

Margaret Hamilton, born 1936, developed the on-board flight system for the Apollo space program.

James Gosling, born 1955, father of the Java programming language.

Niklaus Wirth, born 1934, designed Pascal, pioneered software engineering.

Bill Joy, born 1954, developed BSD Unix and vi, co-founded Sun Microsystems.

Page 23: Programming Legends - The world's most famous programmers

More LegendsBjarne Stroustrup, born 1950, creator of C++.

Richard Stallman, born 1953, started GNU project, developed gcc and Emacs, founded Free Software Foundation and defined GPL.

Marvin Minsky, born 1927, Artificial Intelligence pioneer.

Edsger Dijsktra, born 1930, shaped computer science, coined structured programming, research on graph, concurrent and distributed algorithms.

Alan Kay, born 1940, creator of Smalltalk and Dynabook.

Page 24: Programming Legends - The world's most famous programmers

More LegendsGary Killdall, born 1942, created CP/M and BIOS.

Time Berners-Lee, born 1955, inventor of the WWW, first implementation of a web server, browser and HTTP.

Anders Hejlsberg, born 1960, author of Turbo Pascal, architect of Delphi, C# and TypeScript.

Guido van Rossum, born 1956, creator of Python.

Adele Goldberg, born 1945, developed Smalltalk and object oriented concepts.

Page 25: Programming Legends - The world's most famous programmers

More LegendsDave Cutler, born 1942, designed VMS and Windows NT.

Marc Andreessen, born 1971, built Mosaic and Netscape.

Steve Wozniak, born 1950, electronic design wizard, created Apple Basic.

Larry Page, born 1973, PageRank inventor and Google founder.

Vint Cerf, born 1943, father of the internet, co-creator of TCP/IP.

Page 26: Programming Legends - The world's most famous programmers

What can we conclude?• The really cool stuff happens in your early 20s.• 1955 was a special year (Gates, Jobs, Berners-Lee, Gosling born).• Your parents' profession and view of life might have quite an impact (Gates

vs. Torvalds).• Being a disobedient rebel is not considered harmful. Having top academic

credentials vs. dropping out of university early doesn't make a big difference either (Carmack, Gates).

• What would they have done without a DEC PDP / DEC MicroVAX?• Torvalds: "I had hoisted myself upon the shoulders of giants", referring to the

preceding work at Bell Labs and GNU.

Page 27: Programming Legends - The world's most famous programmers

What can we conclude?• Many stories are interconnected:

• Young Bill Gates digs out DEC source code from the dumpster, 20 years later hires DEC's VMS lead Dave Cutler to create Windows NT.

• Ritchie/Thompson want Space Travel game to run on Unix. Gates meets Space War creator who becomes his mentor. Microsoft also is an early AT&T Unix licensee for Xenix.

• Torvalds attends Stallman talk before creating Linux.• Bill Gates commissions a Win95 port of Doom from Carmack, who uses Jobs' NeXTstation

for Doom development. Gates even appears inside a Doom/Win95 game promo video.

Page 28: Programming Legends - The world's most famous programmers

What can we conclude?• Many stories are interconnected:

• Thompson joins the Tanenbaum-Torvalds debate on Usenet, taking a mediating stand. • Steve Jobs offers Torvalds to lead OS X development, but Torvalds declines because of its

Mach microkernel. • Jobs also tells Knuth to have read all his books (unconfirmed).• Nathan Myhrvold, former Microsoft CTO, commissions the construction of Babbage's'

Difference engine duplicate of London Science Museum's replica (costs: 1 mio USD). https://www.youtube.com/watch?v=0anIyVGeWOI

Page 29: Programming Legends - The world's most famous programmers

Sources• Freiberger, Swayne: "Fire in the Valley: Making of the Personal Computer"• Isaacson, W.: "The Innovators: How a Group of Hackers, Geniuses, and Geeks

Created the Digital Revolution"• Kurshner, D.: "Masters of Doom: How Two Guys Created an Empire and

Transformed Pop Culture"• Torvalds, Diamond: "Just for Fun: The Story of an Accidental Revolutionary"• Web of Stories: Interview with Donald Knuth Playlist, http://bit.ly/2gVOEes• Huetter, A.: "Geschichte des Computers", http://bit.ly/2iz7jxn• Huetter, A.: "How Bill Gates Outmaneuvered Gary Kildall",

http://bit.ly/2hNlW3m• Huetter, A.: "The History of the PC", http://bit.ly/2hLPfy3• "The Tanenbaum-Torvalds Debate": http://oreil.ly/1Rju3ga

Page 30: Programming Legends - The world's most famous programmers

Thank you!Twitter: https://twitter.com/ArnoHuBlog: http://arnosoftwaredev.blogspot.com