github twitter email rss
0001 Jun 1
2 minutes read

Course: Programming Languages by Dan Grossman @ Coursera

https://class.coursera.org/proglang-002/lecture

Teacher

Memory management
Features

assign statement
side effect
mutation
environment static, dynamic
datatype binding
bindings
top-level bindings, definitions
variables
lexical scope
dynamic scope
function closure
function is first class value
first class function
function has type
function return anonymous function
predicate ( -> bool)

programming pattern

map
reduce, fold, inject
filter

Callbacks

typing flawors

static or dynamic typing
explicit or implicit types

polymorphism
type inference
type variables

mutual recursion
forward declaration
recursive function definition
mutually recursive functions
shadowing
REPL

function definition
function body evaluation
expression
value
evaluation, execution
function arguments
function evaluation
arguments

 all evaluated before function call
 by reference
 by value

conditionals
eval

delayed evaluation
thunk - 0 args function used to delay evaluation
lazy evaluation
value caching
lazy languages
promise

streams

unnecesary function wrapping
eiger lang

module
source file

data types

datatype
pair
list
tuple
struct
record
class
interface
variable
identifier
abstract data type ADT
one-of type
many-of type

programming idiom
memoization
dynamic programming

http://en.wikipedia.org/wiki/Type_rule
http://en.wikipedia.org/wiki/Operational_semantics

macro
macro definition
macro system
macro expansion

pre-processing derictive

constructor
property
field
variable
method
function
symbol
constant
string
character

test-variant
extract-data function

pattern-matching

type system

Racket
macros
simbols
module system
contract system
struct definition
struct constructor function
struct tester function
language implementation
parsing
AST abstract syntax tree
type checking
evaluation or translation
interpreter
compiler
metalanguage
implementing variables
implementing environment
implementing closures
implementing macros

Static typing
static / dynamic checking
eagerness

correctness
sound (no false negatives)
complete (no false positive)

static vs dynamic
performance
code reuse
catching bugs early
prototyping

code by spec
testing

prototyping
maintenance
evolution

eval

http://www.apl.jhu.edu/~hall/Lisp-Notes/Macros.html

se radio 200

learnability
productivity
writability
write only language
readability

internal dsl
external dsl

programming language workbench

character sequence editor
projectional editor

jetbrains MPS
spf parser


Back to posts


comments powered by Disqus