PSSV2020: Panel Discussion on Contemporary Programming Languages

 

PSSV-2020 Panel Discussion on Contemporary Programming Languages: Panelists' Thesis and Bios

Andrey Breslav

Abstract

My assesment of the current state of programming languages is: we know way more theory than we understand how to apply, we can safely slow down on theory. The mainstream has had too many new languages in the past decade: Go, Swift, TypeScript, Kotlin, Rust, and somewhat more niche contenders Dart and Julia (all in the top 25 by PYPL). Most of them are all statically typed, they absorbed most of the theory we know how to apply. Their future versions will absorb what's left. I wouldn't recommend tyring to introduce a new language any time soon if you want a million developers to use it regularly. On the other hand, there are strong trends that have essentially no direct support in mainstream langauges: GPUs, ML and Cloud applications, to name a few. What I would recommend in fact is that you consider dropping any language-related work you are doing now and do something else for five years. Few of you actually will, so there's no real risk for the evolution of existing languages. Take five years to do ML and Cloud with your own hands, professionally, full-time at the industiral scale. It's well-paid too. Then take another five years to think about how what you've learnt can be improved by something on the language level. This way, I believe, you maximize your chance of making a really high-impact contribution in the next ten years. That is if you are not busy fixing SQL. Someone has to fix SQL ASAP.

Short Bio

Andrey Breslav is a software engineer and language designer. He's known for his work on the Kotlin programming langauge design and development of which he's been leading at JetBrains since 2010 till present time. His other activities in the tech community include public speaking and formerly teaching at high-school and university levels.


Aleksei Nedoria

Abstract

Initial assumptions:

  • No single programming language can be suitable for all applications
  • There is no reason to believe that the design of new programming languages will stop in the foreseeable future
  • Almost any non-trivial programming system is written in a mixture of programming languages ("hello, world" is an example of a non-trivial program)
In my opinion, these statements should encourage us, language designers:
  1. To the need to define languages or classes of languages that should be interacted with the new language, including languages that are of lower or higher level.
  2. To the desire to create a generalized execution environment in which components in a new language should naturally interact with components in other languages
In a certain ideal world, such a movement could lead to the creation of a unifying programming technology.

Short Bio

First compiler in 1984 as NSU diploma work, then Modula-2/Oberon-2 compilers for Kronos/Excelsior, cross-platform Extacy Modula-2/Oberon-2 to C compiler, lead architect and developer of XDS multilanguage/multiplatform compiler system (PhD 1994), took part in Modula-2 and Oberon-2 committees for standardization, experimental development system "Vir", lead designer of Accord language (Huawei) from 2019.


Anton Polukhin

Abstract

A programming language is a tool. As with locksmith tools, each language has its own scope of application: the frontend of websites is written in JS, the nails are pulled out with a nailer, the backend of websites is written in PHP, the nails are hammered in with hammer...

Scope of application usually don't change ... until someone figure out how to attach a small nailer to the hammer.

At the moment, programming languages have different characteristics for performance, reliability, ease of use, threshold of entry, development speed, complexity of maintenance… By improving any characteristic the language gains popularity in a related scope of application.

Short Bio

Antony Polukhin is the representative of Russia at the C++ Standardization Committee. Author of several accepted proposals to the C++ standard. Author of the Boost libraries: TypeIndex, DLL, Stacktrace; maintainer of Any, Conversion, LexicalCast, Variant. Author of "Boost C++ Application Development Cookbook" and "Boost C++ Application Development Cookbook, Second Edition".


Alexey Kanatov and Euegene Zouev

Abstract

Introduction to constant objects as an approach to defining programming language background using the language itself with no implicit defaults. The talk will focus on a short overview of defining basics types of the programming languages using the same programming language mechanism. This can be a good foundation for verification of the software developed using such programming language. It also makes clear dependencies on the hardware platform and simply porting of the software to different architectures.

  • What are base types? How to define base types using the same programming language?
  • Constant objects concept, typing of constant objects
  • How to define constant objects for enumerated types
  • How to define constant object using regular expressions for non-enumerated types
  • Integer.1 and Boolean.true – are exact names of constant objects. How to import constant objects for convenient usage.

