Discussion:
Activity in comp.lang.oberon
(too old to reply)
Lance Schwerdfager
2013-11-30 04:28:49 UTC
Permalink
There doesn't seem to have been any activity in this
newsgroup in 2013 so far.

Are there any Oberon/Component Pascal users still out
there?
Andreas Baumgartner
2013-11-30 11:23:14 UTC
Permalink
Post by Lance Schwerdfager
There doesn't seem to have been any activity in this
newsgroup in 2013 so far.
Are there any Oberon/Component Pascal users still out
there?
I sometimes look into Plugin Oberon for Windows maintained by Emil
Zeller which is installed in one of my laptops. I would like to do more
with it, but there is not much motivation and not much sense to do
things alone and with sparse documentation at hand. Moving to Zonnon
does not seem being a alternative neither. I would rather move to Free
Pascal/Lazarus but i could be more productive with C.

Greets, Andreas Baumgartner
Lance Schwerdfager
2013-12-22 15:10:53 UTC
Permalink
It's true that there is "not much sense to do things alone"
much of the time anymore with the current spate of ideas out
there coupled with the level of complexity we are now at.

Should another fundamental fact be recognized then a whole
new genre of applications would emerge out of the woodwork. One
of these "fundamental facts" might take the form of a new data type
that has as much impact as the binary tree or stack has had. There
must be some out there somewhere.

But it takes genius to recognize fundamentals like that and
such people are few and far between.

Accordingly, being patient while continuing to exercise one's
own imagination seems to be the way to go at the moment.


Lance







On Sat, 30 Nov 2013 12:23:14 +0100, Andreas Baumgartner
Post by Andreas Baumgartner
Post by Lance Schwerdfager
There doesn't seem to have been any activity in this
newsgroup in 2013 so far.
Are there any Oberon/Component Pascal users still out
there?
I sometimes look into Plugin Oberon for Windows maintained by Emil
Zeller which is installed in one of my laptops. I would like to do more
with it, but there is not much motivation and not much sense to do
things alone and with sparse documentation at hand. Moving to Zonnon
does not seem being a alternative neither. I would rather move to Free
Pascal/Lazarus but i could be more productive with C.
Greets, Andreas Baumgartner
Unknown
2014-02-07 12:10:02 UTC
Permalink
It's true that there is "not much sense to do things alone" much of the
time anymore with the current spate of ideas out there coupled with the
level of complexity we are now at.
Should another fundamental fact be recognized then a whole
new genre of applications would emerge out of the woodwork. One of these
"fundamental facts" might take the form of a new data type that has as
much impact as the binary tree or stack has had. There must be some out
there somewhere.
But it takes genius to recognize fundamentals like that and
such people are few and far between.
Accordingly, being patient while continuing to exercise one's
own imagination seems to be the way to go at the moment.
Lance
On Sat, 30 Nov 2013 12:23:14 +0100, Andreas Baumgartner
Post by Andreas Baumgartner
There doesn't seem to have been any activity in this newsgroup in 2013
so far.
Are there any Oberon/Component Pascal users still out there?
I sometimes look into Plugin Oberon for Windows maintained by Emil
Zeller which is installed in one of my laptops. I would like to do more
with it, but there is not much motivation and not much sense to do
things alone and with sparse documentation at hand. Moving to Zonnon
does not seem being a alternative neither. I would rather move to Free
Pascal/Lazarus but i could be more productive with C.
Greets, Andreas Baumgartner
I use Oberon every day: mostly Linux based ETHO, these days; but like
you use your shoes, there's not much to talk about, unless you get
problems.

What I really need is to get back the superb ETHO interface for email
via gmail; but not http-based. ssh...etc. are annoying hurdles.
Z505 Software
2015-09-08 08:18:43 UTC
Permalink
Post by Andreas Baumgartner
I sometimes look into Plugin Oberon for Windows maintained by Emil
Zeller which is installed in one of my laptops. I would like to do more
with it, but there is not much motivation and not much sense to do
things alone and with sparse documentation at hand. Moving to Zonnon
does not seem being a alternative neither. I would rather move to Free
Pascal/Lazarus but i could be more productive with C.
Depends what you mean by more productive with C. The problem with C is there are no strings (reference counted) so you end up writing lots of verbose code just to allocate memory for pchars (pointers to chars). So I don't see how you can possibly be more productive in C since you have to continually worry about allocating memory for strings. It seems that 90 percent of programming today involves some sort of string manipulation, and any language which doesn't have garbage collected strings (or reference counted) isn't going to be productive. The only time strings aren't important, is when you are programming embedded software it seems, where you sometimes only have to deal with strings once in a while on an LCD screen or similar.

I think one of the problems with oberon is it still hasn't gotten strings right. I'm still researching the language (I have used component pascal) but from what I can tell, people end up with kludges in oberon to deal with strings, instead of delphi/fpc reference counted string where you just forget about managing your strings since it is automatically reference counted for you. To deal with pointers to array of chars, or to have to specify fixed length strings of 1024, or 2048 characters (how can you guess and be psychic and know what string size you need up front in all cases?) is a big kludge...

This is discussed here:
https://lists.inf.ethz.ch/pipermail/oberon/2010/005744.html
"Actually, there are several ways how strings are represented."

Hint: bad design warning! more than one way to do things, a million different representations of strings, rather than just one reference counted string like in delphi or fpc.. Everyone uses php, python, delphi, fpc, and ruby these days because it has something called a string! Not a pointer to array of char - let's not go back to living in caves!


https://lists.inf.ethz.ch/pipermail/oberon/2010/005743.html
"If there is no builtin way to handle strings practically, how can one build a custom tool (a type) for this?"

Oberon is difficult to use, in practice!

https://lists.inf.ethz.ch/pipermail/oberon/2010/005751.html
"In fact, the issue is that even if I can build a string type to manipulate strings, it is unusable in practice since no builtin function/procedure can use it"
...
"the impression of beeing lost inside a vicious circle."

