Uncanny Valleys in Declarative Language Design

Authors Mark S. Miller, Daniel von Dincklage, Vuk Ercegovac, Brian Chin

Thumbnail PDF


  • Filesize: 411 kB
  • 12 pages

Document Identifiers

Author Details

Mark S. Miller
Daniel von Dincklage
Vuk Ercegovac
Brian Chin

Cite AsGet BibTex

Mark S. Miller, Daniel von Dincklage, Vuk Ercegovac, and Brian Chin. Uncanny Valleys in Declarative Language Design. In 2nd Summit on Advances in Programming Languages (SNAPL 2017). Leibniz International Proceedings in Informatics (LIPIcs), Volume 71, pp. 9:1-9:12, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2017)


When people write programs in conventional programming languages, they over-specify how to solve the problem they have in mind. Over-specification prevents the language's implementation from making many optimization decisions, leaving programmers with this burden. In more declarative languages, programmers over-specify less, enabling the implementation to make more choices for them. As these decisions improve, programmers shift more attention from implementation to their real problems. This process easily overshoots. When under-specified programs almost always work well enough, programmers rarely need to think about implementation details. As their understanding of implementation choices atrophies, the controls provided so they can override these decisions become obscure. Our declarative language project, Yedalog, is in the midst of this dilemma. The improvements in question make our users more productive, so we cannot simply retreat back towards over-specification. To proceed forward instead, we must meet some of the expectations we prematurely provoked, and our implementation's behavior must help users learn expectations more aligned with our intended semantics. These are general issues. Discussing their concrete manifestation in Yedalog should help other declarative systems that come to face these issues.
  • Declarative logic programming language


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Francois Bancilhon, David Maier, Yehoshua Sagiv, and Jeffrey D. Ullman. Magic sets and other strange ways to implement logic programs. In Proceedings of the 5th ACM SIGACT-SIGMOD Symposium on Principles of Database Systems, pages 1-15. ACM, 1985. Google Scholar
  2. Brian Chin, Daniel von Dincklage, Vuk Ercegovac, Peter Hawkins, Mark S. Miller, Franz Och, Christopher Olston, and Fernando Pereira. Yedalog: Exploring knowledge at scale. In Proc. of the 1st Summit on Advances in Programming Languages (SNAPL 2015), volume 32 of LIPIcs - Leibniz International Proceedings in Informatics, pages 63-78. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, 2015. URL: http://dx.doi.org/10.4230/LIPIcs.SNAPL.2015.63.
  3. Jason Eisner and Nathaniel W. Filardo. Dyna: Extending Datalog for Modern AI (full version), 2011. URL: https://www.cs.jhu.edu/~jason/papers/eisner+filardo.datalog11-long.pdf.
  4. Robert Kowalski. Algorithm = logic + control. Communications of the ACM, 22(7):424-436, 1979. Google Scholar
  5. Masahiro Mori, Karl F. MacDorman, and Norri Kageki. The uncanny valley [from the field]. IEEE Robotics &Automation Magazine, 19(2):98-100, 2012 original 1970 Energy. Google Scholar
  6. Christoph Reichenbach, Devin Coughlin, and Amer Diwan. Program metamorphosis. In European Conference on Object-Oriented Programming, pages 394-418. Springer, 2009. Google Scholar
  7. Jiwon Seo, Jongsoo Park, Jaeho Shin, and Monica S. Lam. Distributed socialite: a datalog-based language for large-scale graph analysis. Proceedings of the VLDB Endowment, 6(14):1906-1917, 2013. Google Scholar
  8. Ehud Y. Shapiro. Concurrent Prolog: Collected Papers. MIT press, 1987. Google Scholar
  9. Allen Wirfs-Brock. Programming language standardization: Patterns for participation. In 5th Asian Conference on Pattern Languages of Programs. Google Scholar