Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

A "universal language" is a language with (a) sequences of instructions, (b) conditionals, ifs, branches, and (c) loops, repetition, iteration, y-combinator (the math one), recursion.

They are Turing complete. Leaving off any of the three features (difficult for the y-combinator) yields a non-Turing complete language, for example Sieve Script for filtering email lacks (c).

What the definition doesn’t cover is parameterization. Some people call this abstraction. Technically, lisp macros also fall under parameterization.

With parameterization it really seems like any and all functions, mappings, and operators that fail to be injective and composable are counter-productive in practice. The math term is "generative effects".

There seems to be this continuous contention between one side that wants its configuration files to basically be CSV and another side that, effectively, wants a full-blown programming language as their "configuration language".

Both sides have a point. Just happen to land in the "essentially CSV" camp myself. Even a lisp macro can generate CSV.

(Yes the phrase "universal language" is very difficult to search for if the specific academic term above is under consideration.)



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: