Heater
Posts: 12090
Joined: Tue Jul 17, 2012 3:02 pm

Re: General language discussion.

Sat May 18, 2019 10:34 am

bensimmo,
Start a topic and keep the challenge going, you don't even need to wrap it up, ...
Oh, I need to wrap it up. I want my life back :)

No, seriously, we had a lot of great challenge entries and it's been fun, but it's a big time sink to get all those languages up and running and testing the solutions.

Well, when I say "all", most were pretty quick and easy to deal with. Even if it required building compiler/interpreter from sources. The big offenders here were:

GNU Smaltalk - The out of the box version with Debian cannot multiply properly.

Squeak - Almost impossible to deal with without a screen. Almost impossible to just run a solution without integrating it to some image file. took ages for Tim to explain how to get that going.

ScriptBAsic - See recent ScriptBasic thread post.

BBC BASIC - Also needs a GUI. Needs extra work to get the result out to a terminal or file.
Get back to other random pointless but interesting languages ...
Quite likely pointless but interesting, I've been hacking away on my own RISC V processor implementation using Scala and the SPinalHDL library. Despite diversions in this forum yesterday I managed to get my SDRAM controller working.
It's here https://github.com/ZiCog/sodor-spinal/b ... r_tb.scala

Anyone into Scala here?

Now that we can synthesize HDL into a working FPGA using a Raspberry Pi maybe it's time for some HDL/logic design challenges.
One can use:

Python: http://www.myhdl.org/
Scala: https://spinalhdl.github.io/SpinalDoc-RTD/index.html
Verilog: http://www.clifford.at/yosys/

Anyone know any other hardware design languages that might work on a Pi?

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 22045
Joined: Sat Jul 30, 2011 7:41 pm

Re: General language discussion.

Sat May 18, 2019 12:42 pm

So, allowed this thread so people discussing languages could discuss languages.

And it still turned a bit nasty in places.

So, what do I do? Start handing out bans to people? Close the threrad and stamp on any others that turn up? Let this one continue and hope that people take heart of any warnings?


Ah, the daily grind of the moderator.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

Heater
Posts: 12090
Joined: Tue Jul 17, 2012 3:02 pm

Re: General language discussion.

Sat May 18, 2019 1:01 pm

I don't know James.

On the one hand I wish people could tone it down a bit and stick to the topic and interesting asides. On the other hand I don't feel that anyone has been egregious. I don't worry about some friendly abuse. Clearly some readers out there are more sensitive.

I vote for optimism, leave open.

tpyo kingg
Posts: 536
Joined: Mon Apr 09, 2018 5:26 pm
Location: N. Finland

MUMPS and SNOBOL4

Sat May 18, 2019 1:36 pm

PhatFil wrote:
Wed May 15, 2019 10:45 pm
Before all this gui nonsense I was mumps aka M systems programmer ...
YottaDB claims to be a drop-in replacement for MUMPS. It has apparently been ported to the Raspberry Pi, or at least one model. It is probably quite fast on "big" hardware like the Raspberry Pi, compared to the orginal systems it ran on.

A long time ago I came close to working with MUMPS. At the time I was doing support programming using several langauges, one of which was SNOBOL4. SNOBOL4's main advantage was pattern matching. It's not terribly fast though, even now, but especially not back then. On quite a few occasions I left things to run over night on larger data sets or more complex tasks. One advantage it had was it was possible to assign parts of a pattern directly to variables, rather similar to the named capture groups recently added to perl.

SNOBOL4 is available for the Raspberry Pi via FreeBSD. I wouldn't recommend SNOBOL4 for anything these days, although FreeBSD seems fine, however. But it is interesting that it is there. Just for fun a few months ago, I recreated a word count program. That in itself is nothing special but it does contain two examples of the way things are written in SNOBOL4:

Code: Select all

        &TRIM   = 1
* a word will be comprised of just letters
        LETTERS = &LCASE
* pattern to find a word and assign it to the variable WORD
        WPAT    = BREAK(LETTERS) SPAN(LETTERS) . WORD
* keep the word counts in the table COUNT
        COUNT   = TABLE()

* read a line and convert it to lower case, goto RESULTS when no more
READ    LINE    = REPLACE(INPUT, &UCASE, &LCASE)        :F(RESULTS)

