B T
B T

Reputation: 60975

How to describe a language that ignores implimentation and only describes behavior

I wanted to ask how people would describe a programming language that basically describes the behavior of a program rather than the implementation - ie. a language that ignores implementation issues (e.g. only having a single class or function where other languages might have different classes or functions that do the same thing but in different ways) and instead relying totally on automated optimization.

Is "declarative" the right term? Maybe "intentional"? "Goal-oriented" is a term that seems to have similar meaning too. Maybe something else. I'm wondering because a langauge I'm designing, called Lima, fits this description ( http://www.btetrud.com/Lima/Lima-Documentation.html ). I know Stack Overflow likes things that have answers, so the answer will go to the person with the most insightful comments.

I'm also wondering how close people think this idea is to paul graham's idea of the hundred year language: http://www.paulgraham.com/hundred.html . I like how what he suggests doing with treating strings as lists of characters and getting rid of arrays in favor of the more general "hash table" (ie associative array) is something I did in Lima when I first conceived of it.

The basic ideas behind lima are:

  1. Value-based programming - getting rid of any logic that cares what "type" a value is. There are no types in Lima, and values are just values. Types still exist in the language, but only to constrain which values a variable can take on - they can't change which multi-method to call, and don't dictate the memory footprint of a value.

  2. Descriptive programming - what I described above about a programming language that throws out the need (and indeed the ability) to optimize your code in the code itself (rather optimizing would be done with automated optimizers)

  3. Total language extendability - the ability to write any of the constructs in the language in the language itself (e.g. being able to not only rewrite the 'sin' function, but also rewrite the 'if' statement, loop statements, and create custom DSLs usable within the language and within other DSLs.

Upvotes: 1

Views: 89

Answers (1)

ayckoster
ayckoster

Reputation: 6857

I would call it a specification. So I guess I would categorize it as a specifying language.

I had to develop some programs in Prolog some time ago. In Prolog you just specify what the function has to solve and the engine generates the code for you. I hated it though.

Upvotes: 1

Related Questions