The term "declarative" never meant a damn thing, but was often used, absurdly, to somehow lump together functional programming with logic programming, and separate it from imperative programming. It never made a lick of sense; it's just a marketing term.
Bob Harper On Apr 18, 2013, at 2:48 PM, Jason Wilkins wrote: > [ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ] > > Warning, this is a bit of a rant. > > That paragraph from Wikipedia seems to be confused. It gives the fourth > paradigm as "declarative" but then says "first order logic for logic > programming". It seems somebody did an incomplete replacement of > "declarative" for "logic". Wikipedia is often schizophrenic like that. > > Personally, I think that object oriented and logical programming only > became official paradigms because there was a certain level of hype for > them in the 1980s and nobody has thought to strike them off the list after > the hype died down. > > Object-oriented, as constituted today, is just a layer of abstraction over > imperative programming (or imperative style programming in functional > languages, because objects require side-effects). What "object-oriented" > language actually in use now isn't just an imperative language with fancy > abstraction mechanisms? > > The problem with having declarative languages as a paradigm (which logical > languages would be a part) is that it feels like it should be a > "miscellaneous" category. Being declarative doesn't tell you much except > that some machine is going to turn your descriptions of something into some > kind of action. In logical programming it is a set of predicates, but it > could just as easily be almost anything else. In a way all languages are > "declarative", it is just that we have some standard interpretations of > what is declared that are very common (imperative and functional). > > My wish is that the idea of there being four paradigms would be abandoned > the same we the idea of four food groups has been abandoned (which may > surprise some of you). We have more than four different modes of thinking > when programming and some are much more important than others and some are > subsets of others. We should teach students a more sophisticated view. > > Ironically Wikipedia also shows us this complexity. The > programming language paradigm side bar actually reveals the wealth > of different styles that are available. There is simply no clean and > useful way to overlay the four paradigms over what we see there, so it > should be abandoned because it gives students a false idea. > > > On Wed, Apr 17, 2013 at 9:42 AM, Andreas Abel <andreas.a...@ifi.lmu.de>wrote: > >> [ The Types Forum, http://lists.seas.upenn.edu/** >> mailman/listinfo/types-list<http://lists.seas.upenn.edu/mailman/listinfo/types-list>] >> >> On 17.04.2013 11:30, Uday S Reddy wrote: >> >>> Mark Janssen writes: >>> >>> From: en.wikipedia.org: Programming_paradigm: >>>> >>>> "A programming paradigm is a fundamental style of computer >>>> programming. There are four main paradigms: object-oriented, >>>> imperative, functional and declarative. Their foundations are distinct >>>> models of computation: Turing machine for object-oriented and >>>> imperative programming, lambda calculus for functional programming, >>>> and first order logic for logic programming." >>>> >>> >> I removed the second sentence relating paradigms to computation models >> and put it on the talk page instead. It does not make sense to connect >> imperative programming to Turing machines like functional programming to >> lambda calculus. A better match would be random access machines, but the >> whole idea of a connection between a programming paradigm and a computation >> model is misleading. >> >> >> While I understand the interest in purely theoretical models, I wonder >>>> two things: 1) Are these distinct models of computation valid? And, >>>> 2) If so, shouldn't a theory of types announce what model of >>>> computation they are working from? >>>> >>> >>> These distinctions are not fully valid. >>> >>> - Functional programming, logic programming and imperative programming are >>> three different *computational mechanisms*. >>> >>> - Object-orientation and abstract data types are two different ways of >>> building higher-level *abstractions*. >>> >>> The authors of this paragraph did not understand that computational >>> mechanisms and higher-level abstractions are separate, orthogonal >>> dimensions >>> in programming language design. All six combinations, obtained by >>> picking a >>> computational mechanism from the first bullet and an abstraction mechanism >>> from the second bullet, are possible. It is a mistake to put >>> object-orientation in the first bullet. Their idea of "paradigm" is vague >>> and ill-defined. >>> >>> Cheers, >>> Uday Reddy >>> >>> >> >> -- >> Andreas Abel <>< Du bist der geliebte Mensch. >> >> Theoretical Computer Science, University of Munich >> Oettingenstr. 67, D-80538 Munich, GERMANY >> >> andreas.a...@ifi.lmu.de >> http://www2.tcs.ifi.lmu.de/~**abel/ <http://www2.tcs.ifi.lmu.de/~abel/> >> -- http://mail.python.org/mailman/listinfo/python-list