-4
$\begingroup$

Outline of question+justification soon to be expanded:


  1. Managing Complexity is job #1
  2. Abstraction is our #1 tool
  3. A VHLL does abstraction best
  4. So VHLL's should be our aim
  5. Talking about VHLL's, with his optimized Forths, Charles Moore develops the most powerful VHLL's, yet he is unaware, and we are unaware, because we don't even know what a VHLL is.
  6. A VHLL can be measured by functionality per word
  7. Seeing all this, and how important computers are, we should make sure that VHLL is both owned, and defined, by us.

What is a Very High Level Language? I think that this should only relate to the ability to create and work in very high level abstractions. But there is a problem...

I consider Forth to be a Very High Level Language because it is a DSL creation toolkit. In addition, the language literally has no syntax (as little as possible, I believe). And that lack of commas, parentheses, curly-braces and semicolons, keeps that clutter out of our mental way.

Think of XML and how it's so cluttered and there are less-than signs (<) and greater-than-signs (>) everywhere. That, to me, makes it a Very Low Level Language.

But Very Low Level Language is traditionally the assembly languages, and that means Forth, which is one step up from assembly.

But if Forth is just a Very Low Level Language, it would not be possible to create a :

  1. Basic
  2. Pascal
  3. Scheme and other languages in Forth.

So here's the corrollary question:

Is the Very High Level Language the language that is the DSL toolkit and can easily create other DSL's? Or is it only the DSL's so created?


Previous Question:

Not many programming languages claim to be a "very high-level language". Yet the SETL programming language makes such a claim. At first, I thought it was arrogant. But now, I just don't know what to think. SETL was made in the 60's, but I'm not sure that should matter.

For future languages I hope to make, I would like to shoot for this, but I'm not sure what I'm shooting for.

I was considering Lisp a very high level language, with its powerful macros, after being exposed to "Let Over Lambda".

And I'm impressed with Factor by Slava Pestov, which seems to implement the object oriented paradigm better than most languages.

I was highly impressed with LINQ, and was wondering if its ability to handle sets qualifies it as being very high level?

So, then...

  1. In particular, what makes SETL a very high level language?

  2. In general, what makes any particular language a very high level language?

Just certain features? Or the overall synergy? It's DSL-ability? What do you think?


Edit 1:

There seems to be a 22-video 2022 conference called the Logic and Practice of Programming where Ada, APL, and SETL are being discussed with vigor, so SETL does not seem to be completely out of use. And if it's used for mission critical (like Ada), and shares the stage with very high level APL, perhaps there is more to the "Very High Level Language" story of SETL?


Edit 2:

I have now watched many of the videos, and much of it is beyond my experience. According to Wikipedia, the SETL language influenced the ABC language, which greatly influenced the Python language. In the video conference, even though Guido van Rossum does not seem to tie back to SETL in particular, he does explain how ABC significantly contributed to his creation of Python (profitable conversation starts at about 10 minutes.)

To those who are voting this question down. Please leave some feedback for the improvement of this question, and please reconsider your vote. The moderator thinks that there is some value in this question (I believe).

The close reason for this question states that this question lacks details or clarity regarding the problem you’re solving.

  1. The problem I am trying to solve is defining (or redefining) an important term to Software Engineering and Software Development
  2. Lack of details should not be ascribed to what I have said or not said because the question is in pursuit of details. (If I am asking for details, the question should not be required to contain those details).
  3. This question is very clear. What is a Very High Level Language? If you think this is unclear, then please explain why. Please that your dislike of the term, that the definition of the term itself has been unclear, does not relate to the actual clarity of the question itself, which is the only reason you should be downvoting.
  4. Please be a responsible community member, and only downvote for the accepted reasons. Either that, or improve the question through the comments. Please do not have extended discussion about these matters in the comments -- please use the accepted area for extended discussion.

