selection of new programming languages ​​

selection of new programming languages ​​

On the beeline cloud blog, we’ve already shared a digest of fresh DIY content on containers, DevOps and architecture. Today we will tell you who develops new programming languages ​​and why – we chose those that appeared in the last three years. Some of them are written by enthusiasts for solving puzzles in competitions, others – by developers of large organizations for combat missions.

Image – Temple Cerulean – Unsplash.com

Noulith

The talk was presented by Brian Chen of Anthropic, who also worked as an engineer at Zoom. He was prompted to take this step by his fascination with puzzlehunt puzzles – usually the answer to them is a word or phrase that must be made up of certain letters of the text of the puzzle itself. The conditions for finding a solution can be specific, for example, to find all words of ten letters, where A, B, C occur only once, and the ninth in order is K. The developer used Python for solving such problems at first. He even collected a whole folder of compact scripts, which he referred to from time to time. However, Brian wanted to find a more elegant and convenient solution for himself. As a result, he took the plunge and wrote his own programming language. And he got so excited about this project that he started using Noulith in other competitions like Advent of Code or Cryptopals.

The language is based on Rust and is similar to Python and C, for example, single and double quotes, binary literals can be used in a string. At the same time, the language has no methods, and instead of sets there are dictionaries with a null value, for example, {a} == {a: null}. In general, Hacker News residents appreciated how the priority of operations is implemented – it can be customized. There is an opinion that Noulith can be a good alternative to other languages ​​for rough calculations. However, some believe that it is nothing more than a product of “couch philosophy” – that is, it does not bring anything new to the world of programming. Perhaps it is, but it is worth considering that the author wrote the project for the soul and does not hide it.

If you want to get familiar with Noulith, try starting with the README in the repository on GitHub. There, the developer collected a description of operators, types and functions.

Winglang

The language was introduced by the Wing Cloud team, a startup from Israel that deals in products for cloud development, in January of this year. The goal of Winglang is to optimize the design of other programs in the Wing ecosystem. The language eases the process of dealing with a whole stack of tools. It takes it to a higher level of abstraction and shifts the focus from implementation to business logic.

The main feature of the language is two stages of work with the code, which the developers called preflight and inflight. The first involves configuring the infrastructure for distributed application, while the second involves compiling the code and executing it directly. This approach allows you to separate and unify the logic of building the environment and the application. Winglang also automatically generates access policies and provides an opportunity to write portable services for cloud environments, it provides compatibility with JavaScript, plugins for customization.

In terms of syntax, it is a strongly typed language. Winglang supports basic boolean and comparison operators, but does not work with ternary and unary (with some exceptions). On the forums, it is noted that for the convenience of cloud development, it would be enough to connect the necessary library, and not to build a new language from scratch. Others wonder how the syntax will evolve in the future in the context of the cloud native approach. Plus – Winglang simplifies testing thanks to a local simulator, which some experts lacked.

The developers have written detailed documentation that will help you get to know the language. It describes not only the basic elements, but also the process of setting up compatibility with JavaScript. There is a Wing connection guide in a separate section. The specification, packages, and local simulator are released under the MIT license.

Crumb

This language was developed by a student from the Canadian University of British Columbia in September of this year. He needed to prepare for a programming course. He decided that developing his own NAP would help to delve deeper into the topic and would be a good practice at the same time. The student also provided several scenarios for using Crumb, such as for developing a simple game.

Image by Kevin Ku – Unsplash.com

Crumb is a general-purpose language with dynamic typing and a garbage collector. It eliminates side effects when an operation, function, or expression makes changes to the runtime environment. Crumb also has no keywords – all elements are functions that are called using S-expressions.

The language is written in C and includes a standard library. It is concise – it can be described in six lines according to the EBNF (Extended Backus-Naur) syntax definition system. On the forums, the developers emphasized that functions can be written in the form of blocks – and this is good. Some members of the community are concerned that such an approach may still lead to side effects. The author of the language himself warns that he only recently learned C and he still needs to refine Crumb — it can hardly be used in real projects now.

Detailed documentation and all necessary components for working with the language can be found in the GitHub repository. You should also familiarize yourself with other developer projects, for example, an interpreter of mathematical expressions.

Onyx

The author of the language is Brendan Hansen, MSc from Dakota State University. Work on Onyx started in 2020, and now updates are released about once a month, for example in November they added support for MacOS. This language is suitable for various tasks: development of web servers, games and applications. For example, with the help of Onyx, you can write a simple game mechanic in several stages. The developer notes its convenience in system programming, for which C++ or Rust are usually used, and Onyx is something in between.

It is an imperative language with enhanced C syntax. The code is compiled into WebAssembly binary format, which provides cross-platform compatibility and good performance, as it converts code from a high-level language to machine code. Compilation itself is fast, for example, the Onyx landing web server took 47 milliseconds. The language supports C libraries: Raylib, OpenGL, PostgresQL, OpenSS.

On the forums, it is noted that the language does not yet have detailed enough documentation, due to which many questions arise and it is difficult to make a decision about using Onyx. There is also an opinion that the syntax will be more suitable for experienced developers who share the author’s programming style. You can try out the YA in practice in a special web editor. A package installation guide is available on the Onyx site, as are materials for setting up an environment or deploying an HTTP server.

KCL

This language was developed by the Ant Group. It is needed to simplify configuration settings for the cloud environment. Essentially, KCL is an alternative to YAML, HCL, and CUE. One of the advantages of a language is stability due to static typing and immutability of objects. It also expands scaling capabilities by automatically merging isolated configuration blocks. KCL supports OpenAPI, Kubernetes CRD, Kubernetes Resource Model (KRM) and integration with tools for cloud native development – Helm, Argo CD and Terraform. In addition to the Ant Group itself, the language is used by Huawei and the developer of the platform for business metrics analytics Kyligence. In September of this year, CNCF (Cloud Native Computing Foundation) included KCL in its projects – this should promote its development and attract more developers and users.

In the community, it is noted that YAP will be useful for DevOps engineers, but some question its ability to simplify the configuration of the infrastructure. As an example, a KCL configuration file consists of 18 lines, while a regular YAML file has 21, and the difference seems insignificant. The documentation also includes information on how to use KCL in conjunction with other tools such as Terraform or KubeVella.


We at beeline cloud are interested in the topic of developing secure services and user-friendly UI. We also write about it in our media. For example, here you can read about the Jmix framework, and here about how to build development to improve the quality of IT products for banks, insurance companies, retail and more.

Related posts