slides created by Marty Stepp

Slides:



Advertisements
Similar presentations
Copyright © 2005 Elsevier Imperative languages Group languages as –imperative von Neumann(Fortran, Pascal, Basic, C) object-oriented(Smalltalk, Eiffel,
Advertisements

CSE 341, Winter Type Systems Terms to learn about types: –Type –Type system –Statically typed language –Dynamically typed language –Type error –Strongly.
CSE 425: Logic Programming I Logic and Programs Most programs use Boolean expressions over data Logic statements can express program semantics –I.e., axiomatic.
Programming Languages Structure
Summer 02-03Programming Language Concepts1 Programming Language Concepts (CS 360) Lecture 1: Overview, Grammars, and Little Languages Jeremy R. Johnson.
The course builder architecture & project planning presented by: Bahareh Agha Jafari.
CSE341: Programming Languages Lecture 26 Course Victory Lap Dan Grossman Spring 2013.
CSE341: Programming Languages Lecture 11 Type Inference Dan Grossman Winter 2013.
Server Side Scripting Norman White. Where do we do processing? Client side – Javascript (embed code in html) – Java applets (send java program to run.
Languages and tools. BY SA machine code.
Foundations of Programming Languages – Course Overview Xinyu Feng Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242
Groovy WHAT IS IT? HOW DOES IT WORK? IS IT USEFUL?
There are only 10 types of people in the world, those who understand binary and those who don't.
CSE 425: Data Types II Survey of Common Types I Records –E.g., structs in C++ –If elements are named, a record is projected into its fields (e.g., via.
CSE 425: Object-Oriented Programming I Object-Oriented Programming A design method as well as a programming paradigm –For example, CRC cards, noun-verb.
CSE-321 Programming Languages Overview POSTECH March 3, 2009 박성우.
CS5205Introduction1 CS5205: Foundation in Programming Languages Lecture 0 : Overview Lecturer : Chin Wei Ngan Office : COM2.
Copyright © 2006 The McGraw-Hill Companies, Inc. Programming Languages 2nd edition Tucker and Noonan Chapter 1 Overview A good programming language is.
CSE 341 Section 10 Subtyping, Review, and The Future.
서울대한양대 ( 안 산 ) 충남대 1년1년 컴퓨터기초 (C) 컴퓨터프로그래밍 (C, Java) 컴퓨터프로그래밍 (C) 2. 봄 프로그래밍 원리 (Scheme, ML) Structure & Interpretation of Computer Programs 프로그래밍 방법론.
Review for Test 2 Chapters 5 (start at 5.4), 6.1, , 12, 13, 15.1, Python.
Programming Language History and Evolution
Chapter 1. Introduction.
Programming Languages 2nd edition Tucker and Noonan
CSE341: Programming Languages Lecture 26 Course Victory Lap
Programming Languages Dan Grossman 2013
CSC 533: Programming Languages Spring 2016
The language focusses on ease of use
Top 8 Best Programming Languages To Learn
CSC 533: Programming Languages Spring 2015
CSE341: Programming Languages Lecture 11 Type Inference
CSE341: Programming Languages Lecture 22 OOP vs
Programming Languages Dan Grossman 2013
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Programming Languages Dan Grossman 2013
Basic 1964 PC general purpose Imperative Small Easy to use.
CSE3 Computational Thinking
Programming Language Design Concepts
课程名 编译原理 Compiling Techniques
Special types Objects and operators built into the language but used only in modules: Ellipsis (also “…”): used chiefly in slices in modules like numpy.
CSE341: Programming Languages Lecture 22 OOP vs
Types of Programming Languages
Programming Language History and Evolution
Introduction to Computers and Python
Functional Programming
Foundations of Programming Languages – Course Overview
Midterm Review In Text: Chapters 1-3, 5, 15.
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE341: Programming Languages Lecture 22 OOP vs
Foundations of Programming Languages – Course Overview
Final Review In Text: Chapters 1-11,
CSE341: Programming Languages Lecture 11 Type Inference
Programming Languages 2nd edition Tucker and Noonan
CSE 341 Programming Languages Autumn 2001
CSE 341 Programming Languages Autumn 2002
CSE341: Programming Languages Lecture 11 Type Inference
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE341: Programming Languages Lecture 26 Course Victory Lap
Dan Grossman / Eric Mullen Autumn 2017
CSE341: Programming Languages Lecture 22 OOP vs
CISC 7120X Programming Languages and Compilers
CSE341: Programming Languages Lecture 11 Type Inference
CSE 341 Lecture 11 b closures; scoping rules
CSE 341 Lecture 2 lists and tuples; more functions; mutable state
CSE341: Programming Languages Lecture 11 Type Inference
CSE341: Programming Languages Lecture 22 OOP vs
CSE341: Programming Languages Lecture 11 Type Inference
CSE341: Programming Languages Lecture 22 OOP vs
CSE341: Programming Languages Lecture 26 Course Victory Lap
Presentation transcript:

slides created by Marty Stepp CSE 341 Lecture 29 b Course wrap-up slides created by Marty Stepp http://www.cs.washington.edu/341/

One view of languages ML Java Scheme JavaScript functional object-oriented statically typed ML Java dynamically typed Scheme JavaScript functional object-oriented statically typed dynamically typed

A broader view Not all languages are functional or OO! logic languages (e.g., Prolog) scripting languages (Perl, Python, Lua) query languages (SQL) purely functional languages (Haskell; no ref or set!) visual languages, spreadsheet languages, GUI-builders, text-formatters, hardware-synthesis, ... languages with heavy support for parallel programming

Why did we do this? the time needed to "pick up" a new language will drop dramatically (though you have to learn its libraries, too) use mutation for what it's good for; not to create brittle programs with unseen dependencies syntax matters, but it's not everything apply idioms in languages besides where you saw them recognize that language-design is hard; semantics should not be treated lightly; more syntax is not always better

Big ideas code runs in environments; scope/resolution matters recursive data is processed with recursive functions without mutation, copying vs. aliasing is indistinguishable closures have many powerful uses (dis-) advantages of static typing (and what is checked) when evaluation occurs is important (thunks/macros) OO vs. FP: many similarities and a couple big differences parametric polymorphism vs. subtyping can embed a language in another via interpreters/macros

Big picture questions Which language we learned is your favorite? Why? Least favorite? What are the pros and cons of static/dynamic typing? What are some benefits of coding in a functional style? How does a functional language handle extensibility and reusable code, as opposed to how OO languages do it?

What next? learn more about the languages we covered be careful/honest when listing them on your resume...! learn a language similar to / inspired by ones we saw Scala: functional/OO mixture that runs on Java VM F#: Microsoft's ML clone; can interact with C# code C#: Microsoft's Java clone Clojure: Scheme/Lisp dialect that runs on Java VM Scala/Ruby/Lua: dynamic and high-level, like JavaScript take CSE 401 (Compilers) learn much more about how compilers/interpreters work