Don't you think that it is profitable to both us and our disciplines if we at least explore what the idea of what a VHLL might be? I think that we should take back the term, and insist on it being interpreted more literally. To me, a VHLL should have a very high level of abstraction, however that is accomplished. Also, I think a VHLL should enable the use of more than one powerful paradigm, like the F# programming language, which is multiparadigm, and is influenced by many languages. But, I think that VHLL should directly relate to ability to abstract. Along those lines, I believe that both Forth and Lisp are examples of VHLL languages, and this is partially because there is almost no syntax, allowing greater abstraction ability. Is Haskell a VHLL? I don't know Haskell well enough to be able to say. Once again, I want to hear what you think.

I do intend to answer this question myself if given the opportunity.

$\endgroup$
16
  • 1
    $\begingroup$ This is not a very meaningful term, which has been used in multiple incompatible ways. There is a Wikipedia page for it that provides a couple of the definitions. What’s the goal you’re aiming at where this term matters? Is there a concrete scenario in mind? $\endgroup$
    – Michael Homer
    Jul 30, 2023 at 19:46
  • 1
    $\begingroup$ Case in point: I would not consider Lisp a "very high level" language $\endgroup$
    – Seggan
    Jul 30, 2023 at 21:32
  • 1
    $\begingroup$ You're certainly welcome to reclaim the term, but what I'm trying to get is clarity on what the intention of the question is so that we can tell what kind of answer it's looking for. So my question is still, in what way does the term matter to you? Is it seeking a definition, a justification for the SETL claim, is it looking to defend a claim that another language is very high-level, is it just seeking to make a language that could claim that designation regardless of what its definition is, or what? $\endgroup$
    – Michael Homer
    Jul 31, 2023 at 2:29
  • 3
    $\begingroup$ I could only speculate one what brought on that sudden spate of downvotes, but the guidance on the vote button says "This question does not show any research effort; it is unclear or not useful", so people may feel some part of that applies, and they're allowed to vote that way if so. Observationally, across the network downvotes do tend to spike up when the author is involved in arguments in the comments, regardless of whether they're justified or not, but people shouldn't really be voting based on aspects that aren't within the post itself. I expect there is a suitable question within this. $\endgroup$
    – Michael Homer
    Jul 31, 2023 at 2:40
  • 1
    $\begingroup$ If they don’t comprehend your edits then you’d need to make the question more comprehensible so that they did, and then they could vote to say the original close reasons were resolved. The comprehension is the key part of that. It’s usually better to have a single coherent question (as though it were asked that way in the first place) rather than labelled edits or responses within the body, but up to you how to put it. People are generally pretty keen to reopen things here. You have seen this process before on other sites on the network, so you have experience with how it works already. $\endgroup$
    – Michael Homer
    Aug 1, 2023 at 19:24

2 Answers 2

7
$\begingroup$

This is subject to interpretation ─ as Wikipedia notes, the term's original meaning is not really distinct from what we now call a "high-level language":

The term VHLL [Very High-Level Language] was used in the 1990s for what are today more often called high-level programming languages (not "very") used for scripting, such as Perl, Python, php, Ruby, and Visual Basic.

This would apply to SETL, too, which was "originally developed in the late 1960s". I don't think many people would describe SETL as "very high-level" by contemporary standards.


If the term "very high-level" means anything today, I would argue that it means languages in which programs describe problems rather than solutions, and the language's implementation uses an algorithm to solve problems written in the language. This means that very high-level languages are declarative (the programmer writes declarations) rather than imperative (the programmer writes instructions).

Still, not all declarative languages are "very high-level" by this interpretation ─ the declarations must describe a problem rather than a solution to a problem ─ though that's debatable in many cases, and may depend less on the language than what program you are writing in that language. That said, I would say most functional languages aren't "very high-level" because to the extent that a functional program describes a problem, the language's implementation "solves" it simply by evaluating expressions, rather than some algorithm like a backtracking search.

My interpretation is obviously not one that everyone else will necessarily agree with, though it does coord with Wikipedia's description that

VHLLs are usually domain-specific languages, limited to a very specific application, purpose, or type of task [...] For this reason, very high-level programming languages are often referred to as goal-oriented programming languages.

Examples of what I would call very high-level languages include logic programming languages, constraint programming languages, and perhaps some query languages.