* isolate words one at a time from the line
NEXT    LINE    WPAT =                                  :F(READ)
* count them as they are found
        COUNT<WORD> = COUNT<WORD> + 1                   :(NEXT)

* convert COUNT to a sorted array named WORDS, skip if no words
RESULTS WORDS = SORT(COUNT, 1)                          :F(EMPTY)

* iterate through the array and print its values
        I = 0
PRINT   I = I + 1
* display each word, hop to the end when out of words
        OUTPUT = WORDS<I,1> '--' WORDS<I,2>             :S(PRINT) F(END)

EMPTY   OUTPUT = "No words."

END
Note the WPAT assignment.

Code: Select all

        WPAT    = BREAK(LETTERS) SPAN(LETTERS) . WORD
That makes the variable WPAT into a pattern which can be applied later, sort of like qr/.../ in perl.
WPAT is applied against the variable LINE in a loop. When it finds a span of letters, precedent by the beginning of a line or a word break, then it automatially assigns the span into the variable WORD. Below is the loop which assigns the span to the variable WORD as it also clears it from LINE. If the pattern fails to find anything then the program jumps back up to the label READ:

Code: Select all

NEXT    LINE    WPAT =                                  :F(READ)
It was also easy to make recursive patterns but there were usually better ways to get things done. It was also possible to write / rewrite functions on the fly and so I investigated briefly some neural net type experiments, but found that RAM and CPU were too limiting. It was much more time effective to focus on fuzzy pattern matching which got reasonably useful results much faster.

ejolson
Posts: 2862
Joined: Tue Mar 18, 2014 11:47 am

Re: MUMPS and SNOBOL4

Sat May 18, 2019 1:49 pm

tpyo kingg wrote:
Sat May 18, 2019 1:36 pm
PhatFil wrote:
Wed May 15, 2019 10:45 pm
Before all this gui nonsense I was mumps aka M systems programmer ...
YottaDB claims to be a drop-in replacement for MUMPS. It has apparently been ported to the Raspberry Pi, or at least one model. It is probably quite fast on "big" hardware like the Raspberry Pi, compared to the orginal systems it ran on.

A long time ago I came close to working with MUMPS. At the time I was doing support programming using several langauges, one of which was SNOBOL4. SNOBOL4's main advantage was pattern matching. It's not terribly fast though, even now, but especially not back then. On quite a few occasions I left things to run over night on larger data sets or more complex tasks. One advantage it had was it was possible to assign parts of a pattern directly to variables, rather similar to the named capture groups recently added to perl.

SNOBOL4 is available for the Raspberry Pi via FreeBSD. I wouldn't recommend SNOBOL4 for anything these days, although FreeBSD seems fine, however. But it is interesting that it is there. Just for fun a few months ago, I recreated a word count program. That in itself is nothing special but it does contain two examples of the way things are written in SNOBOL4:

Code: Select all

        &TRIM   = 1
* a word will be comprised of just letters
        LETTERS = &LCASE
* pattern to find a word and assign it to the variable WORD
        WPAT    = BREAK(LETTERS) SPAN(LETTERS) . WORD
* keep the word counts in the table COUNT
        COUNT   = TABLE()

* read a line and convert it to lower case, goto RESULTS when no more
READ    LINE    = REPLACE(INPUT, &UCASE, &LCASE)        :F(RESULTS)

* isolate words one at a time from the line
NEXT    LINE    WPAT =                                  :F(READ)
* count them as they are found
        COUNT<WORD> = COUNT<WORD> + 1                   :(NEXT)

* convert COUNT to a sorted array named WORDS, skip if no words
RESULTS WORDS = SORT(COUNT, 1)                          :F(EMPTY)

* iterate through the array and print its values
        I = 0
PRINT   I = I + 1
* display each word, hop to the end when out of words
        OUTPUT = WORDS<I,1> '--' WORDS<I,2>             :S(PRINT) F(END)

EMPTY   OUTPUT = "No words."

END
Note the WPAT assignment.

Code: Select all

        WPAT    = BREAK(LETTERS) SPAN(LETTERS) . WORD
