Skills 10 - Advanced Programming On this page
10 - Advanced Programming
Languages for Systems & Application Development
Rust Language
Rust - A programming language that empowers everyone to build reliable and efficient software
Ownership and borrowing - A set of rules that govern how a Rust program manages memory
Interior mutability - A design pattern in Rust that allows you to mutate data even when there are immutable references to that data
Closure - An anonymous function you can save in a variable or pass as an argument to other functions
Trait-based generics - A way to define behavior that a type must provide, allowing for generic code that can operate on any type that implements the specified behavior
Lifetime - A construct the compiler uses to ensure all borrows are valid
Module Pin - A module that provides types which pin data to its location in memory
Tools
C2Rust - A tool that is able to translate most C modules into semantically equivalent Rust code
Tutorials
Rust by Example - A collection of runnable examples that illustrate various Rust concepts and standard libraries
C# and F# Languages
C# - A modern, object-oriented, and type-safe programming language
Language-Integrated Query (LINQ) - The name for a set of technologies based on the direct integration of query capabilities into the C# language
Delegate - A type that represents references to methods with a particular parameter list and return type
Lambda expression - A way to create an anonymous function
F# - A universal programming language for writing succinct, robust and performant code
Immutable data structure
Discriminated union - A type that can store a value of one of several different, but fixed, types
Active pattern - A feature that lets you define named partitions that subdivide input data, so that you can use these names in a pattern matching expression
Computation expression - A feature that provides a convenient syntax for writing computations that can be sequenced and combined using control flow constructs and bindings
Java Family Languages
Java - The #1 programming language and development platform
Scala - A modern multi-paradigm programming language designed to express common programming patterns in a concise, elegant, and type-safe way
Hybrid OO/functional - A characteristic of a language that fuses object-oriented and functional programming in a statically typed setting
C & Other Languages
C - A general-purpose, procedural computer programming language supporting structured programming, lexical variable scope, and recursion, with a static type system
Manual memory management
Macros - A fragment of code which has been given a name
Zig - A general-purpose programming language and toolchain for maintaining robust, optimal and reusable software
Manual memory management
Comptime - The mechanism that allows you to execute code at compile-time
Haskell - An advanced, purely functional programming language
Purely functional
Lazy evaluation - An evaluation strategy which delays the evaluation of an expression until its value is needed
Elixir - A dynamic, functional language for building scalable and maintainable applications
Text & Time Format Standards
Text Format & Character Code
ASCII - A character encoding standard for electronic communication
Unicode - The universal character encoding standard
support
UTF-8 - A variable-width character encoding used for electronic communication
Unicode Emoji - A standardized set of characters that are used like emoticons
CSV - A delimited text file that uses a comma to separate values
TSV - A delimited text file format that uses a tab character to separate values in a table
Libraries
ICU - A mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization
Python emoji - An emoji library for Python
Go emoji - A minimalistic emoji package for Go
UTC - The primary time standard globally used to regulate clocks and time
ISO 8601 - An international standard covering the worldwide exchange and communication of date- and time-related data
Unix time - A system for describing a point in time
Libraries
Ruby Time - An abstraction of dates and times
Python delorean - A library for clearing up the inconvenient truths that arise dealing with datetimes in Python
Python arrow - A Python library that offers a sensible and human-friendly approach to creating, manipulating, formatting and converting dates, times and timestamps
Luxon - A powerful, modern, and friendly wrapper for JavaScript dates and times
Go time - A package that provides functionality for measuring and displaying time
Go when - A natural language date/time parser with no dependencies
iCalendar - A media type which allows users to store and exchange calendaring and scheduling information
Regular Expression
Regex - A sequence of characters that specifies a search pattern in text
PCRE - A library implementing regular expression pattern matching using the same syntax and semantics as Perl 5
Onigmo - A regular expressions library forked from Oniguruma
Python re - The module provides regular expression matching operations similar to those found in Perl
Go regexp - The package that implements regular expression search
RE2 - A fast, safe, thread-friendly alternative to backtracking regular expression engines
PRegEx - A Python library that allows for the programmatic creation of regular expressions
Regex Tools
Rubular - A Ruby-based regular expression editor
Wubular - A Javascript-based regular expression editor, inspired by Rubular
RegEx101 - An online regular expression editor and debugger
Text Manipulation
General Tools
GNU sed - A stream editor used to perform basic text transformations on an input stream
sd - An intuitive find and replace command-line tool
GNU diffutils - A package of several programs for finding the differences between files
colordiff - A tool that produces the same output as diff but with coloured syntax highlighting to improve readability
Tabular Data
csvkit - A suite of command-line tools for converting to and working with CSV
xsv - A fast CSV command line toolkit written in Rust
qsv - A command line program for indexing, slicing, analyzing, splitting, enriching, transforming & joining CSV files
Text::CSV - A comma-separated values manipulator (using XS or PurePerl)
Python csv - A module that implements classes to read and write tabular data in CSV format
Ruby csv - A complete interface to CSV files and data
Go csv - A package that reads and writes comma-separated values (CSV) files
Papa Parse - The powerful, in-browser CSV parser for JavaScript
GNU awk - A program that you can use to select particular records in a file and perform operations upon them
Python tabulate - A library and a command-line utility that displays data in a visually appealing format
Text::MarkdownTable - A module that can be used to write data in tabular form, formatted in MultiMarkdown syntax
Terminal Table - A simple, feature-rich ascii table generation library for ruby
Template Engines
Template Languages and Engines
gomplate - A fast template renderer supporting many datasources and hundreds of functions
Go template - A package that implements data-driven templates for generating textual output
sprig - A library that provides template functions for Go's template language
mustache - A logic-less template syntax
Jinja - A full-featured template engine for Python
Perl Text::Template - A library for generating form letters, building HTML pages, or whatever you can imagine
Perl HTML::Template - A system for creating HTML templates
Template Toolkit - A fast, flexible and highly extensible template processing system
ERB - An easy to use but powerful templating system for Ruby
Haml - A markup language that's used to cleanly and simply describe the HTML of any web document without the use of inline code
Liquid - A safe, customer-facing template language for flexible web apps
envsubst in gettext - A program that substitutes the values of environment variables
Markup & Document Processing
unified - A friendly interface backed by an ecosystem of plugins built for creating and manipulating content
remark - A markdown processor powered by plugins
markdown-it - A Markdown parser with 100% CommonMark support, extensions, and syntax plugins
Data Exchange Languages
JSON - A lightweight data-interchange format
jq - A lightweight and flexible command-line JSON processor
gojq - A Pure Go implementation of jq
gron - A tool that transforms JSON into discrete assignments to make it easier to grep for what you want and see the absolute 'path' to it
JMESPath - A query language for JSON
JSON::Tiny - A minimalistic JSON module with no dependencies
Python json - A module that implements a JSON encoder and decoder
XML - A simple, very flexible text format derived from SGML (ISO 8879)
XPath - An expression language that allows the processing of values conforming to the XQuery and XPath Data Model
DOM - A platform-neutral model for events, aborting activities, and node trees
Python xml.etree.ElementTree - A module that implements a simple and efficient API for parsing and creating XML data
logfmt - A log format that is simple, fast, and easy for humans and machines to parse
JSON Lines - A convenient format for storing structured data that may be processed one record at a time
Related Tools
fx - A terminal JSON viewer
jnv - An interactive JSON viewer and jq filter editor designed for navigating JSON
Configuration Languages
JSON Superset
Jsonnet - A data templating language for app and tool developers
Hjson - A user interface for JSON
YAML - A human-friendly data serialization language for all programming languages
yq (python) - A command-line YAML, XML, TOML processor and jq wrapper for YAML, XML, TOML documents
yq (go) - A portable command-line YAML, JSON, XML, CSV, TOML and properties processor
YAML::Tiny - A Perl class for reading and writing YAML-style files, written with as little code as possible
PyYAML - A YAML parser and emitter for Python
StrictYAML - A type-safe YAML parser that parses and validates a restricted subset of the YAML specification
JSON with comments - A JS library to parse and stringify JSONC (JSON with comments)
CUE - An open-source data validation language and inference engine with its roots in logic programming
Other Configuration Languages
TOML - A minimal configuration file format that's easy to read
TOML::Tiny - A minimal, pure perl TOML parser and serializer
Python tomllib - A module that provides an interface for parsing TOML
HCL - A toolkit for creating structured configuration languages that are both human- and machine-friendly
Related Tools
yj - A command-line interface tool to convert between YAML, TOML, JSON, and HCL
General Expression Languages
CEL - A general-purpose expression language designed to be fast, portable, and safe to execute
Debugging
Debuggers
Python
VSCode Python extension - An extension with rich support for the Python language
debugpy - An implementation of the Debug Adapter Protocol for Python 3
Node.js
Go
VSCode Go extension - An extension that provides rich language support for the Go programming language
Delve - A debugger for the Go programming language
Ruby
Others
Debugger protocols
DAP - The abstract protocol used between a development tool (e.g. IDE or editor) and a debugger
V8 V8 Inspector Protocol - The protocol that allows for tools to instrument V8 to debug and profile JavaScript applications
Logging
Logging Libraries
Python
Python logging - The module that defines functions and classes which implement a flexible event logging system for applications and libraries
loguru - A library which aims to bring enjoyable logging in Python
Javascript/Typescript
bunyan - A simple and fast JSON logging library for node.js services
winston - A logger for just about everything
debug - A tiny JavaScript debugging utility modelled after Node.js core's debugging technique
Go
Go log - The package that implements a simple logging package
zap - Blazing fast, structured, leveled logging in Go
Logrus - A structured logger for Go (golang), completely API compatible with the standard library logger
Zero Allocation JSON Logger - The package that provides a fast and simple logger dedicated to JSON output
Others
logger - A tool to enter messages into the system log
log4j - A versatile, industrial-grade Java logging framework
log4sh - An advanced logging framework for shell scripts
log4net - A port of the excellent Apache log4j framework to the Microsoft .NET runtime
Test Concepts and Best Practices
Test Pyramid - A way of thinking about how different kinds of tests should be used to create a balanced portfolio
Test case - A specification of the inputs, execution conditions, testing procedure, and expected results that define a single test
Test double - An object that can stand in for a real object in a test
Unit testing best practices with .NET - A set of best practices that help you write tests that are robust and easy to maintain
JS Testing Best Practices - A summary of the top testing practices for JavaScript
Test Protocols
Test Anything Protocol - A simple text-based interface between testing modules and a test harness
tappy - A set of tools for working with the Test Anything Protocol (TAP)
Node-Tap - A Test-Anything-Protocol library for JavaScript
Test Frameworks
Bash
Bats-core - A Bash Automated Testing System
shUnit2 - A unit test framework for Bourne based shell scripts
shellspec - A full-featured BDD unit testing framework for dash, bash, ksh, zsh and all POSIX shells
Ruby
Minitest - A complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking
RSpec - A testing tool for the Ruby programming language
aruba - A tool to test command-line applications with Cucumber-Ruby, RSpec or Minitest
Python
Python unittest - A unit testing framework, sometimes referred to as 'PyUnit', which is a Python language version of JUnit
pytest - A framework that makes it easy to write small, readable tests, and can scale to support complex functional testing
Javascript/Typescript
Vitest - A blazing fast unit-test framework powered by Vite
Jest - A delightful JavaScript Testing Framework with a focus on simplicity
Mocha - A feature-rich JavaScript test framework running on Node.js and in the browser
Runtime-integrated
bun test - A fast, Jest-compatible test runner built into Bun
deno test - A built-in test runner that you can use for testing JavaScript and TypeScript code
Go
Go testing - A package that provides support for automated testing of Go packages
Ginkgo - A BDD-style testing framework for Go
Others
JUnit - The 5th major version of the programmer-friendly testing framework for Java and the JVM
xUnit.net - A free, open source, community-focused unit testing tool for the .NET Framework
Assertion Libraries
Chai - A BDD / TDD assertion library for node and the browser
Gomega - A matcher/assertion library for Go
Go cover - A tool that provides code coverage statistics for Go programs
Istanbul - Yet another JS code coverage tool
cobertura - A free Java tool that calculates the percentage of code accessed by tests
LCOV - An extension of GCOV, a GNU tool which provides information about what parts of a program are actually executed
kcov - A code coverage tester for compiled programs
Mocking Libraries
Jest / Vitest built-in
unittest.mock - A library for testing in Python that allows you to replace parts of your system under test with mock objects
sinon.js - A standalone and test framework agnostic JavaScript test spies, stubs and mocks
mockery - A project that creates mock implementations of Golang interfaces
Test Data Generators
Multi-Environment Test Runners
nox - A command-line tool that automates testing in multiple Python environments, similar to tox
tox - A command-line driven automated testing tool for Python
Build Automation
Build Automation Tools
GNU Make - A tool which controls the generation of executables and other non-source files of a program
Remake - An enahanced version of GNU Make that adds improved error reporting, better tracing, profiling and a debugger
makefile-graph - A Go module and CLI application, which parses GNU Make's internal database and generates a graph
Gradle - An open-source build automation tool that is designed to be flexible enough to build almost any type of software
Maven - A software project management and comprehension tool
Task - A task runner / build tool that aims to be simpler and easier to use than GNU Make
CMake - An open-source, cross-platform family of tools designed to build, test and package software
CPack - A tool to configure generators for binary installers and source packages
Meson - An open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible
Rake - A Make-like program implemented in Ruby
fpm - A tool which lets you easily create packages for Debian, Ubuntu, Fedora, CentOS, RHEL, Arch Linux, and more
Tutorials
Monorepo Tools - A website with tools and resources for monorepos
Lerna - The original monorepo tool for JavaScript/TypeScript
Nx - A powerful open-source build system that provides tools and techniques for enhancing developer productivity
Gradle - An open-source build automation tool that is designed to be flexible enough to build almost any type of software
Program Documentation
Program Documentation Tools
apiDoc - A tool that creates a documentation from API descriptions in your source code
JSDoc - An API documentation generator for JavaScript
perldoc - A tool that looks up a piece of documentation in .pod format that is embedded in the perl installation tree
Pod - A simple-to-use markup language used for writing documentation for Perl, Perl programs, and Perl modules
pydoc - A tool that automatically generates documentation from Python modules
Docstring - A string literal that appears as the first statement in a module, function, class, or method definition
godoc - A tool that extracts and generates documentation for Go programs
rustdoc - A tool that generates documentation for Rust projects
RDoc - A tool that produces HTML and command-line documentation for Ruby projects
Javadoc - A tool from Oracle for generating API documentation in HTML format from doc comments in source code
Package Dependency Management
Package Dependency Managers
npm CLI - The world's largest software registry
npm-check-updates - A command-line tool that allows you to upgrade your package.json dependencies to the latest versions
npmgraph - A tool for exploring the npm dependency graph
yarn - A package manager that doubles down as project manager
pNPm - A fast, disk space efficient package manager
dpmland - A simple, modern and easy way to manage the Deno modules and dependencies
Bun package manager - A fast, npm-compatible package manager built into Bun
orogene - A next-generation package manager for the JavaScript ecosystem
pip - The package installer for Python
poetry - A tool for dependency management and packaging in Python
pdm - A modern Python package and dependency manager supporting the latest PEP standards
uv - An extremely fast Python package and project manager, written in Rust
go mod - A tool for managing Go source code
cpanminus - A tool to get, unpack, build and install modules from CPAN
bpkg - A lightweight bash package manager
Conan - A dependency and package manager for C and C++ languages
Cargo - The Rust package manager
LuaRocks CLI - The package manager for Lua modules
RubyGems CLI - The official package manager for Ruby
Bundler - A tool that provides a consistent environment for Ruby projects
NuGet CLI - The package manager for .NET
stack - A cross-platform program for developing Haskell projects
Gradle - An open-source build automation tool that is designed to be flexible enough to build almost any type of software
Maven - A software project management and comprehension tool
Virtual Environment
Virtual Environment Managers
Python venv - A module for the creation of virtual environments
pyenv - A tool for simple Python version management
nodeenv - A tool to create isolated node.js environments
nvm - A POSIX-compliant bash script to manage multiple active node.js versions
nvm-windows - A node.js version manager for Windows
rv - A simple and powerful Ruby version manager written in Rust
frum - A fast and modern Ruby version manager written in Rust
perlbrew - A tool to manage multiple perl installations in your $HOME directory
asdf - A tool version manager
tenv - A versatile version manager for OpenTofu, Terraform, Terragrunt and Atmos