Programming languages
There is an awesome article that goes over how one program can be written in different languages from the most abstract level of Math to Haskell to C to Assembly to actual machine code.
Crafting Interpreters is an amazing book. Exercism is a nice tool for language practice.
Notes
Links
- Awesome programming languages
- Tour de Babel - Funny de tour of programming languages.
- Programming Language Theory
- Conal Elliott - Teaching New Tricks to Old Programs (2017)
- Awesome static analysis - Static analysis tools for all programming languages, build tools, config files and more.
- Lists of most popular repositories for most favored programming languages
- Rockstar - Idiomatic Rockstar FizzBuzz implementation is the best thing ever.
- Twelf - Language used to specify, implement, and prove properties of deductive systems such as programming languages and logics.
- GitHut - Place to discover languages on GitHub.
- Type inference (2018)
- Little Languages - (Lobsters)
- Course page Types and Semantics for Programming Languages (2018)
- Smallest possible syntactically valid files of different types
- History of Programming Languages course (GitHub repo)
- The Programming Language I’m Looking For (2018)
- Go, Tooling, and New Languages (2016)
- Programming paradigms for dummies: what every programmer should know (2019)
- What, if anything, is a programming paradigm? (2017)
- Programming Languages Zoo - Collection of implementations of miniature programming languages. (Web)
- Thinking in a Language (2019)
- What are some niche features you'd like to see in more languages? (2019)
- Ask HN: What programming language should I learn next? (2019)
- Next-Paradigm Programming Languages: What Will They Look Like and What Changes Will They Bring? (HN)
- Semantic - Haskell library and command line tool for parsing, analyzing, and comparing source code.
- DSLs for non-programmers are a hoax (2019) (HN)
- Comparing the Same Project in Rust, Haskell, C++, Python, Scala and OCaml (2019) (HN)
- Hello, World! - Hello world in every computer language.
- Exercism Language Tracks
- TabNine - All-language ML autocompleter.
- Say something you dislike about a language you love (2019)
- Say something nice about a programming language you dislike (2019)
- comby - Tool for changing code across many languages.
- On the Expressive Power of Programming Languages by Shriram Krishnamurthi [PWLConf 2019] (Web) (HN)
- The Rise of 'Worse is Better' by Richard Gabriel
- "All the Languages Together" by Amal Ahmed (2018)
- Co - Programming language and optimizing compiler written in TypeScript. (Doc)
- User Interfaces for Programming Languages course (2019)
- User Interfaces for Programming Languages: The Compendium
- Advanced Programming Languages Cornell Course (2018)
- A Programmable Programming Language (2018) (HN)
- Panel: the Future of Languages (2019)
- Programming Language Tourism: Leave Python and see the world (2019)
- A programming language by Kenneth E. Iverson book (1962)
- Factor - Practical stack language. (HN)
- Factor: a dynamic stack-based programming language paper
- Quine - Self-referential program that can, without any external access, output its own source.
- Comby - Structural code search and replace for every language. (Web) (Lobsters) (HN)
- Lobsters: What would a programming language designed from the ground-up for a multi-core world look like? (2020)
- Practical Foundations for Programming Languages
- What language do you prefer for new project starts? (2020)
- Flow-Charts of Programming Language Constructs (2020) (HN)
- Bestiary of Single-File Implementations of Programming Languages
- NEAL - Language-independent code analysis tool that aims to enable more people to write quality enforcement rules.
- Most(ly dead) Influential Programming Languages (2020) (HN)
- Sam Tobin-Hochstadt's research
- Mu - Minimal-dependency hobbyist computing stack (everything above the processor and OS kernel). (Mu's neighborhood) (Lobsters)
- Mu: A minimal hobbyist computing stack (2019)
- Bitsy - Best language to implement when writing your first compiler or interpreter.
- codespan-reporting - Beautiful diagnostic reporting for text-based programming languages.
- What language to learn during quarantine? (2020)
- Language designers, use
ident: Type
, notType ident
(2017) (Lobsters) - Row Polymorphism without the Jargon (2020) (Lobsters)
- Zero-cost Effect Handlers by Staging (Technical Report) (2019)
- A generic imperative language for polynomial time (2020)
- Designing flexible, modular linguistic abstractions (2019)
- An abstract domain for objects in dynamic programming languages (2019)
- A Simple Differentiable Programming Language (2020)
- The Hard Part of Learning a Language (2020) (Lobsters) (HN)
- Hoist - Visual programming language inspired by Excel & Datalog.
- Esoteric.Codes - Languages, platforms, and systems that break from the norms of computing.
- Resources for the working programmer to learn more about the fundamentals and theory of programming languages
- Call-By-Push-Value - New programming language paradigm, based on the slogan “a value is, a computation does".
- Semgrep - Tool for easily detecting and preventing bugs and anti-patterns in your codebase. (Web) (HN)
- Algol 60 implementation (1964)
- Code Search - Tool for indexing and then performing regular expression searches over large bodies of source code. (Lobsters)
- Zoekt - Fast text search engine, intended for use with source code.
- 10 more programming languages worth checking out (2018)
- A Beginner's Guide to Amiga E (Lobsters)
- Create your own programming language with Rust (Code)
- History of Programming Languages, Vol 4 (2020) (Lobsters)
- PLaST research group - Focuses on applied programming languages and software engineering.
- Piranha: An Open Source Tool to Automatically Delete Stale Code (2020) (HN)
- Performance improvements in precise code intel (2020)
- An Introduction to Efficient and Safe Implementations of Dynamic Languages (2020)
- What's your favorite programming language and what feature makes it your favorite? (2020)
- All about Modelica: An equation-based language for modeling physical systems (2020) (HN)
- Writing a VM for a Small Stack-Base Language in Pointless (Lobsters)
- Principles of Programming Languages – Graham Hutton
- Principles of Programming Languages (POPL) 2021 Videos
- Dijkstra: On the foolishness of "natural language programming" (Tweet)
- Semantics with Applications: A Formal Introduction
- The Formal Semantics of Programming Languages: An Introduction (1993)
- Semantics of Programming Languages in Agda
- The Fatal Flaw of Ownership Semantics (2020)
- The Pyret Code; or A Rationale for the Pyret Programming Language (Lobsters)
- Statically Sized Higher-kinded Polymorphism (2020) (Lobsters)
- The language strangeness budget (2015)
- Family spaghetti of programming languages (2019)
- Continuations by example: Exceptions, time-traveling search, threads, and more (2020) (HN)
- People of Programming Languages
- People of Language Design and Implementation
- Hindley-Milner Type Inference (2012) (HN)
- Deep learning to translate between programming languages (2020) (HN)
- Ask HN: What are you using new programming languages for? (2020)
- Build your own programming language (2020)
- A Foundation for Typed Concatenative Languages (2017) - Presents a sound and complete type inference algorithm.
- What Is The Minimal Set Of Optimizations Needed For Zero-Cost Abstraction? (2020)
- Kicking Off the Repl.it Programming Language Jam (2020) (HN)
- Structure and Interpretation of Computer Programs with Hal Abelson (2019)
- Collection of papers on modules
- Analysis Tools - Most Popular Analysis Tools by Programming Language. (Code)
- What's the Deal with Message Passing, Anyway (2020) (Lobsters)
- Things that are not strings (2020) (Lobsters)
- ICFP 2020
- Essentials of Programming Languages (Code) (HN) (Code in Racket) (Solutions in Scheme)
- UW PLSE - University of Washington Programming Languages and Software Engineering. (GitHub)
- Your Language Sucks, It Doesn’t Matter (2020) (Lobsters)
- Energy Efficiency across Programming Languages (2017) (HN)
- Deep learning to translate between programming languages (2020)
- Increasing the Impact of PL Research (2020)
- Programming Languages course by Dan Grossman (Answers)
- Polygott - Base Docker image for the Repl.it evaluation server.
- Chris Lattner: The Future of Computing and Programming Languages (2020) (Web) (HN)
- History of Programming Language Topics (Code)
- Language Design with Leo White (2020) (Lobsters) (HN)
- Make a Language Using Rust (HN)
- Turing Incomplete Languages (2020)
- Semantics-Guided Synthesis (2020)
- We need less powerful languages (2015) (HN)
- Learn languages that are not Java, Python and C++ (2020)
- PLIERS: A Process that Integrates User-Centered Methods into Programming Language Design (2020)
- Liquid information flow control
- teaberry - Learning project to implement a typed functional programming language/dialect of ML, which aims to be accessible and usable like Python is.
- Langkit - Tool whose purpose is to make it easy to create syntactic and semantic analysis engines. Language creation framework.
- remark-prism - Syntax highlighter for markdown code blocks using Prism.
- JIT compiler and runtime for a toy language, using Cranelift
- PhD Thesis: Greybox Automatic Exploit Generation for Heap Overflows (2020)
- Programming languages genealogical tree
- Q&A with Programming Language Beta Users (2020)
- Write You a Programming Language (Code)
- PLT research - Collection of PLT researching.
- History of programming languages concepts
- Programming Languages Study
- ALGT - Abstract Language Generation Tool.
- Stack Based Virtual Machines (2015) (Lobsters) (HN)
- How to design a new programming language from scratch (2020) (Lobsters)
- Automatic Language Bindings (2020) (Lobsters)
- Language resources - Links on how to learn how to create programming languages.
- Reflections on the Lack of Adoption of Domain Specific Languages (HN)
- Lobsters: What "glue" lanugages do you use/like? (2021)
- Build your own programming language in C++ (HN)
- Interactive Tutorials for programming languages
- Pygments - Generic syntax highlighter written in Python. (Code)
- Models of Programming Languages
- Designing an actor-based programming language (2020)
- CodeIntellify - Adds code intelligence to code views on the web.
- go-enry - Faster file programming language detector.
- Scriptometer - Measuring the ease of SOP (Script-Oriented Programming) of programming languages.
- FeOFu - Compiler Seminar - Ideas that would lead to better compilers for existing languages, better future programming languages, better APIs and better performance software solutions in the future.
- Theory and Practice of Programming Languages (Racket implementation)
- Quine Relay - Ruby program that generates Rust program that generates Scala program that generates.
- Language Graph - Shows a graph where the nodes are programming languages and the edges are compilers. (Code)
- GumTree - Complete framework to deal with source code as trees and compute differences between them.
- Linguist - Library is used on GitHub.com to create languages used breakdowns.
- Joern - Open-Source Code Querying Engine. (Code)
- ATS or Why Linear Types are the Future of Systems Programming (2021)
- Enclosure: Language-Based Restriction of Untrusted Libraries
- Programming Languages Group @ Penn
- SICP Book Notes
- Language Explorer - Explore 650+ programming languages, visualized based on paradigm influence relationships between languages.
- Brown University PLT (GitHub)
- DSL might be the answer (2021)
- PL Funding Panel with the Creators of Elm, Elixir, and Julia (2021)
- #PLTalk - YouTube
- Programming Languages for Enthusiasts
- Mathematically Structured Programming Group @ University of Strathclyde
- Women in Programming Languages and Software Engineering Research
- I don't want to learn your query language (2018) (HN)
- Lobsters: What's your experience been writing language tools? (2021)
- Performance comparison: counting words in Python, Go, C++, C, AWK, Forth, and Rust (2021) (HN) (Lobsters)
- What Programming Language Would Yoko Ono Create? (2021)
- 20 Intriguing, Unusual, and Goofy Programming Languages (2019)
- FSL.tools - Programming language to make complex Finite State Machines easy to create and maintain.
- Language evangelists, why should I use [language]? (2021)
- A history of ALGOL 68
- The BNF Dream (2021)
- Ask HN: How to study programming language theory as a non CS student? (2021)
- Wuffs the Language (Lobsters) (HN)
- Introducing Dawn (Part 1) (2021) (Lobsters)
- Dawn languagea
- Why concatenative programming matters (2012)
- PLTalk links
- Crash Course on Notation in Programming Language Theory (2012)
- Reflection for the Masses (Code)
- The end of history for programming (2021)
- Langs In Rust - List of programming languages implemented in Rust, for inspiration.
- Demystifying interpreters (2020)
- PLDI 2021
- treefmt - One CLI to format the code tree.
- Implementing Co, a Small Interpreted Language With Coroutines #1: The Parser (2021)
- Playground for PL ideas
- A Gentle Introduction to Ted Nelson's ZigZag Structure (2002) (HN)
- Recent Advances in Programming Language Pre-Trained Models (PL-PTMs)
- Sereal - Fast, compact, schema-less, binary serialization and deserialization oriented towards dynamic languages.
- Compilation as Multi-Language Semantics
- Domain-Specific Languages Syllabus (2016)
- Schrödinger's Code: Undefined behavior in theory and practice (2021)
- Riju - Fast online playground for every programming language. (Code)
- plyg - Playground to safely try out different programming languages in a single file.
- Principles of Programming Languages Course Notes
- Ask HN: Projects for learning a language? (2021)
- Langium - Language engineering tool with built-in support for the Language Server Protocol.
- Programming Language Memory Models (HN)
- The next 700 programming languages (1966) (Lobsters)
- Creating the Golfcart Programming Language (2021)
- Sham: A DSL for Fast DSLs (2021)
- Beautiful ideas in programming: generators and continuations (2021) (HN)
- Lizard - Code complexity analyser without caring about the C/C++ header files or Java imports, supports most of the popular languages.
- Abstracting Definitional Interpreters: Functional Pearl (Code)
- Lang Jam - Create a programming language in a weekend. (HN)
- flex - Tool for generating scanners: programs which recognize lexical patterns in text.
- Programming languages where you define control flow in terms of state machines
- Implicit ordering in relational languages (2021)
- Imba - Friendly full-stack programming language for the web that compiles to performant JavaScript. (Code) (HN)
- Shisho - Lightweight static analyzer for several programming languages.
- Hell Is Other REPLs (2021) (HN)
- Weird Languages (2021) (HN)
- Glean - System for collecting, deriving and working with facts about source code. (Web) (HN)
- Guesslang - Detects the programming language of a given source code. (Docs)
- Dispatch Techniques (Lobsters)
- A defense of boring languages (2015) (Lobsters)
- How to Rapidly Improve at Any Programming Language (2016) (HN)
- First-class Names for Effect Handlers (2021)
- Is it better to teach beginner coders a low level or a high level language as their first language? (2021)
- Cuddly, Octo-Palm Tree: Cheap interpreter, part 1: overview (2021)
- Code2flow - Generates call graphs for dynamic programming language.
- The seven programming ur-languages (2021) (Lobsters)
- Programming languages resources
- Implicit Overflow Considered Harmful (and how to fix it) (2021) (Lobsters)
- Project Verona - Research programming language for concurrent ownership. (Web) (Lobsters)
- Beyond ProgrammingLanguages (1979) (Lobsters)
- tree-sitter-graph - Construct graphs from parsed source code.
- Correct by Construction Language Implementations (2021) (Tweet)
- How do you write code in statically-typed functional programming languages (2021)
- LangSandbox - Project to illustrate how to build a programming language.
- Toward a Theory of Programming Language and Reasoning Assistant Design: Minimizing Cognitive Load (2021)
- Comparison of enumerations and similar features in different languages
- Static Analysis: An Introduction (2021)
- Static Analysis at GitHub (2021)
- Static Analysis at GitHub (2022)
- Most accessible programming language (2021)
- Ask HN: If you designed a new programming language, what would its features be? (2021)
- glot.io - Open source pastebin with runnable snippets and API. (Code)
- 1001 Representations of Syntax with Binding (2021) (Reddit)
- Chigraph - Visual systems language for beginners compiled using LLVM. (Code)
- Which programming language is fastest? - Website that shows toy-program performance measurements for ~24 language implementations. (Code)
- What's your favorite GC-based language? (2021)
- Selecting a programming language can be a form of premature optimization (2021)
- Shawn Wang - Growing a Meta-Language (2021)
- Kindly Bent to Free Us (2019)
- Microsoft Power Fx - Low-code general purpose programming language based on spreadsheet-like formulas. (Article) (HN)
- Undefined Behavior deserves a better reputation (2021) (Lobsters)
- Runno - Helps you make runnable code examples that can be embedded in web pages. (Code)
- Pattern matching in concatenative programming languages (2009)
- Static Value-Flow Analysis Framework for Source Code
- Dynamic Languages Strike Back (2008)
- Are there any ML style languages with no runtime? (2021)
- Tao - Statically-typed functional programming language.
- Do we really need Undefined Behavior? (2021) (HN)
- Shepherd - Utility for applying code changes across many repositories.
- "Incremental, zero-config Code Nav using stack graphs" by Douglas Creager (2021) (Web)
- How I wrote my own "proper" programming language (2020)
- Awesome Program Analysis
- Code Generation for Higher Inductive Types (2018)
- Ask HN: How would a programming language look if designed by non-programmer (2021)
- Nice esoteric compilers (2021)
- A Brief Introduction to Esoteric Languages (2021) (Video)
- Awesome Alt Languages
- Go Static or Go Home (2015) - In the end, dynamic systems are simply less secure.
- Features of a dream programming language (2021) (HN)
- Ask HN: What is your favorite programming language and why? (2021)
- Programing Language Documentations
- Profile Guided Optimization without Profiles: A Machine Learning Approach (2021)
- Automated Code Optimization with E-Graphs (2021) (HN)
- Tencent Cloud Code Analysis (TCA) - Code comprehensive analysis platform, which includes three components: server, web and client.
- What you can learn by merely writing a programming language changelog (2022)
- SQRL - Safe, Stateful Rules Language for Event Streams.
- Rethinking errors, warnings, and lints (2022)
- C++ Concepts vs Rust Traits vs Haskell Typeclasses vs Swift Protocols - Conor Hoekstra - ACCU 2021 (Slides)
- Following the programming language evolution, and taking it personally (2022) (Lobsters)
- Destroy All Values: Designing Deinitialization in Programming Languages (2022)
- Why Static Languages Suffer From Complexity (2022) (Lobsters)
- In defense of complicated programming languages (2022) (HN)
- Bagel - Programming language designed for JavaScript programmers to write reactive UIs, using a paradigm where stateful procedures and pure functions are mutually exclusive categories. (Article) (Update) (Bagel Bites: Type Refinement)
- The complete guide to (external) Domain Specific Languages
- SAPP - Post Processor for Facebook Static Analysis Tools.
- Concise language to write an interpreter for? (2022)
- Awesome programming languages
- Have you found side-effects a problem by increasing complexity in your code bases? (2022)
- Graphene - Create and share beautiful code snippets. (Code)
- crie - Using a mix of other tools and libraries to create a dead simple meta-linter and formatter.
- CodeshiftCommunity - Community-owned global registry and documentation hub for codemods. (Code)
- Programming Language and compiler Benchmarks (Code)
- Benchmarks of different languages
- Kcov - Code coverage tester for compiled languages, Python and Bash.
- CS 152: Programming Languages Course (2022) (Code)
- Returning Values and Errors (2022) (HN) (Lobsters)
- flamegraph.com - Upload and Share Interactive Flamegraphs.
- So you want to design a programming language (2017) (HN)
- Esolang Park - Online visual debugger for esoteric languages. (Code) (HN)
- Practical Normalization by Evaluation for EDSLs
- Advanced Programming Languages
- complexity - Calculate an approximation of code complexity per file in a language-agnostic way.
- Hare - Systems programming language designed to be simple, stable, and robust. (Code)
- Why am I building a programming language in private? (2022) (HN)
- Eclectica - Unifies management of any language under one cohesive and minimalistic interface.
- ABI-Checker - Automate testing that two languages/compilers agree on ABIs for the purposes of.
- Gistit - Quick and easy code snippet sharing tool. (Web)
- Languages with native support for tables
- List of new budding programming languages and their interesting features (2022)
- Generics syntax in different languages (2022)
- Ask HN: Are you using actors in production? Why/Why not? (2022)
- A Typed Programming Language: The Semantics of Rank Polymorphism (2020) (Paper)
- OneLinerHub - Open source code library. (Code)
- Uniform Structured Syntax, Metaprogramming and Run-time Compilation
- Most interesting languages to learn (from)? (2022)
- Surprising Weak-Ref Implementations: Swift, Obj-C, C++, Rust, and Vale (2022)
- Programming Languages Design: Ultimate Bundle
- It-Depends - Tool to automatically build a dependency graph and Software Bill of Materials (SBOM) for packages and arbitrary source code repositories.
- treequery - Run Tree-sitter queries on source code.
- Awesome Codemods - Curated list of tools that can fix your code for you.
- Spoofax - Open-source language designer's workbench with everything you need for designing your next textual (domain-specific) programming language. (Code)
- Codestat.dev - Stats from 2M open-source repositories. (HN) (Code)
- Copybara - Tool for transforming and moving code between repositories. Used at Google.
- Ott - Tool for writing definitions of programming languages and calculi.
- PL Papers You Might Love Newsletter
- ogma - Scripting language focused on processing tabular data.
- massCode - Free and open source code snippets manager for developers.
- CodeImage - Create elegant screenshots of your source code. (Code)
- Course on Metaprogramming
- Germanium - Generate image from source code.
- 10 papers that all PhD students in programming languages ought to know
- LanguageTool - Style and Grammar Checker for 25+ Languages.
- Compile time evaluation in Nim, Zig, Rust and C++ (2022) (Reddit) (HN)
- Prybar - Universal interpreter front-end. Same interface, same REPL, different languages.
- Copy-and-Patch Compilation: A fast compilation algorithm for high-level languages and bytecode (2020)
- Reple - "Replay-based" REPLs for compiled languages.
- Sphinx - Dynamically typed programming language that is inspired by Lua and Python, and implemented entirely in Rust. (HN)
- What's a good general-purpose programming language? (2022) (Reddit)
- Inform 7 - Programming language for creating interactive fiction, using natural language syntax. (HN) (OSS release post)
- Scopes - Retargetable programming language & infrastructure.
- Scope Sets as a Piñata for Name Resolution (2021)
- Principled Ad-Hoc Polymorphism (2018)
- Langbot - Run code from many programming languages.
- Effekt - Research language with effect handlers and lightweight effect polymorphism. (Web)
- Worst Design Decisions You've Ever Seen in Programming Languages (2022)
- Exercism - Develop fluency in over 55 programming languages with our unique blend of learning, practice and mentoring. (Twitter) (GitHub)
- Starry Night - Syntax highlighting, like GitHub.
- Wrong by Default (2022)
- Code to Image Converter (Code)
- MLscript - Principal Type Inference for Object-Oriented Programming in a Boolean Algebra of Types.
- Can you have too many programming language features? (2022)