Computer Programming History and Environment Information Technology in Our Lives • Digital Convergence – Converting whatever we can in the physical and communications world to binary on/off signals, called bits • • • • T. K. Yin, NUK-CSIE Text Voice Picture Movie • At Home – Email, Internet shopping, virtual museum, banking transactions, news – Small computers in VCRs, automobiles, airconditioning systems, washing machines, T. K. Yin, NUK-CSIE • At Play – Group chatting, games, songs and movies from Internet T. K. Yin, NUK-CSIE • At Work – Mobile worker – Office software, Database, ERP, SCM, CRM T. K. Yin, NUK-CSIE • At School or College – Computer-based courses, distance learning T. K. Yin, NUK-CSIE The Language of a Computer • Uses digital signals – all 0's and 1's (binary) – bits (Binary digits) • Data and commands stored in binary – 8 bits in a byte – ASCII character stored in a byte – Integers stored in 2 or 4 bytes Evolution of Programming Languages • Early computers programmed in machine languages – All binary numbers • Assembly language used mnemonic codes – Codes translated into machine language by a program called the "assembler" 1816-1852 ADA (Lady Ada Augusta Lovelace) • The first programmer • It is multipurpose language developed for and used primarily by the U.S. Department of Defense (DOD). 1957-1959 • FORTRAN (Formula Translation) • LISP (List Processor) • COBOL (Common Business- Oriented Language) Considered the oldest languages that are still used today. High-level languages created for scientific, mathematical, and business computing. FORTRAN • The first popular high-level programming language • A team led by John Backus at IBM • "The IBM Mathematical FORmula TRANslating Lisp • AI conference at Dartmouth, 1956: McCarthy, Minsky, Newell, Simon • Newell, Shaw and Simon demonstrate Logic Theorist, a reasoning program written in IPL (Information Processing Language) • IPL had support for linked lists, and caught McCarthy’s attention • He wanted a language for AI projects, but not IPL: too low-level and machine-specific Chapter Twenty-Four Modern Programming Languages 12 Lisp’s Unusual Syntax • A Lisp program is a list representing an AST: (+ a (* b c)) • The plan was to use some Fortran-like notation • But McCarthy wrote a paper showing a simple Lisp interpreter in Lisp: a function called eval • To avoid syntax issues, he used the list-AST form, both for eval’s input and for eval itself • This eval, hand-translated into assembly language, became the first implementation of Lisp Chapter Twenty-Four Modern Programming Languages 13 COBOL • • • • COBOL is a high-level programming language developed in the 1960s and still used in business applications. It is used extensively in the financial services industry for large scale mainframe based applications. • It uses instructions resembling English statements and imposes an overall framework for a program. • The design goal for COBOL was a language that selfdocumented so that it could be revised and maintained easily. Fortran, Lisp, Cobol • Primary Uses: Supercomputing applications, AI development, business software • Used by: NASA, credit cards, ATMs • Fun Fact: Action movie The terminator used samples of Cobol source code for the text shown in the Terminator’s vision display. 1964 PL/I (Programming Language/I) • Was hailed as the answer to many of the problems of existing programming languages such as COBOL, and FORTRAN 1965 BASIC • Is also used extensively on mainframe computer systems, primarily for one time “ quick and dirty” programs, • Variations on Basic, such as Microsoft’s QuickBasic and VisualBasic 1967 LOGO • Uses a “Turtle” to teach children geometry, mathematics and programming • Procedure-oriented language (are used in business and taught in academic institutions. 1968 APL (A Programming Language) • Is a symbolic interactive language that is popular with engineers, mathematicians and scientists • A special keyboard with “shorthand” symbols helps speed the coding speed 1970 PASCAL (After French Mathematician/ Blasie Pascal • High level • For teaching structured programming and data structuring PASCAL • Primary Uses: teaching programming object Pascal, a derivative, is commonly used for Windows application development • Used by: Apple Lisa (1983), Skype • Creator 1971 FORTH • Used for device control applications, arcade games, and robotics • Procedure-oriented language (are used in business and taught in academic institutions. 1972 PROLOG (Programming in Logic) • Can manipulate relationships between facts (used in the development of expert systems.) • Procedure-oriented language (are used in business and taught in academic institutions. 1972 C (Based on an earlier language called “B”) • General- purpose, Low-level language • Created for Unix systems • Second most popular language (behind Java). Many leading languages Java, Javascript, Perl, PHP, and Python. C • Primary Used: Cross-platform programming, system programming, Unix programming, computer game development • Used by: Unix (rewritten in C in 1973), early WWW servers and clients • Creator 1981 Modula -2 • Enables self-contained modules to be combined in a program • Procedure-oriented language (are used in business and taught in academic institutions. 1983 C++ (Formerly “C with Classes “; ++ is the increment operator in “C”) • Intermediate-level, object-oriented • An extension of C, with enhancements such as classes, virtual functions, and templates C++ • Primary Uses: Commercial application development, embedded software, server/client applications, video games • Used by: Adobe, Google Chrome, Mozilla Firefox, Microsoft Internet Explorer • Creator 1983 OBJECTIVE C (Object-Oriented Extension of “C”) • General-purpose, high-level, expanded on C, adding message-passing functionality based on Smalltalk language Smalltalk Language Alan Kay, Xerox PARC, 1972 Inspired by Simula, Sketchpad, Logo, cellular biology, etc. Smalltalk is more object-oriented than most of its more popular descendants Everything is an object: variables, constants, activation records, classes, etc. OBJECTIVE C • Primary Uses: Apple Programming • Used by: Apple’s OS X and ios operating system • Creator 1987 PERL (“Pearl” was already taken) • General-purpose, high- level • Created for report processing on UNIX systems • Today it’s known for high power versatility • Used by: IMDB, Amazon, Priceline, Ticketmaster PERL • Primary uses: CGI, Database application, system administration, network programming, graphics programming • Creator 1991 PYTHON (For British Comedy Troupe Monty Python) • General- Purpose, high- level. • Created to support a variety of programming styles and be fun to use. • Used by: Google, Yahoo, Spotify PYTHON • Primary Uses: Web application, software development, information security • Creator 1993 RUBY (The Birthstone of one of the Creator’s Collaborators) • General-purpose, high-level • Teaching language influence by Perl, Ada, Lisp, smalltalk, ect. • Designed for productive and enjoyable programming • Creator (Yukihiro Matsumoto) • Primary uses: Web application development, Ruby on Rails • Used by: Twitter, Hulu, Groupon Ruby • Primary uses: Web application development, Ruby on Rails • Used by: Twitter, Hulu, Groupon • Creator 1995 JAVA (For the amount of coffee consumed while developing the language) • General-purpose, high-level • Made for an interactive TV project • Cross-platform functionality • Currently the world’s most popular programming language JAVA • Primary uses: Network programming, Web application development, Software development, graphical user interface development • Used by: Android OS/apps • Creator 1995 PHP (Formerly “ Personal Home Page” now its stands for Hypertext Preprocessor) • Open-source, general-purpose • For building dynamic web pages • Most widely used open-source software by enterprises • Primary uses: Building maintaining dynamic web pages, server-side development PHP • Used by: Facebook, Wikipedia, Digg, WordPress, Joomla • Creator 1995 JAVASCRIPT (Final Choice after “Mocha” and Livescript”) • High-level • Created to extend web page functionality • Used by dynamic web pages for forms submission/ validation, interactivity, animation, user activity tracking, etc. • Used by: Gmail, Adobe Photoshop, Mozilla Firefox JAVASCRIPT • Primary uses: Dynamic web development, PDF documents, web browsers, desktop widgets • Creator