Skip to content

Programming Paradigms

Automata


  • BioJulia/Automa.jl : A julia code generator for regular expressions - this package can do text validation, parsing, and tokenizing based on state machine compiler.
  • timholy/CodeTracking.jl : An extension of Julia's InteractiveUtils library that provides an interface for obtaining strings and expressions of method definitions, method signatures, etc.. designed to work with Revise.jl (for versions v1.1.0 and higher).

Control Flow


Reversible programming


  • GiggleLiu/NiLang.jl : a reversible domain-specific language (DSL). Every state change can be undone.

Functional Programming


Pattern matching

Reactive Programming

Wikipedia: Reactive Programming

Design by contract

Wikipedia: Design by contract

Interpreters

Wikipedia: Interpreters

Macro and Metaprogramming


Automatic Programming

Wikipedia: Automatic Programming

--

  • FluxML/IRTools.jl : Intermediate Representation toolkit to provide a simple and flexible IR format, expressive enough to work with both lowered and typed Julia code, as well as external IRs. It can be used with Julia metaprogramming tools such as Cassette.
  • JuliaLabs/Cassette.jl : a Julia package that provides a mechanism for dynamically injecting code transformation passes into Julia’s just-in-time (JIT) compilation cycle, enabling post hoc analysis, optimization, and modification of "Cassette-unaware" Julia programs.
  • timholy/Revise.jl : Automatically update function definitions in a running Julia session. It will help you keep your sessions running longer, reducing the need to restart Julia whenever you make changes to code.

Program Analysis


  • JuliaCollections/LRUCache.jl : An implementation of a Least Recently Used (LRU) Cache.
  • kimikage/ProfileSVG.jl : Write flame graphs to SVG format and explore them interactively in Jupyter, Pluto, etc.
  • timholy/CallGraphs.jl : A package for analyzing source-code callgraphs, particularly of Julia's src/ directory. The main motivation for this package was to aid in finding all functions that might trigger garbage collection by directly or indirectly calling jl_gc_collect; however, the package has broader uses.
  • timholy/ProfileView.jl : Visualization of Julia profiling data
  • tkluck/StatProfilerHTML.jl : Show Julia profiling data in an explorable HTML page.
  • zenna/Lens.jl : A simple Julia library to inspect the runtime behaviour of your programs, with minimal interference to the program itself.

Polymorphism amd multiple dispatch


Object-oriented programming (OOP)

Fuzzy Logic

Wikipedia: Fuzzy logic