Table Oriented Programming (2002)

This page summarizes the projects mentioned and recommended in the original post on

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
  • empirical-lang

    A language for time-series analysis

  • I started Empirical with the goal of "q like Haskell". The end result went in a radically different direction, but the guiding light has always been to have a statically typed language where tables and queries are a first-class operation.

    The source code is publicly available under AGPL with the Commons Clause:

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • smlsharp

    SML# compiler

  • Another relevant software category is the statistical analysis languages, including SAS, Stata and SPSS.

    Old-school SAS included only two data types (floats and character strings), but allowed for SQL and sequential data-steps to live together. Persistence was baked in. The floats could be used to represent dates, datetimes and other formats. I particularly appreciated being able to use macros to define a data-step view to split the follow-up for an individual from a table. Such a view could then be collapsed using SQL. SAS also allows for using variables. More recently, R tools such as dplyr have brought together data-frames and relational operations. However, I miss the sequential coding in SAS, using macros as higher-level tools to define the logic, including corner cases.

    For strictly typed records, I have always wanted to spend more time with SML# [0] this allows for record updating, with close ties to SQL -- an under-appreciated version of SML.


  • IndexedTables.jl

    Flexible tables with ordered indices

  • unfortunately, I don't have access to that code anymore, I wrote a number of loaders for different data set types including CSV. The time series were all modeled as forward iterating stream of tuples, so there is no specific table abstraction. There is an implicit assumption that the stream is ordered by the join key, in a time series this being the timestamp, though nothing in the implementation enforced that.

    Joins are always n-way merge joins, so you can write something like y = 2x^2 - 3z and fold that into a single streaming operation y = f( x, z ) where y, x and z are time streams.

    When rendered to screen they looked very similar to your examples. With plugins in the IDE you could directly plot and array of time series as a chart.

    Since the time I wrote NamedTuples the Julia core team folded the functionality into the core of Julia This is the core of all credit to the Julia core team

  • Linq-in-Rust

    Language Integrated Query in Rust.

  • Rust has rather sophisticated macros, which let you do stuff like this outside the core language implementation, which is IMO very much where such things belong.

    E.g. a linq clone in rust can look like this:

        linq!(from p in 1..100, where p <= &5, orderby -p, select p * 2).collect();

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • How do I access a specific column/row based on the column name and/or row value with an indexed table?

    2 projects | /r/Julia | 15 Aug 2021
  • PicoCTF 2024: packer

    2 projects | | 5 Apr 2024
  • Unbreakable 2024: secrets-of-winter

    1 project | | 3 Apr 2024
  • YouTube: Google has found a way to break Invidious

    2 projects | | 31 Mar 2024
  • PicoCTF 2024- CanYouSee

    1 project | | 31 Mar 2024