Содержание
- 2. Abstract This is a very brief and very selective history of software as it relates to
- 3. Overview Ideals Aims, heroes, techniques Languages and language designers Early languages to C++ (There is so
- 4. History and ideas One opinion “History is bunk” Another opinion “He who does not know history
- 5. What is a programming language? A tool for instructing machines A notation for algorithms A means
- 6. Greek heroes Every culture and profession must have ideals and heroes Physics: Newton, Einstein, Bohr, Feynman
- 7. Geek heroes Brian Kernighan Programmer and writer extraordinaire Dennis Ritchie Designer and original implementer of C
- 8. Another geek hero Kristen Nygaard Co-inventor (with Ole-Johan Dahl) of Simula67 and of object-oriented programming and
- 9. Yet another geek hero Alex Stepanov Inventor of the STL and generic programming pioneer Stroustrup/Programming
- 10. Two extremes Academic beauty/perfection/purity Commercial expediency The pressures towards both are immense Both extremes must be
- 11. Ideals The fundamental aims of good design Represent ideas directly in code Represent independent ideas independently
- 12. Ideals have practical uses During the start of a project, reviews them to get ideas When
- 13. Ideals are personal Chose yours well Stroustrup/Programming
- 14. Styles/paradigms Procedural programming Data abstraction Object-oriented programming Generic programming Functional programming, logic programming, rule-based programming, constraints-based
- 15. Styles/paradigms template void draw_all(Iter b, Iter e) { for_each(b,e,mem_fun(&Shape::draw)); // draw all shapes in [b:e) }
- 16. Styles/paradigms template void draw_all(Cont& c) // C++11 { for_each(Shape* p : c) p->draw(); // draw all
- 17. Some fundamentals Portability is good Type safety is good High performance is good Anything that eases
- 18. Programming languages Machine code Bits, octal, or at most decimal numbers Assembler Registers, load, store, integer
- 19. Early programming languages Classic C Simula Pascal Algol68 BCPL Fortran Lisp COBOL Algol60 PL/I 1950s: 1960s:
- 20. Modern programming languages Object Pascal C++ Java95 C# Ada98 C++98 Java04 C++11 Python Lisp Smalltalk Fortran77
- 21. Why do we design and evolve languages? There are many diverse applications areas No one language
- 22. First modern computer – first compiler David Wheeler (1927-2004) University of Cambridge Exceptional problem solver: hardware,
- 23. Early languages – 1952 One language for each machine Special features for processor Special features for
- 24. Fortran John Backus (1924-2007) IBM FORTRAN, the first high level computer language to be developed. We
- 25. Fortran – 1956 Allowed programmers to write linear algebra much as they found it in textbooks
- 26. COBOL “Rear Admiral Dr. Grace Murray Hopper (US Navy) was a remarkable woman who grandly rose
- 27. Cobol – 1960 Cobol was (and sometimes still is) for business programmers what Fortran was (and
- 28. Lisp John McCarthy (1927-2011) Stanford University AI pioneer Stroustrup/Programming
- 29. Lisp – 1960 List/symbolic processing Initially (and often still) interpreted Dozens (most likely hundreds) of dialects
- 30. Algol Peter Naur (b. 1928) Danish Technical University and Regnecentralen BNF Edsger Dijkstra (1930-2002) Mathematisch Centrum,
- 31. Algol – 1960 The breakthrough of modern programming language concepts Language description BNF; separation of lexical,
- 32. Simula 67 Kristen Nygaard (1926-2002) and Ole-Johan Dahl (1931-2002) Norwegian Computing Center Oslo University The start
- 33. Simula 1967 Address all applications domains rather then a specific domain As Fortran, COBOL, etc. did
- 34. C Dennis Ritchie (1941-2011) Bell Labs C and helped with Unix Ken Thompson (b. 1943) Bell
- 35. Bell Labs – Murray Hill Stroustrup/Programming
- 36. C – 1978 (Relatively) high-level programming language for systems programming Very widely used, weakly checked, systems
- 37. C++ Bjarne Stroustrup AT&T Bell labs Texas A&M University making abstraction techniques affordable and manageable for
- 38. My ideals – in 1980 and more so in 2013 “To make life easier for the
- 39. C++ – 1985 C++ is a general-purpose programming language with a bias towards systems programming that
- 41. Скачать презентацию