Em 2023, a 14ª edição do CBSoft voltará a ser realizada presencialmente, de 25 a 29 de setembro em Campo Grande, Mato Grosso do Sul.👉 Mapa

Simpósio Brasileiro de Linguagens de Programação

Roberto Ierusalimschy
Why so many languages?

Wouldn't the world be better if everyone used the same programming language?

This question has been asked many times since the dawn of programming, and people continue to ask it. Despite all the apparent advantages (mainly network effects) of a single programming language everywhere, we continually see new languages rising in popularity and being adopted in relevant projects. Why?

The design of a programming language, as that of any other artifact, entails many tradeoffs involving conflicting requirements. Different languages solve these tradeoffs in different ways, making each more appropriate for some scenarios and less attractive for other settings. In particular, as important as what a language allows us to do is what a language prevents us from doing. (For instance, memory safety is mainly about restrictions.)

In this talk, we will discuss the tradeoffs involved in the design of a programming language and how different languages prioritize different goals when facing these tradeoffs.

Roberto Ierusalimschy is Professor of Computer Science at PUC-Rio (the Pontifical Catholic University of Rio de Janeiro), where he works with programming-language design and implementation. He is the leading architect of the Lua programming language, driving its development since its inception in 1993.

Roberto was a visiting researcher at the University of Waterloo, ICSI, GMD, and UIUC, a Tinker Professor at Stanford, and a Distinguished Visitor at the University of Edinburgh. In 2013 the Brazilian Computer Society (SBC) granted him the Scientific Merit Award.

Marjan Mernik
University of Maribor, Slovenia
From Grammar Inference to Semantic Inference of Domain-Specific Languages

This keynote talk describes a research work on Semantic Inference, which can be regarded as an extension of Grammar Inference. The main task of Grammar Inference is to induce a grammatical structure from a set of positive samples (programs), which can sometimes also be accompanied by a set of negative samples. Successfully applying Grammar Inference can result only in identifying the correct syntax of a language. With the Semantic Inference, a further step is realised, namely, towards inducing language semantics. When syntax and semantics can be inferred, a complete compiler/interpreter can be generated solely from samples. Moreover, from a formal specification, many other tools (editor, compiler, debugger, test engine) can be generated automatically. To solve the problem of Semantic Inference successfully, the Genetic Programming approach was employed, which is a population-based evolutionary search. The first results were encouraging, and we were able to infer S-attributed, L-attributed and Absolutely Non-circular Attribute Grammars for small Domain-Specific Languages.

Marjan Mernik received the MSc and PhD degrees in Computer Science from the University of Maribor in 1994 and 1998, respectively. He is currently a professor at the University of Maribor, Faculty of Electrical Engineering and Computer Science. He was a visiting professor at the University of Alabama at Birmingham, Department of Computer and Information Sciences. His research interests include programming languages, compilers, domain-specific (modeling) languages, grammar-based systems, grammatical inference, and evolutionary computations. He is a member of the IEEE, ACM, and EAPLS. He is the Editor-in-Chief of the Journal of Computer Languages, as well as Associate Editors of the Applied Soft Computing Journal, Information Sciences Journal, and Swarm and Evolutionary Computation Journal. He is being named a Highly Cited Researcher for years 2017 and 2018. More information about his work is available at