The Artima Developer Community
Sponsored Link

Weblogs Forum
Signs of the Next Paradigm Shift: Part I

24 replies on 2 pages. Most recent reply: Jul 30, 2006 11:05 PM by James O. Coplien

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 24 replies on 2 pages [ « | 1 2 ]
Roland Pibinger

Posts: 93
Nickname: rp123
Registered: Jan, 2006

Re: Signs of the Next Paradigm Shift: Part I Posted: Aug 2, 2006 6:18 PM
Reply to this message Reply
Advertisement
> With
> a multi-paradigm language, you may do things by combining
> paradigms, that no paradigm by itself can handle.

How do you chose between conflicting paradigms? Which criteria do you use for "combining paradigms"? You left out the interesting questions.

Terje Slettebø

Posts: 205
Nickname: tslettebo
Registered: Jun, 2004

Re: Signs of the Next Paradigm Shift: Part I Posted: Aug 3, 2006 2:29 AM
Reply to this message Reply
> is the possibility of getting support for generic
> concepts in C++ ...This would allow compile-time checked
> "duck typing", where you don't have to specify the exact
> type for an interface, only what properties the type needs
> to have, as well as enabling arbitrarily fine-grained
> overloading.

>
> Ruby does it too with some benefits, but I could argue
> either approach (duck vs static) depending on the project,
> developers and maintenance.

Hm, "duck versus static"? Unfortunately, these terms are not not well defined, but when I used the term "duck typing", I meant type checking based on type properties, rather than matching a specific type, regardless of whether this checking happens at compile time or run time. In the case of C++ "concepts" (as well as e.g. "type classes" in Haskell), the matching would happen at compile time, so it's not "duck versus static", but "duck and static". :)

I guess you meant to make a distiction between static (compile time) and dynamic (run time) type checking?

Terje Slettebø

Posts: 205
Nickname: tslettebo
Registered: Jun, 2004

Re: Signs of the Next Paradigm Shift: Part I Posted: Aug 3, 2006 2:43 AM
Reply to this message Reply
> > With
> > a multi-paradigm language, you may do things by
> combining
> > paradigms, that no paradigm by itself can handle.
>
> How do you chose between conflicting paradigms? Which
> criteria do you use for "combining paradigms"? You left
> out the interesting questions.

Have you read Cope's book? You may choose between the so-called "paradigms" or language features based on what properties a piece of code or module has, as he also mentioned in this blog. By the way, I find the term "conflicting paradigms" a little strange - did you just mean "alternative paradigms", and if not, how do they "conflict"?

Ditto for your next question. I didn't mention the questions you have here, because they're very much about what MPD is about, and thus covered elsewhere (to the extent it's covered - this seems still to be very much a pioneer area).

You still haven't explained what you meant with "a more advanced scheme of things". You seem to be answering questions with questions... I agree that the trick is to ask the right questions, but if that's the only thing you can do, it may not lead to much insights around here...

Roland Pibinger

Posts: 93
Nickname: rp123
Registered: Jan, 2006

Re: Signs of the Next Paradigm Shift: Part I Posted: Aug 3, 2006 1:58 PM
Reply to this message Reply
> Have you read Cope's book?

Yes.

> You may choose between the
> so-called "paradigms" or language features based on what
> properties a piece of code or module has, as he also
> mentioned in this blog.

All we need is the paradigm of paradigms. The missing link between CVS anlysis and implementation 'paradigms'/styles/idioms. You cannot just say 'pick the most appropriate'.

> By the way, I find the term
> "conflicting paradigms" a little strange - did you just
> mean "alternative paradigms", and if not, how do they
> "conflict"?

Paradigms are conflicting by nature.

> Ditto for your next question. I didn't mention the
> questions you have here, because they're very much about
> what MPD is about, and thus covered elsewhere (to the
> extent it's covered - this seems still to be very much a
> pioneer area).

Ok, let's leave it to the pioneers ...

> You still haven't explained what you meant with "a more
> advanced scheme of things".

"a more advanced scheme of things" is a quotation form Bjarne Stroustrup's quotation (see above).

Terje Slettebø

Posts: 205
Nickname: tslettebo
Registered: Jun, 2004

Re: Signs of the Next Paradigm Shift: Part I Posted: Aug 3, 2006 3:56 PM
Reply to this message Reply
> > You may choose between the
> > so-called "paradigms" or language features based on
> what
> > properties a piece of code or module has, as he also
> > mentioned in this blog.
>
> All we need is the paradigm of paradigms. The missing link
> between CVS

CVS?

> anlysis and implementation
> 'paradigms'/styles/idioms. You cannot just say 'pick the
> most appropriate'.

Yes, and I think Cope's book (as well as other sources dealing with domain engineering and mapping it to features or "paradigms") provides a starting point for this.

> > By the way, I find the term
> > "conflicting paradigms" a little strange - did you just
> > mean "alternative paradigms", and if not, how do they
> > "conflict"?
>
> Paradigms are conflicting by nature.

I don't agree with that. You may say that "The Earth is flat" and "The Earth is round", and you may be right both times - it depends on your viewpoint - your "paradigm", if you like.

The way I see it is that "paradigms" are just different ways of viewing a domain, or a model of it. If you do a commonality/variability analysis, you may find some "paradigms" fit better in some areas or parts of the domain model, than others (whether they are OO, functional programming, logical/inferencing programming, declarative, imperative, whatever).

These "paradigms" are no more conflicting that a hammer and a screwdriver are conflicting - they are suited for different tasks, complementing each other, not "conflicting" in any way.

> > Ditto for your next question. I didn't mention the
> > questions you have here, because they're very much
> about
> > what MPD is about, and thus covered elsewhere (to the
> > extent it's covered - this seems still to be very much
> a
> > pioneer area).
>
> Ok, let's leave it to the pioneers ...

Which may as well be us... :)

