DEV Community

Discussion on: What are the building blocks of the software?

Collapse
 
jasman7799 profile image
Jarod Smith

I would say that the fundamental units for all software are the lambda calculus and turing machine. Effectively the abstract idea that something changes the state of another thing. This idea is represented differently in both the turing machine and lambda calculus, but are essentially the same thing, and both can be used to express the other which I think is telling.

Collapse
 
stereobooster profile image
stereobooster

You mean Turing machine itself is fundamental unit, like all programs are built from small Turing machines? Or minimal set of parts from which you can construct Turing machine?

something changes the state of another thing

Sounds like a concept of state machine

both the turing machine and lambda calculus

Well yes, but lambda calculus is pure so you can't have any side effects, like getting date or generate random number or read user input. To do IO with lambda calculus you need to use monads ¯\_(ツ)_/¯

Collapse
 
jasman7799 profile image
Jarod Smith

Yea, the turing machine is essentially the fundamental unit of programming. As that is where the term turing complete comes from I believe which implies that any general logic can be expressed with something turing complete.