That makes the variable WPAT into a pattern which can be applied later, sort of like qr/.../ in perl.
WPAT is applied against the variable LINE in a loop. When it finds a span of letters, precedent by the beginning of a line or a word break, then it automatially assigns the span into the variable WORD. Below is the loop which assigns the span to the variable WORD as it also clears it from LINE. If the pattern fails to find anything then the program jumps back up to the label READ:

Code: Select all

NEXT    LINE    WPAT =                                  :F(READ)
It was also easy to make recursive patterns but there were usually better ways to get things done. It was also possible to write / rewrite functions on the fly and so I investigated briefly some neural net type experiments, but found that RAM and CPU were too limiting. It was much more time effective to focus on fuzzy pattern matching which got reasonably useful results much faster.
Thanks for bringing back some good memories. What seems like yesterday I wrote a compiler in SNOBOL running under IBM VM/CMS. That was sometime during the 80s. It's nice to see it's still around. Now, I wonder where that source code went.

User avatar
ScriptBasic
Posts: 903
Joined: Wed Apr 03, 2019 5:53 pm
Location: Anacortes, WA USA
Contact: Website Twitter

Re: General language discussion.

Sat May 18, 2019 3:56 pm

Thanks Heater for posting the corrected Javascript code for fibo(78). It seems the WHILE loop did an extra iteration. When I converted it I used FOR/NEXT which made it work in ScriptBasic.

I'm ready to put this fibo challenge behind me.
Last edited by ScriptBasic on Sat May 18, 2019 3:58 pm, edited 1 time in total.

User avatar
RichardRussell
Posts: 409
Joined: Thu Jun 21, 2012 10:48 am

Re: General language discussion.

Sat May 18, 2019 3:57 pm

jamesh wrote:
Sat May 18, 2019 12:42 pm
So, what do I do? Start handing out bans to people?
I volunteer to be banned, if it helps.

User avatar
ScriptBasic
Posts: 903
Joined: Wed Apr 03, 2019 5:53 pm
Location: Anacortes, WA USA
Contact: Website Twitter

Re: General language discussion.

Sat May 18, 2019 3:59 pm

:D My hero!

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 22045
Joined: Sat Jul 30, 2011 7:41 pm

Re: General language discussion.

Sat May 18, 2019 4:38 pm

RichardRussell wrote:
Sat May 18, 2019 3:57 pm
jamesh wrote:
Sat May 18, 2019 12:42 pm
So, what do I do? Start handing out bans to people?
I volunteer to be banned, if it helps.
Why am I suddenly reminded of Life of Brian?

https://www.youtube.com/watch?v=4SYc_flMnMQ
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

Heater
Posts: 12090
Joined: Tue Jul 17, 2012 3:02 pm

Re: General language discussion.

Sat May 18, 2019 4:40 pm

No point throwing yourself on the hand grenade to save this motly crew Richard.

Anyway, the Pi needs BBCBasic.

User avatar
ScriptBasic
Posts: 903
Joined: Wed Apr 03, 2019 5:53 pm
Location: Anacortes, WA USA
Contact: Website Twitter

Re: General language discussion.

Sat May 18, 2019 7:11 pm

Mature isn't another name for old.
James wrote: Why am I suddenly reminded of Life of Brian?
I'm jealous that Python has the Monty spin. ScriptBasic needs a Basman super hero. :mrgreen:

hippy
Posts: 5098
Joined: Fri Sep 09, 2011 10:34 pm
Location: UK

Re: General language discussion.

Sun May 19, 2019 11:10 pm

bensimmo wrote:
Sat May 18, 2019 9:44 am
Get back to other random pointless but interesting languages here :-D. Like Bosque?
Interesting indeed, but I'm also leaning towards "pointless". And I'm far from convinced it helps "avoid accidental complexity". Unless it's through making it explicitly complex :o

https://www.microsoft.com/en-us/researc ... ort_v2.pdf

I tend towards a rule of thumb that if something hasn't grabbed me with some 'ooh; that's neat!' impression in the first brief scan through I lose interest, put in the 'looked, not much interested' file. Once languages go away from traditional constructs I'm used to, like "loops", I tend to think life's to short and I'll stick with what I'm familiar with, complexity, avoidable bugs, and all.