"I'm aware I could use POINTER TO ARRAY OF CHAR to pass strings around (*), but then I need to explicitly (de)reference all strings."

Doh! what is this, low level C programming? haven't we learned our lesson .... we are not living in caves any more...

A similar problem existed in standard pascal: strings were 255 chars, and all sorts of work arounds had to be done to make the language usable in the 1990's when strings went beyond 255 characters... So now oberon let's us go beyond 255 characters as array of char, but it isn't really improving the situation much! Delphi got it right, with reference counted string that everyone loves... but Wirth never seemed to really get strings right, I'm afraid to say. Also I find it hard to contact him about this: he doesn't seem to chime in on mailing lists, he's sort fading away into obscurity unfortunately... Whereas in a development community like Ruby or PHP you'll see major developers of the language chiming in on mailing lists and obtaining feedback about their language...

Don't get me wrong, I'm not a fan of php or ruby, but I think Wirth has a different development system where he just writes a book about his language and expects you to follow what the book says - but what about user feedback and developer feedback - what if there are serious design problems in oberon that need to be addressed? It can't be solved by buying a book on oberon that's closed and finished..

Sometimes when I criticize oberon's string problems, I get Oberon patriots (fanboys) who defend the array of char with pride! They say you don't need strings, because arrays of chars work just fine.. This is ignoring the progress that we've made in high level languages: No one would use Delphi if it didn't have a proper reference counted string - turbo pascal started out with 255 character strings, and people hated that - many people left it and used C language instead... Oberon faces a similar problem: strings are serious issue. maybe not quite as bad as 255 pascal limit strings, but almost as bad!

Python is successful for a reason - it has strings! like ruby, php, delphi, and other languages. A lot of work people do involves strings these days! It's as if Niklaus Wirth really only cares about embedded programming maybe? where strings aren't as much of an issue? Component Pascal tries to address the string problem with Dollar sign hacks, AFAIK (is component pascal the next Perl?). It's been a while since I used component pascal, but even it wasn't enjoyable with regards to using strings, even with the added extensions/hacks... Compared to FPC and delphi, component pascal just an academic toy fading away into obscurity like standard pascal...

Understand I'm not completely bashing Oberon entirely here, I'm purely addressing the string problem. Other parts of the language are elegant.

So what you have here, is people are moving to Go language, nimrod, ruby, pyhon, fpc, delphi, and oberon is being left behind. Some would rather use C or java... Java has strings! C++ has strings that are a hack, but it has them. Oberon? has a difficult to use array of char that isn't a useful abstraction... maybe even less useful than standard pascal in some respects. In oberon, it's a vicious circle when using strings (quoted from an oberon user himself!)

So here's hoping Wirth is listening. You can't just develop your language, write a book, and disappear without interacting with developers. Also where is the error reporting system? (bug report: but Dijkstra would prefer the term error). FPC and delphi have something called quality central or bug reporting systems...

Regards.
Z505 Software
Skeptic and critic of programming languages
p.s..... there's more below >>

Dijkstra would be using Haskell? Not oberon?
http://chrisdone.com/posts/dijkstra-haskell-java
Haskell uses == (double equals) for equality.. like C... Wirth don't like that..

Wirth has spoken about functional languages in:
http://www.inf.ethz.ch/personal/wirth/Articles/GoodIdeas_origFig.pdf
It seems Dijkstra in his later years, embraced functional programming, while Wirth is still skeptical of it... (as am I)... also Dijkstra was against OOP while wirth embraces it for parallel processing...

And the unit testing war vs formal methods war:

http://dare.ubvu.vu.nl/bitstream/handle/1871/2633/11173.pdf?sequence=1

http://www.amazon.ca/Science-Computing-Shaping-Discipline/dp/1482217694/ref=sr_1_1?s=books&ie=UTF8&qid=1441699195&sr=1-1&keywords=9781482217698

"In 1996, Hoare, too, wrote about how the problems of computing did not turn out to be what he expected: Ten years ago, researchers into formal methods (and I was the most mistaken among them) predicted that the programming world would embrace with gratitude every assistance promised by formalisation to solve the problems of reliability that arise when programs get large and more safety-critical."102 But while programs grew very large and very critical, they bypassed the point where they could be comfortably managed by formal methods. The problems and failures of software were typically attributable to things like requirements analysis, interaction design, and inadequate management. For Hoare, it turned out that the world just does not suffer significantly from the kind of problem that our research was originally intended to solve."
In 2009, forty years after the publication of his pioneering article, Hoare reanalyzed the verificationist standpoint and wrote that the basic mistake was
to set up proof and testing as opposites, whereas they can both contribute to the reliability of programs."

