Hechi's Blog

Programming Languages

This page includes the programming languages I like and use.

Main

These are the languages that I love and and use constantly.

LanguageRoleCore idea
RustSystems programmingOwnership + zero-cost abstraction
OCamlCompilers & symbolic systemsAlgebraic data types + modules + inference
LeanFormal verificationDependent types + theorem proving
KotlinApplication developmentPragmatic static typing + JVM ecosystem
JuliaScientific computingMultiple dispatch + runtime specialization
PostgreSQLRelational data systemsDeclarative querying + transactional consistency
TypstTechnical typesettingProgrammable document composition with modern syntax

Collection

These are the languages I found interesting.

LanguageRoleCore idea
HaskellPure functional programmingLaziness, typeclasses, higher-kinded abstractions, typed effects
RacketLanguage-oriented programmingMacros, DSLs, extensible languages
PharoLive object systemsMessage passing, reflection, image-based development
PrologLogic programmingUnification, relations, backtracking
Elixir / GleamConcurrent distributed systemsActors, supervision, BEAM fault tolerance
ZigModern systems designExplicit control, comptime, minimal abstraction machinery
C#Evolving industrial languageLINQ, async/await, generics, gradual modernization
F#Industrial functional programmingML-style FP inside the .NET ecosystem
SwiftValue-oriented systems/application designProtocols, value semantics, ownership, structured concurrency
Scala 3Advanced industrial type systemsContextual abstractions, unions/intersections, match types
GoMinimalist language designStructural interfaces, simple concurrency, deliberate restraint
PureScriptTyped functional web programmingHaskell-style FP, row polymorphism, JavaScript interop
ElmFunctional UI designTEA architecture, pure state transitions, friendly static types
MoonBitWasm-first language designIntegrated toolchain, Wasm, modern compiler engineering
AgdaDependently typed programmingProofs as programs, dependent pattern matching
Idris 2Resource-aware dependent programmingQuantitative type theory + dependent types
F*Program verificationRefinements, dependent types, effects, SMT automation
KokaEffect-system researchAlgebraic effects, handlers, effect polymorphism
FlixEffect-oriented functional/logic programmingInferred effects + regions + handlers + embedded Datalog
GranuleQuantitative type-system researchGraded modal and linear types
ArendHoTT-oriented theorem provingUnivalence, paths, higher-dimensional equality
UnisonAlternative code architectureContent-addressed code + algebraic effects
FutharkParallel functional computingData-parallel arrays and optimizing compilation
RocExperimental functional designStructural typing, platform/application separation
MojoExperimental high-performance designOwnership, specialization, numerical/systems programming

Legacy

These are the languages that are impossible to avoid.

Language / ToolRoleCore idea
C / C++Native systems & interoperabilityManual control, performance, ABI-level integration
PythonScripting & ecosystem glueDynamic programming, rapid iteration, huge ecosystem
JavaScript / TypeScriptWeb platformBrowser ubiquity + dynamic/gradual structural typing
JavaJVM ecosystemManaged OO, portability, enterprise libraries
ShellSystem automationProcesses, pipelines, command composition
LaTeXAcademic typesettingMacro-based document preparation + mathematical notation
HTML / CSSWeb documents & presentationDeclarative structure + styling
AssemblyMachine-level programmingRegisters, instructions, calling conventions, memory layout
CC BY-SA 4.0 Hechi Zhang. Last modified: October 07, 2026. Website built with Franklin.jl and the Julia programming language.