discuss p rogramming l anguage
play

Discuss: P rogramming L anguage What is a PL? CS 251 - PDF document

1/30/15 Discuss: P rogramming L anguage What is a PL? CS 251 What goes into the design of a PL? Principles of Programming Languages


  1. 1/30/15 ¡ Discuss: ¡ P rogramming ¡ L anguage ¡ • What ¡is ¡a ¡PL? ¡ ¡ CS ¡251 ¡ • What ¡goes ¡into ¡the ¡design ¡of ¡a ¡PL? ¡ Principles ¡of ¡Programming ¡Languages ¡ ¡ • Why ¡are ¡new ¡PLs ¡created? ¡ ¡Why ¡are ¡there ¡so ¡ many? ¡ – TIOBE ¡ • Why ¡are ¡certain ¡PLs ¡popular? ¡ – socio ¡PLT ¡ Discuss: ¡ P rogramming ¡ L anguage ¡ What? ¡ ¡Structure ¡and ¡Seman1cs ¡ • What ¡is ¡a ¡PL? ¡ A ¡programming ¡language ¡is ¡defined ¡by: ¡ ¡ • What ¡goes ¡into ¡the ¡design ¡of ¡a ¡PL? ¡ • Structure: ¡what ¡are ¡the ¡primiNve ¡structures ¡of ¡a ¡language? ¡ ¡ – Abstract ¡syntax: ¡the ¡abstract ¡structure ¡of ¡programs, ¡ • Why ¡are ¡new ¡PLs ¡created? ¡ ¡What ¡are ¡they ¡used ¡for? ¡ independent ¡of ¡any ¡concrete ¡representaNon ¡ ¡ ¡ • What ¡does ¡a ¡P ¡in ¡a ¡given ¡L ¡look ¡like ¡as ¡symbols? ¡ • SemanNcs: ¡what ¡do ¡the ¡structures ¡of ¡a ¡language ¡ mean ? ¡ ¡ ¡ • What ¡does ¡a ¡P ¡in ¡a ¡given ¡L ¡mean? ¡ – Type ¡systems: ¡what ¡programs ¡have ¡meaning? ¡ ¡ ¡ – EvaluaNon ¡rules: ¡what ¡is ¡the ¡result ¡or ¡effect ¡of ¡evaluaNng ¡each ¡ • How ¡is ¡a ¡PL ¡implemented? ¡ language ¡structure ¡or ¡a ¡whole ¡program? ¡ ¡ ¡ How? ¡ ¡Representa1on, ¡Analysis, ¡and ¡ Why? ¡Who? ¡When? ¡Where? ¡ Implementa1on ¡ Design ¡and ¡Applica1on ¡ ¡ The ¡real ¡world ¡demands: ¡ • Historical ¡context ¡ ¡ RepresentaNon: ¡how ¡do ¡we ¡represent ¡programs ¡for ¡humans ¡and ¡ MoNvaNng ¡applicaNons ¡ • • machines? ¡ – Lisp: ¡symbolic ¡computaNon, ¡logic, ¡AI, ¡experimental ¡programming ¡ ¡ – Concrete ¡syntax: ¡the ¡symbols ¡used ¡to ¡represent ¡programs ¡physically ¡as ¡input ¡ – ML: ¡theorem-­‑proving, ¡case ¡analysis, ¡type ¡system ¡ and ¡output ¡for ¡humans ¡or ¡machines ¡ ¡ – C: ¡Unix ¡operaNng ¡system ¡ • ImplementaNon: ¡how ¡can ¡we ¡evaluate ¡programs ¡in ¡the ¡language? ¡ ¡ – Simula: ¡simulaNon ¡of ¡physical ¡phenomena, ¡operaNons, ¡objects ¡ – How ¡can ¡we ¡evaluate ¡programs ¡in ¡the ¡language ¡on ¡a ¡physical ¡computer ¡ ¡ system? ¡ – Smalltalk: ¡communicaNng ¡objects, ¡user-­‑programmer, ¡pervasiveness ¡ ¡ – How ¡can ¡we ¡opNmize ¡the ¡performance ¡of ¡program ¡execuNon? ¡ ¡ • Design ¡goals, ¡implementaNon ¡constraints ¡ • Analysis: ¡How ¡can ¡we ¡decide ¡whether ¡a ¡given ¡input ¡consNtutes ¡a ¡valid ¡ – performance, ¡producNvity, ¡reliability, ¡modularity, ¡abstracNon, ¡extensibility, ¡ program? ¡ ¡avoids ¡simple ¡data ¡mismatch ¡errors? ¡ strong ¡guarantees, ¡... ¡ ¡ ¡ Well-­‑suited ¡to ¡what ¡sorts ¡of ¡problems? ¡ • 1 ¡

  2. 1/30/15 ¡ void qsort(int a[], int lo, int hi) quicksort :: Ord a => [a] -> [a] { quicksort [] = [] int h, l, p, t; quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater) if (lo < hi) { l = lo; where h = hi; lesser = filter ( < p) xs p = a[hi]; greater = filter ( >= p) xs do { while ((l < h) && (a[l] <= p)) l = l+1; while ((h > l) && (a[h] >= p)) h = h-1; if (l < h) { t = a[l]; a[l] = a[h]; a[h] = t; } } while (l < h); a[hi] = a[l]; a[l] = p; qsort( a, lo, l-1 ); qsort( a, l+1, hi ); } } Computability ¡ Turing-­‑completeness ¡ • Computable: ¡ ¡ ¡f(x) ¡= ¡x ¡+ ¡1 , ¡for ¡natural ¡numbers ¡ • parNal ¡recursive ¡funcNons ¡ – addiNon ¡algorithm ¡ • Turing ¡machines ¡ • lambda ¡calculus ¡ • ... ¡general-­‑purpose ¡programming ¡languages ¡ • ... ¡all ¡general-­‑purpose ¡programming ¡languages ¡ are ¡"the ¡same". ¡ • Uncomputable ¡funcNons ¡exist! ¡ Expressiveness ¡and ¡Power ¡ HalNng ¡Problem ¡ • About: ¡ • Halt(P,x): ¡Does ¡program ¡P ¡halt ¡ (i.e., ¡finish ¡a_er ¡a ¡finite ¡ – ease ¡ number ¡of ¡steps ¡and ¡return ¡a ¡result) ¡ when ¡run ¡on ¡input, ¡x? ¡ – elegance ¡ – clarity ¡ – modularity ¡ • Why ¡do ¡we ¡care? ¡ – abstracNon ¡ – Canonical ¡undecidable ¡problem. ¡ – ... ¡ • Not ¡about: ¡computability ¡ – BIG ¡implicaNons ¡for ¡what ¡we ¡can ¡and ¡cannot ¡ decide ¡about ¡programs. ¡ • Different ¡problems, ¡different ¡languages ¡ – Facebook ¡or ¡web ¡browser ¡in ¡assembly ¡language? ¡ 2 ¡

  3. 1/30/15 ¡ Hand-­‑wavy ¡intuiNon ¡ Proof: ¡HalNng ¡Problem ¡Undecidable ¡ • Proof ¡by ¡contradicNon, ¡diagonalizaNon. ¡ • Run ¡it ¡for ¡100 ¡steps. ¡ ¡Did ¡it ¡halt? ¡ • Suppose ¡Halt(P,x) ¡solves ¡the ¡halNng ¡problem ¡ • Run ¡it ¡for ¡1000 ¡steps. ¡ ¡Did ¡it ¡halt? ¡ – halts ¡on ¡all ¡inputs ¡and ¡returns ¡true ¡if ¡running ¡P(x) ¡will ¡halt ¡and ¡false ¡if ¡it ¡will ¡ not. ¡ • Define ¡Sly(P) ¡as ¡the ¡following ¡program: ¡ • ... ¡ – Run ¡Halt(P,P). ¡This ¡will ¡always ¡halt ¡and ¡return ¡a ¡result. ¡ – If ¡the ¡result ¡is ¡true, ¡loop ¡forever, ¡otherwise ¡halt. ¡ • Program ¡could ¡always ¡run ¡at ¡least ¡one ¡step ¡ • So... ¡ – Sly(P) ¡will ¡run ¡forever ¡if ¡P(P) ¡would ¡halt ¡and ¡ longer ¡than ¡we ¡check. ¡ – Sly(P) ¡will ¡halt ¡if ¡P(P) ¡would ¡run ¡forever. ¡ – (Not ¡running ¡P(P), ¡just ¡asking ¡what ¡it ¡ would ¡do ¡ if ¡run .) ¡ • Run ¡Sly(Sly). ¡ – It ¡first ¡runs ¡Halt(Sly,Sly), ¡which ¡halts ¡and ¡returns ¡a ¡result. ¡ – If ¡the ¡result ¡is ¡true, ¡it ¡now ¡loops ¡forever, ¡otherwise ¡it ¡halts. ¡ So... ¡ • – If ¡Sly(Sly) ¡halts, ¡Halt(Sly,Sly) ¡told ¡us ¡that ¡Sly(Sly) ¡would ¡run ¡forever. ¡ – If ¡Sly(Sly) ¡runs ¡forever, ¡Halt(Sly,Sly) ¡told ¡us ¡that ¡Sly(Sly) ¡would ¡halt. ¡ • ContradicNon! ¡ InteresNng ¡things ¡are ¡undecidable. ¡ Proving ¡Undecidability ¡ • Will ¡this ¡Java ¡program ¡ever ¡throw ¡a ¡ • To ¡prove ¡a ¡problem ¡ P ¡is ¡undecidable, ¡ reduce ¡a ¡ NullPointerExcepNon? ¡ known ¡undecidable ¡problem ¡ Q ¡to ¡it: ¡ • Will ¡this ¡program ¡ever ¡access ¡a ¡given ¡object ¡again? ¡ – Assume ¡DecideP ¡decides ¡the ¡problem ¡P. ¡ • Will ¡this ¡program ¡ever ¡send ¡sensiNve ¡informaNon ¡over ¡ – Show ¡how ¡to ¡translate ¡an ¡instance ¡of ¡ Q ¡to ¡an ¡ the ¡network? ¡ instance ¡of ¡ P, ¡so ¡DecideP ¡decides ¡ Q . ¡ • Will ¡this ¡program ¡divide ¡by ¡0? ¡ • Will ¡this ¡program ¡ever ¡run ¡out ¡of ¡memory, ¡starNng ¡ – ContradicNon. ¡ with ¡a ¡given ¡amount ¡available? ¡ • Q ¡is ¡typically ¡the ¡halNng ¡problem. ¡ • Will ¡this ¡program ¡ever ¡try ¡to ¡treat ¡an ¡integer ¡as ¡an ¡ array? ¡ Example: ¡HaltAny(Q) ¡is ¡Undecidable ¡ in ¡pracNce: ¡be ¡conservaNve ¡ • HaltAny(Q): ¡does ¡program ¡Q ¡halts ¡for ¡>= ¡1 ¡input? ¡ • "yes", ¡"no", ¡or ¡"I ¡give ¡up. ¡ ¡Not ¡sure." ¡ • Suppose ¡that ¡HaltAny(Q) ¡always ¡halts. ¡ • Type ¡systems ¡ • Solve ¡Halt(P,x) ¡with ¡HaltAny: ¡ • Garbage ¡CollecNon ¡ – Build ¡a ¡new ¡program ¡R ¡that ¡ignores ¡its ¡input ¡and ¡runs ¡ • Program ¡Analysis ¡ P(x). ¡ – Then ¡HaltAny(R) ¡returns ¡true ¡if ¡and ¡only ¡if ¡P ¡halts ¡on ¡x. ¡ • R(...) ¡always ¡does ¡the ¡same ¡thing, ¡so ¡if ¡one ¡halts, ¡all ¡do. ¡ • ContradicNon! ¡ 3 ¡

Recommend


More recommend