Wirth has claimed unit testing is the wrong way to go.. Minix creator thinks otherwise.. Hoare thinks they complement each other, testing and verification together.. (that's my view too)

The basic problem is the specification of the program itself, can contain errors, so you have to prove that your specification is correct and complete (which it can't be, unless the application is trivial), which ends up turning into something like Godel's incompleteness theorem...
How do you even prove that the OK button and CANCEL button are in the correct location? What about the artistic properties of a program that can never be proven?

How do prove a GUI to be correct (graphical user interface)...
Only trivial programs can be proven correct, unfortunately, such as a command line program that takes text in, and puts text out - GUI programs become much harder to prove, plus you don't even know what your end users want until you have the end users test the application and find out that this feature didn't work very good (how can you prove a feature to be correct, if they are subjective, such as trying to prove whether Photoshop's spray can feature is "correct" - who is to say what a proper spray can paint should do - how many exact dots can you prove it to? many different spray cans would work in photoshop, there isn't one correct dot pattern to use for spray cans. So you end up with something very much like godel's incompleteness theorem.

How can you prove everything about your application, especially graphics?
How do you prove that The Sims or Mario Brothers game is correct? who says it's correct? you can't make a game correct - it's a game - you can only prove trivial parts of the system, not its entire artistic creation as a whole. It's like trying to prove that a house is correct. Who is to say that a house is correct when it is blue in color an with stucco compared to one with bricks? is a fireplace correct? how do you address correctness when it comes to engineering, which unfortunately software is.. (it's not 100 percent math, some of it is GUI art, and approximations that aren't provable)
August Karlstrom
2015-09-08 13:58:19 UTC
Permalink
Post by Z505 Software
I think one of the problems with oberon is it still hasn't gotten
strings right. I'm still researching the language (I have used
component pascal) but from what I can tell, people end up with
kludges in oberon to deal with strings, instead of delphi/fpc
reference counted string where you just forget about managing your
strings since it is automatically reference counted for you.
As far as I understand, Oberon is designed to be a high-level language
which is still close to the hardware. This means that there are few
hidden costs associated with its operations and the memory usage is
transparent. If you introduce a "real" string type, memory needs to be
allocated behind the scene. Unless the CHAR type is removed we will also
then have two ways to represent character sequences which makes the
language less orthogonal.
Post by Z505 Software
To deal with pointers to array of chars, or to have to specify fixed
length strings of 1024, or 2048 characters (how can you guess and be
psychic and know what string size you need up front in all cases?) is
a big kludge...
In some cases this is true.
Post by Z505 Software
Oberon is difficult to use, in practice!
Please, exemplify!
Post by Z505 Software
used C language instead... Oberon faces a similar problem: strings
are serious issue. maybe not quite as bad as 255 pascal limit
strings, but almost as bad!
There is no length limit of strings in the Oberon language specification.


-- August
y***@z505.com
2015-09-08 18:18:29 UTC
Permalink
Post by August Karlstrom
As far as I understand, Oberon is designed to be a high-level language
which is still close to the hardware.
But so is FPC and nimrod... and go language, and they have automatic strings.

In the SYSTEM units where you are doing unsafe programming, you could always turn off your automatic string (just don't use it) and use pointer to chars... or arrays of chars or pointers to arrays of chars...

Why can't a system language be high level, but have low level options in system/unsafe units?

People have written operating systems in nimrod and fpc (freepascal). And yet fpc and nimrod have a proper string abstraction available which is automatically taken care of for you (reference counted or garbage collected).

Go Language I am still researching - I am not sure how their string works, but I'm certain it's not as pathetic as using ARRAY OF CHAR (1024) or POINTER TO ARRAY OF CHAR. We aren't living in a cave any more! Fire has been invented!

Yes you can just write a library - C++ does this - but that requires OPERATOR OVERLOADING and other kludges. My previous emails sent to this group explained with direct quotations from other people "vicious circle" and "impossible to do in practice" because the strings need proper operators, you can't just make a string a record or an object and expect it to work without hacks. So in fpc/delphi they give you the string abstraction instead of designating it over to a module (library).
Post by August Karlstrom
If you introduce a "real" string type, memory needs to be
allocated behind the scene. Unless the CHAR type is removed we will also
then have two ways to represent character sequences which makes the
language less orthogonal.
Well I look to see how Go Language does it..

Remember: not everything under the sun can be made perfect. Einstein says simple, but not simpler - Oberon as it stands is violating this rule. It is in the simpler stage, and it needs to be slightly more than that.
Post by August Karlstrom
In some cases this is true.
Post by Z505 Software
Oberon is difficult to use, in practice!
Please, exemplify!
That's taken out of context, you should read my quotes from those other oberon users in my previous post... I gave links to mailing list posts where people literally say oberon has difficult if not impossible to implement a useable string abstraction that works in the "real world " (Dijkstra hates the real world... rolling in his grave).
Post by August Karlstrom
There is no length limit of strings in the Oberon language specification.
I realize this, I was saying it is almost as bad as standard pascal ... Absolutely no one would use delphi or fpc if they demanded you knew your string length up front before programming, or if you had to use pointers to array of char - it just isn't possible to do real world programming these days without a string! An abstract string!
Again we aren't living in caves any more.

Regards,
Z505 Software
Skeptic and critic of programming languages
Romiras
2015-09-09 09:02:40 UTC
Permalink
Post by y***@z505.com
Post by August Karlstrom
If you introduce a "real" string type, memory needs to be
allocated behind the scene. Unless the CHAR type is removed we will also
then have two ways to represent character sequences which makes the
language less orthogonal.
Well I look to see how Go Language does it..
"Characters" are more complex inside text. There are control points which doesn't have graphical representation and many others too. There are "letters" which composed of several code points. This complexity should be in library, not built into language. Yet programming language should provide access to some primitives to allow work with text in library.

Defining CHAR in language means artificially limiting big Unicode table to some finite number to cover all code points in Unicode. For example, Component Pascal limits CHAR by 65536 code points which covers only Basic Multilingual Plane (BMP).
What can you do to represent Egyptian hieroglyphs which not included in BMP? Should we have possibility to switch between different Unicode planes to allow that?
We see CHAR is quite simple abstraction but not enough for representation of all possible values.

Additionally, you can look into Component Pascal language. It has string concatenation with "+".
Post by y***@z505.com
Go source code is always UTF-8.
A string holds arbitrary bytes.
A string literal, absent byte-level escapes, always holds valid UTF-8 sequences.
Those sequences represent Unicode code points, called runes.
No guarantee is made in Go that characters in strings are normalized.
http://blog.golang.org/strings
Pascal J. Bourguignon
2015-09-09 15:53:33 UTC
Permalink
Post by Romiras
Post by y***@z505.com
Post by August Karlstrom
If you introduce a "real" string type, memory needs to be
allocated behind the scene. Unless the CHAR type is removed we will also
then have two ways to represent character sequences which makes the
language less orthogonal.
Well I look to see how Go Language does it..
"Characters" are more complex inside text. There are control points
which doesn't have graphical representation and many others too. There
are "letters" which composed of several code points. This complexity
should be in library, not built into language. Yet programming
language should provide access to some primitives to allow work with
text in library.
Defining CHAR in language means artificially limiting big Unicode
table to some finite number to cover all code points in Unicode. For
example, Component Pascal limits CHAR by 65536 code points which
covers only Basic Multilingual Plane (BMP).
What can you do to represent Egyptian hieroglyphs which not included
in BMP? Should we have possibility to switch between different Unicode
planes to allow that?
We see CHAR is quite simple abstraction but not enough for representation of all possible values.
Unless the type is not artificially restricted by the specification of
the language. In Common Lisp, BASE-CHAR must contain all the printable
charcters found in the ASCII character set, and CHARACTER may contain
more characters. There's an injection between CHARACTER and cardinals
less than CHAR-CODE-LIMIT given by the functions CHAR-CODE and
CODE-CHAR.

But of course, this fails with unicode composed characters; CL
implementations don't coalesce composed code-points into a single
character. Nothing in the standard prevents them to do so, however;
this would only give a CHAR-CODE-LIMIT well into the bignums.
Post by Romiras
Additionally, you can look into Component Pascal language. It has
string concatenation with "+".
Don't use + for non-commutative groups!!!
Post by Romiras
Post by y***@z505.com
Go source code is always UTF-8.
A string holds arbitrary bytes.
A string literal, absent byte-level escapes, always holds valid UTF-8 sequences.
Those sequences represent Unicode code points, called runes.
No guarantee is made in Go that characters in strings are normalized.
http://blog.golang.org/strings
This is not a good abstraction IMO.
It's not an abstraction at all, they
just dump all the UTF-8 bytes on you.

I would definitely want a character abstraction, and indeed, this means
that a single character might have to be encoded with several unicode
code-points, and expanded to even more UTF-8 bytes, when doing I/O or
conversion to octet vectors.





In any case, this clearly demonstrate that nowdays, characters and
strings just cannot be defined by the language (unicode version 8 is
just released, rendering all the languages who specified unicode 7
obsolete!), but must be defined in libraries.

For literals, in Common Lisp it's trivial to have the library provide a
reader macro; for other programming language, specifying the hook, and
being able to compile and run the string library inside the compiler to
be able to parse programs might seem like an insurmontable problem, but
it has been solved since 1959…
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
Unknown
2015-11-06 23:47:55 UTC
Permalink
Post by Romiras
Post by y***@z505.com
If you introduce a "real" string type, memory needs to be allocated
behind the scene. Unless the CHAR type is removed we will also then
have two ways to represent character sequences which makes the
language less orthogonal.
Well I look to see how Go Language does it..
"Characters" are more complex inside text. There are control points
which doesn't have graphical representation and many others too. There
are "letters" which composed of several code points. This complexity
should be in library, not built into language. Yet programming language
should provide access to some primitives to allow work with text in
library.
Defining CHAR in language means artificially limiting big Unicode table
to some finite number to cover all code points in Unicode. For example,
Component Pascal limits CHAR by 65536 code points which covers only
Basic Multilingual Plane (BMP). What can you do to represent Egyptian
hieroglyphs which not included in BMP? Should we have possibility to
switch between different Unicode planes to allow that? We see CHAR is
quite simple abstraction but not enough for representation of all
possible values.
There is no "all possible values".
Recently even some competent posters [apparent emacs users] post perfect
ASCII, except their char(singleQuote) is 3 bytes!!
Because they don't know that: I call it a virus.
Once you go out of single-bytes, there's no solution to the Tower of
Babel, and you are victim of all the format-tool-peddlars.

I fetch text normally with a text-only 'browser' lynx or links;
but when there's <math's formulars> included you're screwed: a victim
of vendor lockin.
Pascal J. Bourguignon
2015-09-08 14:48:07 UTC
Permalink
Post by Z505 Software
Don't get me wrong, I'm not a fan of php or ruby, but I think Wirth
has a different development system where he just writes a book about
his language and expects you to follow what the book says - but what
about user feedback and developer feedback - what if there are serious
design problems in oberon that need to be addressed? It can't be
solved by buying a book on oberon that's closed and finished..
Pr. Niklaus Wirth has been retired for 16 years.
https://en.wikipedia.org/wiki/Niklaus_Wirth
Perhaps you'll get support when you die (assumedly after him) and rejoin
him in Paradise.
Post by Z505 Software
Sometimes when I criticize oberon's string problems, I get Oberon
patriots (fanboys) who defend the array of char with pride! They say
you don't need strings, because arrays of chars work just fine..
Don't they? In Common Lisp too string is just a vector or character.
But since vector and arrays in CL can have a fill pointer, and can be
adjustable (and obviously, are memory managed with a garbage collector in
general), they are not a problem but quite practical and benefiting of a
large collection of standard functions processing vectors and arrays in
addition to the functions specific to strings.


From what I can see, the problem is not with strings, but with open
arrays that seem to be restricted in Oberon-2 to arrays or records
elements.
Post by Z505 Software
It's as if Niklaus Wirth really only cares about embedded
programming maybe? where strings aren't as much of an issue?
Indeed, Modula-2 and Oberon are designed as system programming
languages; when you write kernels, you don't need that much string
processing.


My understanding is that he considered that this problem should be
relegated to libraries. You see that in Objective-C too, where the type
of @"string literals" can be configured, and is a normal Objective-C
class. Of course, frameworks like Cocoa will provide a default
Objective-C class for the strings, but this is definitely not something
provided by the language. The language only provides the syntactic
suggar, and a hook to the library object to instantiate literals.
Post by Z505 Software
So what you have here, is people are moving to Go language, nimrod,
ruby, pyhon, fpc, delphi, and oberon is being left behind. Some would
rather use C or java...
Java has strings!
Which are a library class.
Post by Z505 Software
C++ has strings that are a hack,
A library class.
Post by Z505 Software
Oberon?
Write a fucking library!
Post by Z505 Software
So here's hoping Wirth is listening.
He's 81 years old and has been retired for 16 years!
Let the poor man rest, and start working on a good string library!
Post by Z505 Software
Also where is the error reporting system?
I could agree there, but since no other language than Common Lisp has a
really satisfying system I don't have great expectations (and even, the
specifications of the conditions reported by the CL language and
standard library are greatly deficient).

But again, foremost, a good error reporting system is also something
that can be added mostly after the fact. This was the case for Common
Lisp (and explains the standarization work that would remain to do
specify the conditions of the pre-existing specified code).

And this was the case for C++ and Objective-C.

Notably taking again the example of Objective-C, adding just some
syntactic suggar and hooking it to a library let you implement the error
reporting and handling system as you want in your library. As long as
your language supports threading or coroutines, I would expect no
difficulties implementing a good error handling system as a library.
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
y***@z505.com
2015-09-08 18:51:09 UTC
Permalink
Post by Pascal J. Bourguignon
Pr. Niklaus Wirth has been retired for 16 years.
https://en.wikipedia.org/wiki/Niklaus_Wirth
Perhaps you'll get support when you die (assumedly after him) and rejoin
him in Paradise.
He is still releasing stuff in 2015. He retired from education, not from programming as a hobby!

Retiring doesn't mean you stop programming - it means you stop education system and have more time for programming!

If you look at his website, he is still posting stuff as of 2013, 2015... Or someone is posting stuff to his website, if it is not him - he has recent pdf files he has posted.
Post by Pascal J. Bourguignon
Don't they? In Common Lisp too string is just a vector or character.
But since vector and arrays in CL can have a fill pointer, and can be
adjustable (and obviously, are memory managed with a garbage collector in
general), they are not a problem but quite practical and benefiting of a
large collection of standard functions processing vectors and arrays in
addition to the functions specific to strings.
I'll look into it. However, lisp is "the most intelligent way to misuse a computer".
Post by Pascal J. Bourguignon
From what I can see, the problem is not with strings, but with open
arrays that seem to be restricted in Oberon-2 to arrays or records
elements.
Maybe, but, this is sort of like arguing that we don't need a BOOLEAN type (like when C came out) because boolean is not really that useful of an abstraction. We can just use 1 and 0. Why bother implementing a proper boolean into the language when you can make the language "simpler" and just use 1 and 0? That reduces the need for any compiler complexity. Boolean was not introduced until C99. Simple, but not simpler?
Post by Pascal J. Bourguignon
Indeed, Modula-2 and Oberon are designed as system programming
languages; when you write kernels, you don't need that much string
processing.
Uhm, FPC and Nimrod have strings, and you can write operating systems in freepascal and nimrod.. so... this argument just doesn't hold up. Also Go language is a systems language...
Post by Pascal J. Bourguignon
My understanding is that he considered that this problem should be
relegated to libraries.
Possibly, but in C++ you have operator overloading kludges to get everything working properly and conveniently (the theory of convenience).

This idea that everything should be a library is a bit like "everythign is an object" in java or ruby - then you have people basically working around the object system becuase they don't want everything to be an object.

In unix, "everything is a file" attitude has also gotten people into trouble. Instead of using the relational model, people use files for everything...

If everything should be a library, why not relegate booleans into a library?

MODULE booleans;

TRUE = 1;
FALSE = 0;

END;

Then you have to put the booleans module in your program each time you want to use a boolean... Simple, but not simpler?
Post by Pascal J. Bourguignon
You see that in Objective-C too, where the type
class. Of course, frameworks like Cocoa will provide a default
Objective-C class for the strings, but this is definitely not something
provided by the language.
I'll look into it, I'm not familiar with Objective C as much..
What does it require with regards to operator overloading?
Post by Pascal J. Bourguignon
Post by Z505 Software
Java has strings!
Which are a library class.
I think it is much more than a library class if somehow they have operator overloading working

...

how can you concatenate strings without operator overloading.. or some compiler magic in place..

You can't just write a library without some tricks (i.e. C++ hacks)

Again this was discussed on the mailing lists as quoted in my first post..
"a vicious circle" is what someone goes through when trying to write a library for oberon strings... you end up trying to fight the type system and then you end up with something like Plain C where instead of an abstract string type you have a pchar or pointer to char with Concat() functions instead of fpc/delphi style abstract strings.. No one wants to use Concat() when we can go

var
s: string;
begin
s := 'anything';
s := s + s + 'more stuff';
end.

If you implement a string as a record, you end up needing operator overloading on the record (object) like in C++ so you can concatenate the string that really isn't a string but is just an object/class...
Post by Pascal J. Bourguignon
Post by Z505 Software
C++ has strings that are a hack,
A library class.
No kidding - but it uses compiler tricks, operator overloading, you don't just write a plain C library with Concat() functions.. It requires TRICKS. TRICKS ARE BAD.
Post by Pascal J. Bourguignon
Post by Z505 Software
Oberon?
Write a fucking library!
You obviously failed to read my first post to this group, which showed PEOPLE already HAVE tried to write a string library for oberon, and failed miserably.

"vicious circle" is what people end up in.. see my original post to this group!

Simple, but not simpler. You're simple solution is to write a library. This is equivalent to saying that there is no need for a built in boolean, just write a library!

TRUE = 1;
FALSE = 0;
Post by Pascal J. Bourguignon
Post by Z505 Software
So here's hoping Wirth is listening.
He's 81 years old and has been retired for 16 years!
Let the poor man rest, and start working on a good string library!
No, Wirth is still releasing PDF files on his website as of 2015, unless someone is hacking into his web server and posing as him.. his children, or his old students... He retired from TEACHING and working at an institution as far as I know, and is still programming.
Post by Pascal J. Bourguignon
I could agree there, but since no other language than Common Lisp has a
really satisfying system I don't have great expectations (and even, the
specifications of the conditions reported by the CL language and
standard library are greatly deficient).
But again, foremost, a good error reporting system is also something
that can be added mostly after the fact.
I meant a bug reporting system (website) where people can report errors in the compilers, like FPC has... But the exceptions versus error debate is also interesting...

I have some articles on this very subject. Exceptions are like Intraprocedural gotos, one of my biggest problems with delphi/fpc are the exception fanboys who don't have any critical thinking skills whatsoever.
Post by Pascal J. Bourguignon
I would expect no
difficulties implementing a good error handling system as a library.
Go Language has an interesting approach... they don't use exceptions but have errors as a separate function result. This may open up a can of worms, or it may be elegant, I'm still researching this.

See also:

http://z505.com/cgi-bin/qkcont/qkcont.cgi?p=Improve-or-Ditch-The-Rude-Exceptions

http://z505.com/cgi-bin/qkcont/qkcont.cgi?p=Suggestion-for-Modern-Pascal-Error-Contracts

http://z505.com/cgi-bin/qkcont/qkcont.cgi?p=Try-Finally-Is-a-GOTO-That-Is-Too-Limited

As for just writing a library to solve all your problems.. I just think this leads to more problems than it solves sometimes... LISP means everything about the language can be redefined with libraries, and then you have no language at all - lisp is left open to the creative mind, with all sorts of people reinventing DSL's (domain specific languages) inside of lisp, redefining lisp to do whatever you want. Sure this is powerful - but it is a double edged sword. Dijkstra was critical of lisp precisely because everything could be redefined, there was no lisp! It was open to anybody's interpretation. Powerful, but a double edged sword.

Saying "write a damn library" is easier said than done, and when you actually write the library - with a simple language like oberon - you end up needing something more than oberon. You end up needing some kludge like C++ to get strings working as a library, or something like component pascal which has a dollar sign hack in it to deal with strings (as far as I remember). I tried component pascal, they thought they solved the string problem - they didn't. They were a pain to work with.

Oberon is NOT immune to criticism just because it came from switzerland.

N. Wirth is NOT immune to criticism either, it doesn't matter if he is 95 or 115 years old... Dijkstra is not immune to criticism either! one can still improve the system. Wirth is still posting articles to his website in 2015, he's not retired from programming, he's retired as a teacher. Retired as a paid job position. But not retired from hobby.

Regards,
Z505 Software
There is a "Z" in Z505, just as there is a "Z" in switzerland.
Critic and Skeptic of programming languages
Pascal J. Bourguignon
2015-09-08 21:04:10 UTC
Permalink
Post by y***@z505.com
If everything should be a library, why not relegate booleans into a library?
MODULE booleans;
TRUE = 1;
FALSE = 0;
END;
Then you have to put the booleans module in your program each time you
want to use a boolean... Simple, but not simpler?
Definitely. In lisp either there's no boolean type. (In Common Lisp,
there's a boolean type defined in the standard library, it's really not
that useful).

