Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.

Slideshare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.

**Scribd will begin operating the SlideShare business on December 1, 2020**
As of this date, Scribd will manage your SlideShare account and any content you may have on SlideShare, and Scribd's General Terms of Use and Privacy Policy will apply. If you wish to opt out, please close your SlideShare account. Learn more.

Successfully reported this slideshow.

Like this presentation? Why not share!

- What to Upload to SlideShare by SlideShare 4659987 views
- Customer Code: Creating a Company C... by HubSpot 3490415 views
- Be A Great Product Leader (Amplify,... by Adam Nash 777631 views
- Trillion Dollar Coach Book (Bill Ca... by Eric Schmidt 935902 views
- APIdays Paris 2019 - Innovation @ s... by apidays 985777 views
- A few thoughts on work life-balance by Wim Vanderbauwhede 812341 views

78 views

Published on

Carl Hewitt and Alan Kay laid the foundation and coined the term OOP which has evolved in hands of Bjarne Stroustrup and his followers into something dramatically different. The result was widely commercialized in the early 90-s offering limitless code reuse possibility and bright future for everyone. The bright future has come. Code reuse - not so much.

We'll use open-source software including Linux kernel as a base for practical use cases.

Despite seemingly different areas whatsoever, the underlying idea behind the introduction of Agile Process methodology was pretty similar and bearing the same curse. While chasing the elusive goal of controlling chaos in software development for growing code base, it still to this day lacks scaling possibilities it meant to bring to the table in the first place.

We'll use examples from practical hands-on experience.

Published in:
Education

No Downloads

Total views

78

On SlideShare

0

From Embeds

0

Number of Embeds

0

Shares

0

Downloads

0

Comments

4

Likes

1

No notes for slide

- 1. MUSINGS ON OOP, AGILE & the Unbearable Clarity of Being
- 2. 1936 Turing machine, untyped lambda calculus IN THE BEGINNING THERE WAS A TURING MACHINE
- 3. 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus IN THE BEGINNING THERE WAS A TURING MACHINE
- 4. 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL IN THE BEGINNING THERE WAS A TURING MACHINE
- 5. 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP IN THE BEGINNING THERE WAS A TURING MACHINE
- 6. 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection IN THE BEGINNING THERE WAS A TURING MACHINE
- 7. 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering IN THE BEGINNING THERE WAS A TURING MACHINE
- 8. 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines IN THE BEGINNING THERE WAS A TURING MACHINE
- 9. 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators IN THE BEGINNING THERE WAS A TURING MACHINE
- 10. 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 IN THE BEGINNING THERE WAS A TURING MACHINE
- 11. 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 1970-1972 C language, UNIX philosophy aka Microservices IN THE BEGINNING THERE WAS A TURING MACHINE
- 12. 1985 C++ 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 1970-1972 C language, UNIX philosophy aka Microservices IN THE BEGINNING THERE WAS A TURING MACHINE
- 13. 1985 C++ 1986 Erlang 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 1970-1972 C language, UNIX philosophy aka Microservices IN THE BEGINNING THERE WAS A TURING MACHINE
- 14. 1985 C++ 1986 Erlang 1987 Self (note: there is a Smalltalk implementation in Self) 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 1970-1972 C language, UNIX philosophy aka Microservices IN THE BEGINNING THERE WAS A TURING MACHINE
- 15. 1985 C++ 1986 Erlang 1987 Self (note: there is a Smalltalk implementation in Self) 1990 Haskell 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 1970-1972 C language, UNIX philosophy aka Microservices IN THE BEGINNING THERE WAS A TURING MACHINE
- 16. 1985 C++ 1986 Erlang 1987 Self (note: there is a Smalltalk implementation in Self) 1990 Haskell 1994 ANSI Common Lisp 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 1970-1972 C language, UNIX philosophy aka Microservices IN THE BEGINNING THERE WAS A TURING MACHINE
- 17. 1985 C++ 1986 Erlang 1987 Self (note: there is a Smalltalk implementation in Self) 1990 Haskell 1994 ANSI Common Lisp 1994 C# 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 1970-1972 C language, UNIX philosophy aka Microservices IN THE BEGINNING THERE WAS A TURING MACHINE
- 18. 1985 C++ 1986 Erlang 1987 Self (note: there is a Smalltalk implementation in Self) 1990 Haskell 1994 ANSI Common Lisp 1994 C# 1995 Java, JavaScript 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 1970-1972 C language, UNIX philosophy aka Microservices IN THE BEGINNING THERE WAS A TURING MACHINE
- 19. 1985 C++ 1986 Erlang 1987 Self (note: there is a Smalltalk implementation in Self) 1990 Haskell 1994 ANSI Common Lisp 1994 C# 1995 Java, JavaScript 2000 ES6 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 1970-1972 C language, UNIX philosophy aka Microservices IN THE BEGINNING THERE WAS A TURING MACHINE
- 20. 1985 C++ 1986 Erlang 1987 Self (note: there is a Smalltalk implementation in Self) 1990 Haskell 1994 ANSI Common Lisp 1994 C# 1995 Java, JavaScript 2000 ES6 The term “Object-Oriented Programming” was coined around here 1936 Turing machine, untyped lambda calculus 1940 Simply typed lambda calculus 1958 ALGOL 1958 LISP 1959 Garbage collection 1963 Software engineering 1967 Simula-67: objects, classes, inheritance, virtual, procedures, coroutines 1968 ALGOL-68: arrays, slices, parallelism, operators 1972 Actor model and Smalltalk-72 1970-1972 C language, UNIX philosophy aka Microservices IN THE BEGINNING THERE WAS A TURING MACHINE
- 21. “We either find a common language or a common obliteration, and C++ was not what I had in mind” - Eugen Rosenstock-Huessy and Alan Kay
- 22. “We either find a common language or a common obliteration, and C++ was not what I had in mind” - Eugen Rosenstock-Huessy and Alan Kay OOP: what’s that and what’s it for? “Theory of Objects”: Luca Cardelli, Martin Abadi, 1996
- 23. “We either find a common language or a common obliteration, and C++ was not what I had in mind” - Eugen Rosenstock-Huessy and Alan Kay OOP: what’s that and what’s it for? “Theory of Objects”: Luca Cardelli, Martin Abadi, 1996 Actor Model Class OOP Prototype OOP
- 24. “We either find a common language or a common obliteration, and C++ was not what I had in mind.” - Eugen Rosenstock-Huessy and Alan Kay Common denominator: dynamic dispatch Motivation: code reuse. Old code can call new code Hollywood Principle: from libraries to frameworks OOP: what’s that and what’s it for? “Theory of Objects”: Luca Cardelli, Martin Abadi, 1996 Actor Model Class OOP Prototype OOP
- 25. “We either find a common language or a common obliteration, and C++ was not what I had in mind” - Eugen Rosenstock-Huessy and Alan Kay Common denominator: dynamic dispatch Motivation: code reuse. Old code can call new code Hollywood Principle: from libraries to frameworks OOP: what’s that and what’s it for? “Theory of Objects”: Luca Cardelli, Martin Abadi, 1996 Agility. The ability to maintain chaos Actor Model Class OOP Prototype OOP
- 26. RIGIDITY & AGILITY
- 27. Advanced C++ style and idioms Pattern languages of program design Organizational patterns of agile software development Jim Coplien RIGIDITY & AGILITY
- 28. Advanced C++ style and idioms Pattern languages of program design Organizational patterns of agile software development 1998 “Multi-Paradigm design for C++”: commonality and variability Jim Coplien RIGIDITY & AGILITY
- 29. Rigid structure Agile process Advanced C++ style and idioms Pattern languages of program design Organizational patterns of agile software development 1998 “Multi-Paradigm design for C++”: commonality and variability Jim Coplien RIGIDITY & AGILITY Rigid process Agile structure
- 30. Rigid structure Agile process Advanced C++ style and idioms Pattern languages of program design Organizational patterns of agile software development 1998 “Multi-Paradigm design for C++”: commonality and variability Jim Coplien RIGIDITY & AGILITY Rigid process Agile structure
- 31. Rigid structure Agile process Advanced C++ style and idioms Pattern languages of program design Organizational patterns of agile software development 1998 “Multi-Paradigm design for C++”: commonality and variability Jim Coplien RIGIDITY & AGILITY Rigid process Agile structure
- 32. Rigid structure Agile process Advanced C++ style and idioms Pattern languages of program design Organizational patterns of agile software development 1998 “Multi-Paradigm design for C++”: commonality and variability Jim Coplien RIGIDITY & AGILITY Rigid process Agile structure
- 33. Should the implementation be here? Older Younger
- 34. Should the implementation be here? Or here?Older Younger
- 35. Should the implementation be here? Or here? The whole idea behind OOD: reusable logic, implementation that is changed easily How did that work out? Older Younger
- 36. Linux repo dependency tree OSS projects on GitHub Case studies: OS & OSS
- 37. Linux repo dependency tree OSS projects on GitHub Case studies: OS & OSS
- 38. Linux repo dependency tree OSS projects on GitHub Case studies: OS & OSS
- 39. Linux repo dependency tree OSS projects on GitHub Case studies: OS & OSS
- 40. Linux repo dependency tree OSS projects on GitHub Case studies: OS & OSS
- 41. Linux repo dependency tree OSS projects on GitHub Case studies: OS & OSS
- 42. Linux repo dependency tree OSS projects on GitHub Case studies: OS & OSS
- 43. Linux repo dependency tree OSS projects on GitHub Case studies: OS & OSS
- 44. the MAP & the COMPASS
- 45. the MAP & the COMPASS
- 46. the MAP & the COMPASS
- 47. the MAP & the COMPASS
- 48. the MAP & the COMPASS "Show me your code and conceal your data structures, and I shall continue to be mystified. Show me your data structures, and I won't usually need your code; it'll be obvious" "Show me your interfaces, the contracts for your methods, and I won't usually need your field declarations and class hierarchy; they'll be irrelevant" - Guy L. Steele - Eric Raymond
- 49. the MAP & the COMPASS "Show me your code and conceal your data structures, and I shall continue to be mystified. Show me your data structures, and I won't usually need your code; it'll be obvious" "Show me your interfaces, the contracts for your methods, and I won't usually need your field declarations and class hierarchy; they'll be irrelevant" Smart data structures and dumb code works a lot better than the other way around. The same holds true for people who write them. - Guy L. Steele - Eric Raymond

No public clipboards found for this slide

Login to see the comments