Protium ..

The Protium Project talks about Diarmuid Pigott's programming language that I had the opportunity to peek at several years ago and was definitely interesting from a language perspective - the keyword being pasigraphic.

The site, however, has been down for a long time now and Diarmuid (who's been an LtU member for a while) has been unreachable.

Any leads anyone?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Re: Protium ..

G'day everyone

My name is Bruce Axtens. I'm one of the members of The Protium Project, working as a Software/QA Engineer.

Protium is alive and well.

For an idea of where Protium is at, please check out the following postings on my Codeaholic blog: templating, asserting and splitting.

Other recent postings on the blog are related to providing tools for, or testing, the Protium engine itself.

Kind regards,

Trial downloads?

Great to hear about Protium again! Are you making available any trial downloads now? I'd love to play with it.

something more accessible?

Is there a more bottom up or introductory write up available? I checked all the pages except the actual download and the forum, which has some sort of server side scripting error.

re: something more accessible?

If by accessible you mean something to download, sorry, not yet.

If you mean in the sense of a gentle introduction ... well there's the Protium website.

Beyond that, you'll have to wait for me to write something and post it. Diarmuid and I did a "Master Class" early last year. I should find, polish and post that, as it's a good introduction.

Kind regards,

translation & everybody's favourite Sapir–Whorf


a) if i write in German can it then be turned into English so everybody can write in their own language but still work with people using their own language?

b) but then it sounds like there is either a claim that all languages share some internal way of modeling things so they can all work for Protium, or a claim that each language has its own neat way of looking at the world which can be brought to Protium to make life less robotic. i'm not sure which is claimed and if either one would really work or make sense to me on the face of it.

i'm not trying to be obnoxious, i'm more trying to ask for a simple explanation to break through some terminology on the site which is a little opaque to my simple mind :-)

"Protium's inter-translatability is based on the theory of the Natural Semantics Metalanguage, and draws on the natural problem-solving expressions that every culture has enshrined in their language. It matches this with ideas from the various general purpose programming systems that have been overwhelmed in the past by the bare-bones reductive approach of algorithmically derived languages. This approach to communication of problems draws on the great heritage started by Wilkins and Leibniz in the time of the enlightenment, and which underlies so much of scientific and cultural discourse today."

sincere thanks for any edification.

A way to understand it relative to previous work?

I tried working through one of the blog posts on web service generation but found the syntax confusing; there was enough going on that it seemed the post assumed background knowledge of the system that I did not have. However, as far as I could tell, the post was about some macro style metaprogramming, so I could not discern what was novel beyond the syntax as the semantics were unclear. If you are not reinventing the wheel, is there some explanation relative to existing work or terminology of the project? If you are, perhaps some insight how?

I find vague. For example, does multilingual just mean namespaces/ontologies, or something stronger out of statistical nlp? Or, as a stretch, that several programming language styles (logic, contraint, data flow, non-algol-like imperative...) are natively implemented? Does context sensitivity imply dynamic scope, staged computation, constraint based systems, reactive & introspective capabilities, a loose parser, ...?

I cannot tell what is novel and what is more about the choice of features, probably because I cannot tell what any of the features concretely are. The intent may be to be opaque at this point, which is fine. Srikumar is excited due to what he saw, but I have no idea over what strictly going by the provided information. A calculus where operations maintain normal form can be claimed pasigraphic, but what's the point? In terms of programming language semantics or more generally, the software design process, what is meant by pasigraphy being featured in this project, or any of the bullet points listed on the language design page? [Maybe Srikumar can be more specific?]

This discussion was premature, so I'll probably just ask again if/when you guys decide to disclose something I'm more capable of understanding but still don't sufficiently comprehend. It seems a lot of work has been put into the project, so good luck!

Premature indeed.

You may be right that this discussion is premature. Several years back (maybe 3?), Diarmuid gave a demo in Singapore in which I was present. I'll try to recall my impression then, so that at least I can put it behind me until Diarmuid chooses to write/talk/publish more about Protium.

1. Protium is multilingual in the real sense of the word - you can program meaningfully using symbols in any human language. If you glance at the few examples that are on Bruce Axten's blog, you'll see that the heads of terms such as <@DEFVARLIT> consist of combinations of 3-letter instructions - DEF, VAR and LIT in this case. Diarmuid claims that support for such concatenation can be transported meaningfully into any human language. I also felt that its a good idea to let people express programs in their own native language as well. If you believe that language is a tool for thought, supporting world languages can trigger fresh thinking. Code is, in a sense, poetry or literature and every language deserves to have its own body of literature. Protium is the only language that tries to be multilingual as far as I know.