But more generally, anything you will include in a language will suck.
Instead, include tools to include things in the language.

For example:

C doesn't have I/O primitives. Pascal has I/O primitives.

Therefore Pascal sucks at I/O, C doesn't.


C doesn't have strings. Pascal has strings.

Therefore Pascal sucks at strings, C doesn't.


Look at what C has, this is what sucks.

C has char short int long. That sucks: you never know what size they
are, you can't write a portable program using them.

Instead, define a language without types; define a language that let you
define types.


Lisp is great, because it recognize this. Therefore, (while it provides
some standard stuff), it uses a data syntax for the source code, and let
you write your own language with macros, so you can desuckify it as much
as you want, in your libraries.
Post by y***@z505.com
Post by Pascal J. Bourguignon
You see that in Objective-C too, where the type
class. Of course, frameworks like Cocoa will provide a default
Objective-C class for the strings, but this is definitely not something
provided by the language.
I'll look into it, I'm not familiar with Objective C as much..
What does it require with regards to operator overloading?
There's no need for operator overloading since it's basically a
Smalltalk Object System grafted on C.
Post by y***@z505.com
Post by Pascal J. Bourguignon
Post by Z505 Software
Java has strings!
Which are a library class.
I think it is much more than a library class if somehow they have operator overloading working
...
how can you concatenate strings without operator overloading.. or some compiler magic in place..
You can't just write a library without some tricks (i.e. C++ hacks)
Syntactic sugar may be wanted in those languages because they're not
lisp. If they were lisp, using a uniform data syntax for source code,
and using the same form for used defined operators than for library
operators, there wouldn't be a need for that.
Post by y***@z505.com
Again this was discussed on the mailing lists as quoted in my first post..
"a vicious circle" is what someone goes through when trying to write a
library for oberon strings... you end up trying to fight the type
system and then you end up with something like Plain C where instead
of an abstract string type you have a pchar or pointer to char with
Concat() functions instead of fpc/delphi style abstract strings.. No
one wants to use Concat() when we can go
Why not?

