Programming Languages

Programming Languages

Announcements Programming Languages ! Monday evening GBA section has been shut down " If you were assigned to this section, please find a different section " If you cannot attend a different section, please contact one of the TAs ! Monday March 3 (next week) there will be a combination help-with-project/pizza session in Week 6 place of the 12:20 sections CS 212 – Spring 2008 " Keep an eye on the website for further information FORTRAN ALGOL ! Initial version developed in ! Example code ! Sample code 1957 by IBM C SUM OF SQUARES comment Sum of squares ISUM = 0 begin DO 100 I=1,10 integer i, sum; ISUM = ISUM + I*I for i:=1 until 10 do 100 CONTINUE sum := sum + i*i; ! ALGOL end ! FORTRAN introduced many = ALGOrithmic Language of the ideas typical of ! ALGOL 60 included programming languages ! Developed by an recursion international committee " Assignment " Pro: Makes it easy to design clear, succinct " Loops ! First version in 1958 (not algorithms " widely used) Conditionals " ! Second version in 1960 Con: Too hard to " Subroutines implement; too inefficient (widely used) COBOL Simula & Smalltalk ! COBOL = ! COBOL included the idea of ! These languages introduced COmmon Business Oriented records (a single data and popularized Object Language structure with multiple Oriented Programming ! Developed by the US fields, each field holding a (OOP) government (about 1960) value) " Simula was developed in " Design was greatly Norway as a language for influenced by Grace simulation (late 60s) Hopper " Smalltalk was developed at ! Goal: Programs should look Xerox PARC in the 70s like English " Idea was that anyone ! These languages included should be able to read and " Classes understand a COBOL " Objects program " Subclasses & Inheritance 1 Java Programming Languages at Cornell ! Developed by Sun ! Some of the languages used in Cornell’s CS Dept Microsystems; first " Java released in 1995 # 100, 211, 212 # Many of the upper level courses " C, C++, C# ! Java includes # Many of the upper level courses (networks, distributed computing) " Assignment statements, " Matlab loops, conditionals from # 100M, numerical analysis courses FORTRAN (but Java uses " ML syntax from C) # Functional programming # 312, logic-related courses " Recursion from ALGOL " SQL " Fields from COBOL # Query language for databases " OOP from Simula & # 432, database-related courses Smalltalk ! Fortran, C, C++, Matlab are used widely in Engineering ! SAS (originally, Statistical Analysis System) is used in various courses around campus Some Other Programming Languages Some Other Programming Languages ! (from a Yahoo list) ! (from a Yahoo list) ABC, ActiveX, Ada, AMOS, APL, AppleScript, Assembly, awk, ABC, ActiveX, Ada, AMOS, APL, AppleScript, Assembly, awk, BASIC, BETA, C and C++, C#, Cecil, Cilk, CLU, COBOL, ColdC, BASIC, BETA, C and C++, C#, Cecil, Cilk, CLU, COBOL,ColdC, cT, Curl, Delphi, Dylan, Dynace, Eiffel, Forth, Fortran, Guile, cT, Curl, Delphi, Dylan, Dynace, Eiffel, Forth, Fortran, Guile, Haskell, Icon, IDL, Infer, Intercal, J, Java, JavaScript, JCL, Haskell, Icon, IDL, Infer, Intercal, J, Java, JavaScript, JCL, JOVIAL, Limbo, Lisp, Logo, M - MUMPS, Magma, ML, Modula- JOVIAL, Limbo, Lisp, Logo, M - MUMPS, Magma, ML, Modula- 2, Modula-3, Oberon, Obliq, Occam, OpenGL, Pascal, Perl, 2, Modula-3, Oberon,Obliq,Occam, OpenGL,Pascal,Perl, PL/I, Pop, PostScript, Prograph, Prolog, Python, Rexx, Ruby, PL/I, Pop, PostScript,Prograph,Prolog, Python,Rexx, Ruby, SAS, Sather, Scheme, ScriptEase, SDL, Self, SETL, SAS, Sather, Scheme, ScriptEase, SDL, Self, SETL, Smalltalk, SQL, Tcl/Tk, TOM, Verilog, VHDL, VRML, Visual, Smalltalk, SQL, Tcl/Tk, TOM, Verilog, VHDL, VRML, Visual, Visual Basic, Z Visual Basic, Z Portion of a Computer Languages History from http://www.levenez.com/lang/ So Many Languages ! Formula Translation (FORTRAN) in 1954 led to… " Over 2000 computer languages ! How many languages in use today? " Difficult to say " Legacy software (using outdated languages) is everywhere ! Why can’t we just use one language? 2 Evolution of Programming Languages Evolution of Programming Languages, Cont’d ! 1940s, early 1950s ! Late 1950s ! 1960s ! 1970s " Machine Language " High level languages " APL " C # Computation can be " Fortran # Array programming # Designed specifically for “mechanized” # Compiled code can be # Functional programming systems programming ! 1950s efficient code style " Smalltalk " Assembly language " Cobol " PL/1 # First “pure” object- oriented programming # Programs should be # Idea of structures/fields # IBM attempt to combine human-readable " Lisp best of Fortran & Cobol " Prolog " # # List as the central data Simula First logic programming structure # Designed for doing language # Programs as lists discrete event simulation " ML # Here is a language so far ahead of its time, " Algol 60 Introduced object- # Functional programming that it was not only an improvement on its oriented programming # Popularized recursion predecessors, but also on nearly all its concepts successors. # Formal specification of - C. A. R. Hoare commenting on Algol 60 language syntax # Lexical scoping rules Evolution of Programming Languages, Cont’d Classifying Programming Languages ! 1980s ! 1990s " C++ " Programming for the ! How its implemented # Combined C with object internet " Compiled ! Intended domain of use oriented programming " Java " Interpreted " General purpose " Ada # Secure execution of " # Designed for systems remote code Systems programming programming ! Programming paradigm " Scripting # Developed to use in place ! 2000s " Procedural programming " Concurrent/distributed of 100s of languages used " Object-oriented processes by US DoD " Security & reliability programming " Educational " Perl " Programming for multiple " Functional programming " Various other domains # Developed (late 1980s) processors for text manipulation " Logic programming # Popularized in 1990s for " … web-site programming " Focus on use of modules for large scale software development Compiled vs. Interpreted Some Programming Paradigms ! Compiled ! Procedural programming ! Functional programming " Parse code (typically create an abstract syntax tree) " Program can be broken into " Emphasizes application of " Create machine code for entire program procedures (or subroutines functions or functions) ! Interpreted " Avoids state; avoids " Examples: Fortran, Algol, mutable data " Run each statement as the statement is parsed Cobol, C, PL/1, Pascal " Examples: Lisp, Clean, ML, Haskell, Scheme ! Examples ! Object-oriented " Typically compiled: Fortran, Java, C programming ! Logic programming " Interpreted: Matlab, Python, Logo, some versions of Basic " Program is seen as a group " Based on use of declarative ! Advantages/Disadvantages? of cooperating objects statements in the language # Ideas: encapsulation, of mathematical logic inheritance, polymorphism ! The boundary between compiled and interpreted can be fuzzy " Example: Prolog, Oz " Examples: Smalltalk, Java, " Java is compiled to produce JBC (Java Byte Code) C++, C#, Python, recent " The JBC is then interpreted or JIT compiled Fortran, recent Cobol 3 Imperative vs. Declarative Prolog Example ! Imperative sendmore(Digits) :- " Statements tell the computer what to do Digits = [S,E,N,D,M,O,R,Y], % Create variables Digits :: [0..9], % Associate domains to variables " Think “commands” or “recipe” S #\= 0, % Constraint: S must be different from 0 " Examples M #\= 0, # Java, C, Fortran alldifferent(Digits), % All elements must take different values ! Declarative 1000*S + 100*E + 10*N + D % Other problem constraints " Describe what something is like rather than telling how to + 1000*M + 100*O + 10*R + E create it #= 10000*M + 1000*O + 100*N + 10*E + Y, " Examples labeling(Digits). % Start the search # Functional programming (Haskell) # Logic programming (Prolog) (from Wikipedia) Languages for Different Domains Scripting Languages ! General purpose ! Concurrent/distributed ! A script is a sequence of ! Example scripting languages: " Examples: Lisp, Algol, PL/1, processes common commands made into a Unix shell, Python, Perl, Scheme, Java, Python " Control of multiple threads single program Tcl (Tool command language) ! Systems programming " Examples: Ada, Oz, Smalltalk, " Unix uses shell scripts " Emphasis on efficiency and Java " The shell is the interactive ! Some Python code: tight control of data ! Educational interface to Unix structures " " Examples: Basic, Haskell, You can combine commands class Stack (object): " Examples: C, C++, Forth, Pascal, Python, Scheme, from the Unix shell to create def __init__ (self): Modula-2 Smalltalk, programs self.stack = [ ] ! Scripting ! Various other domains def put (self, item): self.stack.append(item) " ! Examples: Unix shell, Perl, " Discrete event simulation: A scripting language is usually def get (self): Python, Ruby, Tcl Simula " Easy to learn return self.stack.pop() " Web scripting: Javascript " Interpreted instead of def isEmpty (self): " Realtime applications: Ada compiled return len(self.stack) == 0 " Text processing: Snobol " Printing: Postscript " … A Programming Language Controversy Just for Fun: An APL Example ! “Go To Statement Considered Harmful” " Edsger Dijkstra, Communications of the ACM (March 1968) ! This is the entire program for a generational update in Conway’s Game of Life ! Led to concept of structured " Live cell & less than 2 live neighbors ⇒ dies of loneliness ! Sparked long-running programming " Live cell & more than 3 neighbors ⇒ dies of overcrowding discussion on whether

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    5 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us