10 - Advanced Programming
Procedural & Systems Programming
Relevant DSS-P Skills
- 3. Technology > 3.1 Software Development > Computer Science
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
Go Language
- Go - An open-source programming language supported by Google
- Core Features
- Go Modules - The dependency management system for the Go programming language
- Defer, panic and recover - The powerful but unusual control-flow mechanisms in Go
- Pointer receiver - A method that operates on a pointer to the type, allowing it to modify the value to which the receiver points
- Interface - A type defined as a set of method signatures
- Goroutine - A lightweight thread managed by the Go runtime
- Channel - A typed conduit through which you can send and receive values with the channel operator,
<-
- Libraries
- Awesome Go - A curated list of awesome Go frameworks, libraries, and software
- lo - A Lodash-style Go library
- fp-go - A collection of Functional Programming helpers
- shortuuid - A generator library for concise, unambiguous and URL-safe UUIDs
- Tools
- Go binary size SVG treemap - A CLI tool to make treemaps of size of Go executable
- mvm - A fast virtual machine for Go and beyond that enables users to run Go programs directly from source code without compilation
- Tutorials
- Effective Go - A document that gives tips for writing clear, idiomatic Go code
- Go by Example - A hands-on introduction to Go using annotated example programs
- Learn Go with tests - A resource that teaches the fundamentals of Go, including testing, on the first day
- Core Features
C & Other Procedural Languages
- C - A general-purpose, procedural computer programming language supporting structured programming, lexical variable scope, and recursion, with a static type system
- 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
- Comptime - The mechanism that allows you to execute code at compile-time
Functional & Hybrid Programming
Relevant DSS-P Skills
- 3. Technology > 3.1 Software Development > Computer Science
Functional-first & Multi-paradigm Languages
- 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
- OCaml - An industrial-strength functional programming language with an emphasis on expressiveness and safety
- Functor - A module that is parameterized by another module
- 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
- Process - A lightweight thread of execution that is isolated and exchanges information via messages
- Power Fx - A low-code language used across Microsoft Power Platform that is a general-purpose, strong-typed, declarative, and functional programming language
Multi-paradigm & Hybrid Languages
- Java - The #1 programming language and development platform
- Built-in concurrency support - The features of the Java platform designed from the ground up to support concurrent programming
- 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
- 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
- Groovy - A powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform
- Dart - A client-optimized language for fast apps on any platform
Data & Format Standards
Relevant DSS-P Skills
- 3. Technology > 3.1 Software Development > Computer Science
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
DateTime Format
- 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
- date-fns - A modern JavaScript date utility library that provides the most comprehensive, yet simple and consistent toolset for manipulating JavaScript dates in a browser & Node.js
- Day.js - A minimalist JavaScript library that parses, validates, manipulates, and displays dates and times for modern browsers with a largely Moment.js-compatible API
- 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
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
- Jackson - A suite of data-processing tools for Java, including a streaming JSON parser / generator library and matching data-binding library
- 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
- Nokogiri - A Ruby library that makes it easy and painless to work with XML and HTML, providing tools for reading, writing, modifying, and querying documents
- 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
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
- TOML - A minimal configuration file format that's easy to read
- 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
Text Processing & Manipulation
Relevant DSS-P Skills
- 3. Technology > 3.1 Software Development > Computer Science
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
Text Tools
- 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
- CLI Tools
- 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
- GNU awk - A program that you can use to select particular records in a file and perform operations upon them
- GoAWK - A POSIX-compliant AWK interpreter written in Go with CSV support
- Libraries
- 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
- smarter_csv - A Ruby Gem for convenient reading and writing of CSV files
- Go csv - A package that reads and writes comma-separated values (CSV) files
- Papa Parse - The powerful, in-browser CSV parser for JavaScript
- 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
- markdown-it-py - A Python port of the markdown-it project
- markdownify - A Python library that converts HTML to Markdown with customizable options for handling tags, formatting, and styling
Debugging
Relevant DSS-P Skills
- 3. Technology > 3.1 Software Development > Computer Science
- 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
- VSCode built-in debugger - The built-in debugger that helps you speed up your edit, compile, and debug loop
- Node.js built-in inspector - The inspector which allows attaching Chrome DevTools to Node.js instances for debugging and profiling
- 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
- VSCode rdbg Ruby Debugger - A Ruby debugger extension that is based on debug.gem
- debug.rb - The debugging functionality for Ruby
- Others
- VSCode Bash Debug - A bash debugger GUI frontend based on bashdb
- BASH Debugger - A bash shell command-line debugger
- GDB - The GNU Project debugger
- Python
- 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
- Go
- Charmbracelet log - A minimal and colorful Go logging library
- 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
- Python
Test Frameworks & Tools
Relevant DSS-P Skills
- 3. Technology > 3.1 Software Development > Software Development Process
- 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
Test Frameworks
- Bash
- Ruby
- 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
- pytest-mock - A pytest plugin that provides a
mockerfixture which is a thin-wrapper around the standardunittest.mockpackage
- Javascript/Typescript
- Go
- Go testing - A package that provides support for automated testing of Go packages
- Ginkgo - A BDD-style testing framework for Go
- Others
Assertion Libraries
- Chai - A BDD / TDD assertion library for node and the browser
- Gomega - A matcher/assertion library for Go
Code Coverage Tools
- 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
Test Supporting Tools
- Mocking Libraries
- Jest / Vitest built-in ones
- mock - A command-line tool for mocking HTTP responses
- 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
- Databricks Labs Data Generator - A Python library for generating synthetic data within the Databricks environment using Spark
- generatedata.com - A powerful, feature-rich, random test data generator
- gofakeit - A random data generator written in go
- Fake-rs - A library for generating fake data in Rust
- Multi-Environment Test Runners
Mutation Testing
- Mutation testing - A type of software testing where certain statements of the source code are changed to check if the test suite is able to find the errors
- cargo-mutants - A tool for Rust that helps you improve your program's quality by finding places where bugs can be inserted without causing any tests to fail
- Stryker Mutator - A tool to test your tests with mutants
- PIT Mutation Testing - A state of the art system, providing gold standard test coverage for Java and the JVM
Build Automation
Relevant DSS-P Skills
- 3. Technology > 3.1 Software Development > Computer Science
- 3. Technology > 3.1 Software Development > Cloud Infrastructure Utilization
- 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
- Bazel - A fast, scalable, multi-language and extensible build system
- 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
- Dune - A composable build system for OCaml, OCaml-related languages, and Coq
- 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
- GNU Make - A tool which controls the generation of executables and other non-source files of a program
- Tutorials
- Makefile Tutorial by Example - A tutorial that teaches you the basics of Makefiles
Monorepo Management
- Monorepo Tools
- Resources
- Monorepo Tools - A website with tools and resources for monorepos
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
Relevant DSS-P Skills
- 3. Technology > 3.1 Software Development > Computer Science
- JavaScript & Web Ecosystem
- 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
- npm CLI - The world's largest software registry
- Python Development
- Systems & Native Languages
- JVM & .NET Frameworks
- Other Language Ecosystems
- RubyGems CLI - The official package manager for Ruby
- Bundler - A tool that provides a consistent environment for Ruby projects
- LuaRocks CLI - The package manager for Lua modules
- cpanminus - A tool to get, unpack, build and install modules from CPAN
- stack - A cross-platform program for developing Haskell projects
- opam - A source-based package manager for the OCaml community
- Pub - The official package manager for Dart and Flutter
- Hex - The package manager for the Erlang ecosystem
Virtual Environment
Relevant DSS-P Skills
- 3. Technology > 3.1 Software Development > Computer Science
- 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
- mise - A polyglot tool version manager
- tenv - A versatile version manager for OpenTofu, Terraform, Terragrunt and Atmos