Short Bio

Alexey Kanatov – a graduate of Cybernetics Faculty of MEPhI (National Research Nuclear University) 1992, post-graduate of the same university 1995, Master of science, worked in multinational companies – Intel and Samsung, took part in design and development of programming systems for Ada, Modula-2, Eiffel, gave lectures and seminars for the school children and students of the Innopilis University. His main interests are in the sphere of programming languages design and compiler implementation, strong typing with inference, ongoing convergence of procedural, object-oriented and functuional programming paradigms within the same language.

Eugene Zouev graduated from the Computer Science Department of Moscow State University and got his doctoral degree (PhD) there in 1999. He worked in a number of research and development institutions, at Moscow University and in some other universities and companies abroad. For many years, he gave lectures and did research in Moscow University and in several reputable European universities, such as ETH Zurich (2000-2006) and EPFL Lausanne (2009-2010). E. Zouev ran a number of successful research and industrial software projects in the area of programming languages and compilers (C++ and Zonnon compilers are among them). E. Zouev provides consultancy services for some companies (Samsung Research and Huawei) and participates in a few research projects (in particular, at London Metropolitan University, England). He is the author of a number of books in the area of software development.


Alexey Neznanov

Abstract

Area: Development of highly productive programming languages with an emphasis on the needs of Artificial Intelligence (AI).

Slogan: The programming language should "strengthen the brain" of the programmer and allow to work in an "intelligent environment with an appropriate exocortex", and not just allow to close more tickets per working day, providing a lot of people with meaningless work, including DevOps, DataOps, MLOps, testers, integrators, etc. – What's to blame: Life in general!

What to do: Create an infrastructure to work at all the necessary levels of abstraction at once with well-interpreted and transformable models and support for forward and reverse engineering.

Questions: How to combine competencies in software design and construction at a new level? What's wrong with graphical design and programming languages? How does software work with implicit (implicit) and practical (tacit) knowledge? How can we go from "small" programming to “big” programming without changing tools (or rather, sharing the same stack with all roles in the project)? How is multi-paradigm modeling related to multi-paradigm programming? Is it possible to combine the Low-Code paradigm and programming "in the big"? How to teach not coding, but the effective development of information systems? How to jump the chasm between Olympiad programming and software architecture? ...

Some answers: System software engineering. The Julia Phenomenon and Exploring How Experimental Languages Become Industrial. The reactive revolution and dead ends in the development of "frameworks". Ontological Modeling for Dummies. Universal language models as applied to programming languages (first steps - OpenAI Model Generates Python Code). Projects like SciML using Julia, or HASH using Rust. ...

Short Bio

Senior Research Fellow and Associate Professor of Faculty of Computer Science, High School of Economics, Moscow. Graduated (BS and MS) Moscow Power Engineering Institute. Academic and professional interests:

  • Structural analysis of systems: algebraic and algorithmic aspects.
  • Applied graph theory with an emphasis on symmetry, complexity, and similarity of graph models of systems.
  • Effective algorithms for solving problems of structural analysis.
  • Data analysis: Big Data problems, graph mining, text mining, Formal Concept Analysis, formats and protocols of data processing.
  • Medical informatics: clinical informatics, mathematical support of randomized controlled trials, medical information systems.
  • Software engineering: software life cycle and ALM-technologies.
  • Human-machine interaction: design of user interfaces, implementation of graphical user interfaces.


Nikolay Kudasov

Abstract

The line between advanced functional programming languages and proof assistants is blurring. Many experts advocate for or otherwise suggest application of higher mathematics, including category theory, homotopy type theory and abstract algebra, as well as other formal methods for software design. However, many of the formalisms are not practically available right now to the programmers. I expect that advances in type theory for the purposes of doing mathematics will bring novel techniques that would enable richer programming experience without significant technical overhead. I especially look forward to development of convenient tooling around dependent types, univalence and programming with categories (structure preserving functions "for free").

Short Bio

I am CTO & co-founder of GetShop.TV, an interactive TV platform, based in Russia, running highload-bearing 100% Haskell backend. I am also teaching a practical course «Programming in Haskell» at Innopolis University, as well as doing research in type theory and category theory.