dynamic languages
Recently Published Documents


TOTAL DOCUMENTS

104
(FIVE YEARS 20)

H-INDEX

11
(FIVE YEARS 1)

2021 ◽  
Author(s):  
◽  
Donald James Gordon

<p>Unrestricted aliasing is a problem endemic to object oriented programming. It allows notions of encapsulation fundamental to object oriented programming to be violated. This thesis describes ConstrainedJava, an implementation of a language that provides alias control via a much stronger encapsulation guarantees than traditional object-oriented programming languages, integrated with a constraint system. Unlike most existing aliasing control systems, this encapsulation system integrates well with untyped dynamic languages such as ConstrainedJava. This stronger form of encapsulation has been enhanced to make it easier to write practical programs while still providing useful encapsulation guarantees.</p>


2021 ◽  
Author(s):  
◽  
Donald James Gordon

<p>Unrestricted aliasing is a problem endemic to object oriented programming. It allows notions of encapsulation fundamental to object oriented programming to be violated. This thesis describes ConstrainedJava, an implementation of a language that provides alias control via a much stronger encapsulation guarantees than traditional object-oriented programming languages, integrated with a constraint system. Unlike most existing aliasing control systems, this encapsulation system integrates well with untyped dynamic languages such as ConstrainedJava. This stronger form of encapsulation has been enhanced to make it easier to write practical programs while still providing useful encapsulation guarantees.</p>


2021 ◽  
Vol 5 (OOPSLA) ◽  
pp. 1-27
Author(s):  
Milod Kazerounian ◽  
Jeffrey S. Foster ◽  
Bonan Min

Many researchers have explored type inference for dynamic languages. However, traditional type inference computes most general types which, for complex type systems—which are often needed to type dynamic languages—can be verbose, complex, and difficult to understand. In this paper, we introduce SimTyper, a Ruby type inference system that aims to infer usable types—specifically, nominal and generic types—that match the types programmers write. SimTyper builds on InferDL, a recent Ruby type inference system that soundly combines standard type inference with heuristics. The key novelty of SimTyper is type equality prediction , a new, machine learning-based technique that predicts when method arguments or returns are likely to have the same type. SimTyper finds pairs of positions that are predicted to have the same type yet one has a verbose, overly general solution and the other has a usable solution. It then guesses the two types are equal, keeping the guess if it is consistent with the rest of the program, and discarding it if not. In this way, types inferred by SimTyper are guaranteed to be sound. To perform type equality prediction, we introduce the deep similarity (DeepSim) neural network. DeepSim is a novel machine learning classifier that follows the Siamese network architecture and uses CodeBERT, a pre-trained model, to embed source tokens into vectors that capture tokens and their contexts. DeepSim is trained on 100,000 pairs labeled with type similarity information extracted from 371 Ruby programs with manually documented, but not checked, types. We evaluated SimTyper on eight Ruby programs and found that, compared to standard type inference, SimTyper finds 69% more types that match programmer-written type information. Moreover, DeepSim can predict rare types that appear neither in the Ruby standard library nor in the training data. Our results show that type equality prediction can help type inference systems effectively produce more usable types.


2021 ◽  
Vol 5 (OOPSLA) ◽  
pp. 1-23
Author(s):  
Aviral Goel ◽  
Pierre Donat-Bouillud ◽  
Filip Křikava ◽  
Christoph M. Kirsch ◽  
Jan Vitek

Most dynamic languages allow users to turn text into code using various functions, often named <tt>eval</tt>, with language-dependent semantics. The widespread use of these reflective functions hinders static analysis and prevents compilers from performing optimizations. This paper aims to provide a better sense of why programmers use <tt>eval</tt>. Understanding why <tt>eval</tt> is used in practice is key to finding ways to mitigate its negative impact. We have reasons to believe that reflective feature usage is language and application domain-specific; we focus on data science code written in R and compare our results to previous work that analyzed web programming in JavaScript. We analyze 49,296,059 calls to <tt>eval</tt> from 240,327 scripts extracted from 15,401 R packages. We find that <tt>eval</tt> is indeed in widespread use; R’s <tt>eval</tt> is more pervasive and arguably dangerous than what was previously reported for JavaScript.


2021 ◽  
Vol 5 (OOPSLA) ◽  
pp. 1-29
Author(s):  
Stefan Malewski ◽  
Michael Greenberg ◽  
Éric Tanter

Dynamically-typed languages offer easy interaction with ad hoc data such as JSON and S-expressions; statically-typed languages offer powerful tools for working with structured data, notably algebraic datatypes , which are a core feature of typed languages both functional and otherwise. Gradual typing aims to reconcile dynamic and static typing smoothly. The gradual typing literature has extensively focused on the computational aspect of types, such as type safety, effects, noninterference, or parametricity, but the application of graduality to data structuring mechanisms has been much less explored. While row polymorphism and set-theoretic types have been studied in the context of gradual typing, algebraic datatypes in particular have not, which is surprising considering their wide use in practice. We develop, formalize, and prototype a novel approach to gradually structured data with algebraic datatypes. Gradually structured data bridges the gap between traditional algebraic datatypes and flexible data management mechanisms such as tagged data in dynamic languages, or polymorphic variants in OCaml. We illustrate the key ideas of gradual algebraic datatypes through the evolution of a small server application from dynamic to progressively more static checking, formalize a core functional language with gradually structured data, and establish its metatheory, including the gradual guarantees.