> > You still haven't explained what you meant with "a more
> > advanced scheme of things".
>
> "a more advanced scheme of things" is a quotation form
> Bjarne Stroustrup's quotation (see above).

Ah, ok.

Merriodoc Brandybuck

Posts: 225
Nickname: brandybuck
Registered: Mar, 2003

Re: Signs of the Next Paradigm Shift: Part I Posted: Aug 4, 2006 2:19 PM
Reply to this message Reply
>> In this 'blog I'll ask you to puzzle with me over why there seems to be renewed interest in multi-paradigm ideas these days after more than a decade of disinterest and, sometimes, outright criticism or even dismissal of such notions.

I actually think this is pretty simple. In general I think people are starting to really come to grips with what Fred Brooks wrote about almost two decades ago. There is no silver bullet.

My guess is that all over the world little pockets of people really have known this for a long time now, but until recently it was hard for those little pockets to talk to each other and to get their views known. Now with the internet and all the information sharing that goes on, it is much easier for these little pockets to become a critical mass that is heard.

For example, I had never heard of Multi-paradigm
Design for C++ until today. To me it sounds like a fascinating read. I'll go look it up first chance I get. However, in 1998 I was working for a small market research company. I was out of school for 3 years already. Being out of school I wasn't exposed to the more academic and theoretical side of computing anymore and working in a small firm in what was essentially a small IT department I wasn't with a group of people that kept up with the latest design trends, ideas in computing, advances in programming, etc. With sites like Artima available I have access to some very smart people that have some very interesting ideas about computing and technology. I talk about most of this stuff with friends and their eyes glaze over after about 7 seconds. Heck on vacation a couple weeks ago I brought 'Writing Secure Code' for some light reading between jaunts to Disneyland. My wife and inlaws thought I was nuts :-)

James O. Coplien

Posts: 40
Nickname: cope
Registered: May, 2003

Re: Signs of the Next Paradigm Shift: Part I Posted: Aug 11, 2006 8:36 AM
Reply to this message Reply
> All we need is the paradigm of paradigms. The missing link
> between CVS anlysis and implementation
> 'paradigms'/styles/idioms. You cannot just say 'pick the
> most appropriate'.

[For the sake of those who are confused, I think CVS here relates to commonality and variability analysis -- a not uncommon acronym, sadly easy to confuse with something else.]

If you look under the hood and go beyond the engineering-level stuff in MPD, you'll find that I was indeed striving for a paradigm of paradigms. When I give seminars on this stuff I sometimes use the term "meta-paradigm." It is a paradigm for finding or choosing pardigms. The meta-paradigm framework is based on widely socialized Western models of human perception. They tie into classification theory, pattern recognition, frame-based conceptual memory, and such. From this perspective, MPD is a deeply human activity more strongly rooted in cognitive psychology than in any technology. What I find cool is that more and more techologies are starting to come around.

In my next post (still in draft) I'll give my perspectives on how this relates to computer science education. I think academia has really missed the boat here, not only on the level of deep models, but on the engineering level as well. They are still looking for, as another poster here has noted, the silver bullet. It ain't there.

Another thing I find cool is that computing offers a really meager "starter set" of kinds of things our mind can pattern: function, structure, name, behaviour, value, and maybe a couple of others. Whether this owes to our cultural conditioning or something more fundamental in our wiring is a question I'll skirt in the interest of practicality. It seems to be so, and I want to build on what we can observe about how we work. That's what MPD does.

> > By the way, I find the term
> > "conflicting paradigms" a little strange - did you just
> > mean "alternative paradigms", and if not, how do they
> > "conflict"?
>
> Paradigms are conflicting by nature.

Maybe, but the magic of design under the hand of a great craftsperson is that we can master such apparent conflicts in the solution domain, and use them to rise to the conflicts of the problem domain. Conflicts in neither one nor the other remove their application from the realm of possibility. And many so-called paradigms are in fact not mutually consistent. Experts such as Peter Wegner and and Larry Constantine have sometimes noted that the so-called object paradigm is just a hodgepodge of the paradigms that proceeded it.

