
Next-Paradigm Programming Languages: What Will They Look Like and What Changes Will They Bring? Yannis Smaragdakis Department of Informatics and Telecommunications University of Athens [email protected] Abstract [W]e’ve passed the point of diminishing returns. No future language will give us the factor of 10 advantage The dream of programming language design is to bring about that assembler gave us over binary. No future language orders-of-magnitude productivity improvements in software will give us 50%, or 20%, or even 10% reduction in development tasks. Designers can endlessly debate on how workload. this dream can be realized and on how close we are to its realization. Instead, I would like to focus on a question with Robert C. Martin [18] an answer that can be, surprisingly, clearer: what will be the common principles behind next-paradigm, high-productivity 1 Introduction programming languages, and how will they change everyday Since the 1950s, high-level programming languages have program development? Based on my decade-plus experience resulted in orders-of-magnitude productivity improvements of heavy-duty development in declarative languages, I spec- compared to machine-level coding. This feat has been a great ulate that certain tenets of high-productivity languages are enabler of the computing revolution, during a time when inevitable. These include, for instance, enormous variations computer memories and conceptual program complexity in performance (including automatic transformations that have steadily grown at exponential rates. The history of com- change the asymptotic complexity of algorithms); a radical puting is testament to language designers’ and implementers’ change in a programmer’s workflow, elevating testing from accomplishments: of the 53 Turing awards to present (from a near-menial task to an act of deep understanding; and a 1966 to 2018) a full 16 have been awarded for contributions change in the need for formal proofs. to programming languages or compilers.1 CCS Concepts • Software and its engineering → Gen- At this time, however, the next steps in programming eral programming languages; • Social and professional language evolution are hard to discern. Large productivity topics → History of programming languages. improvements will require a Kuhnian paradigm shift in lan- guages. A change of paradigm, in the Kuhn sense, is a drastic Keywords programming paradigms, next-paradigm pro- reset of our understanding and nomenclature. It is no sur- gramming languages prise that we are largely ineffective at predicting its onset, its nature, or its principles. ACM Reference Format: Despite this conceptual difficulty, the present paper isan Yannis Smaragdakis. 2019. Next-Paradigm Programming Languages: attempt to peer behind the veil of next-paradigm program- What Will They Look Like and What Changes Will They Bring?. In ming languages. I happen to believe (on even days of the Proceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Soft- month) that a change of paradigm is imminent and all its ware (Onward! ’19), October 23–24, 2019, Athens, Greece. ACM, New technical components are already here. But you do not have York, NY, USA, 11 pages. https://doi.org/10.1145/3359591.3359739 to agree with me on either point—after all, the month also has its odd days. Reasonable people may also differ on the possible cata- Permission to make digital or hard copies of all or part of this work for lysts of such a paradigm shift. Will it be machine learning personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that and statistical techniques [23], trained over vast data sets of copies bear this notice and the full citation on the first page. Copyrights code instances? Will it be program synthesis techniques [9], for components of this work owned by others than the author(s) must employing symbolic reasoning and complex constraint solv- be honored. Abstracting with credit is permitted. To copy otherwise, or ing? Will it be mere higher-level language design combined republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]. 1The count is based on occurrences of “programming language(s)” or “com- Onward! ’19, October 23–24, 2019, Athens, Greece piler(s)” in the brief citation text of the award, also including Richard Ham- © 2019 Copyright held by the owner/author(s). Publication rights licensed ming who is cited for “automatic coding systems” (i.e., the L2 precursor of to ACM. Fortran). Notably, the number does not include John McCarthy or Dana ACM ISBN 978-1-4503-6995-4/19/10...$15.00 Scott, who are well-known for languages contributions yet the terms do https://doi.org/10.1145/3359591.3359739 not appear in the citation. Onward! ’19, October 23–24, 2019, Athens, Greece Yannis Smaragdakis with technology trends, such as vast computing power and under stringent performance requirements. This experience enormous memories? underlies my speculation on the properties of next-paradigm Regardless of one’s views, I hope to convince the reader programming languages. that there is reasonable clarity on some features that next- paradigm programming languages will have, if they ever Declarative code—lots of it. Most of my research (and the dominate. Similarly, there is reasonable clarity on what vast majority of my personal coding effort) in the past decade changes next-paradigm programming languages will induce has been on declarative program analysis [24]. My group in the tasks of everyday software development. and a growing number of external collaborators have im- For a sampling of the principles I will postulate and their plemented large, full-featured static analysis frameworks corollaries, consider the following conjectures: for Java bytecode [4], LLVM bitcode [2], Python [14], and • Next-paradigm programming languages will not display Ethereum VM bytecode [6, 7]. The frameworks have been on the surface the computational complexity of their cal- the ecosystem for a large number of new static analysis culations. Large changes in asymptotic complexity (e.g., algorithms, leading to much new research in the area. from O¹n4º to O¹n2º) will be effected by the language im- These analysis frameworks are written in the Datalog plementation. The language will not have loops or explicit language. Datalog is a bottom-up variant of Prolog, with iteration. The programmer will often opt for worse asymp- similar syntax. “Bottom-up” means that no search is per- totic complexity factors, favoring solution simplicity and formed to find solutions to logical implications—instead, all countering performance problems by limiting the inputs valid solutions are computed, in parallel. This makes the lan- of algorithms (e.g., applying an expensive computation guage much more declarative than Prolog: reordering rules, only locally) or accepting approximate results. or clauses in the body of a rule, does not affect the output. Accordingly, computing all possible answers simultaneously • Next-paradigm programming languages will need a firm means that the language has to be limited to avoid possibly mental grounding, in order to keep program develop- infinite computations. Construction of new objects (asop- ment manageable. This grounding can include: a well- posed to new combinations of values) is, therefore, outside understood cost model; a simple and clear model on how the core language and, in practice, needs to be strictly con- new code can or cannot affect the results of earlier code; trolled by the programmer. These features will come into a natural adoption of parallelism without need for con- play in later observations and conjectures. currency reasoning. The Datalog language had been employed in static pro- • Development with next-paradigm programming lan- gram analysis long before our work [10, 15, 22, 29]. However, guages will be significantly different from current soft- our frameworks are distinguished by being almost entirely ware development. Minute code changes will have tremen- written in Datalog: not just quick prototypes or “convenient” dous impact on the output and its computation cost. Incre- core computations are expressed as declarative rules, but the mental development will be easier. Testing and debugging complete, final, and well-optimized version of the deployed will be as conceptually involved as coding. Formal rea- code, as well as much of the scaffolding of the analysis. As soning will be easier, but less necessary. a result, our analysis frameworks are possibly the largest In addition to postulating such principles, the goal of the Datalog programs ever written, and among the largest pieces paper is to illustrate them. I will use examples from real, de- of declarative code overall. For instance, the Doop codebase ployed code, written (often by me) in a declarative language— [4] comprises several thousands of Datalog rules, or tens of Datalog. My experience in declarative programming is a key thousands of lines of code (or rather, of logical specifications). inspiration for most of the observations of the paper. It is This may seem like a small amount of code, but, for logical also what makes the conjectures of the paper “real”. All of rules in complex mutual recursion, it represents a daunting the elements I describe, even the most surprising, are in- amount of complexity. This complexity captures core static stances I have encountered in programming practice. I begin analysis algorithms, language semantics modeling (including with this personal background before venturing to further virtually the entire complexity of Java), logic for common speculation. frameworks and dynamic behaviors, and more. Emphasis on performance, including parallelism. The I’ve seen things, that’s why I’m seeing things. Datalog code I have contributed to in the past decade aims for —me performance at least equal to a manually-optimized impera- tive implementation.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages11 Page
-
File Size-