[TYPES] Declarative vs imperative
Kalani Thielen
kthielen at liquidnet.com
Mon Apr 22 12:16:18 EDT 2013
At the risk of proving that this subject is just bikeshedding ...
Is it possible to say that "declarative" knowledge is the type-level-N+1 expression describing a level-N term (so it's meaningful relative to a particular term -- as in your example, machine code is itself "declarative" with respect to physical machines)? Maybe you'd have to import dependent types / staged-programming to make that meaningful, but I think that's the right direction.
The prototypical example that I think of when I hear "declarative" is the square-root problem from SICP. If you look at it now, it almost looks like they give a dependent type to Newton's method.
-----Original Message-----
From: types-list-bounces at lists.seas.upenn.edu [mailto:types-list-bounces at lists.seas.upenn.edu] On Behalf Of Rishiyur Nikhil
Sent: Monday, April 22, 2013 11:53 AM
To: Vladimir Lifschitz
Cc: types-list at lists.seas.upenn.edu
Subject: Re: [TYPES] Declarative vs imperative
[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ]
> ... fully declarative, like functional programming.
> Here is how I would characterize the difference between procedural and
> imperative programming. A program in an imperative language
> describes
an
> algortithm. A program in a declarative language describes a
specification.
But one man's specification is another man's algorithm. Even in Haskell, one writes a sorting program typically by choosing a particular algorithm (heap sort, quick sort, ...). Sure, these can be considered specifications of sorting, but they are hardly the most abstract spec for sorting.
Similarly, a C program is a specification for a hundred different machine code algorithms that manage memory, register allocation etc.
Nikhil
More information about the Types-list
mailing list