Slashdot Mirror


Concept Programming

descubes writes "A recent article asked about improvements in programming. Concept programming is a very simple idea to improve programming: program code should reflect application-domain concepts. What is amazing is not the idea itself, but how often we don't apply it, and how much existing tools and techniques can get in the way without us even realizing it. To be able to represent all concepts equally well, we need tools that don't force a particular, restricted vocabulary on us. The Mozart project is a Free Software project to implement concept-programming development tools. It includes the Coda universal intermediate language, the Melody persistent program representation, the Moka Java-to-Java extensible compiler, and a fairly advanced front-end for a new programming language called XL. In the long run, Mozart can give the Free Software community a foundation for something as powerful as Charles Simonyi's Intentional Programming."

5 of 78 comments (clear)

  1. Uh... by eggstasy · · Score: 3, Informative

    Isnt this the whole philosophy behind OO programming? ISTR my OO teacher saying something like "every class should reflect a real-world concept"... but hey, it's been a while. I could be wrong.

    1. Re:Uh... by sporty · · Score: 4, Informative

      Problem is, in OOP, everything is an object, or a thing.

      In AOP (aspect object programming) everything is a verb and a matter of flow. I.e. after doing one thing, you do another. Of if this action is taken, this must be taken. Sorta trigger driven.

      In concept, everything seems to be more verb/adjective like. I.e. you wouldn't create a Max object or a Drive object or a Smell object in OOP. You'd create things that have a max() method, or a drive() or smell() method. You'd create the concept of smell() and prolly return something that describes the result of finding the max(), or driving() or smelling().

      --

      -
      ping -f 255.255.255.255 # if only

    2. Re:Uh... by KieranElby · · Score: 3, Informative

      True, but not every concept is easily represented as an object.

      The 'Concept Programming vs. Objects' page explains how concept programming relates to OOP.

    3. Re:Uh... by aminorex · · Score: 3, Informative

      Yeah, you mean meta-object protocol

      --
      -I like my women like I like my tea: green-
  2. Re:Good idea - no need for new tool gimmickry by descubes · · Score: 3, Informative

    Yes, Lisp can do a lot of this, because it has meta-programming (reflective) capabilities built-in. What Lisp or Forth lacks is:

    - A way to adapt the syntax. In Lisp, you write (+ 1 2), not 1 + 2. So if you have the semantic ability to represent concepts, you don't have the syntactic ability.

    - A distinction between the program environment and the meta-program environment. When you create a lambda, its "namespace" is the current program. In Mozart, it needs not be.

    --
    -- Did you try Tao3D? http://tao3d.sourceforge.net