I think computing today has very few paradigms in the Kuhnian sense (whatever that means; even Kuhn seems confused by this). Maybe VonNeumann computation is a paradigm, and maybe there are paradigms that are inconsistent with it in a Kuhnian sense. But I haven't yet really seen one. We can blather about the rule-based paradigm but we usually talk about it in terms of backward or forward chaining -- very VonNeumann notions. The same is true for the functional paradigm -- very few people can get very far in talking about it as a computational model without introducing VonNeumanisms. And databases are not a computing paradigm but a data organization model.

So this notion of apparent conflict does not disturb me, and I seem to be able to navigate this so-called inconsistent design space just fine, thank-you :-) Most great C++ programmers I know are the same. To me, MPD just explains and codifies what these programmers always have been able to do. "Am I inconsistent? Then call me inconsistent. I am large. I contain multitudes." -- Walt Whitman

Maxim Noah Khailo

Posts: 25
Nickname: mempko
Registered: Nov, 2004

Re: Signs of the Next Paradigm Shift: Part I Posted: Aug 17, 2006 11:09 PM
Reply to this message Reply
The way we work drives our progress. For the first time in history we have a general tool which reflects our working in both a satic (src code), and a dynamic way. Music is similar in that there is code and it is executed, but it does not express much in the way of working together. I think you made a important point that “paradigms” are not aways so mutually exclusive and that in the end it ends up as “instructions” anyway. I think if you can have rap music with a rock guitar playing a classical track and make t sound good, you are a master. Being a master in music requires understanding the way we work, just like programming. A master knows from lots of time. I typed this on a Ds Lite...

Sam Griffith Jr.

Posts: 9
Nickname: staypufd
Registered: Sep, 2003

Re: Signs of the Next Paradigm Shift: Part I Posted: Sep 6, 2006 8:32 AM
Reply to this message Reply
I'm glad to see this book getting renewed recognition and I would suggest a update to make it inclusive of the popular languages of today. (ie - Java & C#).

I would like to throw this idea in though. We have an example of a multi-paradigm approach & language, that had extensive use for large and small systems, even before this book came out. It is LISP. LISP has been what I would consider the ultimate multi-paradigm language. The old saying about it being able to add any paradigm to itself and still be LISP, while at the same time fully assimalating those paradigms, has proven true many times over the years - LISP is like a ball of mud, no matter what new things and ideas you add to it, you still have a ball of mud.

I remember how the book impacted my view of systems even though I'd been doing OO since 1987. I had been lucky enough to learn Object Pascal and Smalltalk-80 in 1986-87 and have a good world view of OO from my readings of the first 2 years of OOPSLA proceedings and other writings, and when this book came out I was very interested in similiar topics. It served as a great affirmation of ideas I'd been having but from a more dynamic languages view point - Smalltalk & LISP. I also liked that the book not only talked about MPD, but also gave great examples of usage in practical ways.

Crongrates on it's resurrection and hopefully the ideas will get more press this time around.

Sam Griffith Jr

James O. Coplien

Posts: 40
Nickname: cope
Registered: May, 2003

Re: Signs of the Next Paradigm Shift: Part I Posted: Sep 7, 2006 3:42 AM
Reply to this message Reply
Thanks, I think there is a nugget in these insights somewhere.

LISP of course was first developed around the concepts of lists and functions and looking back on its popular use at that time (e.g., reading the McCarthy book) it looks like a functional programming language. However, it is adequately context-free that it doesn't get in your way when you try to do other paradigms. That's the same insight that Tim Budd has about Python.

Stroustrup (and I) distinguish between allowing a given paradigm and supporting a given paradigm. In the final analysis, all languages are Turing powerful and allow all paradigms... Some allow you to build environments that support expression in a given paradigm, just as macros in C could be used to simulate vtbls (Bill Roome's early work on "Almost Object-Oriented Programming in C") and macros and reflection in LISP could be used to simulate, well, a lot of things. However, coders are on their own as regards support. I wouldn't say that LISP supports object orientation; it only allows you to embed a language in it that does.

CLOS is one interesting language embedded in LISP that does support object-oriented programming and does so to a stronger degree than C++ does, particularly because it supports multiple dispatch. CLOS walks an interesting line in that I think it supports multiple paradigms like C++ does, but still has the flexibility of LISP. It is important to note that it is more than LISP; like LISP, you pay a price in efficiency and, beyond LISP, you pay a price in complexity.

Last, let me note Ole Lehrmann Madsen's position about Beta. He views Beta as a language that transcends paradigms rather than just combining them. I think that he roughly means that Beta programming is like programming in an algebra.

Flat View: This topic has 24 replies on 2 pages [ « | 1  2 ]
Topic: Signs of the Next Paradigm Shift: Part I Previous Topic   Next Topic Topic: Hardware Upgrade Tonight


Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2014 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us