(concat "abc" "def")
or:
(! "abc" "def")

is not worse than:

(plus 123 456)
or:
(+ 123 567)
Post by y***@z505.com
var
s: string;
begin
s := 'anything';
s := s + s + 'more stuff';
end.
Don't use + for something that is not a commutative group!
Post by y***@z505.com
If you implement a string as a record, you end up needing operator
overloading on the record (object) like in C++ so you can concatenate
the string that really isn't a string but is just an object/class...
Yes. Arguing that a language requires syntactic sugar to make it usable
is a valid criticism. Instead try lisp.
Post by y***@z505.com
You obviously failed to read my first post to this group, which showed
PEOPLE already HAVE tried to write a string library for oberon, and
failed miserably.
Ok.
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
August Karlstrom
2015-09-09 08:32:10 UTC
Permalink
Post by y***@z505.com
Why bother implementing a proper boolean into the language when you
can make the language "simpler" and just use 1 and 0?
Because we don't want to allow nonsensical expressions like (x = 1) + 2.


-- August
Pascal J. Bourguignon
2015-09-09 15:41:00 UTC
Permalink
Post by August Karlstrom
Post by y***@z505.com
Why bother implementing a proper boolean into the language when you
can make the language "simpler" and just use 1 and 0?
Because we don't want to allow nonsensical expressions like (x = 1) + 2.
You don't prevent it, you just make it more complex to write. And it may
not be nonsensical in the proper context.