User avatar
Gavinmc42
Posts: 2882
Joined: Wed Aug 28, 2013 3:31 am

Re: General language discussion.

Mon May 20, 2019 2:30 am

So, allowed this thread so people discussing languages could discuss languages.
And it still turned a bit nasty in places.
Yep language flaming can do that, but sometimes a view or bias can be changed.
Without debate there is no communication, just preaching to the converted.

My view on Basic has changed, it does have a place, just not yet Pi usable easily as far as I can see?

But there are more choices than ever as the Pi can run most of them.
Some languages have been "improved" so much they need IDE/GUIs and cannot be run without them.

Bosque, goodie a new language, "oh look shiny"
The Bosque programming language is a Microsoft Research project that is investigating language designs for writing code that is simple, obvious, and easy to reason about for both humans and machines. The key design features of the language provide ways to avoid accidental complexity in the development and coding process. The result is improved developer productivity, increased software quality, and enable a range of new compilers and developer tooling experiences.
That all sounds good but it has curly brackets(hard to read for old eyes) and it tells me where I "must" put them :o
Looks like C/C++, bet it only works with Visual Studio?

I'm interested in Prolog at the moment, any "improved" versions that work on Pi's?
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

User avatar
ScriptBasic
Posts: 903
Joined: Wed Apr 03, 2019 5:53 pm
Location: Anacortes, WA USA
Contact: Website Twitter

Re: General language discussion.

Mon May 20, 2019 3:11 am

My view on Basic has changed, it does have a place, 
BASIC is a well understood.syntax. How it's implemented is what distinguishes itself from the rest.

The Python 2 / 3 debate reminds me of the Windows 32 / 64 bit struggle.

Heater
Posts: 12090
Joined: Tue Jul 17, 2012 3:02 pm

Re: General language discussion.

Mon May 20, 2019 4:24 am

Gavinmc42,
Yep language flaming can do that...
Yes. And I'm very proud of the contributors to the "Why Avoid Basic" thread that it managed to run to a 100 pages of reasonable discussion about all kind of languages without turning into a typical gruesome language war flame fest. Well, until an ardent BASIC supporter turned up.
The Bosque programming language is a Microsoft Research project that is investigating language designs for writing code that is simple, obvious, and easy to reason about for both humans and machines. The key design features of the language provide ways to avoid accidental complexity in the development and coding process. The result is improved developer productivity, increased software quality, and enable a range of new compilers and developer tooling experiences.
Wow, aren't those the claims made for every programming language ever devised from FORTRAN, COBOL, ALGOL on wards?

Yet here we are in the chaos and total non-understandability of the modern computing world.
That all sounds good but it has curly brackets(hard to read for old eyes) and it tells me where I "must" put them
That right there is why we can't get consensus on programming languages, discard most of them and make simpler, happier world with just a few good ones. Why people are endlessly inventing new programming languages. And why we have language flame fests.

You can't even get the basic features of a language design going without half the world disliking them. For example, in this case:

1) I love my curly braces. They do an great job of marking out blocks and such. Clearly showing programmer intent. But without the ugliness of verbose delimiteters like BEGIN..END etc. Unless you have a really crappy font they are perfectly readable.

2) I have often suggested that the programming language itself should tell you where to put those braces. Incorrect formatting and use of white space should throw a compiler error. Why? Because whatever formatting style you like others will hate. It makes life much easier to have a consistent formatting on a large code base with multiple programmers. Having the compiler enforce the formatting solves that problem. Stops all that time wasting debate.

ejolson
Posts: 2862
Joined: Tue Mar 18, 2014 11:47 am

Re: General language discussion.

Mon May 20, 2019 4:37 am

Heater wrote:
Mon May 20, 2019 4:24 am
Unless you have a really crappy font they are perfectly readable.
I've been suffering with DejaVu Sans Mono:style=Bold in my xterm for about 5 years because I wanted unicode characters that the traditional bitmapped X fonts like 8x13bold didn't support. The minus sign looks like a hyphen and the braces aren't quite as distinct as they should be. On the bright side l and 1 are distinctive as are O and 0. It also scales up well on a high-resolution display.

Do you have suggestions for an xterm-compatible mono-spaced font with good unicode support?

