Skip to content

Instantly share code, notes, and snippets.

@onlurking
onlurking / programming-as-theory-building.md
Last active March 5, 2023 07:35
Programming as Theory Building - Peter Naur
View programming-as-theory-building.md

Programming as Theory Building

Peter Naur

Peter Naur's classic 1985 essay "Programming as Theory Building" argues that a program is not its source code. A program is a shared mental construct (he uses the word theory) that lives in the minds of the people who work on it. If you lose the people, you lose the program. The code is merely a written representation of the program, and it's lossy, so you can't reconstruct

@tangentstorm
tangentstorm / gramco.k
Last active July 8, 2021 07:34
Rough port of my grammar combinator thing to k3.
View gramco.k
/ grammar combinators in K
/ for longer description (in python), see:
/ http://tangentstorm.github.io/draft/wejalboot.py.html
/ -- misc helper functions ------------------------------------
join:{[sep;strs] / join strs with 'sep' as delimiter
(#sep) _ ,/ sep,' strs}
@jpjacobs
jpjacobs / som.ijs
Last active February 29, 2016 14:08
Kohonen SOM
View som.ijs
NB. Self-Organising map
require 'math/lapack/geev'
require 'tables/csv'
require 'viewmat'
NB. closeall_jviewmat_ ''
NB. parameters:
N =: 30 NB. side of neuron map. (N -> (*:N) neurons)
ntrain =: 25 NB. number of training samples per class
niter =: 10000 NB. number of iterations
'a0 an' =: 25 1 NB. Starting and ending learning factor
@adrian17
adrian17 / whence.ijs
Last active August 29, 2015 14:20
whence for J
View whence.ijs
whence =: verb define
select. 4!:0 < y
case. _2 do. 'invalid name'
case. _1 do. 'name not defined'
case. 0;1;2;3 do.
index =. 4!:4 < y
select. * >: index
case. 0 do. 'name defined locally'
case. 1 do. > index { 4!:3''
end.
@adrian17
adrian17 / collatz.ijs
Last active August 29, 2015 14:17
collatz fractal in J
View collatz.ijs
load 'viewmat'
gen_table =: 4 : '(0j1*(i: x)) +/ i: y'
fractal =: 1 : 0
:
x u"0 (y +~ 30000 %~ 150 gen_table 150) NB. resolution and scale, not sure how to decouple them
)
collatz =: 4 %~ 2 + (7*]) - (2+5*])* 2 o. o.
is_bounded_c =: 4 : '((0: collatz^:x) :: 1:) y' NB. collatz
@adrian17
adrian17 / sudoku.ijs
Created March 5, 2015 09:24
sudoku in J (translation of APL algorithm)
View sudoku.ijs
s44 =: 4 4 $ 0 0 0 0 0 0 2 1 3 0 0 4 0 0 0 0
box =: (] #"1 ] # ([: i. 2 # ]))
indices =: 3 : 0
yy =. {. y
a =. yy #"0 i. yy
b =. |: a
c =. a ,/"0 b
)
@Twinklebear
Twinklebear / fragment.glsl
Last active August 29, 2015 14:00
Instanced textured quads, produces this render: https://i.imgur.com/opgHu0x.png
View fragment.glsl
#version 330 core
//Sampler defaults to unit 0 which is where our texture is bound
uniform sampler2D tex;
in vec2 fuv;
out vec4 color;
void main(void){
@tangentstorm
tangentstorm / j-vs-hs.md
Last active January 4, 2016 15:49
j vs haskell
View j-vs-hs.md
h> (map sum)[[0..n]|n<-[0..10]
j] +/"1 i."0 >:i.11


j] +~^:5]1
h> let rfx f y = f y y ; pow = (\n f -> if n == 0 then id else f . pow (n-1) f) in pow 5 (rfx (+)) 1 

j] +/~i.4

@tangentstorm
tangentstorm / something4thy.js
Created August 2, 2013 04:22
something 4thy this way comes...
View something4thy.js
var b4 = (new function() { var EOF='\0',self = {
d:[], a:[], // data and auxiliary/return stack
defs:[],core:[],scope:[], // dictionary
base:10, // numbers
cp:-1, ch:'\x01',ibuf:[],wd:'', // lexer state
compiling:false,state:[],target:[], // compiler state
def : function (k,v){
var res=self.defs.length; self.defs.push(v); self.scope[0].push([k,res]); return res },
View serial.go
type Message struct {
type string
midiData [3]byte
sysexData[255]byte
sysexLen int
}
func NewBoard() *Board {
b := &Board{}
// Start the message loops