Foundations of Programming Languages- Course Overview Acknowledgments: some slides taken or adapted from lecture notes of stanford CS242 https://courseware.stanford.edu/pg/courses/317431/
Foundations of Programming Languages – Course Overview Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242 https://courseware.stanford.edu/pg/courses/317431/
What are programming languages for Communication between programmers and Hw Model the real world Model computation communication One of the most fundamental area of computer science Examples assembly imperative(e. g, C), functional, OO, logical, web (e. g Java Script), domain-specific languages Still a very active field both in academia and industry New languages: F#, Go, Scala
What are programming languages for • Communication between programmers and HW – Model the real world – Model computation & communication • One of the most fundamental area of computer science • Examples – assembly, imperative (e.g., C), functional, OO, logical, web (e.g., JavaScript), domain-specific languages • Still a very active field, both in academia and industry – New languages: F#, Go, Scala, …
POPL 2017 Invited talk on rust A POPL 2017(seres)/ A POPL 2017/ Rust: from POPL to practice POPL 2017 When Fri 20 Jan 2017 09: 05-10: 00 at Auditorium - Invited speaker Chair(sk Giuseppe Castagna Abstract In 2015, a language based fundamentally on substructural typing-Rust-hit its 1.0 release, and less than a year stages of incorporating ideas about ownership. How did this come about? Rust's core focus is safe systems programming. It does not require a runtime system or garbage collector, but guarantees memory safety. It does not stipulate any particular style of concurrent programming, but instead provides the tools needed to guarantee data race freedom even when doing low-level shared-state concurrency It allows you to build up high-level abstractions without paying a tax; its compilation model ensures that the abstractions boil away. Aaron Turon its trait system(a descendant of Haskel's typeclasses). The talk will cover these two pillars of Rust design, with P-swS These benefits derive from two core aspects of Rust: its ownership system(based on substructural typing)and particuiar attention to the key innovations that make the language usable at scale. It will highlight the implications for concurrency, where Rust provides a unique perspective, It will also touch on aspects of Rust's development that tend to get less attention within the POPL community: Rust's govemance and open development process. and design considerations around language and library evolution. Finally, it will mention a few of the myriad open research questions around Rust Session Program Fri 20 Jan 09: 05-10: 00: POPL. Invited speaker at Auditorium ChairIs): Giuseppe Castagna 19:05-1000 R Rust: from POPL to practice aron Turon
POPL 2017 Invited Talk on Rust
What do we care ° Easy to use Language design: good syntax, clear semantics, high-abstraction level Enhance software productivity e. g. domain specific languages(DSL Better performance Language implementations compilers, runtime(GC), parallelization Better software quality (reliability and security) Type safety, static/ dynamic checking, verification heoretical foundations Semantics, verification etc Connections with other related fields: logic, computation theory, etc
What do we care • Easy to use – Language design: good syntax, clear semantics, high-abstraction level – Enhance software productivity • e.g., domain specific languages (DSL) • Better performance – Language implementations: compilers, runtime (GC), parallelization • Better software quality (reliability and security) – Type safety, static/dynamic checking, verification • Theoretical foundations – Semantics, verification, etc. • Connections with other related fields: logic, computation theory, etc
Language goals and trade-offs Architect Programmer Programming Language Compiler, Tester Runtime environment DIagnostic Tools
Language goals and trade-offs