PROCEDURE boolean_to_bit(x:BOOLEAN):INTEGER;
BEGIN
IF x THEN
RETURN 1
ELSE
RETURN 0
END
END boolean_to_bit;

and now we can write:

boolean_to_bit(x=1)+2
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
c***@gmail.com
2015-09-09 22:42:49 UTC
Permalink
Post by Pascal J. Bourguignon
boolean_to_bit(x=1)+2
No you don't. You should write:

SYSTEM.VAL(INTEGER, x = 1) + 2

1. It is efficient (no additional code is generated)
2. It is clear to the reader that it is implementation dependent / non-portable

Regards,
Chris Burrows
CFB Software
http://www.astrobe.com
Pascal J. Bourguignon
2015-09-09 23:25:31 UTC
Permalink
Post by c***@gmail.com
Post by Pascal J. Bourguignon
boolean_to_bit(x=1)+2
SYSTEM.VAL(INTEGER, x = 1) + 2
1. It is efficient (no additional code is generated)
2. It is clear to the reader that it is implementation dependent / non-portable
Therefore my function was better, because it made clear to the reader
what the semantics of the expression are, and that it is independent of
the importation and perfectly portable.
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
August Karlstrom
2015-09-10 04:43:43 UTC
Permalink
Post by c***@gmail.com
Post by Pascal J. Bourguignon
boolean_to_bit(x=1)+2
SYSTEM.VAL(INTEGER, x = 1) + 2
1. It is efficient (no additional code is generated)
2. It is clear to the reader that it is implementation dependent / non-portable
In Oberon-07/15 we can express it as ORD(x = 1) + 2.


