Open in app

Sign In

Write

Sign In

Roman Elizarov
Roman Elizarov

9.92K Followers

Home

About

Nov 23, 2020

Programming Language Evolution

The history of programming languages is ripe with evolution. Existing languages constantly evolve and new languages are created to address the emerging needs. Sometimes there are radical, revolutionary breakthroughs, with a complete paradigm shift, but often there are just gradual improvements and refinements. The latter is the topic of this…

Programming

5 min read

Programming Language Evolution
Programming Language Evolution
Programming

5 min read


Nov 16, 2020

Shared flows, broadcast channels

Once upon a time coroutines were introduced to Kotlin and they were lightweight. We could launch a multitude of coroutines and we needed a way to communicate between those coroutines without running into a dreaded “mutable shared state” problem. Thus Channel was added as an inter-coroutine communication primitive. The channels…

Kotlin

6 min read

Shared flows, broadcast channels
Shared flows, broadcast channels
Kotlin

6 min read


Jul 22, 2020

Immutability we can afford

At the dawn of software engineering computers were programmed directly in machine code, then in assembly, and only later in higher-level languages. Computers are imperative. They operate by executing instructions that mutate their state, stored in registers and memory. Naturally, the same was true about programming languages. …

Programming

6 min read

Immutability we can afford
Immutability we can afford
Programming

6 min read


Jul 1, 2020

With the receiver in scope

Repetitio est mater studiorum (Latin, repetition is the mother of all learning). Repetition is great for study, but a bane of software development. Repetitive code is boring and error-prone. Let’s look at a hypothetical example inspired by imperative UI frameworks that are still being used a lot nowadays, even though…

Kotlin

4 min read

With the receiver in scope
With the receiver in scope
Kotlin

4 min read


Jun 10, 2020

Kotlin and Exceptions

What are Kotlin Exceptions and how should you use them? To figure it out let’s look at their origins first. Exceptions came to Kotlin from Java. The story with exceptions in Java is complicated, though. I’ll give a brief overview. The Origin Java has a unique concept of checked exceptions that were…

Programming

8 min read

Kotlin and Exceptions
Kotlin and Exceptions
Programming

8 min read


May 10, 2020

Phantom of the Coroutine

Threads are heavy-weight and have substance. With threads, we can get a reference to some kind of current Thread object, examine its properties, modify its thread-local variables, and otherwise manipulate it. It is no surprise that people with the thread-programming background and education, who are coming to programming with coroutines…

Kotlin

4 min read

Phantom of the Coroutine
Phantom of the Coroutine
Kotlin

4 min read


Apr 25, 2020

Deep recursion with coroutines

Kotlin Coroutines are typically used for asynchronous programming. However, the underlying design of coroutines and their implementation in Kotlin compiler are quite universal, solving problems beyond asynchronous programming. Let’s take a look at one such problem that can be elegantly solved with coroutines— writing deeply recursive functions. Setup Consider a tree…

Kotlin

6 min read

Deep recursion with coroutines
Deep recursion with coroutines
Kotlin

6 min read


Feb 9, 2020

The End of the Semicolon Era

Throughout most of my early professional career, I programmed in languages where you terminate or separate statements with a semicolon; it was like an ideograph distinguishing coders from laypeople. I had a motor reflex to type a semicolon (;) without having to think about it. So when I got involved…

Programming

4 min read

The End of the Semicolon Era
The End of the Semicolon Era
Programming

4 min read


Oct 19, 2019

Intentional qualities

When we work on a piece of software, being it an application or a library, we often focus on its functional requirements. They are usually quite easy to directly observe and test; functional requirements are featured in software marketing materials in the form of “feature matrix” that compares different products…

Software Development

3 min read

Intentional qualities
Intentional qualities
Software Development

3 min read


Sep 28, 2019

Structured Concurrency Anniversary

A little over a year ago I announced big conceptual shift in the design of Kotlin Coroutines called Structured Concurrency. From that moment on, it took our team about a month to make the first stable 1.0.0 release of kotlinx.coroutines library. After a year of further work, kotlinx.coroutines had added…

Programming

5 min read

Structured Concurrency Anniversary
Structured Concurrency Anniversary
Programming

5 min read

Roman Elizarov

Roman Elizarov

9.92K Followers

Project Lead for the Kotlin Programming Language @JetBrains

Following
  • Computer History Museum

    Computer History Museum

  • Mark S. Miller

    Mark S. Miller

  • Jason Fried

    Jason Fried

  • Olga Pavlova

    Olga Pavlova

  • Leland Richardson

    Leland Richardson

See all (103)

Help

Status

Writers

Blog

Careers

Privacy

Terms

About

Text to speech