2021 ◽  
Author(s):  
Nikos Vasilakis ◽  
Grigoris Ntousakis ◽  
Veit Heller ◽  
Martin C. Rinard

2021 ◽  
Vol 5 (ICFP) ◽  
pp. 1-30
Author(s):  
Manuel Serrano

The fastest JavaScript production implementations use just-in-time (JIT) compilation and the vast majority of academic publications about implementations of dynamic languages published during the last two decades focus on JIT compilation. This does not imply that static compilers (AoT) cannot be competitive; as comparatively little effort has been spent creating fast AoT JavaScript compilers, a scientific comparison is lacking. This paper presents the design and implementation of an AoT JavaScript compiler, focusing on a performance analysis. The paper reports on two experiments, one based on standard JavaScript benchmark suites and one based on new benchmarks chosen for their diversity of styles, authors, sizes, provenance, and coverage of the language. The first experiment shows an advantage to JIT compilers, which is expected after the decades of effort that these compilers have paid to these very tests. The second shows more balanced results, as the AoT compiler generates programs that reach competitive speeds and that consume significantly less memory. The paper presents and evaluates techniques that we have either invented or adapted from other systems, to improve AoT JavaScript compilation.


2021 ◽  
pp. 104791
Author(s):  
Vincenzo Arceri ◽  
Martina Olliaro ◽  
Agostino Cortesi ◽  
Isabella Mastroeni

2021 ◽  
Vol 12 (1) ◽  
pp. 375-389
Author(s):  
Sohaib Alam ◽  
Sadaf Khalid ◽  
Farhan Ahmad ◽  
Muhammed Salim Keezhatta

Aim. The present study aims at foregrounding the importance of language and discourses advanced to suppress the voices of dissent and minorities. The subtle art of stimulating a psychologically suppressed identity or subjective violence is either through making or mocking historical facts, cultures, and human activities manifesting the concept of authoritarian democracy. Further, the aim of the study is to grasp the sense of constraints between universality and particularity that denounces the ‘reassertion of identity,’ among Indian Muslims. Moreover, the study judiciously examines disguised ‘mechanisms’ employed under authoritarian politics, tech-populism and journalism intending to promote businesses, dissemination of misinformation and contributes to creating an apocryphal human history, social alienation, and to discrediting an individual’s spontaneity.Concept. The innate unity in a democratic society can be actualised either by envisaging or by translating the texts, thoughts, language and actions, which are altogether conceiving distinctive meanings to morality, ethnicity and culture having its relevance in the contemporary context. The paper features multiple trends/cases of how a single-party monologue has weakened pluralism along with the domination of othering the ‘Others’ under racial, cultural, and national particularism. The paper qualitatively investigates different incidents of transcreation of discourse in establishing or reclaiming the identity contextualised in Frantz Fanon’s declaration of ‘reclaiming the past.’Results and conclusion. An ingenious discussion on dynamic languages, cultures and action enriches with time and individual incidents are discussed in the study. It re-evaluates the significance of revisiting the history to reclaim, reform, and reconstruct malleable identity and ideologies that take years to build, improvise and restore diversityabove majoritarian dogmatism in India.  Originality. An inquiry into how thoughts, languages, and human action intertwined are to build a complaisant or contemptuous human identity is the idea behind the article. Indeed, the study’s originality depends on sorting and revisiting numerous dimensions of translation and transcreation of languages, linguistic structure, ideology,and political intent in recent times, either subjugating or falsifying facts against the marginalized in India. The attempt is based on analyzing how the shift in knowledge, culture and social identity construction supersede the less powerful. It is practiced through utilizing tech support, popular mass culture and evolves a discourse to manipulate andmobilize human consciousness for commercial and political gains.


2021 ◽  
Vol 14 (8) ◽  
pp. 1414-1426
Author(s):  
Filippo Schiavio ◽  
Daniele Bonetta ◽  
Walter Binder

Language-integrated query (LINQ) frameworks offer a convenient programming abstraction for processing in-memory collections of data, allowing developers to concisely express declarative queries using general-purpose programming languages. Existing LINQ frameworks rely on the well-defined type system of statically-typed languages such as C # or Java to perform query compilation and execution. As a consequence of this design, they do not support dynamic languages such as Python, R, or JavaScript. Such languages are however very popular among data scientists, who would certainly benefit from LINQ frameworks in data analytics applications. In this work we bridge the gap between dynamic languages and LINQ frameworks. We introduce DynQ, a novel query engine designed for dynamic languages. DynQ is language-agnostic, since it is able to execute SQL queries in a polyglot language runtime. Moreover, DynQ can execute queries combining data from multiple sources, namely in-memory object collections as well as on-file data and external database systems. Our evaluation of DynQ shows performance comparable with equivalent hand-optimized code, and in line with common data-processing libraries and embedded databases, making DynQ an appealing query engine for standalone analytics applications and for data-intensive server-side workloads.


Sign in / Sign up

Export Citation Format

Share Document