-- August
c***@gmail.com
2015-09-10 08:39:05 UTC
Permalink
Post by August Karlstrom
Post by c***@gmail.com
Post by Pascal J. Bourguignon
boolean_to_bit(x=1)+2
SYSTEM.VAL(INTEGER, x = 1) + 2
1. It is efficient (no additional code is generated)
2. It is clear to the reader that it is implementation dependent / non-Yes - indeed. That is a better choice because SYSTEM.VAL is actually a language extension so it may not be present in all implementations. Having said that, It portable
In Oberon-07/15 we can express it as ORD(x = 1) + 2.
is in the FPGA RISC5 compiler and we have implemented it in the ARM7, ARM Cortex-M3 and Cortex-M4 compilers.

Chris
c***@gmail.com
2015-09-10 08:42:12 UTC
Permalink
Post by August Karlstrom
Post by c***@gmail.com
Post by Pascal J. Bourguignon
boolean_to_bit(x=1)+2
SYSTEM.VAL(INTEGER, x = 1) + 2
1. It is efficient (no additional code is generated)
2. It is clear to the reader that it is implementation dependent / non-portable
In Oberon-07/15 we can express it as ORD(x = 1) + 2.
Yes - indeed. Good point. That is a better choice because SYSTEM.VAL is actually a language extension so it may not be present in all implementations. Having said that, it is in the FPGA RISC5 compiler and we have implemented it in the ARM7, ARM Cortex-M3 and Cortex-M4 compilers as it can be very useful for writing low-level drivers.

Chris
Diego Sardina
2015-09-09 18:00:19 UTC
Permalink
Post by y***@z505.com
You obviously failed to read my first post to this group, which showed
PEOPLE already HAVE tried to write a string library for oberon, and
failed miserably.
Your strength points are some posts written by a programmer that claims
himself *an amateur programmer* and you firmly assert that people have
failed to write a string library in Oberon. Are you really serious?

If you are not able to write a string library for Oberon, I invite you
to revise your programming skills, especially in data structures (there
are tons of available books).
Post by y***@z505.com
Oberon is NOT immune to criticism just because it came from switzerland.
You are right, but Oberon's issues are not the ones you are talking about,
they are more profound than your non-existant problem of strings.

You should talk less and program more to acquire experience, especially
in large software projects. Maybe one day you can grasp what Oberon is.
Post by y***@z505.com
N. Wirth is NOT immune to criticism either, it doesn't matter if he is
95 or 115 years old...
Wirth holds an experience that today no programmer is able to reach. He
has a depth knowledge of computer architectures, has built and programmed
them, has programmed operating systems for very constrained systems and
gained an outstanding experience in language design.

Everytime I write to Prof. Wirth, he raises attention to some very
obscure problems.

Maybe Wirth deserves some criticisms, but not from you.

---
Diego Sardina
y***@z505.com
2016-02-22 01:41:19 UTC
Permalink
Post by Diego Sardina
Your strength points are some posts written by a programmer that claims
himself *an amateur programmer* and you firmly assert that people have
failed to write a string library in Oberon. Are you really serious?
If you are not able to write a string library for Oberon, I invite you
to revise your programming skills, especially in data structures (there
are tons of available books).
You can write a string library for standard pascal if you want. In standard pascal you would simply add a bunch of procedures to the bottom of your program that dealt with strings. Each procedure in a pascal program was like a little module you wrote, and your little procedure could have sub procedures inside it (closures). However this proved to be painful. i.e. yes you could even write string routines in Standard pascal if you really had to, almost a library.

