How to be a better programmer?! Try non-Algol Languages

Volodymyr Pavlyshyn
4 min readMay 13, 2021

--

How many programming languages do you know? ASM , Basic,C,C++,C#,Pascal, Java, Javascript , Scala , Rust

Oki and how many languages you know outside of Algol-like style? So on practice, we all over and over again re-learn Algol

How many minds shift paradigm languages you know?

I see a big renaissance in a language now we have a good old friend back LISP -Clojure, Erlang -Elixir, Ocaml — F#, ReasonML, scala, Smalltalk — Pharo, VisualWorks, gemstone

It is a few languages that will help you to be a better programmer

So let’s take a look at some

Smalltalk

1) Smalltalk (Pharo https://pharo.org/) — It was mind shift language. First pure OO language inspired by lisp and Modula. The power idea that parts have all power and characteristics of the entire system. So the center of all is an Object and the object communicates via the messages.

But really mind-blowing idea is an Image-based environment and IDE — you should try it. It is much bigger than a repl. You are part of a live system of connected life objects and even a compiler is a part of this system

and Syntax of language could be printed on a postcard. it is super small.

More could be found here

LISP

One of the oldest languages. Was designed for AI and research. It is just the implementation of math lambda calc as is. But the main mind shift is the symbolic programming and homoiconic — so code is data and data is a code. What’s more interesting your program could analyze and extend itself. So the famous lectures — Structure and Interpretation of Computer Programs is done with Scheme — the Lisp dialect

So the most beautiful program is lisp interpreter written on the racket

(define eval-expr (lambda (expr env) (pmatch expr [`,x (guard (symbol? x)) (env x)] [`(lambda (,x) ,body) (lambda (arg) (eval-expr body (lambda (y) (if (eq? x y) arg (env y)))))] [`(,rator ,rand) ((eval-expr rator env) (eval-expr rand env))])))

Amazing Data Management system — Immutable DB

One more interesting folks in a room is Racket — a lisp that allows to implementation of languages as libraries. so it is a Language Oriented Programming

Forth

Forth ( https://www.forth.com/forth/) is a stack-oriented unique language. so you have an interpreter, compiler, and operating system in the same box.

It is a de facto language for microcontrollers and embedded systems. The mind-shift idea here is pointer-free factoring and self-extending. So you create with every few lines words that immediately extend a language dictionary. So line by line you create a DSL and turn simple system language into a full-scale high business-oriented system

Summary

All these 3 languages have one common pattern in a core. So a syntax itself and constructs of language is super minimal and reduces noise and a cognitive load but instead forces the developer to build a DSL and proper domain model and turn the program to extremely focus on a domain.

One more observation on these 3 languages — one data structure in a core. so sometimes less mean more.

  • smalltalk have Object
  • Lisp — lists ( Clojure have a power of bit vector)
  • Forth — stack

As a result, a simple and domain-oriented language with a full focus on the problem not on the language itself

Published By

Originally published at https://www.linkedin.com.

--

--

Volodymyr Pavlyshyn
Volodymyr Pavlyshyn

Written by Volodymyr Pavlyshyn

I believe in SSI, web5 web3 and democratized open data.I make all magic happens! dream & make ideas real, read poetry, write code, cook, do mate, and love.

No responses yet