O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Three Things I Wish I Knew When I Started Designing Languages

48 visualizações

Publicada em

Video and slides synchronized, mp3 and slide download available at URL https://bit.ly/2TOCGtZ.

Peter Alvaro talks about the reasons one should engage in language design and why many of us would (or should) do something so perverse as to design a language that no one will ever use. He shares some of the extreme and sometimes obnoxious opinions that guided his design process. Filmed at qconsf.com.

Peter Alvaro is an Assistant Professor of Computer Science at the University of California Santa Cruz, where he leads the Disorderly Labs research group. His research focuses on using data-centric languages and analysis techniques to build and reason about data-intensive distributed systems, in order to make them scalable to the failures and nondeterminism endemic to large-scale distribution.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Three Things I Wish I Knew When I Started Designing Languages

  1. 1. 3 things I wish I knew when I started designing languages
  2. 2. InfoQ.com: News & Community Site • Over 1,000,000 software developers, architects and CTOs read the site world- wide every month • 250,000 senior developers subscribe to our weekly newsletter • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • 2 dedicated podcast channels: The InfoQ Podcast, with a focus on Architecture and The Engineering Culture Podcast, with a focus on building • 96 deep dives on innovative topics packed as downloadable emags and minibooks • Over 40 new content items per week Watch the video with slide synchronization on InfoQ.com! https://www.infoq.com/presentations/ language-design-process
  3. 3. Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide Presented at QCon San Francisco www.qconsf.com
  4. 4. About “poor me” Systems programming Me Declarative languages
  5. 5. About the real me Flunked trig, flunked chem, never took calculus or physics. Graduated HS with a 2.8 GPA Bachelor of Arts in English Literature 3 years as an editor; 2 as a DBA; 5 as a software engineer before grad school I am not nor was I ever a PL researcher
  6. 6. This talk is about me (designing a language) 1. Misgivings: how I almost never began 2. Lucky guesses: things I got right 3. Discoveries: stuff I learned along the way
  7. 7. Prelude: misapprehensions and misgivings how we FUD ourselves out of language design
  8. 8. 1: The Look An audacious new language should look unique!
  9. 9. 1: The Need
  10. 10. 1: The Impact
  11. 11. Lucky guesses: things I got right
  12. 12. Lucky guess 1: context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context
  13. 13. Every language is a DSL
  14. 14. Thy firmness makes my circle just A domain
  15. 15. More lucky guesses: a damn problematic domain
  16. 16. Hiding and illuminating
  17. 17. What is damn hard about this domain? Program correctness
  18. 18. What is damn hard about this domain? Program correctness Debugging
  19. 19. What is damn hard about this domain? Program correctness Debugging
  20. 20. What is damn hard about this domain? Program correctness Debugging Maintenance and extensibility
  21. 21. What is damn hard about this domain? Program correctness Debugging Maintenance and extensibility Heterogeneity and portability
  22. 22. Rearranging the deckchairs... Program correctness Debugging Maintenance and extensibility
  23. 23. Why so damn hard?
  24. 24. The right language would focus our attention on How data flows through the system; How it is allowed to change over time; Where and when we can control how it changes and when we can’t. Everything else, arguably, is a distraction
  25. 25. State representation Control flow Data Time context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context
  26. 26. Thy firmness makes my circle just A domain An opinion
  27. 27. Many moons passed
  28. 28. Inspiration
  29. 29. Descriptive complexity (Immerman’99)
  30. 30. Descriptive complexity (Immerman’99)
  31. 31. Descriptive complexity (Immerman’99)
  32. 32. Descriptive complexity (Immerman’99)
  33. 33. Queries made a neat lens... create view response as select client, server, code, document from request r, page p where r.server = p.server and r.URI = p.URI;
  34. 34. Maybe languages are really lenses Erlang SQL
  35. 35. fragments ¬ σ π ⋈ LFP Conjunctive queries
  36. 36. fragments ¬ σ π ⋈ LFP SQL
  37. 37. fragments ¬ σ π ⋈ LFP Datalog
  38. 38. Or maybe they are lassos ¬ σ π ⋈ LFP Conjunctive queries SQL Datalog
  39. 39. context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context
  40. 40. Datacentrism knowledge(“details”)
  41. 41. Datacentrism knowledge(host1, “details”) Contexualized by location (space)
  42. 42. Datalog cannot express Mutable state Uncertainty
  43. 43. Datacentrism knowledge(host1, “details”, 27) Contexualized by relative order (time)
  44. 44. Datacentrism register(host1, “current value”, 27)
  45. 45. Datacentrism kvs(host1, key, “current value”, 27)
  46. 46. Or maybe they are lassos ¬ σ π ⋈ LFP Datalog
  47. 47. Or maybe they are lassos ¬ σ π ⋈ LFP +1 “Statelog”
  48. 48. Dedalus can express it all. but... ¬ σ π ⋈ LFP +1 ND choice Dedalus
  49. 49. Dedalus allows us to say things we don’t want to say; requires us to use stuff we’d rather not use 2PC 3PC Paxos
  50. 50. Waiting requires counting Counting requires waiting (Joe Hellerstein)
  51. 51. ¬ Waiting requires counting Nonmontonicity required to express coordination Counting requires waiting Coordination required to tolerate nonmonotonicity
  52. 52. Or maybe they are lassos ¬ σ π ⋈ LFP +1 ND choice CALM Dedalus
  53. 53. Pop descriptive complexity Coordination-free programs “Embarrassingly parallel” Dedalus “Truly monotone” dedalus Semipositive Dedalus Dedalus0 Datalog Halt [....] NP P [...]
  54. 54. Discoveries: stuff I learned along the way
  55. 55. Languages and the design process context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context context
  56. 56. Languages and the design process Subject Object
  57. 57. Languages and the design process Subject Object
  58. 58. Discoveries: stuff I learned along the way The look
  59. 59. Discoveries: stuff I learned along the way The look it’s about the fit
  60. 60. Discoveries: stuff I learned along the way The look it’s about the fit The need
  61. 61. Discoveries: stuff I learned along the way The look it’s about the fit The need it’s about our need
  62. 62. Discoveries: stuff I learned along the way The look it’s about the fit The need it’s about our need The impact well….
  63. 63. Poor lucky me
  64. 64. BTW: Where’s the lie?
  65. 65. Watch the video with slide synchronization on InfoQ.com! https://www.infoq.com/presentations/ language-design-process

×