$\endgroup$
6
  • $\begingroup$ @MicroservicesOnDDD Forth is a "procedural, stack-oriented programming language", in the concatenative programming paradigm ─ functional languages are characterised by their function definitions being "trees of expressions that map values to other values, rather than a sequence of imperative statements which update the running state of the program"; Forth is not that. $\endgroup$
    – kaya3
    Jul 30, 2023 at 21:18
  • $\begingroup$ @MicroservicesOnDDD I'm sure you have, and I'm sympathetic to your view that Forth is a functional language ─ at the same time, I would rather use words and terms the way that they are generally understood, since my answer here is not addressed to you individually, but to everyone on this site interested enough to read it. $\endgroup$
    – kaya3
    Jul 30, 2023 at 22:35
  • $\begingroup$ @MicroservicesOnDDD Your view that Forth is a functional language is a view, an interpretation, not a truth. It is also not a widely-held interpretation. If you want to make the case for it as a truth then of course, do so, but this comment thread is not a suitable venue for such a campaign. $\endgroup$
    – kaya3
    Jul 30, 2023 at 23:10
  • $\begingroup$ Comments should be used to request clarification or propose improvements; I have already clarified that I am using the term "functional programming" in the way that term is normally understood, which is also the way the term is described on the Wikipedia page I linked to, and I do not think editing my answer to use that term as if it has a different meaning would improve my answer. It is not interesting to me to debate whether the term should mean something different to what everybody else understands it to mean. $\endgroup$
    – kaya3
    Jul 30, 2023 at 23:25
  • $\begingroup$ @MicroservicesOnDDD The truth is that when everybody else says the words "functional programming language", they don't mean Forth, and when they read the words "functional programming language", they don't think it includes Forth. Your opinion that people should use the term to mean a different thing to what they do use it to mean, is not a truth, it is a proposal which you are campaigning for. But it is not a proposal which will improve my answer here, as I have already told you. Now please stop imagining that you need to explain the concept or value of truth to me for any reason. $\endgroup$
    – kaya3
    Aug 1, 2023 at 18:19
4
$\begingroup$

I can't put this any better than David Parnas:

It is so common to hear phrases such as "high level language", "low level language" and "linguistic level" that it is necessary to comment on the relation between the implied language hierarchy and the hierarchies discussed in the earlier sections of this paper. It would be nice, if, for example, the higher level languages were the languages of the higher level "abstract machines" in the program hierarchy. Unfortunately, this author can find no such relation and cannot define the hierarchy that is implied in the use of those phrases. In moments of scepticism one might suggest that the relation is "less efficient than" or "has a bigger grammar than" or "has a bigger compiler than", however, none of those phrases suggests an ordering, which is completely consistent with the use of the term. It would be nice, if the next person to use the phrase "higher level language" in a paper would define the hierarchy to which he refers.

  • David Lorge Parnas, On a `Buzzword': Hierarchical Structure, IFIP Congress 1974: 336-339.
$\endgroup$
3
  • $\begingroup$ Are you saying 1. The authors of SETL shouldn't use the term without context, or 2. I should not be asking about the term without context. I would say the context is abstraction, but I don't know SETL, so I can't say. It could be the set-based nature. Wish I knew. Thanks for your contribution. $\endgroup$ Jul 31, 2023 at 2:35
  • $\begingroup$ I'm doing two things: 1) Sharing an important piece of software engineering lore. 2) Pointing out that any answer depends on how you interpret the question. I don't know what the SETL authors mean by that, but it sounds suspiciously like a marketing term, rather than referring to anything objective or technical. $\endgroup$
    – Pseudonym
    Jul 31, 2023 at 2:42
  • $\begingroup$ Regardless if it was used as a marketing term, we as programmers are reprehensibly passive if we allow others to define our important terms for us. If we want to produce better software, we have to do better with our own tools -- use our words more deliberately, use our words more properly, and define our important terms explicitly and without unnecessary compromise. So marketing used it. The real question is, how should WE use it! $\endgroup$ Aug 1, 2023 at 15:59

Not the answer you're looking for? Browse other questions tagged .