Heater
Posts: 12090
Joined: Tue Jul 17, 2012 3:02 pm

Re: General language discussion.

Mon May 20, 2019 4:44 am

ScriptBasic,
BASIC is a well understood.syntax. How it's implemented is what distinguishes itself from the rest.
Is it? How can it be? I don't understand how that is even possible

There is no single, definitive, agreed on standard for BASIC syntax or semantics. Like for there is for C, C++ Javascript, Fortran, Ada, others.Therefore there is no way to understand it correctly.

I am constantly told that modern languages that happen to have BASIC in their name are not to be expected to be like the BASIC I knew and loved from the Dartmouth style says. Therefore if you understand BASIC_X that does not mean your programs will be acceptable to BASIC_Y, BASIC_Z etc.

I have seen at least one disagreement on this forum between BASIC proponents as to the behavior of GOTO. I'm sure if I dig under the hood I will find other disagreements on behavior even if the syntax is the same.Therefor I conclude if the guys building BASIC variants can't agree on syntax and semantics there is no hope for us users.

When it comes to "well understood" that implies some kind of common understanding. At least that is the way the phrase is used in scientific/engineering communities. An implementation that does not conform to that common understanding is buggy. Like a new theory in physics that does not fit with old theories or even experimental evidence.

For a "well understood" language syntax, implementations should not distinguish themselves by behaving differently. That is known as a bug.

Whilst any given modern language that happens to have "BASIC" in it's name may well be perfectly fine, be it ScriptBasic, BBCBasic or whatever, there is no "common understanding" in basic land.

What am I missing here?

ejolson
Posts: 2862
Joined: Tue Mar 18, 2014 11:47 am

Re: General language discussion.

Mon May 20, 2019 4:57 am

Heater wrote:
Mon May 20, 2019 4:44 am
What am I missing here?
Incompatibility is an important feature of programming languages designed for use in teaching such as the multiple versions of Basic, Python, Scratch and Pascal.

If a Basic program simply worked without changes, what would a student learn other than cut and paste?

Heater
Posts: 12090
Joined: Tue Jul 17, 2012 3:02 pm

Re: General language discussion.

Mon May 20, 2019 5:12 am

ejolson,
Do you have suggestions for an xterm-compatible mono-spaced font with good unicode support?
No. But here are some suggestions: http://hivelogic.com/articles/top-10-programming-fonts/

What do you mean by good unicode support. As far as I can tell that is impossible in a single font. Who would ever waste his life creating a font trying to include all possible printable unicode?

You can test your inicode support with this:
https://github.com/bits/UTF-8-Unicode-T ... _separated

Aside: To grasp the awesome power of unicode what do you thing this javascript code I created a while back does:

Code: Select all

let ﻝ = {
    ﺍ: function () {
        return ("Hello world!");
    }
}

let msg = ﻝ.ﺍ();
console.log(msg);

ف = (2 + 3) * (3 + 3)

console.log(ف);
𝌛 is futile.

Have fun.

ట ఠ డ ఢ ణ త థ ద ధ న ప ఫ బ భ మ య ర ఱ ల ళ వ శ ష స హ ా ి ీ ు ూ ృ ౄ ె ే ై ొ ో ౌ ్ ౕ ౖ ౠ ౡ ౦ ౧ ౨ ౩ ౪ ౫ ౬ ౭

?

ejolson
Posts: 2862
Joined: Tue Mar 18, 2014 11:47 am

Re: General language discussion.

Mon May 20, 2019 5:26 am

Heater wrote:
Mon May 20, 2019 5:12 am
ejolson,
Do you have suggestions for an xterm-compatible mono-spaced font with good unicode support?
No. But here are some suggestions: http://hivelogic.com/articles/top-10-programming-fonts/

What do you mean by good unicode support. As far as I can tell that is impossible in a single font. Who would ever waste his life creating a font trying to include all possible printable unicode?

You can test your inicode support with this:
https://github.com/bits/UTF-8-Unicode-T ... _separated

Aside: To grasp the awesome power of unicode what do you thing this javascript code I created does:

Code: Select all

let ﻝ = {
    ﺍ: function () {
        return ("Hello world!");
    }
}

