Table Oriented Programming (2002)

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB – Built for High-Performance Time Series Workloads
InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
www.influxdata.com
featured
Stream - Scalable APIs for Chat, Feeds, Moderation, & Video.
Stream helps developers build engaging apps that scale to millions with performant and flexible Chat, Feeds, Moderation, and Video APIs and SDKs powered by a global edge network and enterprise-grade infrastructure.
getstream.io
featured
  1. 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:

    https://github.com/empirical-soft/empirical-lang

  2. InfluxDB

    InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.

    InfluxDB logo
  3. 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.

    [0] https://github.com/smlsharp/smlsharp

  4. 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 https://docs.julialang.org/en/v1/manual/types/#Named-Tuple-T.... This is the core of https://juliadb.org/ all credit to the Julia core team

  5. 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: https://github.com/StardustDL/Linq-in-Rust

        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
  • CyberChef

    1 project | dev.to | 23 May 2025
  • Show HN: 100.st – Dev utilities I built for format conversions and encoding

    2 projects | news.ycombinator.com | 7 May 2025
  • Show HN: JSONXMLKit – Format JSON/XML and Decode Base64 in the Browser

    1 project | news.ycombinator.com | 22 Apr 2025
  • Tech workers are leaving notes in robot taxis seeking workers and lovers

    1 project | news.ycombinator.com | 17 Apr 2025

Did you know that Julia is
the 45th most popular programming language
based on number of references?