The problem becomes when you end up writing more and more kludges to deal with a language that is circumscribed, as discussed in Why Pascal Is Not My Favorite Programming Language, the infamous. Or famous, nowadays.

Oberon suffers from the same problems. You try writing string libraries and you end up with kludges, because something like GoLang's built in string is superior. You say I quote an amateur programmer? Here's a more respectable non amateur programmer who agrees with me on strings: Eberon. That's not his name. That's what he implemented.

https://github.com/vladfolts/oberonjs/wiki/Eberon-Strings

I am also the inventor of CapString, and CapArray, a string which I implemented as a library for Freepascal (using a RECORD). This proved the concept, but it showed us that CapString was definitely useless as a library. Becuase without operator overloading or without building it as a real built in string for freepascal, it was just too arcane to work with.

That was long ago back in 2007 or earlier.

I've written a f*cking string library myself, so watch who you are arguing with. I invented a string, called capstring, which golang stole and implemented in their Cap() on slice.

http://z505.com/cgi-bin/qkcont/qkcont.cgi?p=Capstring-Is-A-String-That-Grows-In-Chunks

Or search google for

"Capstring Is A String That Grows In Chunks"

You used a capstring similar to how you would concat strings in oberon, it was an FPC record implementation rather than a built in type.

Regarding the Amateur programmer... really... he's a real world programmer that probably abandoned oberon long ago because it doesn't have strings... Less amateur than beating a dead horse, like many oberon programmers do. That amateur programmer is street smart. He may not be a professional programmer, but he's far more street smart than most oberon programmers.

I coin a new term "street smart programmer" or "street programmer". The type of guy who actually deal with real world problems, not just academic obscurities.

Even Wojtek, long ago, commented on the string problem in oberon. I've discussed this in my other posts. Wojtek, is a real world programmer, who is also complaining about the USB issue with OberonStation and other such academic toys that still use serial, due to purism, even though USB is millions of times faster for real world problems.

It all boils down to academic obscurists, vs real world street smart programmers. I'm a mix of the two.
y***@z505.com
2016-02-22 01:47:58 UTC
Permalink
Post by Diego Sardina
You should talk less and program more to acquire experience, especially
in large software projects. Maybe one day you can grasp what Oberon is.
I am the inventor of PasWiki, Simple Wiki, CapString (a string library written in freepascal), Powtils (a cgi bin framework for freepascal), CapArray (which GoLang now uses, on their slices, and is a cap() call). I have also written the first online FPC web compiler known as Compile Studio which allowed one to compile web programs on a web server using a web browser.

What code have you written in your life? Please post your projects.

Oh yeah, I also invented GoLang's error system.

http://z505.com/cgi-bin/qkcont/qkcont.cgi?p=Suggestion-for-Modern-Pascal-Error-Contracts

What have you written? Have you ever written a string library? I have, for freepascal, it's called CapString.

have you ever invented an error system that solves the Exception issue? I have.

Please post your code and projects.
In fact I wrote an article on this before "Respond to a flame with code".

That was on a wiki written in freepascal, no php. Have you written anything in Oberon that is live right now that I can see or any shareware projects? Or any open source stuff that's of any use...

I've written lots of code, but I also like to discuss issues intelligent, which requires replies that are not terse and one liners. Deal with it.
Unknown
2016-02-25 03:59:20 UTC
Permalink
Post by y***@z505.com
Post by Diego Sardina
You should talk less and program more to acquire experience, especially
in large software projects. Maybe one day you can grasp what Oberon is.
I am the inventor of PasWiki, Simple Wiki, CapString (a string library
written in freepascal), Powtils (a cgi bin framework for freepascal),
CapArray (which GoLang now uses, on their slices, and is a cap() call).
I have also written the first online FPC web compiler known as Compile
Studio which allowed one to compile web programs on a web server using a
web browser.
What code have you written in your life? Please post your projects.
Oh yeah, I also invented GoLang's error system.
http://z505.com/cgi-bin/qkcont/qkcont.cgi?p=Suggestion-for-Modern-
Pascal-Error-Contracts
Post by y***@z505.com
What have you written? Have you ever written a string library? I have,
for freepascal, it's called CapString.
have you ever invented an error system that solves the Exception issue? I have.
Please post your code and projects.
In fact I wrote an article on this before "Respond to a flame with code".
That was on a wiki written in freepascal, no php. Have you written
anything in Oberon that is live right now that I can see or any
shareware projects? Or any open source stuff that's of any use...
I've written lots of code, but I also like to discuss issues
intelligent, which requires replies that are not terse and one liners.
Deal with it.
Let's see if my news-reader NOW/again can post ?
Your text doesn't wrap.
But in this <reply frame> it does wrap.
Programmers/scientists SHOULD have learned to be terse.
Those with asm experience KNOW the value of 1-concept = 1-line.
f***@gmail.com
2016-08-25 09:14:07 UTC
Permalink
OK see if this replies to orgnl post
f***@gmail.com
2016-08-25 17:35:31 UTC
Permalink
You will be posting to:
comp.lang.oberon


Please provide your mail address for the From: header
From: ***@gmail.com

Please provide or edit the Subject: header
Subject: Re: Activity in comp.lang.oberon + test RPi/lynx+test Reply

Please provide or edit the Organization: header
Organization: dogdog

Please enter your message below.
When you are done, press enter and put a single period (.)
on a line and press enter again.
<><><><>
Plan refinement
Fetch & Reply to own c.l.o previous post; while recording steps
Refine to automate via 'lynx -dump'; possibly using 'tee'
---
lynx nntp://news.eternal-september.org:119/comp.lang.oberon

Continue reading on narkive:
Search results for 'Activity in comp.lang.oberon' (Questions and Answers)
10
replies
What is AIX Box?
started 2006-05-08 15:58:44 UTC
hardware
Loading...