let msg = ﻝ.ﺍ();
console.log(msg);

ف = (2 + 3) * (3 + 3)

console.log(ف);
Mostly I wanted Greek and Devanagari alphabets, though the pile of poo character 💩 is equally important. It would appear I am partly responsible for the Unicode support in PCC as seen here.

Luckily, I got busy with something else before completing a set of patches for gcc.
Last edited by ejolson on Mon May 20, 2019 5:34 am, edited 1 time in total.

Heater
Posts: 12090
Joined: Tue Jul 17, 2012 3:02 pm

Re: General language discussion.

Mon May 20, 2019 5:32 am

ejolson,

Wow.

Karatsuba in BASIC. Unicode in C.... You do the wildest things.

Awesome but weird.

Heater
Posts: 12090
Joined: Tue Jul 17, 2012 3:02 pm

Re: General language discussion.

Mon May 20, 2019 5:48 am

ejolson,
Incompatibility is an important feature of programming languages designed for use in teaching
Good point.

What with the emphasis on education in coding for all our children today so that they can have great jobs in the future we should not sugar coat things by giving them a stable consistent environment to work in. That is just not realistic.

Get them to use a different language everyday.

Better still give them the same language but have it change in subtle ways that breaks their code every day. Be sure they have to hand their home work in on time so that they are up all night trying to debug it. Then be sure that when teacher runs it things have changed again and it fails.

The at least the kids will get a clear impression of a coders life and know better if they want to waste their lives pursuing such a pointless career.

Now you have done it. With your pile of poo post people will now be inspired to use huge emoji all over their posts. This place will become hell.

User avatar
bensimmo
Posts: 3950
Joined: Sun Dec 28, 2014 3:02 pm
Location: East Yorkshire

Re: General language discussion.

Mon May 20, 2019 7:52 am

Actually that stable uniform platform is a topic of talk in education.
Some believe they should all have the same setup to use. One designed for teaching and learning, not for making products.

Edit /
If I remeber correctly, there was some chat about it in Hello World magazine
https://helloworld.raspberrypi.org/

It's actually an interesting publication to see what 'education' are actually thinking. (UK mainly)

User avatar
bensimmo
Posts: 3950
Joined: Sun Dec 28, 2014 3:02 pm
Location: East Yorkshire

Re: General language discussion.

Mon May 20, 2019 8:10 am

Gavinmc42 wrote:
Mon May 20, 2019 2:30 am
...,

Bosque, goodie a new language, "oh look shiny"
The Bosque programming language is a Microsoft Research project that is investigating language designs for writing code that is simple, obvious, and easy to reason about for both humans and machines. The key design features of the language provide ways to avoid accidental complexity in the development and coding process. The result is improved developer productivity, increased software quality, and enable a range of new compilers and developer tooling experiences.
That all sounds good but it has curly brackets(hard to read for old eyes) and it tells me where I "must" put them :o
Looks like C/C++, bet it only works with Visual Studio?

I'm interested in Prolog at the moment, any "improved" versions that work on Pi's?
It's open source project
Requirements
In order to build the language the following are needed:
64 bit Operating System
The LTS version of node.js ( According to your OS )
Typescript (install with: npm i typescript -g)


It is interesting they are looking and researching alternative ways which may or may not end up better, more usable
That's computer Science.

jamesh
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 22045
Joined: Sat Jul 30, 2011 7:41 pm

Re: General language discussion.

Mon May 20, 2019 8:11 am

Heater wrote:
Mon May 20, 2019 4:24 am
Gavinmc42,
Yep language flaming can do that...
Yes. And I'm very proud of the contributors to the "Why Avoid Basic" thread that it managed to run to a 100 pages of reasonable discussion about all kind of languages without turning into a typical gruesome language war flame fest. Well, until an ardent BASIC supporter turned up.
Right, this is a classic passive agressive post, I suspect deliberately designed to antagonise and/or bait other posters.

Please don't do it again. And I will be watching out for it.
Principal Software Engineer at Raspberry Pi (Trading) Ltd.
Contrary to popular belief, humorous signatures are allowed. Here's an example...
"My grief counseller just died, luckily, he was so good, I didn't care."

Return to “Other programming languages”