2. I was impressed by the brevity of some of the code I saw. At one point, D showed a fairly complex decision table implemented in under a page of code. Though I didn't understand it line by line, the overall structure was not too difficult to see. I could actually hope to understand it one day. Context sensitivity seemed to be paying off.

3. D's work on HOPL is a truly impressive piece of documentation. If I recall right, that site - with the cross referencing and searching - is run on Protium (my memory is unclear, maybe Bruce Axtens can help clarify). It was clear that D had done his homework :)

No native languages in programming, please.

There is a reason why math is communicated through symbols.

Ok, I'll bite:

Ok, I'll bite:

And programming is just math? If that was the case, I would agree. Given a mathematic, imperative, or functional model of computation, then I think natural language wouldn't be very effective and would look like some ugly form of psuedo-code. However, given a more declarative programming model, why not?

That's not the point of my comment.

I am not against natural language, I am against native language, i.e. the same code looking different according to each person's native language.

If you say 'foo bar' and I say 'bar foo' and we mean the same thing, how are we going to communicate?

So your problem isn't

So your problem isn't symbols being taken from natural language, it's grammar? Funny thing is the mathematicians change their minds too. Sometime in the last week I was talking to a friend who's revising for exams about which operations varying notations for function application are designed to emphasise or make easy.

And an awful lot of the identifiers in the code I write, and the libraries I use, are derived from my native language...

My problem is the 'tower of Babel' situation.

I work in an international setting (including Greeks, French and recently Norwegians), and I have to say that if we used identifiers taken from our native languages (even if written in latin), the situation would be problematic.

I've seen code written in french and I had a great deal of problem parsing the code, so my opinion is that using multiple languages, even if automatic translation is available, is the wrong way to go.

To quote Spiderman, "with

To quote Spiderman, "with power comes great responsibility." To be honest, most languages are already half-way multilingual. Or, at least for languages with alphabets close to english. What's stopping somebody from naming their variables and functions in french, or spanish, or german? In the end, your problem boils down to "if you add that, it will (might?) be misused in my workplace!"

Think about it from the perspective of somebody from another country. Let's say you're working on a project with 4 other people for in-house purposes. You're going to write it in your language, there's no doubt about that. The only choice in the matter is whether you're able to use your language for everything or just for variable/function names.

restrictions lead to success?

maybe doing something which looks natural but isn't that completely free-form and thus impossible to implement?

automatic translation ..

.. so I can read/write "foo bar" and you can read/write "bar foo"?

If it extends to every communication between us, then yes.

Unfortunately, it will not.

For example, imagine a mailing list for a library based on such a would it be possible to exchange comments on pieces of code, if we speak different language?

I don't see using English as a problem. No one has been bothered by it, from what I have seen so far.

Math is communicated through language

... although mathematicians certainly use symbols as shorthand and for manipulation.

For example, consider the Heine-Borel theorem:

For a subset S of Euclidean space Rn, the following two statements are equivalent:

  • S is closed and bounded;
  • S is compact (every open cover of S has a finite subcover).

In a quick sampling of readily-available statements and proofs of H-B, each of the statements had roughly the same language-to-symbol ratio as the above (mostly language, with a symbol or two thrown in to refer to a previously defined entity). There was more variation in the proofs, ranging from roughly half-and-half (statements in language, sprinkled with symbolic illustrations or abbreviation) to almost entirely verbal explanations.

While many mathematical activities are performed using symbols, my experience is that Mathematics is frequently communicated in language. The above (totally unscientific) experiment is consistent with that experience.

I certainly believe that symbols and diagrams have tremendous economy and expressive power. But asking the author of a diagram or line of symbols, "What does that mean?", (again, in my experience) is more likely to produce a burst of language than simply another diagram or line of symbols.

First part of "Master Class"

Okay, here's the link for the first of the two Master Class postings.

Shall have the next posting ready by tomorrow or the day after, God willing.

Kind regards,

Second part of "Master Class"

G'day everyone.

The second half of the Master Class is up for your perusal.

Kind regards,