• Re: BASIC (was Re: 64-bit)

    From Lawrence D'Oliveiro@21:1/5 to All on Wed Jan 10 20:17:03 2024
    On Wed, 10 Jan 2024 13:07:04 -0500, mjos_examine wrote:

    ... I think BASIC did have a pretty good
    run in the 90's and early 2000's, particularly on the Windows desktop platform.

    It had a role on 1980s micros, I’ll grant you that. The ability to switch
    on and start typing code made for quite a productive environment: type a statement with a line number to add it to your in-memory program, or
    without to execute the line immediately.

    Nowadays, Jupyter notebooks offer a more modern environment for such incremental, even scratchpad-style programming. And Python is a more
    modern language without the limitations of BASIC.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Craig A. Berry@21:1/5 to Chris Townley on Wed Jan 10 17:51:22 2024
    On 1/10/24 5:28 PM, Chris Townley wrote:
    On 10/01/2024 20:17, Lawrence D'Oliveiro wrote:
    On Wed, 10 Jan 2024 13:07:04 -0500, mjos_examine wrote:

    ... I think BASIC did have a pretty good
    run in the 90's and early 2000's, particularly on the Windows desktop
    platform.

    It had a role on 1980s micros, I’ll grant you that. The ability to switch >> on and start typing code made for quite a productive environment: type a
    statement with a line number to add it to your in-memory program, or
    without to execute the line immediately.

    Nowadays, Jupyter notebooks offer a more modern environment for such
    incremental, even scratchpad-style programming. And Python is a more
    modern language without the limitations of BASIC.

    Have you ever used DEC/Compaq/HP basic?

    It is unlike the early home computer Basic. In its day it was a modern
    highly structured language - which was of course compiled.

    I maintained and developed an ERP system consisting of well over a
    million lines of code, which worked well to support our business


    It also has some pretty nice features for convenient access to indexed
    RMS files. Today one might not choose RMS as the "database" or DEC BASIC
    as the language for a new project. But there is some pretty good old
    stuff using them that works quite well. DEC BASIC is definitely not a
    toy language.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Chris Townley@21:1/5 to Lawrence D'Oliveiro on Wed Jan 10 23:28:29 2024
    On 10/01/2024 20:17, Lawrence D'Oliveiro wrote:
    On Wed, 10 Jan 2024 13:07:04 -0500, mjos_examine wrote:

    ... I think BASIC did have a pretty good
    run in the 90's and early 2000's, particularly on the Windows desktop
    platform.

    It had a role on 1980s micros, I’ll grant you that. The ability to switch on and start typing code made for quite a productive environment: type a statement with a line number to add it to your in-memory program, or
    without to execute the line immediately.

    Nowadays, Jupyter notebooks offer a more modern environment for such incremental, even scratchpad-style programming. And Python is a more
    modern language without the limitations of BASIC.

    Have you ever used DEC/Compaq/HP basic?

    It is unlike the early home computer Basic. In its day it was a modern
    highly structured language - which was of course compiled.

    I maintained and developed an ERP system consisting of well over a
    million lines of code, which worked well to support our business

    --
    Chris

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to Chris Townley on Wed Jan 10 23:54:12 2024
    On Wed, 10 Jan 2024 23:28:29 +0000, Chris Townley wrote:

    On 10/01/2024 20:17, Lawrence D'Oliveiro wrote:

    On Wed, 10 Jan 2024 13:07:04 -0500, mjos_examine wrote:

    ... I think BASIC did have a pretty good
    run in the 90's and early 2000's, particularly on the Windows desktop
    platform.

    It had a role on 1980s micros, I’ll grant you that. The ability to
    switch on and start typing code made for quite a productive
    environment: type a statement with a line number to add it to your
    in-memory program, or without to execute the line immediately.

    Nowadays, Jupyter notebooks offer a more modern environment for such
    incremental, even scratchpad-style programming. And Python is a more
    modern language without the limitations of BASIC.

    Have you ever used DEC/Compaq/HP basic?

    I think so, yes. It very much tried to emulate the interactive BASIC-PLUS environment from RSTS/E, as I recall (right down to the “Ready” prompt).

    It is unlike the early home computer Basic. In its day it was a modern
    highly structured language - which was of course compiled.

    There is one BASIC that I have heard about, but never used, which sounded genuinely interesting, and that was GRASS (or ZGRASS, as the Z80 version
    was called). It had multithreading and no line numbers. Function bodies
    were held in string variables, and interpreted from there. And this was
    from 1978.

    There are some documents about it at Bitsavers.

    I maintained and developed an ERP system consisting of well over a
    million lines of code, which worked well to support our business

    So you got it to work, back in the day. Nowadays, there are easier ways of achieving the same thing. For one thing, you would have many existing
    libraries to draw on, instead of having to write all that code yourself.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Lawrence D'Oliveiro on Wed Jan 10 19:02:45 2024
    On 1/10/2024 6:54 PM, Lawrence D'Oliveiro wrote:
    On Wed, 10 Jan 2024 23:28:29 +0000, Chris Townley wrote:
    On 10/01/2024 20:17, Lawrence D'Oliveiro wrote:
    On Wed, 10 Jan 2024 13:07:04 -0500, mjos_examine wrote:
    ... I think BASIC did have a pretty good
    run in the 90's and early 2000's, particularly on the Windows desktop
    platform.

    It had a role on 1980s micros, I’ll grant you that. The ability to
    switch on and start typing code made for quite a productive
    environment: type a statement with a line number to add it to your
    in-memory program, or without to execute the line immediately.

    Have you ever used DEC/Compaq/HP basic?

    I think so, yes. It very much tried to emulate the interactive BASIC-PLUS environment from RSTS/E, as I recall (right down to the “Ready” prompt).

    VMS Basic is compiled just like Fortran, Cobol, Pascal and C.

    Same is VB.NET.

    And PowerBasic.

    And FreeBASIC.

    I maintained and developed an ERP system consisting of well over a
    million lines of code, which worked well to support our business

    So you got it to work, back in the day. Nowadays, there are easier ways of achieving the same thing. For one thing, you would have many existing libraries to draw on, instead of having to write all that code yourself.

    The world has evolved.

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Single Stage to Orbit@21:1/5 to Chris Townley on Thu Jan 11 10:03:06 2024
    On Wed, 2024-01-10 at 23:28 +0000, Chris Townley wrote:
    Nowadays, Jupyter notebooks offer a more modern environment for
    such incremental, even scratchpad-style programming. And Python is
    a more modern language without the limitations of BASIC.

    Have you ever used DEC/Compaq/HP basic?

    It is unlike the early home computer Basic. In its day it was a
    modern highly structured language - which was of course compiled.

    I maintained and developed an ERP system consisting of well over a
    million lines of code, which worked well to support our business

    I have also used Visual Basic to maintain and add new features to a
    garage forecourt application for dry stock and wet stock for the past
    eleven years. Currently I've been made redundant and looking for a new
    job.
    --
    Tactical Nuclear Kittens

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Single Stage to Orbit@21:1/5 to bill on Thu Jan 11 10:05:07 2024
    On Wed, 2024-01-10 at 21:28 -0500, bill wrote:
    The world has evolved.

    Exactly.  BASIC also evolved, but better languages have passed it by.

    Visual Basic can spawn and hande threads. Used it to great effect for
    long running reports.
    --
    Tactical Nuclear Kittens

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dave Froble@21:1/5 to bill on Thu Jan 11 12:55:00 2024
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:

    The world has evolved.

    Exactly. BASIC also evolved, but better languages have passed it by.

    bill

    I confess to curiosity. In what ways has other languages passed by Basic?


    --
    David Froble Tel: 724-529-0450
    Dave Froble Enterprises, Inc. E-Mail: davef@tsoft-inc.com
    DFE Ultralights, Inc.
    170 Grimplin Road
    Vanderbilt, PA 15486

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to davef@tsoft-inc.com on Thu Jan 11 19:42:37 2024
    In article <unpa1b$3316l$2@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    The world has evolved.

    Exactly. BASIC also evolved, but better languages have passed it by.

    I confess to curiosity. In what ways has other languages passed by Basic?

    Usually the answer to this is going to be some combination of
    better abstraction facilities, better safety properties, more
    capable and ergonomic libraries, etc.

    VSI BASIC appears to have a few useful things like static type
    definitions, functions, etc, and it frees the programmer from
    _having_ to specify e.g. line numbers. But it doesn't seem to
    have a lot of support for other abstraction facilities like
    modules, classes, or anything of that nature. String handling
    seems anemic. There doesn't seem to be support for generalized
    memory pointers, let along non-nullable references, so your
    ability to create rich linked data structures seems limited. I
    don't see any support for higher-order functions, lambdas, or
    closures; no currying of functions. Statement modifiers seem
    kind of neat, but I bet they can be easily misused.

    All in all, it doesn't look like a terrible language (it's not
    COBOL); it looks like an early-1980s-era language. But nothing
    about it jumps out at me as being spectacularly amazing, either.

    I suppose I would turn the question around and ask what's about
    BASIC makes it more suitable than other languages for particular
    types of programs?

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Stephen Hoffman@21:1/5 to Lawrence D'Oliveiro on Thu Jan 11 16:13:15 2024
    On 2024-01-10 20:17:03 +0000, Lawrence D'Oliveiro said:

    On Wed, 10 Jan 2024 13:07:04 -0500, mjos_examine wrote:

    ... I think BASIC did have a pretty good run in the 90's and early
    2000's, particularly on the Windows desktop platform.

    It had a role on 1980s micros, I’ll grant you that. The ability to
    switch on and start typing code made for quite a productive
    environment: type a statement with a line number to add it to your
    in-memory program, or without to execute the line immediately.

    Nowadays, Jupyter notebooks offer a more modern environment for such incremental, even scratchpad-style programming. And Python is a more
    modern language without the limitations of BASIC.

    There's sufficient BASIC code that's still in active use to keep VSI
    interested in providing at least some tooling for those OpenVMS
    customers.

    A whole lot of that BASIC code came through from the PDP-11 era
    platforms and tools. It is entrenched.

    Would I pick BASIC for wholly new app work? Probably not.

    But there's a lot of BASIC code around that would otherwise need to be
    reworked or rewritten. Or ported to BASIC on some other platform.



    --
    Pure Personal Opinion | HoffmanLabs LLC

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to bill on Thu Jan 11 16:05:34 2024
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    On 1/10/2024 6:54 PM, Lawrence D'Oliveiro wrote:
    On Wed, 10 Jan 2024 23:28:29 +0000, Chris Townley wrote:
    I maintained and developed an ERP system consisting of well over a
    million lines of code, which worked well to support our business

    So you got it to work, back in the day. Nowadays, there are easier
    ways of
    achieving the same thing. For one thing, you would have many existing
    libraries to draw on, instead of having to write all that code yourself.

    The world has evolved.

    Exactly.  BASIC also evolved, but better languages have passed it by.

    You need to distinguish between VMS Basic and the broad family
    of Basic.

    VMS Basic a very nice language for writing business apps
    back in the 1980's: all the control structures needed by
    a procedural language, the needed types including decimal,
    builtin support for index-sequential files, efficient code
    etc..

    That ERP system of over a million lines of code would
    have been much larger if written in Cobol/Fortran/C.

    In todays world VMS Basic are missing a lot: support
    for object oriented programming, support for generic programming,
    support for functional programming, libraries (database, ORM,
    XML, JSON, HTTP etc.).

    But that lack is not inherent for Basic. VB.NET got all that stuff.

    In some cases the syntax is a little "obvious that this is a bolt-on
    not something the language was born with", but it has it.

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Chris Townley@21:1/5 to Stephen Hoffman on Fri Jan 12 02:00:40 2024
    On 11/01/2024 21:13, Stephen Hoffman wrote:
    On 2024-01-10 20:17:03 +0000, Lawrence D'Oliveiro said:

    On Wed, 10 Jan 2024 13:07:04 -0500, mjos_examine wrote:

    ... I think BASIC did have a pretty good run in the 90's and early
    2000's, particularly on the Windows desktop platform.

    It had a role on 1980s micros, I’ll grant you that. The ability to
    switch on and start typing code made for quite a productive
    environment: type a statement with a line number to add it to your
    in-memory program, or without to execute the line immediately.

    Nowadays, Jupyter notebooks offer a more modern environment for such
    incremental, even scratchpad-style programming. And Python is a more
    modern language without the limitations of BASIC.

    There's sufficient BASIC code that's still in active use to keep VSI interested in providing at least some tooling for those OpenVMS customers.

    A whole lot of that BASIC code came through from the PDP-11 era
    platforms and tools. It is entrenched.

    Would I pick BASIC for wholly new app work? Probably not.

    But there's a lot of BASIC code around that would otherwise need to be reworked or rewritten. Or ported to BASIC on some other platform.

    Our million plus lines suite indeed did start on PDP, but was expanded
    very significantly under VMS.

    I found loads of ghastly code used to do what was later in a single
    built in function...

    --
    Chris

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dave Froble@21:1/5 to Dan Cross on Fri Jan 12 00:40:47 2024
    On 1/11/2024 2:42 PM, Dan Cross wrote:
    In article <unpa1b$3316l$2@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    The world has evolved.

    Exactly. BASIC also evolved, but better languages have passed it by.

    I confess to curiosity. In what ways has other languages passed by Basic?

    Usually the answer to this is going to be some combination of
    better abstraction facilities, better safety properties, more
    capable and ergonomic libraries, etc.

    Which then asks the question, are such really better? Perhaps some of that is more opinion than fact.

    Below, when I write Basic, I'm referring to DEC/Compaq/HP/VSI Basic.

    VSI BASIC appears to have a few useful things like static type
    definitions, functions, etc, and it frees the programmer from
    _having_ to specify e.g. line numbers. But it doesn't seem to
    have a lot of support for other abstraction facilities like
    modules, classes, or anything of that nature.

    What amuses me about that is that when people talk about "classes", I don't have
    a clue what they are talking about. Perhaps I do, if the case is new names for old concepts. That is something I didn't like about Microsoft, they seemed to like re-naming concepts.

    String handling
    seems anemic.

    Can't let that one go. Basic in my opinion does strings very well.

    There doesn't seem to be support for generalized
    memory pointers,

    Correct, Basic does not have any pointer data types. It does have a function to
    retrieve the value of a pointer.

    let along non-nullable references, so your
    ability to create rich linked data structures seems limited.

    Not sure what that means ...

    I
    don't see any support for higher-order functions,

    Not sure what that means ...

    lambdas,

    Not sure what that means ...

    or
    closures;

    Not sure what that means ...

    no currying of functions.

    Not sure what that means ...

    Statement modifiers seem
    kind of neat, but I bet they can be easily misused.

    Statement modifiers are very useful, and in some ways make code easier to understand.

    All in all, it doesn't look like a terrible language (it's not
    COBOL); it looks like an early-1980s-era language. But nothing
    about it jumps out at me as being spectacularly amazing, either.

    It''s not amazing, it just works.

    I suppose I would turn the question around and ask what's about
    BASIC makes it more suitable than other languages for particular
    types of programs?

    For me personally, I really like the syntax of the language. When I have to attempt to read C code I'm easily confused. Many other languages seem to copy the syntax of C.


    --
    David Froble Tel: 724-529-0450
    Dave Froble Enterprises, Inc. E-Mail: davef@tsoft-inc.com
    DFE Ultralights, Inc.
    170 Grimplin Road
    Vanderbilt, PA 15486

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to Dave Froble on Fri Jan 12 06:15:43 2024
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Chris Townley@21:1/5 to Lawrence D'Oliveiro on Fri Jan 12 12:09:30 2024
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!

    --
    Chris

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Clubley@21:1/5 to Dave Froble on Fri Jan 12 13:41:23 2024
    On 2024-01-12, Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/11/2024 2:42 PM, Dan Cross wrote:
    In article <unpa1b$3316l$2@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    The world has evolved.

    Exactly. BASIC also evolved, but better languages have passed it by.

    I confess to curiosity. In what ways has other languages passed by Basic? >>
    Usually the answer to this is going to be some combination of
    better abstraction facilities, better safety properties, more
    capable and ergonomic libraries, etc.

    Which then asks the question, are such really better? Perhaps some of that is
    more opinion than fact.

    Below, when I write Basic, I'm referring to DEC/Compaq/HP/VSI Basic.

    VSI BASIC appears to have a few useful things like static type
    definitions, functions, etc, and it frees the programmer from
    _having_ to specify e.g. line numbers. But it doesn't seem to
    have a lot of support for other abstraction facilities like
    modules, classes, or anything of that nature.

    What amuses me about that is that when people talk about "classes", I don't have
    a clue what they are talking about. Perhaps I do, if the case is new names for
    old concepts. That is something I didn't like about Microsoft, they seemed to
    like re-naming concepts.


    This is absolutely nothing to do with Microsoft. It is a general language concept/construct.

    Sorry David, but you don't understand this and the other items Dan lists,
    then you are not qualified to judge the relative merits of other languages
    to BASIC.

    [Snip other examples]


    I suppose I would turn the question around and ask what's about
    BASIC makes it more suitable than other languages for particular
    types of programs?

    For me personally, I really like the syntax of the language. When I have to attempt to read C code I'm easily confused. Many other languages seem to copy
    the syntax of C.


    I suggest you look at the Wirth-style languages then. They are nothing
    like C.

    Simon.

    --
    Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP
    Walking destinations on a map are further away than they appear.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to bill.gunshannon@gmail.com on Fri Jan 12 15:45:29 2024
    In article <l0bi9hFgf55U1@mid.individual.net>,
    bill <bill.gunshannon@gmail.com> wrote:
    On 1/11/2024 2:42 PM, Dan Cross wrote:
    In article <unpa1b$3316l$2@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    The world has evolved.

    Exactly. BASIC also evolved, but better languages have passed it by.

    I confess to curiosity. In what ways has other languages passed by Basic? >>
    Usually the answer to this is going to be some combination of
    better abstraction facilities, better safety properties, more
    capable and ergonomic libraries, etc.

    VSI BASIC appears to have a few useful things like static type
    definitions, functions, etc, and it frees the programmer from
    _having_ to specify e.g. line numbers. But it doesn't seem to
    have a lot of support for other abstraction facilities like
    modules, classes, or anything of that nature. String handling
    seems anemic. There doesn't seem to be support for generalized
    memory pointers, let along non-nullable references, so your
    ability to create rich linked data structures seems limited. I
    don't see any support for higher-order functions, lambdas, or
    closures; no currying of functions. Statement modifiers seem
    kind of neat, but I bet they can be easily misused.

    All in all, it doesn't look like a terrible language (it's not
    COBOL);

    Dave has his fixation on BASIC. One of mine is COBOL.
    When using it to do the kind of work is was designed and intended for
    just what do you think is wrong with COBOL?

    Nothing per se, I just wanted to give you a rise. :-)
    (Sorry; couldn't resist.)

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to davef@tsoft-inc.com on Fri Jan 12 17:26:44 2024
    In article <unqjcn$3c1o2$1@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/11/2024 2:42 PM, Dan Cross wrote:
    In article <unpa1b$3316l$2@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    The world has evolved.

    Exactly. BASIC also evolved, but better languages have passed it by.

    I confess to curiosity. In what ways has other languages passed by Basic? >>
    Usually the answer to this is going to be some combination of
    better abstraction facilities, better safety properties, more
    capable and ergonomic libraries, etc.

    Which then asks the question, are such really better? Perhaps some of that is >more opinion than fact.

    Some of it is opinion. Some of it is limitations in the
    language. Some of it is suitability for purpose.

    Below, when I write Basic, I'm referring to DEC/Compaq/HP/VSI Basic.

    Understood.

    VSI BASIC appears to have a few useful things like static type
    definitions, functions, etc, and it frees the programmer from
    _having_ to specify e.g. line numbers. But it doesn't seem to
    have a lot of support for other abstraction facilities like
    modules, classes, or anything of that nature.

    What amuses me about that is that when people talk about "classes", I don't have
    a clue what they are talking about. Perhaps I do, if the case is new names for
    old concepts. That is something I didn't like about Microsoft, they seemed to >like re-naming concepts.

    I'm not sure what Microsoft has to do with it. The concept of a
    "class" has existed in one form or the others since Simula in
    1967.

    String handling
    seems anemic.

    Can't let that one go. Basic in my opinion does strings very well.

    What do you like about it?

    Consider writing a lexical analyzer for a simple expression
    language; what would such a thing look like, in BASIC? Here I
    want to take a string as input, and emit a list of tokens that
    correspond to the elements of the langauge that are represented
    in that string.

    There doesn't seem to be support for generalized
    memory pointers,

    Correct, Basic does not have any pointer data types. It does have a function to
    retrieve the value of a pointer.

    That makes it challenging to implement dynamically sized data
    structures like trees or graphs where the size is not already
    known, or hash tables that use chaining for collision resolution
    etc.

    How would I do these things in VSI BASIC?

    let along non-nullable references, so your
    ability to create rich linked data structures seems limited.

    Not sure what that means ...

    Basically, pointers that are always valid in pointing to an
    object of a known type and and that can never be nil.

    I
    don't see any support for higher-order functions,

    Not sure what that means ...

    Basically, functions that can be passed as arguments to other
    functions or functions that can be returned from functions.
    These let me do things like write a generic hash table
    implementation, where I can then parameterize calls into the
    resulting data type with functions that implement the actual
    hash for particular types of data. "Hash table of FOO."

    lambdas,

    Not sure what that means ...

    Anonymous functions; ie, functions that are unnamed. They're
    very handy in languages that support higher-order functions.
    For example, I can trivially write a projection function that
    will extract a particular member from a data structure to use
    as a sort key.

    or
    closures;

    Not sure what that means ...

    Functions that are created dynamically and "close over" part of
    their surrounding environment, e.g., to capture a value that is
    used in the closure itself.

    no currying of functions.

    Not sure what that means ...

    Partial application of a function, which allows me to create a
    new function that calls some underlying function with some
    arguments already "filled in". An example, from SML:

    fun fib' a b 0 = a
    | fib' a b n = fib' (a + b) a (n - 1)

    val fib = fib' 0 1

    Here `fib` is a function to return the nth Fibonacci
    number.

    This example demonstrates several of these concepts:

    ; sml
    Standard ML of New Jersey (64-bit) v110.99.4 [built: Tue Aug 01 16:07:38 2023] - val fib =
    = let fun fib' a b 0 = a
    = | fib' a b n = fib' (a + b) a (n - 1)
    = in fn n => fib' 0 1 n
    = end;
    val fib = fn : int -> int
    - fib;
    val it = fn : int -> int
    - fib';
    stdIn:3.1-3.5 Error: unbound variable or constructor: fib'
    - map;
    val it = fn : ('a -> 'b) -> 'a list -> 'b list
    - map (fn n => fib n) [1,2,3,4,5,6,7,8,9];
    val it = [1,1,2,3,5,8,13,21,34] : int list
    - ^D
    ;

    Here, we see an example of a closure, in which the anonymous
    function (aka, lambda) returned from the `let` clause that is
    bound to `fib` closes over the `fib'` function, which is not
    visible outside of the `let`. Furthermore, `fib` is an example
    of currying as above. We see the use of higher-order functions
    in the call to `map`, which applies `fib` to each element of the
    given list. We can see it again with a slightly different
    example:

    - List.tabulate(10, fn n => fib n);
    [autoloading]
    [library $SMLNJ-BASIS/basis.cm is stable]
    [library $SMLNJ-BASIS/(basis.cm):basis-common.cm is stable]
    [autoloading done]
    val it = [0,1,1,2,3,5,8,13,21,34] : int list

    Again, these are all examples from Standard ML, a langauge that
    dates from the 80s, and takes its roots in the 70s.

    Statement modifiers seem
    kind of neat, but I bet they can be easily misused.

    Statement modifiers are very useful, and in some ways make code easier to >understand.

    I'm sure they are useful, but I can also imagine that they can
    turn into spaghetti if not used judiciously.

    X = X * 0.1 unless FOO != 2;
    X = X * 0.2 unless FOO = 2;

    seems strictly less readable than

    IF FOO != 2
    X = X * 0.1
    ELSE
    X = X * 0.2

    (Apologies for syntax errors.)

    All in all, it doesn't look like a terrible language (it's not
    COBOL); it looks like an early-1980s-era language. But nothing
    about it jumps out at me as being spectacularly amazing, either.

    It's not amazing, it just works.

    Sure. That doesn't mean that it's good by modern standards.

    I suppose I would turn the question around and ask what's about
    BASIC makes it more suitable than other languages for particular
    types of programs?

    For me personally, I really like the syntax of the language. When I have to >attempt to read C code I'm easily confused. Many other languages seem to copy >the syntax of C.

    As has been mentioned, not all "modern" languages have C-like
    syntax. Examples that pop out at me off the top of my head
    include Oberon (Wirth's final language, descendent of Modula-2),
    Ruby, Python, Clojure (a Lisp that targets the JVM), F# (a
    dialect of the OCaml language --- another entry in the ML
    family --- that targets the CLR), OCaml itself (with a native
    compiler). Most of these are 20 years old or more; the youngest
    language on the list is probably Clojure, which is only 17, but
    has its root in Lisp, which dates from the 50s.

    Simply preferring the syntax, however, doesn't feel like
    sufficient reason to claim that other languages haven't passed
    BASIC, even VSI BASIC, by. I'm sure it was a decent business
    data processing langauge in the 80s; not so much now days.

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to news@cct-net.co.uk on Fri Jan 12 17:27:05 2024
    In article <unra5q$3eha8$1@dont-email.me>,
    Chris Townley <news@cct-net.co.uk> wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!

    Please don't feed the troll.

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dave Froble@21:1/5 to Simon Clubley on Fri Jan 12 13:47:26 2024
    On 1/12/2024 8:41 AM, Simon Clubley wrote:
    On 2024-01-12, Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/11/2024 2:42 PM, Dan Cross wrote:
    In article <unpa1b$3316l$2@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    The world has evolved.

    Exactly. BASIC also evolved, but better languages have passed it by. >>>>
    I confess to curiosity. In what ways has other languages passed by Basic? >>>
    Usually the answer to this is going to be some combination of
    better abstraction facilities, better safety properties, more
    capable and ergonomic libraries, etc.

    Which then asks the question, are such really better? Perhaps some of that is
    more opinion than fact.

    Below, when I write Basic, I'm referring to DEC/Compaq/HP/VSI Basic.

    VSI BASIC appears to have a few useful things like static type
    definitions, functions, etc, and it frees the programmer from
    _having_ to specify e.g. line numbers. But it doesn't seem to
    have a lot of support for other abstraction facilities like
    modules, classes, or anything of that nature.

    What amuses me about that is that when people talk about "classes", I don't have
    a clue what they are talking about. Perhaps I do, if the case is new names for
    old concepts. That is something I didn't like about Microsoft, they seemed to
    like re-naming concepts.


    This is absolutely nothing to do with Microsoft. It is a general language concept/construct.

    Sorry David, but you don't understand this and the other items Dan lists, then you are not qualified to judge the relative merits of other languages
    to BASIC.

    I won't argue that, because it's quite likely true. I don't use or pay attention to other languages. Perhaps I've settled into my own level of incompetence.

    What I do know is that I've never had any problems that I could not solve using Basic. Then again, we all know I don't get out much.

    [Snip other examples]


    I suppose I would turn the question around and ask what's about
    BASIC makes it more suitable than other languages for particular
    types of programs?

    For me personally, I really like the syntax of the language. When I have to >> attempt to read C code I'm easily confused. Many other languages seem to copy
    the syntax of C.


    I suggest you look at the Wirth-style languages then. They are nothing
    like C.

    Did that long ago. Was disgusting ...


    --
    David Froble Tel: 724-529-0450
    Dave Froble Enterprises, Inc. E-Mail: davef@tsoft-inc.com
    DFE Ultralights, Inc.
    170 Grimplin Road
    Vanderbilt, PA 15486

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dave Froble@21:1/5 to Dan Cross on Fri Jan 12 14:47:13 2024
    The first thing I'll admit is that computers are used for far more things than I've been exposed to.

    I have no clue on the design and implementation of GUI stuff.

    I have no clue on the design and implementation of real time stuff, self driving
    cars, navigation, and such.

    I've got friends and relatives that use computers for music, though, they are users, not developers.

    And much more ...

    My background has been business applications, database design and implementation, and sometimes system type stuff, sometimes called system programming. I've implemented a few interesting tools. Async messaging systems
    are interesting, and helpful.

    Overall, your post is interesting.

    On 1/12/2024 12:26 PM, Dan Cross wrote:
    In article <unqjcn$3c1o2$1@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/11/2024 2:42 PM, Dan Cross wrote:
    In article <unpa1b$3316l$2@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    The world has evolved.

    Exactly. BASIC also evolved, but better languages have passed it by. >>>>
    I confess to curiosity. In what ways has other languages passed by Basic? >>>
    Usually the answer to this is going to be some combination of
    better abstraction facilities, better safety properties, more
    capable and ergonomic libraries, etc.

    Which then asks the question, are such really better? Perhaps some of that is
    more opinion than fact.

    Some of it is opinion. Some of it is limitations in the
    language. Some of it is suitability for purpose.

    Suitability for purpose is always rather important.

    Below, when I write Basic, I'm referring to DEC/Compaq/HP/VSI Basic.

    Understood.

    VSI BASIC appears to have a few useful things like static type
    definitions, functions, etc, and it frees the programmer from
    _having_ to specify e.g. line numbers. But it doesn't seem to
    have a lot of support for other abstraction facilities like
    modules, classes, or anything of that nature.

    What amuses me about that is that when people talk about "classes", I don't have
    a clue what they are talking about. Perhaps I do, if the case is new names for
    old concepts. That is something I didn't like about Microsoft, they seemed to
    like re-naming concepts.

    I'm not sure what Microsoft has to do with it. The concept of a
    "class" has existed in one form or the others since Simula in
    1967.

    String handling
    seems anemic.

    Can't let that one go. Basic in my opinion does strings very well.

    What do you like about it?

    Consider writing a lexical analyzer for a simple expression
    language; what would such a thing look like, in BASIC? Here I
    want to take a string as input, and emit a list of tokens that
    correspond to the elements of the langauge that are represented
    in that string.

    Don't totally understand, perhaps parsing for commands, switches, and such would
    be similar.

    There doesn't seem to be support for generalized
    memory pointers,

    A pointer data type can be very useful. A compiler could use such to generate proper sizing for different systems. But, in the end, it is just a numeric piece of data. If one can process the numbers, that works. Not as generic, but, it works. For VAX, it is an unsigned longword. For 64 bit addressing, it is an unsigned 64 bit integer.

    For example, what is the difference between memory pointers and indices in an in
    memory resident data structure, such as linked lists? Not much, in concept, right?

    Correct, Basic does not have any pointer data types. It does have a function to
    retrieve the value of a pointer.

    That makes it challenging to implement dynamically sized data
    structures like trees or graphs where the size is not already
    known, or hash tables that use chaining for collision resolution
    etc.

    Not really. There is always LIB$GET_VM.

    How would I do these things in VSI BASIC?

    Once you can get the memory, what's the difference between say, linked lists there, vs using pre-allocated array(s)?

    let along non-nullable references, so your
    ability to create rich linked data structures seems limited.

    Not sure what that means ...

    Basically, pointers that are always valid in pointing to an
    object of a known type and and that can never be nil.

    Seems to me, pointers/indices in use always have a valid value?

    I
    don't see any support for higher-order functions,

    Not sure what that means ...

    Basically, functions that can be passed as arguments to other
    functions or functions that can be returned from functions.
    These let me do things like write a generic hash table
    implementation, where I can then parameterize calls into the
    resulting data type with functions that implement the actual
    hash for particular types of data. "Hash table of FOO."

    Hash tables takes me back to the mid 1970s. :-)

    Is what you mean something like:

    Z = FIX( SQR( SomeValue ) )

    Yeah, rather simple, but is that what you refer to?

    lambdas,

    Not sure what that means ...

    Anonymous functions; ie, functions that are unnamed. They're
    very handy in languages that support higher-order functions.
    For example, I can trivially write a projection function that
    will extract a particular member from a data structure to use
    as a sort key.

    Not sure if you're making my brain hurt, or discussing something so simple it doesn't deserve a name. I've built sort keys for longer than I can remember.

    or
    closures;

    Not sure what that means ...

    Functions that are created dynamically and "close over" part of
    their surrounding environment, e.g., to capture a value that is
    used in the closure itself.

    More brain pain ...

    no currying of functions.

    Not sure what that means ...

    Partial application of a function, which allows me to create a
    new function that calls some underlying function with some
    arguments already "filled in". An example, from SML:

    fun fib' a b 0 = a
    | fib' a b n = fib' (a + b) a (n - 1)

    val fib = fib' 0 1

    Here `fib` is a function to return the nth Fibonacci
    number.

    Why does that require a special name?

    This example demonstrates several of these concepts:

    ; sml
    Standard ML of New Jersey (64-bit) v110.99.4 [built: Tue Aug 01 16:07:38 2023]
    - val fib =
    = let fun fib' a b 0 = a
    = | fib' a b n = fib' (a + b) a (n - 1)
    = in fn n => fib' 0 1 n
    = end;
    val fib = fn : int -> int
    - fib;
    val it = fn : int -> int
    - fib';
    stdIn:3.1-3.5 Error: unbound variable or constructor: fib'
    - map;
    val it = fn : ('a -> 'b) -> 'a list -> 'b list
    - map (fn n => fib n) [1,2,3,4,5,6,7,8,9];
    val it = [1,1,2,3,5,8,13,21,34] : int list
    - ^D
    ;

    Here, we see an example of a closure, in which the anonymous
    function (aka, lambda) returned from the `let` clause that is
    bound to `fib` closes over the `fib'` function, which is not
    visible outside of the `let`. Furthermore, `fib` is an example
    of currying as above. We see the use of higher-order functions
    in the call to `map`, which applies `fib` to each element of the
    given list. We can see it again with a slightly different
    example:

    - List.tabulate(10, fn n => fib n);
    [autoloading]
    [library $SMLNJ-BASIS/basis.cm is stable]
    [library $SMLNJ-BASIS/(basis.cm):basis-common.cm is stable]
    [autoloading done]
    val it = [0,1,1,2,3,5,8,13,21,34] : int list

    Again, these are all examples from Standard ML, a langauge that
    dates from the 80s, and takes its roots in the 70s.

    I'm going to guess that your experience includes labels for certain things, which might be helpful at times, and exist in subsets of programming practices. Nothing wrong with that, but might be confusing to some others.

    Statement modifiers seem
    kind of neat, but I bet they can be easily misused.

    Statement modifiers are very useful, and in some ways make code easier to
    understand.

    I'm sure they are useful, but I can also imagine that they can
    turn into spaghetti if not used judiciously.

    X = X * 0.1 unless FOO != 2;
    X = X * 0.2 unless FOO = 2;

    seems strictly less readable than

    IF FOO != 2
    X = X * 0.1
    ELSE
    X = X * 0.2

    (Apologies for syntax errors.)

    The first thing any programmer should learn is, at some time in the future code will be read by another, and if it is not concise, clear, and understandable, it
    is the fault of the original programmer, and he/she should find another occupation.

    Yes, if-then-else, select case, and such can be good, and I've also seen such be
    hundreds of lines of code, and a real PITA. I tend to favor modular code. Simple, short, and to the point.

    But for a simple true or false, the statement modifiers can be very useful. In your first example, FOO should be evaluated only once.

    All in all, it doesn't look like a terrible language (it's not
    COBOL); it looks like an early-1980s-era language. But nothing
    about it jumps out at me as being spectacularly amazing, either.

    It's not amazing, it just works.

    Sure. That doesn't mean that it's good by modern standards.

    Nor does it mean it is bad either.

    I suppose I would turn the question around and ask what's about
    BASIC makes it more suitable than other languages for particular
    types of programs?

    For me personally, I really like the syntax of the language. When I have to >> attempt to read C code I'm easily confused. Many other languages seem to copy
    the syntax of C.

    As has been mentioned, not all "modern" languages have C-like
    syntax. Examples that pop out at me off the top of my head
    include Oberon (Wirth's final language, descendent of Modula-2),
    Ruby, Python, Clojure (a Lisp that targets the JVM), F# (a
    dialect of the OCaml language --- another entry in the ML
    family --- that targets the CLR), OCaml itself (with a native
    compiler). Most of these are 20 years old or more; the youngest
    language on the list is probably Clojure, which is only 17, but
    has its root in Lisp, which dates from the 50s.

    Simply preferring the syntax, however, doesn't feel like
    sufficient reason to claim that other languages haven't passed
    BASIC, even VSI BASIC, by. I'm sure it was a decent business
    data processing langauge in the 80s; not so much now days.

    - Dan C.



    --
    David Froble Tel: 724-529-0450
    Dave Froble Enterprises, Inc. E-Mail: davef@tsoft-inc.com
    DFE Ultralights, Inc.
    170 Grimplin Road
    Vanderbilt, PA 15486

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Dave Froble on Fri Jan 12 14:56:15 2024
    On 1/12/2024 12:40 AM, Dave Froble wrote:
    On 1/11/2024 2:42 PM, Dan Cross wrote:
    In article <unpa1b$3316l$2@dont-email.me>,
    Dave Froble  <davef@tsoft-inc.com> wrote:
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    The world has evolved.

    Exactly.  BASIC also evolved, but better languages have passed it by.

    I confess to curiosity.  In what ways has other languages passed by
    Basic?

    Usually the answer to this is going to be some combination of
    better abstraction facilities, better safety properties, more
    capable and ergonomic libraries, etc.

    Which then asks the question, are such really better?  Perhaps some of
    that is more opinion than fact.

    It is not so much Basic vs other languages but a 70's/80's language
    vs a modern languages.

    But yes progress has been made.

    VSI BASIC appears to have a few useful things like static type
    definitions, functions, etc, and it frees the programmer from
    _having_ to specify e.g. line numbers.  But it doesn't seem to
    have a lot of support for other abstraction facilities like
    modules, classes, or anything of that nature.

    What amuses me about that is that when people talk about "classes", I
    don't have a clue what they are talking about.  Perhaps I do, if the
    case is new names for old concepts.  That is something I didn't like
    about Microsoft, they seemed to like re-naming concepts.

    Think of classes as record definition with both data and subs/functions.

    Bundling the subs/functions with the data they are working on usually
    give cleaner code and you have the ability to restrict access to data
    to the subs/functions within the class.

    Let me produce an example in VMS Basic and VB.NET.

    $ type datarec.bas
    option type = explicit

    record datarec
    string created = 20
    integer counted
    end record
    $ type vms.bas
    program main

    %include "datarec.bas"

    declare integer nrec
    declare datarec alld(1 to 1000)

    external datarec function init_datarec(integer)
    external sub dump(integer, datarec dim())

    print "VMS Basic"
    nrec = 0
    nrec = nrec + 1
    alld(nrec) = init_datarec(37)
    sleep(1)
    nrec = nrec + 1
    alld(nrec) = init_datarec(32)
    sleep(1)
    nrec = nrec + 1
    alld(nrec) = init_datarec(19)
    sleep(1)
    nrec = nrec + 1
    alld(nrec) = init_datarec(50)
    call dump(nrec, alld())

    end program
    !
    function datarec init_datarec(integer c)

    %include "datarec.bas"

    external sub lib$date_time(string by desc)

    declare datarec res

    call lib$date_time(res::created)
    res::counted = c
    init_datarec = res

    end function
    !
    sub dump(integer nrec, datarec lstd())

    %include "datarec.bas"

    declare integer i

    external string function tostring(datarec)

    for i = 1 to nrec
    print tostring(lstd(i))
    next i

    end sub
    !
    function string tostring(datarec d)

    %include "datarec.bas"

    tostring = "[" + d::created + ": " + str$(d::counted) + "]"

    end function
    $ bas vms
    $ link vms
    $ run vms
    VMS Basic
    [12-JAN-2024 15:38:18: 37]
    [12-JAN-2024 15:38:19: 32]
    [12-JAN-2024 15:38:20: 19]
    [12-JAN-2024 15:38:21: 50]

    vs

    Imports System
    Imports System.Collections.Generic
    Imports System.Threading

    Namespace Modern
    Public Class Data
    Public Property Created() As DateTime
    Public Property Counted() As Integer
    Public Sub New(c As Integer)
    Created = DateTime.Now
    Counted = c
    End Sub
    Public Overrides Function ToString() As String
    Return String.Format("[{0}: {1}]", Created, Counted)
    End Function
    End Class
    Public Class Program
    Public Shared Sub Dump(lstd As List(Of Data))
    For Each d As Data In lstd
    Console.WriteLine(d)
    Next
    End Sub
    Public Shared Sub Main(args As String())
    Console.WriteLine("VB.NET")
    Dim alld As New List(Of Data)()
    alld.Add(New Data(37))
    Thread.Sleep(1000)
    alld.Add(New Data(32))
    Thread.Sleep(1000)
    alld.Add(New Data(19))
    Thread.Sleep(1000)
    alld.Add(New Data(50))
    Dump(alld)
    Console.ReadKey()
    End Sub
    End Class
    End Namespace

    VB.NET
    [1/12/2024 2:44:53 PM: 37]
    [1/12/2024 2:44:54 PM: 32]
    [1/12/2024 2:44:55 PM: 19]
    [1/12/2024 2:44:56 PM: 50]

    And if we spice it up by extending the data structure:

    $ type datarec.bas
    option type = explicit

    record datarec
    string created = 20
    integer counted
    end record
    $ type extdatarec.bas
    %include "datarec.bas"

    record extdatarec
    datarec main
    integer verified
    end record

    declare integer constant VERIFIED = 1
    declare integer constant NOT_VERIFIED = 2
    $ type vms2.bas
    program main

    %include "extdatarec.bas"

    declare integer nrec
    declare extdatarec alld(1 to 1000)

    external extdatarec function init_extdatarec(integer, integer)
    external sub dump(integer, extdatarec dim())

    print "VMS Basic"
    nrec = 0
    nrec = nrec + 1
    alld(nrec) = init_extdatarec(37, VERIFIED)
    sleep(1)
    nrec = nrec + 1
    alld(nrec) = init_extdatarec(32, VERIFIED)
    sleep(1)
    nrec = nrec + 1
    alld(nrec) = init_extdatarec(19, VERIFIED)
    sleep(1)
    nrec = nrec + 1
    alld(nrec) = init_extdatarec(50, NOT_VERIFIED)
    call dump(nrec, alld())

    end program
    !
    function extdatarec init_extdatarec(integer c, integer v)

    %include "extdatarec.bas"

    declare extdatarec res

    external datarec function init_datarec(integer)

    res::main = init_datarec(c)
    res::verified = v
    init_extdatarec = res

    end function
    !
    function datarec init_datarec(integer c)

    %include "datarec.bas"

    external sub lib$date_time(string by desc)

    declare datarec res

    call lib$date_time(res::created)
    res::counted = c
    init_datarec = res

    end function
    !
    sub dump(integer nrec, extdatarec lstd())

    %include "extdatarec.bas"

    declare integer i

    external string function tostring(extdatarec)

    for i = 1 to nrec
    print tostring(lstd(i))
    next i

    end sub
    !
    function string tostring(extdatarec d)

    %include "extdatarec.bas"

    declare string VERTEXT(VERIFIED to NOT_VERIFIED)

    VERTEXT(VERIFIED) = "Verified"
    VERTEXT(NOT_VERIFIED) = "Not verified"
    tostring = "[" + d::main::created + ": " + str$(d::main::counted) + " ("
    + VERTEXT(d::verified) + ")]"

    end function
    $ bas vms2
    $ link vms2
    $ run vms2
    VMS Basic
    [12-JAN-2024 15:42:38: 37 (Verified)]
    [12-JAN-2024 15:42:39: 32 (Verified)]
    [12-JAN-2024 15:42:40: 19 (Verified)]
    [12-JAN-2024 15:42:41: 50 (Not verified)]

    vs

    Imports System
    Imports System.Collections.Generic
    Imports System.Threading

    Namespace Modern2
    Public Class Data
    Public Property Created() As DateTime
    Public Property Counted() As Integer
    Public Sub New(c As Integer)
    Created = DateTime.Now
    Counted = c
    End Sub
    Public Overrides Function ToString() As String
    Return String.Format("[{0}: {1}]", Created, Counted)
    End Function
    End Class
    Public Class ExtData
    Inherits Data
    Public Property Verified() As Boolean
    Public Sub New(c As Integer, v As Boolean)
    MyBase.New(c)
    Verified = v
    End Sub
    Public Overrides Function ToString() As String
    Return String.Format("[{0}: {1} ({2})]", Created, Counted, If(Verified, "Verified", "Not verified"))
    End Function
    End Class
    Public Class Program
    Public Shared Sub Dump(lstd As List(Of Data))
    For Each d As Data In lstd
    Console.WriteLine(d)
    Next
    End Sub
    Public Shared Sub Main(args As String())
    Console.WriteLine("VB.NET")
    Dim alld As New List(Of Data)()
    alld.Add(New ExtData(37, True))
    Thread.Sleep(1000)
    alld.Add(New ExtData(32, True))
    Thread.Sleep(1000)
    alld.Add(New ExtData(19, True))
    Thread.Sleep(1000)
    alld.Add(New ExtData(50, False))
    Dump(alld)
    Console.ReadKey()
    End Sub
    End Class
    End Namespace

    VB.NET
    [1/12/2024 2:49:04 PM: 37 (Verified)]
    [1/12/2024 2:49:05 PM: 32 (Verified)]
    [1/12/2024 2:49:07 PM: 19 (Verified)]
    [1/12/2024 2:49:08 PM: 50 (Not verified)]

    Besides using objected oriented programming the VB.NET code also
    used some generic programming. The List(Of Data) thing.

    An illustrative example of how it works:

    Imports System

    Namespace Gen
    Public Class Pair(Of T As IComparable(Of T))
    Public Property FirstValue() As T
    Public Property SecondValue() As T
    Public Sub New(first As T, second As T)
    FirstValue = first
    SecondValue = second
    End Sub
    Public Sub Swap()
    Dim temp As T = FirstValue
    FirstValue = SecondValue
    SecondValue = temp
    End Sub
    Public Function Max() As T
    If FirstValue.CompareTo(SecondValue) > 0 Then
    Return FirstValue
    Else
    Return SecondValue
    End If
    End Function
    Public Overrides Function ToString() As String
    Return String.Format("({0},{1})", FirstValue, SecondValue)
    End Function
    End Class
    Public Class Program
    Public Shared Sub Main(args As String())
    Dim ip As New Pair(Of Integer)(123, 456)
    Console.WriteLine(ip)
    Console.WriteLine(ip.Max())
    ip.Swap()
    Console.WriteLine(ip)
    Console.WriteLine(ip.Max())
    Dim sp As New Pair(Of String)("ABC", "DEF")
    Console.WriteLine(sp)
    Console.WriteLine(sp.Max())
    sp.Swap()
    Console.WriteLine(sp)
    Console.WriteLine(sp.Max())
    Console.ReadKey()
    End Sub
    End Class
    End Namespace

     I
    don't see any support for higher-order functions,

    Not sure what that means ...

    lambdas,

    Not sure what that means ...

    or
    closures;

    Not sure what that means ...

    no currying of functions.

    Not sure what that means ...

    Functional programming is another big area.

    I don't think the typical business application need
    much of the advanced stuff, but some things can be
    done conveniently.

    A slightly modified version of the last VB.NET example
    with an appetizer:

    Imports System
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Threading

    Namespace Modern3
    Public Class Data
    Public Property Created() As DateTime
    Public Property Counted() As Integer
    Public Sub New(c As Integer)
    Created = DateTime.Now
    Counted = c
    End Sub
    Public Overrides Function ToString() As String
    Return String.Format("[{0}: {1}]", Created, Counted)
    End Function
    End Class
    Public Class ExtData
    Inherits Data
    Public Property Verified() As Boolean
    Public Sub New(c As Integer, v As Boolean)
    MyBase.New(c)
    Verified = v
    End Sub
    Public Overrides Function ToString() As String
    Return String.Format("[{0}: {1} ({2})]", Created, Counted, If(Verified, "Verified", "Not verified"))
    End Function
    End Class
    Public Class Program
    Public Shared Sub Dump(lbl As String, lstd As IEnumerable(Of Data))
    Console.WriteLine(lbl)
    For Each d As Data In lstd
    Console.WriteLine(d)
    Next
    End Sub
    Public Shared Sub Main(args As String())
    Console.WriteLine("VB.NET")
    Dim alld As New List(Of ExtData)()
    alld.Add(New ExtData(37, True))
    Thread.Sleep(1000)
    alld.Add(New ExtData(32, True))
    Thread.Sleep(1000)
    alld.Add(New ExtData(19, True))
    Thread.Sleep(1000)
    alld.Add(New ExtData(50, False))
    Dump("All:", alld)
    Dump("Counted < 30:", alld.Where(Function(d) d.Counted < 30))
    Dump("Verified = false:", alld.Where(Function(d) Not
    d.Verified))
    Console.ReadKey()
    End Sub
    End Class
    End Namespace

    VB.NET
    All:
    [1/12/2024 2:54:36 PM: 37 (Verified)]
    [1/12/2024 2:54:37 PM: 32 (Verified)]
    [1/12/2024 2:54:38 PM: 19 (Verified)]
    [1/12/2024 2:54:39 PM: 50 (Not verified)]
    Counted < 30:
    [1/12/2024 2:54:38 PM: 19 (Verified)]
    Verified = false:
    [1/12/2024 2:54:39 PM: 50 (Not verified)]

    The point is the function passed to the Where method that
    allows for great flexibility in filtering data.

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Dan Cross on Fri Jan 12 15:09:41 2024
    On 1/12/2024 12:26 PM, Dan Cross wrote:
    In article <unqjcn$3c1o2$1@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/11/2024 2:42 PM, Dan Cross wrote:
    In article <unpa1b$3316l$2@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    The world has evolved.

    Exactly. BASIC also evolved, but better languages have passed it by. >>>>
    I confess to curiosity. In what ways has other languages passed by Basic?

    String handling
    seems anemic.

    Can't let that one go. Basic in my opinion does strings very well.

    What do you like about it?

    Consider writing a lexical analyzer for a simple expression
    language; what would such a thing look like, in BASIC? Here I
    want to take a string as input, and emit a list of tokens that
    correspond to the elements of the langauge that are represented
    in that string.

    Basic has the fundamental string concept right with dynamic strings.

    Maybe it miss a few string functions. Including something for regex.

    But it is not that different from Java, C#, Python, whatever.

    There doesn't seem to be support for generalized
    memory pointers,

    Correct, Basic does not have any pointer data types. It does have a function to
    retrieve the value of a pointer.

    That makes it challenging to implement dynamically sized data
    structures like trees or graphs where the size is not already
    known, or hash tables that use chaining for collision resolution
    etc.

    How would I do these things in VSI BASIC?

    Basic operates on arrays via array indexes (like Fortran and Cobol).

    And arrays can be resized.

    I posted a tree example here 2 years ago.

    Pretty? No. Pretty awful looking.

    But what does that mean?

    It means that Basic is a poor language for teaching fundamental
    data structures.

    It means that Basic should not be used for all libraries used
    by Basic.

    It does not mean much for writing business applications. Creating
    such data structures are not part of writing business applications.

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to Chris Townley on Fri Jan 12 20:22:29 2024
    On Fri, 12 Jan 2024 12:09:30 +0000, Chris Townley wrote:

    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:

    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!

    It did take things to the next level in terms of text manipulation--hence
    its popularity to analyze text-intensive data like logfiles etc.

    Other languages have followed the example. E.g. in Python:

    ← "the quick brown fox".split(" ")
    → ['the', 'quick', 'brown', 'fox']

    ← "ha" * 5
    → 'hahahahaha'

    ← ", ".join(["ha"] * 5)
    → 'ha, ha, ha, ha, ha'

    And that’s before getting into regular expressions.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to arne@vajhoej.dk on Fri Jan 12 20:56:43 2024
    In article <uns6a6$3j4gn$1@dont-email.me>,
    Arne Vajhøj <arne@vajhoej.dk> wrote:
    On 1/12/2024 12:26 PM, Dan Cross wrote:
    [snip]
    It does not mean much for writing business applications. Creating
    such data structures are not part of writing business applications.

    Eh? Not building a fast indexing structure based on domain
    rules isn't a part of writing business applications? I mean, ok
    I'll take your word for it as I'm not a business applications
    programmer type of guy, but that seems kind of weird to me.

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Dan Cross on Fri Jan 12 16:39:31 2024
    On 1/12/2024 3:56 PM, Dan Cross wrote:
    In article <uns6a6$3j4gn$1@dont-email.me>,
    Arne Vajhøj <arne@vajhoej.dk> wrote:
    On 1/12/2024 12:26 PM, Dan Cross wrote:
    [snip]
    It does not mean much for writing business applications. Creating
    such data structures are not part of writing business applications.

    Eh? Not building a fast indexing structure based on domain
    rules isn't a part of writing business applications? I mean, ok
    I'll take your word for it as I'm not a business applications
    programmer type of guy, but that seems kind of weird to me.

    The business application just builds on general purpose libraries.

    If the platform comes with good general purpose libraries, then
    everything needed is there.

    If not so lucky then a custom library may be needed, but that
    is a library not a business application thing. And that library
    is not necessarily written by the same developer and not necessarily
    in the same language as the business application. Different
    skill set and different requirements.

    Basic and some ERP system. It uses some collections framework,
    some XML and JSON libs, a database lib etc.. Money is made
    from getting the application completed and out the door, not
    from creating better libraries.

    Or Python and data analysis. The developer knows Python,
    the data and how to interpret results. Deep down the
    stack there are some matrix multiplication and inversion
    code written in Fortran by a developer that knows nothing
    about data analysis. What would happen if the Python
    developer wanted to implement a custom matrix inversion?
    Most likely not anything good!

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dave Froble@21:1/5 to All on Fri Jan 12 18:19:16 2024
    On 1/12/2024 3:09 PM, Arne Vajhøj wrote:
    On 1/12/2024 12:26 PM, Dan Cross wrote:
    In article <unqjcn$3c1o2$1@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/11/2024 2:42 PM, Dan Cross wrote:
    In article <unpa1b$3316l$2@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/10/2024 9:28 PM, bill wrote:
    On 1/10/2024 7:02 PM, Arne Vajhøj wrote:
    The world has evolved.

    Exactly. BASIC also evolved, but better languages have passed it by. >>>>>
    I confess to curiosity. In what ways has other languages passed by Basic?

    String handling
    seems anemic.

    Can't let that one go. Basic in my opinion does strings very well.

    What do you like about it?

    Consider writing a lexical analyzer for a simple expression
    language; what would such a thing look like, in BASIC? Here I
    want to take a string as input, and emit a list of tokens that
    correspond to the elements of the langauge that are represented
    in that string.

    Basic has the fundamental string concept right with dynamic strings.

    Maybe it miss a few string functions. Including something for regex.

    But it is not that different from Java, C#, Python, whatever.

    There doesn't seem to be support for generalized
    memory pointers,

    Correct, Basic does not have any pointer data types. It does have a function to
    retrieve the value of a pointer.

    That makes it challenging to implement dynamically sized data
    structures like trees or graphs where the size is not already
    known, or hash tables that use chaining for collision resolution
    etc.

    How would I do these things in VSI BASIC?

    Basic operates on arrays via array indexes (like Fortran and Cobol).

    And arrays can be resized.

    I posted a tree example here 2 years ago.

    Pretty? No. Pretty awful looking.

    But what does that mean?

    It means that Basic is a poor language for teaching fundamental
    data structures.

    My introduction to data structures was in Fortran. I guarantee you that doing so in Basic is much better.

    It means that Basic should not be used for all libraries used
    by Basic.

    Most of my library routines are written in Basic. A few are Macro-32.

    It does not mean much for writing business applications. Creating
    such data structures are not part of writing business applications.

    You might be surprised ...


    --
    David Froble Tel: 724-529-0450
    Dave Froble Enterprises, Inc. E-Mail: davef@tsoft-inc.com
    DFE Ultralights, Inc.
    170 Grimplin Road
    Vanderbilt, PA 15486

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Scott Dorsey on Fri Jan 12 22:48:09 2024
    On 1/12/2024 10:41 PM, Scott Dorsey wrote:
    In article <unrsp9$ma6$2@reader1.panix.com>,
    Dan Cross <cross@spitfire.i.gajendra.net> wrote:
    In article <unra5q$3eha8$1@dont-email.me>,
    Chris Townley <news@cct-net.co.uk> wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!

    Please don't feed the troll.

    Perl _is_ the work of the devil but even so it does strings pretty well.

    It is what it was created for.

    And besides - can't we say that it replaced awk for that purpose?

    :-)

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Dorsey@21:1/5 to Dan Cross on Sat Jan 13 03:41:05 2024
    In article <unrsp9$ma6$2@reader1.panix.com>,
    Dan Cross <cross@spitfire.i.gajendra.net> wrote:
    In article <unra5q$3eha8$1@dont-email.me>,
    Chris Townley <news@cct-net.co.uk> wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!

    Please don't feed the troll.

    Perl _is_ the work of the devil but even so it does strings pretty well. --scott

    --
    "C'est un Nagra. C'est suisse, et tres, tres precis."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to bill on Sat Jan 13 04:54:03 2024
    On Fri, 12 Jan 2024 23:03:33 -0500, bill wrote:

    For some of us, it hasn't replaced awk.

    Perl does everything that Awk does, just as concisely. And it does more, besides.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to arne@vajhoej.dk on Sat Jan 13 14:54:41 2024
    In article <unsbik$3jsdv$1@dont-email.me>,
    Arne Vajhøj <arne@vajhoej.dk> wrote:
    On 1/12/2024 3:56 PM, Dan Cross wrote:
    In article <uns6a6$3j4gn$1@dont-email.me>,
    Arne Vajhøj <arne@vajhoej.dk> wrote:
    On 1/12/2024 12:26 PM, Dan Cross wrote:
    [snip]
    It does not mean much for writing business applications. Creating
    such data structures are not part of writing business applications.

    Eh? Not building a fast indexing structure based on domain
    rules isn't a part of writing business applications? I mean, ok
    I'll take your word for it as I'm not a business applications
    programmer type of guy, but that seems kind of weird to me.

    The business application just builds on general purpose libraries.

    If the platform comes with good general purpose libraries, then
    everything needed is there.

    If not so lucky then a custom library may be needed, but that
    is a library not a business application thing. And that library
    is not necessarily written by the same developer and not necessarily
    in the same language as the business application. Different
    skill set and different requirements.

    Basic and some ERP system. It uses some collections framework,
    some XML and JSON libs, a database lib etc.. Money is made
    from getting the application completed and out the door, not
    from creating better libraries.

    Or Python and data analysis. The developer knows Python,
    the data and how to interpret results. Deep down the
    stack there are some matrix multiplication and inversion
    code written in Fortran by a developer that knows nothing
    about data analysis. What would happen if the Python
    developer wanted to implement a custom matrix inversion?
    Most likely not anything good!

    This may all be true, but a) suggesting that business
    programmers can't or shouldn't implement elementary data
    structures seems a bit on the nose, and b) if the language makes
    it difficult to do so, that's a real shame. BASIC is a general
    purpose programming language, not a DSL.

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to davef@tsoft-inc.com on Sat Jan 13 14:53:09 2024
    In article <uns4vp$3iumi$1@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    [snip]
    Overall, your post is interesting.

    Thanks!

    On 1/12/2024 12:26 PM, Dan Cross wrote:
    In article <unqjcn$3c1o2$1@dont-email.me>,
    Dave Froble <davef@tsoft-inc.com> wrote:
    On 1/11/2024 2:42 PM, Dan Cross wrote:
    [snip]
    Which then asks the question, are such really better? Perhaps some of that is
    more opinion than fact.

    Some of it is opinion. Some of it is limitations in the
    language. Some of it is suitability for purpose.

    Suitability for purpose is always rather important.

    Indeed, which in turn raises the question again: why is VSI
    BASIC more suitable for a particular task, even in the domain of
    business data processing, than another newer language?

    If I were to start writing something from scratch today, given
    some modest requirements ("the data is in an SQL database; you
    need a web-based frontend") why would I choose BASIC for VMS
    over, say, Python or Java or one of the JVM languages, which all
    also run on VMS?

    Below, when I write Basic, I'm referring to DEC/Compaq/HP/VSI Basic.

    Understood.

    VSI BASIC appears to have a few useful things like static type
    definitions, functions, etc, and it frees the programmer from
    _having_ to specify e.g. line numbers. But it doesn't seem to
    have a lot of support for other abstraction facilities like
    modules, classes, or anything of that nature.

    What amuses me about that is that when people talk about "classes", I don't have
    a clue what they are talking about. Perhaps I do, if the case is new names for
    old concepts. That is something I didn't like about Microsoft, they seemed to
    like re-naming concepts.

    I'm not sure what Microsoft has to do with it. The concept of a
    "class" has existed in one form or the others since Simula in
    1967.

    String handling
    seems anemic.

    Can't let that one go. Basic in my opinion does strings very well.

    What do you like about it?

    Consider writing a lexical analyzer for a simple expression
    language; what would such a thing look like, in BASIC? Here I
    want to take a string as input, and emit a list of tokens that
    correspond to the elements of the langauge that are represented
    in that string.

    Don't totally understand, perhaps parsing for commands, switches, and such would
    be similar.

    Given a string such as, "(a + b)*0.6/365" and a taxonomy of
    token types such as LPAREN, RPAREN, IDENTIFIER, PLUS, REAL, INT,
    STAR, SLASH, etc, convert the above string into a list of tokens
    giving [LPAREN, IDENTIFIER("a"), PLUS, IDENTIFIER("b"), STAR,
    REAL(0.6), SLASH, INT(365)].

    Here's an example of a Token definition in SML:

    datatype Token =
    LParen
    | RParen
    | Star
    | Slash
    | Plus
    | Minus
    | Identifier of string
    | Real of real
    | Int of int

    Given such a type definition, you could build a scanner for that
    little language in, oh, I dunno, 50-100 lines or so.

    There doesn't seem to be support for generalized
    memory pointers,

    A pointer data type can be very useful. A compiler could use such to generate >proper sizing for different systems. But, in the end, it is just a numeric >piece of data. If one can process the numbers, that works. Not as generic, >but, it works. For VAX, it is an unsigned longword. For 64 bit addressing, it
    is an unsigned 64 bit integer.

    The thing is that a 64-bit integer inheritly carries no type or
    validity information when used as a pointer. You can add 5 to
    it and dereference it; is that valid and meaningful? Who knows?
    The point is that with languages that make references first
    class objects, you may get much stronger guarantees: by
    definition the reference points to a valid object of the given
    type. Outside of shenanigans designed to fool the language, it
    can never be nil, nor can it ever point to an object of a
    different type. If we strengthen the presupposition to the use
    of a type- and memory- safe language (such as Ada, Go, Rust, ML
    and so on) then we can guarantee there are no dangling
    references either.

    For example, what is the difference between memory pointers and indices in an in
    memory resident data structure, such as linked lists? Not much, in concept, right?

    In implementation not so much: after all, as you point out these
    are just numerical data. But conceptually, quite a bit, I'm
    afraid. An index is tied to a particular collection, like an
    array; a given integer treated as an index may refer to many
    different objects depending on what array it is applied to.
    Indeed, every non-empty array has a first element, so 0 or 1
    (depending on the language) is valid in a whole bunch of things.
    References, on the other hand, by and large exist with a single
    namespace (the address space enjoyed by the program). Of course
    there are some exceptions to that, particularly when we start
    messing around with virtual memory, but to a first order
    approximation it's reasonably accurate.

    But unlike a reference, an index may not be valid; suppose one
    extends beyond the end of the underlying storage object; it may
    refer to something completely invalid. Can indices be used to
    build linked lists or binary trees or other similar structures?
    Yes, but not safely.

    Correct, Basic does not have any pointer data types. It does have a function to
    retrieve the value of a pointer.

    That makes it challenging to implement dynamically sized data
    structures like trees or graphs where the size is not already
    known, or hash tables that use chaining for collision resolution
    etc.

    Not really. There is always LIB$GET_VM.

    Note I said challenging; not impossible. :-)

    How would I do these things in VSI BASIC?

    Once you can get the memory, what's the difference between say, linked lists >there, vs using pre-allocated array(s)?

    Convenience and safety, more than anything. Perhaps one doesn't
    care, but then what's the difference between using BASIC and
    Macro-32?

    let along non-nullable references, so your
    ability to create rich linked data structures seems limited.

    Not sure what that means ...

    Basically, pointers that are always valid in pointing to an
    object of a known type and and that can never be nil.

    Seems to me, pointers/indices in use always have a valid value?

    Sadly no; years of experience have shown us that programmers
    make mistakes that invalidate their assumptions about the
    validity of memory objects all the time.

    I
    don't see any support for higher-order functions,

    Not sure what that means ...

    Basically, functions that can be passed as arguments to other
    functions or functions that can be returned from functions.
    These let me do things like write a generic hash table
    implementation, where I can then parameterize calls into the
    resulting data type with functions that implement the actual
    hash for particular types of data. "Hash table of FOO."

    Hash tables takes me back to the mid 1970s. :-)

    Is what you mean something like:

    Z = FIX( SQR( SomeValue ) )

    Yeah, rather simple, but is that what you refer to?

    No? I mean, I suppose someone could use something like that as
    a (not very great) hash _function_, but that then you've got to
    build up a whole structure around that.

    lambdas,

    Not sure what that means ...

    Anonymous functions; ie, functions that are unnamed. They're
    very handy in languages that support higher-order functions.
    For example, I can trivially write a projection function that
    will extract a particular member from a data structure to use
    as a sort key.

    Not sure if you're making my brain hurt, or discussing something so simple it >doesn't deserve a name. I've built sort keys for longer than I can remember.

    Well, my SML code had some examples.

    or
    closures;

    Not sure what that means ...

    Functions that are created dynamically and "close over" part of
    their surrounding environment, e.g., to capture a value that is
    used in the closure itself.

    More brain pain ...

    Sorry!

    no currying of functions.

    Not sure what that means ...

    Partial application of a function, which allows me to create a
    new function that calls some underlying function with some
    arguments already "filled in". An example, from SML:

    fun fib' a b 0 = a
    | fib' a b n = fib' (a + b) a (n - 1)

    val fib = fib' 0 1

    Here `fib` is a function to return the nth Fibonacci
    number.

    Why does that require a special name?

    Partial function application? It's named after Haskell Curry,
    who was a mathematician and logician who studied functions (as
    in the mathematical notion).

    This example demonstrates several of these concepts:

    ; sml
    Standard ML of New Jersey (64-bit) v110.99.4 [built: Tue Aug 01 16:07:38 2023]
    - val fib =
    = let fun fib' a b 0 = a
    = | fib' a b n = fib' (a + b) a (n - 1)
    = in fn n => fib' 0 1 n
    = end;
    val fib = fn : int -> int
    - fib;
    val it = fn : int -> int
    - fib';
    stdIn:3.1-3.5 Error: unbound variable or constructor: fib'
    - map;
    val it = fn : ('a -> 'b) -> 'a list -> 'b list
    - map (fn n => fib n) [1,2,3,4,5,6,7,8,9];
    val it = [1,1,2,3,5,8,13,21,34] : int list
    - ^D
    ;

    Here, we see an example of a closure, in which the anonymous
    function (aka, lambda) returned from the `let` clause that is
    bound to `fib` closes over the `fib'` function, which is not
    visible outside of the `let`. Furthermore, `fib` is an example
    of currying as above. We see the use of higher-order functions
    in the call to `map`, which applies `fib` to each element of the
    given list. We can see it again with a slightly different
    example:

    - List.tabulate(10, fn n => fib n);
    [autoloading]
    [library $SMLNJ-BASIS/basis.cm is stable]
    [library $SMLNJ-BASIS/(basis.cm):basis-common.cm is stable]
    [autoloading done]
    val it = [0,1,1,2,3,5,8,13,21,34] : int list

    Again, these are all examples from Standard ML, a langauge that
    dates from the 80s, and takes its roots in the 70s.

    I'm going to guess that your experience includes labels for certain things, >which might be helpful at times, and exist in subsets of programming practices.
    Nothing wrong with that, but might be confusing to some others.

    These are pretty standard names. The `List.tabulate(10, fib)`
    example just shows the power of a few simple ideas.

    Statement modifiers seem
    kind of neat, but I bet they can be easily misused.

    Statement modifiers are very useful, and in some ways make code easier to >>> understand.

    I'm sure they are useful, but I can also imagine that they can
    turn into spaghetti if not used judiciously.

    X = X * 0.1 unless FOO != 2;
    X = X * 0.2 unless FOO = 2;

    seems strictly less readable than

    IF FOO != 2
    X = X * 0.1
    ELSE
    X = X * 0.2

    (Apologies for syntax errors.)

    The first thing any programmer should learn is, at some time in the future code
    will be read by another, and if it is not concise, clear, and understandable, it
    is the fault of the original programmer, and he/she should find another occupation.

    And yet we have billions of lines of impenetrable code that show
    that this is not universally true. Sadly.

    Yes, if-then-else, select case, and such can be good, and I've also seen such be
    hundreds of lines of code, and a real PITA. I tend to favor modular code. >Simple, short, and to the point.

    Agreed, but the question is whether the language provides
    features that facilitate that, or that can be easily abused?
    Most non-joke languages try to make it relatively hard to abuse,
    but some are more successful than others.

    Further, a focus on this line of discussion has been on whether
    the language provides good facilities to modularize code; being
    able to limit visibility of functions and data and so on. I
    don't see that BASIC does very much in this domain.

    But for a simple true or false, the statement modifiers can be very useful. In
    your first example, FOO should be evaluated only once.

    Sure; my point is that they can also be abused.

    The 32-bit ARM instruction set has modifiers that make execution
    of some instructions conditional on bits in the PSW; while kind
    of cool, they can also lead to some really thorny code that is
    difficult to understand.

    All in all, it doesn't look like a terrible language (it's not
    COBOL); it looks like an early-1980s-era language. But nothing
    about it jumps out at me as being spectacularly amazing, either.

    It's not amazing, it just works.

    Sure. That doesn't mean that it's good by modern standards.

    Nor does it mean it is bad either.

    True. But given a choice between two languages, all else being
    equal, would I chose the "meh it's fine" language or the one I
    felt was better designed?

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Dan Cross on Sat Jan 13 10:35:15 2024
    On 1/13/2024 9:54 AM, Dan Cross wrote:
    In article <unsbik$3jsdv$1@dont-email.me>,
    Arne Vajhøj <arne@vajhoej.dk> wrote:
    The business application just builds on general purpose libraries.

    If the platform comes with good general purpose libraries, then
    everything needed is there.

    If not so lucky then a custom library may be needed, but that
    is a library not a business application thing. And that library
    is not necessarily written by the same developer and not necessarily
    in the same language as the business application. Different
    skill set and different requirements.

    Basic and some ERP system. It uses some collections framework,
    some XML and JSON libs, a database lib etc.. Money is made
    from getting the application completed and out the door, not
    from creating better libraries.

    Or Python and data analysis. The developer knows Python,
    the data and how to interpret results. Deep down the
    stack there are some matrix multiplication and inversion
    code written in Fortran by a developer that knows nothing
    about data analysis. What would happen if the Python
    developer wanted to implement a custom matrix inversion?
    Most likely not anything good!

    This may all be true, but a) suggesting that business
    programmers can't or shouldn't implement elementary data
    structures seems a bit on the nose,

    Some business applications developers can and should. Writing
    good general purpose libraries is distinct from writing business
    application, but the abilities are not mutually exclusive. Some
    people have skills within more than one area,

    and b) if the language makes
    it difficult to do so, that's a real shame. BASIC is a general
    purpose programming language, not a DSL.

    Most general purpose languages have areas where they are
    strong and areas where they are not strong. VMS Basic is good
    at reading, writing and manipulating text and amount - old style
    business programming. It is not good for writing various dynamic
    data structures, multi threaded programming or privileged code. I
    would not even consider it a good choice for scientific
    programming. Its competitor languages must be Cobol, PL/I, Dibol
    and maybe Pascal - not Fortran, C, C++, Ada, Bliss and Macro-32.

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Reagan@21:1/5 to Chris Townley on Sat Jan 13 14:18:33 2024
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to arne@vajhoej.dk on Sat Jan 13 19:47:46 2024
    In article <unuajj$3vt4f$1@dont-email.me>,
    Arne Vajhøj <arne@vajhoej.dk> wrote:
    On 1/13/2024 9:54 AM, Dan Cross wrote:
    In article <unsbik$3jsdv$1@dont-email.me>,
    Arne Vajhøj <arne@vajhoej.dk> wrote:
    The business application just builds on general purpose libraries.

    If the platform comes with good general purpose libraries, then
    everything needed is there.

    If not so lucky then a custom library may be needed, but that
    is a library not a business application thing. And that library
    is not necessarily written by the same developer and not necessarily
    in the same language as the business application. Different
    skill set and different requirements.

    Basic and some ERP system. It uses some collections framework,
    some XML and JSON libs, a database lib etc.. Money is made
    from getting the application completed and out the door, not
    from creating better libraries.

    Or Python and data analysis. The developer knows Python,
    the data and how to interpret results. Deep down the
    stack there are some matrix multiplication and inversion
    code written in Fortran by a developer that knows nothing
    about data analysis. What would happen if the Python
    developer wanted to implement a custom matrix inversion?
    Most likely not anything good!

    This may all be true, but a) suggesting that business
    programmers can't or shouldn't implement elementary data
    structures seems a bit on the nose,

    Some business applications developers can and should. Writing
    good general purpose libraries is distinct from writing business
    application, but the abilities are not mutually exclusive. Some
    people have skills within more than one area,

    and b) if the language makes
    it difficult to do so, that's a real shame. BASIC is a general
    purpose programming language, not a DSL.

    Most general purpose languages have areas where they are
    strong and areas where they are not strong. VMS Basic is good
    at reading, writing and manipulating text and amount - old style
    business programming. It is not good for writing various dynamic
    data structures, multi threaded programming or privileged code. I
    would not even consider it a good choice for scientific
    programming. Its competitor languages must be Cobol, PL/I, Dibol
    and maybe Pascal - not Fortran, C, C++, Ada, Bliss and Macro-32.

    This would seem to support the thesis that newer languages have
    passed VSI BASIC by.

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to johnrreagan@earthlink.net on Sat Jan 13 19:50:04 2024
    In article <ununma$35nkk$1@i2pn2.org>,
    John Reagan <johnrreagan@earthlink.net> wrote:
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    In it's day, Perl was kind of the only viable solution in the
    space it inhabited (that of a relatively light-weight middle
    ground between C on one hand and the shell+utilites on the
    other). Raku fixed most of the deficiencies of perl 4 and perl
    5, but I'd argue there are other, better languages to
    choose from these days.

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Dorsey@21:1/5 to arne@vajhoej.dk on Sat Jan 13 22:49:14 2024
    In article <unt15p$3q4vb$1@dont-email.me>,
    =?UTF-8?Q?Arne_Vajh=C3=B8j?= <arne@vajhoej.dk> wrote:
    On 1/12/2024 10:41 PM, Scott Dorsey wrote:
    In article <unrsp9$ma6$2@reader1.panix.com>,
    Dan Cross <cross@spitfire.i.gajendra.net> wrote:
    In article <unra5q$3eha8$1@dont-email.me>,
    Chris Townley <news@cct-net.co.uk> wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!

    Please don't feed the troll.

    Perl _is_ the work of the devil but even so it does strings pretty well.

    It is what it was created for.

    And besides - can't we say that it replaced awk for that purpose?

    Indeed, awk was the SNOBOL of a new generation.
    --scott

    --
    "C'est un Nagra. C'est suisse, et tres, tres precis."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Dorsey@21:1/5 to ldo@nz.invalid on Sat Jan 13 22:49:51 2024
    In article <unt51b$3qp4r$1@dont-email.me>,
    Lawrence D'Oliveiro <ldo@nz.invalid> wrote:
    On Fri, 12 Jan 2024 23:03:33 -0500, bill wrote:

    For some of us, it hasn't replaced awk.

    Perl does everything that Awk does, just as concisely. And it does more, >besides.

    And the syntax is ALMOST as bad. Not quite, but almost.
    --scott

    --
    "C'est un Nagra. C'est suisse, et tres, tres precis."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Craig A. Berry@21:1/5 to Dan Cross on Sat Jan 13 17:44:50 2024
    On 1/13/24 1:50 PM, Dan Cross wrote:
    In article <ununma$35nkk$1@i2pn2.org>,
    John Reagan <johnrreagan@earthlink.net> wrote:
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    In it's day, Perl was kind of the only viable solution in the
    space it inhabited (that of a relatively light-weight middle
    ground between C on one hand and the shell+utilites on the
    other). Raku fixed most of the deficiencies of perl 4 and perl
    5, but I'd argue there are other, better languages to
    choose from these days.

    Which of the languages that are available as part of the base install of OpenVMS x86 would you choose instead of Perl?

    Yes, it's a trick question.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Chris Townley@21:1/5 to John Reagan on Sun Jan 14 00:27:46 2024
    On 13/01/2024 19:18, John Reagan wrote:
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    What put me off Perl was years ago, an idiot in our UK Support team was
    tasked with changing a mass of email addresses (due to a domain change)
    in a large number of scripts in HPUx

    He googled and found a Perl script he didn't understand, copied it and
    ran it on the production scripts directory. Net result chaos,with pretty
    much every script failing due to syntax errors. So at about 20:30 the UK support leader came into my office. We spent about 4 hours fixing as
    best we could, but I left one sysadmin script owned by me (it wasn't a
    very important script) so it failed in the morning. I got called in the
    IT director the following morning for wasting my time as a developer.No
    thought of 8 man hours wasted, nor the pratt who caused it...

    --
    Chris

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to Chris Townley on Sun Jan 14 00:59:30 2024
    On Sun, 14 Jan 2024 00:27:46 +0000, Chris Townley wrote:

    What put me off Perl was [some idiot misusing it].

    Gee, that’s too bad. Did you try suing Larry Wall for not putting training wheels on his powerful tool?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to Craig A. Berry on Sun Jan 14 01:29:25 2024
    In article <unv79k$4qr0$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:
    On 1/13/24 1:50 PM, Dan Cross wrote:
    In article <ununma$35nkk$1@i2pn2.org>,
    John Reagan <johnrreagan@earthlink.net> wrote:
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    In it's day, Perl was kind of the only viable solution in the
    space it inhabited (that of a relatively light-weight middle
    ground between C on one hand and the shell+utilites on the
    other). Raku fixed most of the deficiencies of perl 4 and perl
    5, but I'd argue there are other, better languages to
    choose from these days.

    Which of the languages that are available as part of the base install of >OpenVMS x86 would you choose instead of Perl?

    TPU!

    Yes, it's a trick question.

    Oh sorry, my bad.

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Craig A. Berry@21:1/5 to Dan Cross on Sun Jan 14 13:30:10 2024
    On 1/13/24 7:29 PM, Dan Cross wrote:
    In article <unv79k$4qr0$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:
    On 1/13/24 1:50 PM, Dan Cross wrote:
    In article <ununma$35nkk$1@i2pn2.org>,
    John Reagan <johnrreagan@earthlink.net> wrote:
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    In it's day, Perl was kind of the only viable solution in the
    space it inhabited (that of a relatively light-weight middle
    ground between C on one hand and the shell+utilites on the
    other). Raku fixed most of the deficiencies of perl 4 and perl
    5, but I'd argue there are other, better languages to
    choose from these days.

    Which of the languages that are available as part of the base install of
    OpenVMS x86 would you choose instead of Perl?

    TPU!

    Sure, it's better than DCL for some kinds of text processing, but you
    didn't say why you think it's better than Perl. Or were you not aware
    that Perl is in the base install of OpenVMS x86?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to Craig A. Berry on Sun Jan 14 20:55:51 2024
    In article <uo1co2$ihn3$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:

    On 1/13/24 7:29 PM, Dan Cross wrote:
    In article <unv79k$4qr0$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:
    On 1/13/24 1:50 PM, Dan Cross wrote:
    In article <ununma$35nkk$1@i2pn2.org>,
    John Reagan <johnrreagan@earthlink.net> wrote:
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    In it's day, Perl was kind of the only viable solution in the
    space it inhabited (that of a relatively light-weight middle
    ground between C on one hand and the shell+utilites on the
    other). Raku fixed most of the deficiencies of perl 4 and perl
    5, but I'd argue there are other, better languages to
    choose from these days.

    Which of the languages that are available as part of the base install of >>> OpenVMS x86 would you choose instead of Perl?

    TPU!

    Sure, it's better than DCL for some kinds of text processing, but you
    didn't say why you think it's better than Perl. Or were you not aware
    that Perl is in the base install of OpenVMS x86?

    In fact, I did not know that. But I fail to see the relavence.

    What I wrote, that you quoted and responded to, was that in it's
    day Perl filled a certain niche between C and the shell plus
    utilities (awk, sed, filters, etc). This implies a Unix context
    not VMS, though I suppose the POSIX environment for OpenVMS
    might be applicable. Regardless I went on to say, "there are
    other, better languages to choose from these days." I never
    stipulated or implied that those languages should be part of the
    base OpenVMS x86 instalation; that seems to be a requirement
    that you imposed after the fact.

    As for languages that I think are better than Perl on their
    merits as languages, independent of a particular execution
    environment defined by hardware and operating system, I'd put
    both Ruby and Python in that camp for light-ish weight
    scripting. For systems lanugages I'd look at Rust or Ada. For
    engineering large solutions I'd look at Go or Rust. For serious
    string processing applications, building compilers or the like,
    I'd look at OCaml, Rust, Go, or even SML (the MLton compiler is
    whole-program optimizing and quite good). Haskell is also a
    nice language, but tends not to be very accessible to workaday
    programmers.

    Some specific problems with Perl _as a language_ include lack of
    static typing, though that is also true of Python and Ruby, but
    also lack of formal argument parameters to subroutines (fixed in
    Raku however), the abstruse object system, overly implicit
    behavior with respect to scope for things like splitting strings
    and so on (an attempt to inherent a sort of "current record"
    notion from awk), and the inefficient "regexp" implementation
    that goes way beyond the regular languages and uses backtracking
    for matching e.g. backrefs.

    At this stage, given a choice between Perl and Ruby or Python,
    I'd pick one of the latter two every time.

    Does that answer your question?

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Craig A. Berry@21:1/5 to Dan Cross on Mon Jan 15 07:00:48 2024
    On 1/14/24 2:55 PM, Dan Cross wrote:
    In article <uo1co2$ihn3$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:

    On 1/13/24 7:29 PM, Dan Cross wrote:
    In article <unv79k$4qr0$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:
    On 1/13/24 1:50 PM, Dan Cross wrote:
    In article <ununma$35nkk$1@i2pn2.org>,
    John Reagan <johnrreagan@earthlink.net> wrote:
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    In it's day, Perl was kind of the only viable solution in the
    space it inhabited (that of a relatively light-weight middle
    ground between C on one hand and the shell+utilites on the
    other). Raku fixed most of the deficiencies of perl 4 and perl
    5, but I'd argue there are other, better languages to
    choose from these days.

    Which of the languages that are available as part of the base install of >>>> OpenVMS x86 would you choose instead of Perl?

    TPU!

    Sure, it's better than DCL for some kinds of text processing, but you
    didn't say why you think it's better than Perl. Or were you not aware
    that Perl is in the base install of OpenVMS x86?

    In fact, I did not know that. But I fail to see the relavence.

    What I wrote, that you quoted and responded to, was that in it's
    day Perl filled a certain niche between C and the shell plus
    utilities (awk, sed, filters, etc).

    It still does that well and the whole unix/linux tech universe would
    dissolve into a pile of unusable bits if Perl weren't there holding it together. It can do a whole lot more, though, and all sorts of serious
    systems have been written in it.

    This implies a Unix context
    not VMS, though I suppose the POSIX environment for OpenVMS
    might be applicable.

    It is not. Extreme portability has been a hallmark of Perl for decades
    and the VMS port has been around for roughly 30 years. In fact, I don't
    even know what you mean by "POSIX environment for OpenVMS." I think
    there was something called that a long time ago, though I never saw it
    or used it. There have been various things in the CRTL and the file
    system that provide compliance with one POSIX standard or another. Perl
    on VMS has generally not relied on any of them but has attempted to
    support some of them.

    Regardless I went on to say, "there are
    other, better languages to choose from these days." I never
    stipulated or implied that those languages should be part of the
    base OpenVMS x86 instalation; that seems to be a requirement
    that you imposed after the fact.

    As for languages that I think are better than Perl on their
    merits as languages, independent of a particular execution
    environment defined by hardware and operating system, I'd put
    both Ruby and Python in that camp for light-ish weight
    scripting. For systems lanugages I'd look at Rust or Ada. For
    engineering large solutions I'd look at Go or Rust. For serious
    string processing applications, building compilers or the like,
    I'd look at OCaml, Rust, Go, or even SML (the MLton compiler is
    whole-program optimizing and quite good). Haskell is also a
    nice language, but tends not to be very accessible to workaday
    programmers.

    That's a good, if predictable, list of the most popular languages around
    in the marketplace. I was genuinely curious whether, given the
    (implicit) list of DCL, TPU, and Perl available to all VMS users out of
    the box, you would be able to give an on-topic, practical answer rather
    than a lecture about how many languages you know and what's wrong with
    the languages people can actually use. We see how that turned out.

    Some specific problems with Perl _as a language_ include lack of
    static typing, though that is also true of Python and Ruby

    They are dynamic languages, and as Steven Schweda would say, "dynamic"
    is spelled differently from "static" for a reason.

    , but
    also lack of formal argument parameters to subroutines (fixed in
    Raku however), the abstruse object system, overly implicit
    behavior with respect to scope for things like splitting strings
    and so on (an attempt to inherent a sort of "current record"
    notion from awk), and the inefficient "regexp" implementation
    that goes way beyond the regular languages and uses backtracking
    for matching e.g. backrefs.

    Raku, despite it origins, is a language unrelated to Perl. Any benchmark
    I've ever heard of shows Perl has a more performant regex engine than
    most or all the others. Discussions about a better object system are
    ongoing. Perl isn't perfect, but it continues to improve in its fourth
    decade without the massive corporate support that some other languages
    get. To your credit, you did not say it looks like line noise, the
    oft-cited criticism from people who don't know what regular expressions are.

    At this stage, given a choice between Perl and Ruby or Python,
    I'd pick one of the latter two every time.

    Does that answer your question?

    Yeah, pretty much.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Clubley@21:1/5 to Dan Cross on Mon Jan 15 14:17:46 2024
    On 2024-01-14, Dan Cross <cross@spitfire.i.gajendra.net> wrote:
    In article <uo1co2$ihn3$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:

    Sure, it's better than DCL for some kinds of text processing, but you >>didn't say why you think it's better than Perl. Or were you not aware
    that Perl is in the base install of OpenVMS x86?

    In fact, I did not know that. But I fail to see the relavence.


    In some security-sensitive environments, such as the environments some
    VMS systems are running on, you can't just install a scripting language
    from the Internet that has not been validated by your vendor (ie: VSI).

    Simon.

    --
    Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP
    Walking destinations on a map are further away than they appear.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Clubley@21:1/5 to Craig A. Berry on Mon Jan 15 14:15:25 2024
    On 2024-01-13, Craig A. Berry <craigberry@nospam.mac.com> wrote:
    On 1/13/24 1:50 PM, Dan Cross wrote:
    In article <ununma$35nkk$1@i2pn2.org>,
    John Reagan <johnrreagan@earthlink.net> wrote:
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    In it's day, Perl was kind of the only viable solution in the
    space it inhabited (that of a relatively light-weight middle
    ground between C on one hand and the shell+utilites on the
    other). Raku fixed most of the deficiencies of perl 4 and perl
    5, but I'd argue there are other, better languages to
    choose from these days.

    Which of the languages that are available as part of the base install of OpenVMS x86 would you choose instead of Perl?

    Yes, it's a trick question.

    I would choose the Python installation that's part of the base install
    and hence guaranteed to be present on every system.

    Yes, that's an even more pointed answer. :-)

    Simon.

    --
    Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP
    Walking destinations on a map are further away than they appear.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to clubley@remove_me.eisner.decus.org- on Mon Jan 15 15:45:16 2024
    In article <uo3eqa$uunb$3@dont-email.me>,
    Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> wrote:
    On 2024-01-14, Dan Cross <cross@spitfire.i.gajendra.net> wrote:
    In article <uo1co2$ihn3$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:

    Sure, it's better than DCL for some kinds of text processing, but you >>>didn't say why you think it's better than Perl. Or were you not aware >>>that Perl is in the base install of OpenVMS x86?

    In fact, I did not know that. But I fail to see the relavence.

    In some security-sensitive environments, such as the environments some
    VMS systems are running on, you can't just install a scripting language
    from the Internet that has not been validated by your vendor (ie: VSI).

    That may be true, but as you point out, there's Python, and
    besides, I wasn't talking only about VMS: that's a strawman
    Berry inserted. He appears to want to pick a fight about
    something I didn't say. Oh well.

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to Craig A. Berry on Mon Jan 15 15:43:00 2024
    In article <uo3aa1$u939$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:
    On 1/14/24 2:55 PM, Dan Cross wrote:
    In article <uo1co2$ihn3$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:

    On 1/13/24 7:29 PM, Dan Cross wrote:
    In article <unv79k$4qr0$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:
    On 1/13/24 1:50 PM, Dan Cross wrote:
    In article <ununma$35nkk$1@i2pn2.org>,
    John Reagan <johnrreagan@earthlink.net> wrote:
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    In it's day, Perl was kind of the only viable solution in the
    space it inhabited (that of a relatively light-weight middle
    ground between C on one hand and the shell+utilites on the
    other). Raku fixed most of the deficiencies of perl 4 and perl
    5, but I'd argue there are other, better languages to
    choose from these days.

    Which of the languages that are available as part of the base install of >>>>> OpenVMS x86 would you choose instead of Perl?

    TPU!

    Sure, it's better than DCL for some kinds of text processing, but you
    didn't say why you think it's better than Perl. Or were you not aware
    that Perl is in the base install of OpenVMS x86?

    In fact, I did not know that. But I fail to see the relavence.

    What I wrote, that you quoted and responded to, was that in it's
    day Perl filled a certain niche between C and the shell plus
    utilities (awk, sed, filters, etc).

    It still does that well and the whole unix/linux tech universe would
    dissolve into a pile of unusable bits if Perl weren't there holding it >together. It can do a whole lot more, though, and all sorts of serious >systems have been written in it.

    It still does it, but the question was, "does it do it _as well
    as other languages"? I see nothing to recommend Perl versus any
    number of other languages that fill a similar space.

    Just because Perl is useful, does not mean that it is a _good_
    languate. Conflating utility with quality is a common mistake.

    This implies a Unix context
    not VMS, though I suppose the POSIX environment for OpenVMS
    might be applicable.

    It is not.

    What is not?

    Extreme portability has been a hallmark of Perl for decades
    and the VMS port has been around for roughly 30 years.

    The thing you do not seem to be grasping is that I was talking
    about a programming language, not what comes out of the box with
    VMS. I had specifically mentioned Perl as a tool that sat
    between C and the shell+utilities. Where you seem to be failing
    to comprehend is that, when I said "shell+utilities" I was
    referring to a Unix environment (where Perl was born). I wasn't
    talking about VMS; the fact that Perl ships as part of the base
    image for OpenVMS x86 seems irrelevant to the strengths and
    weakenesses of the language.

    In fact, I don't
    even know what you mean by "POSIX environment for OpenVMS." I think
    there was something called that a long time ago, though I never saw it
    or used it.

    It seems, then, that you are responding to a strawman of your
    own invention.

    There have been various things in the CRTL and the file
    system that provide compliance with one POSIX standard or another. Perl
    on VMS has generally not relied on any of them but has attempted to
    support some of them.

    Not relevant. The specific thing I was talking about was a
    Unix-like shell and the "usual" compliment of Unix utilities.

    Regardless I went on to say, "there are
    other, better languages to choose from these days." I never
    stipulated or implied that those languages should be part of the
    base OpenVMS x86 instalation; that seems to be a requirement
    that you imposed after the fact.

    As for languages that I think are better than Perl on their
    merits as languages, independent of a particular execution
    environment defined by hardware and operating system, I'd put
    both Ruby and Python in that camp for light-ish weight
    scripting. For systems lanugages I'd look at Rust or Ada. For
    engineering large solutions I'd look at Go or Rust. For serious
    string processing applications, building compilers or the like,
    I'd look at OCaml, Rust, Go, or even SML (the MLton compiler is
    whole-program optimizing and quite good). Haskell is also a
    nice language, but tends not to be very accessible to workaday
    programmers.

    That's a good, if predictable, list of the most popular languages around
    in the marketplace. I was genuinely curious whether, given the
    (implicit) list of DCL, TPU, and Perl available to all VMS users out of
    the box, you would be able to give an on-topic, practical answer rather
    than a lecture about how many languages you know and what's wrong with
    the languages people can actually use. We see how that turned out.

    You asked my opinion about programming languages then imposed
    this requirement that they come with OpenVMS by default after
    the fact. That's a strawman. Physician, heal thyself.

    Some specific problems with Perl _as a language_ include lack of
    static typing, though that is also true of Python and Ruby

    They are dynamic languages, and as Steven Schweda would say, "dynamic"
    is spelled differently from "static" for a reason.

    Yeah, and having worked on large systems written in both Python
    and Common Lisp, I wouldn't recommend a dynamic language for
    serious work given other alternatives. Have you ever worked in
    a million line system in a dynamic language? Be honest. I once
    debugged a production outage in a Lisp system where someone
    tried to add a number to the CDR of a list, raising a condition.
    The CONS cell in question had originally be used to hold a pair
    of numbers; that pair was then extended to a thruple but the
    programmer who made the change missed one updating one call to
    CADR. Something that would have been trivially caught by the
    compiler in a statically typed language. Static type systems
    render entire classes of errors unrepresentable.

    , but
    also lack of formal argument parameters to subroutines (fixed in
    Raku however), the abstruse object system, overly implicit
    behavior with respect to scope for things like splitting strings
    and so on (an attempt to inherent a sort of "current record"
    notion from awk), and the inefficient "regexp" implementation
    that goes way beyond the regular languages and uses backtracking
    for matching e.g. backrefs.

    Raku, despite it origins, is a language unrelated to Perl.

    "Raku is a member of the Perl family of programming languages.
    Formerly known as Perl 6, it was renamed in October 2019." https://en.wikipedia.org/wiki/Raku_(programming_language)

    Any benchmark
    I've ever heard of shows Perl has a more performant regex engine than
    most or all the others.

    https://swtch.com/~rsc/regexp/regexp1.html

    Discussions about a better object system are ongoing.

    That's great!

    Perl isn't perfect, but it continues to improve in its fourth
    decade without the massive corporate support that some other languages
    get.

    That's also great!

    To your credit, you did not say it looks like line noise, the
    oft-cited criticism from people who don't know what regular expressions are.

    Because I don't think that it looks like line noise. I don't
    even really think that perl is a _bad_ language, and at one
    point it was de facto necessary, as I pointed out.

    You seem to be offended and reactive that I think there are
    _better_ langauges and you seem to think it a sign of a poor
    argument that I pointed to other, currently popular, languages
    as alternatives. Have you considered that those other
    languages may be more popular than Perl these days for a
    _reason_? Have you further consider that languages designed
    more recently might have even taken lessons from, perhaps even
    been inspired by aspects of, Perl's design? That's actually
    quite a complimentary legacy, if you can get beyond the
    emotion about it.

    At this stage, given a choice between Perl and Ruby or Python,
    I'd pick one of the latter two every time.

    Does that answer your question?

    Yeah, pretty much.

    Cool.

    Look man, a programming language is not my sister: I don't feel
    the need to defend its honor if its criticized. After many
    decades in this industry I can no longer bring myself to feel
    strong emotions about technology; it's just not worth it.
    Things come and go; Perl had a great run and enjoyed a long time
    in the sun. That doesn't mean that it's bad, but time doesn't
    stand still and it also doesn't mean that there aren't other,
    better options available today. Perhaps put down the knee-jerk
    defensiveness and investigate why people think other languages
    are better. You might just learn something.

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Craig A. Berry on Mon Jan 15 12:39:13 2024
    On 1/15/2024 12:33 PM, Craig A. Berry wrote:
    On 1/15/24 8:15 AM, Simon Clubley wrote:
    On 2024-01-13, Craig A. Berry <craigberry@nospam.mac.com> wrote:
    Which of the languages that are available as part of the base install of >>> OpenVMS x86 would you choose instead of Perl?

    Yes, it's a trick question.

    I would choose the Python installation that's part of the base install
    and hence guaranteed to be present on every system.

    I wish that Python were available out of the box, and perhaps it will be
    some day, but as far as I know it isn't yet.  In fact I don't think it's even available as a separate install for x86 yet is it?

    It is not.

    We are still waiting for it (and Basic).

    https://vmssoftware.com/products/python/

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Craig A. Berry@21:1/5 to Simon Clubley on Mon Jan 15 11:33:40 2024
    On 1/15/24 8:15 AM, Simon Clubley wrote:
    On 2024-01-13, Craig A. Berry <craigberry@nospam.mac.com> wrote:
    On 1/13/24 1:50 PM, Dan Cross wrote:
    In article <ununma$35nkk$1@i2pn2.org>,
    John Reagan <johnrreagan@earthlink.net> wrote:
    On 1/12/2024 7:09 AM, Chris Townley wrote:
    On 12/01/2024 06:15, Lawrence D'Oliveiro wrote:
    On Fri, 12 Jan 2024 00:40:47 -0500, Dave Froble wrote:

    Basic in my opinion does strings very well.

    Only if you measure it by the pre-Perl era.

    Perl is the work of the devil!


    I actually like Perl and did a whole bunch of scripting with it
    during my time with HP-UX and NonStop compilers.

    In it's day, Perl was kind of the only viable solution in the
    space it inhabited (that of a relatively light-weight middle
    ground between C on one hand and the shell+utilites on the
    other). Raku fixed most of the deficiencies of perl 4 and perl
    5, but I'd argue there are other, better languages to
    choose from these days.

    Which of the languages that are available as part of the base install of
    OpenVMS x86 would you choose instead of Perl?

    Yes, it's a trick question.

    I would choose the Python installation that's part of the base install
    and hence guaranteed to be present on every system.

    I wish that Python were available out of the box, and perhaps it will be
    some day, but as far as I know it isn't yet. In fact I don't think it's
    even available as a separate install for x86 yet is it?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Scott Dorsey@21:1/5 to clubley@remove_me.eisner.decus.org- on Mon Jan 15 18:50:23 2024
    Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> wrote:

    I know that Craig is very fond of Perl, but IMHO, the way forward
    is Python, not Perl. I was a Perl user at one time, but it must be
    at least 15 years since I have touched it. Other alternatives have
    taken over from the position Perl once held.

    There is far more new development being done in Python. But, there is far
    more existing code on VMS systems in Perl. If the goal is to get x64 VMS
    up to the point of being able to move existing VMS users onto it, then Perl
    is a clear winner. If the goal is to get new systems and maybe even new customers onto x64 VMS, then Python is a clear winner.

    In the end, both are going to be needed but I understand that the primary argument now is to get systems ready for existing users with existing code.

    Personally I don't like either one very much and the indentation syntax
    in Python drives me insane. Also I think the lack of RDB hooks and general hooks into VMS is a problem for both of them, although a problem that can be remedied in the future with some effort.
    --scott


    --
    "C'est un Nagra. C'est suisse, et tres, tres precis."

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Scott Dorsey on Mon Jan 15 14:01:41 2024
    On 1/15/2024 1:50 PM, Scott Dorsey wrote:
    Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> wrote:
    I know that Craig is very fond of Perl, but IMHO, the way forward
    is Python, not Perl. I was a Perl user at one time, but it must be
    at least 15 years since I have touched it. Other alternatives have
    taken over from the position Perl once held.

    There is far more new development being done in Python. But, there is far more existing code on VMS systems in Perl. If the goal is to get x64 VMS
    up to the point of being able to move existing VMS users onto it, then Perl is a clear winner. If the goal is to get new systems and maybe even new customers onto x64 VMS, then Python is a clear winner.

    In the end, both are going to be needed but I understand that the primary argument now is to get systems ready for existing users with existing code.

    Personally I don't like either one very much and the indentation syntax
    in Python drives me insane. Also I think the lack of RDB hooks and general hooks into VMS is a problem for both of them, although a problem that can be remedied in the future with some effort.

    I must be missing something.

    VMS Python has Rdb access and a VMS module with interfaces to
    all sorts of system services.

    I would assume Perl has the same, I have just never tried myself.

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Clubley@21:1/5 to Dan Cross on Mon Jan 15 18:34:34 2024
    On 2024-01-15, Dan Cross <cross@spitfire.i.gajendra.net> wrote:
    In article <uo3eqa$uunb$3@dont-email.me>,
    Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> wrote:
    On 2024-01-14, Dan Cross <cross@spitfire.i.gajendra.net> wrote:
    In article <uo1co2$ihn3$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:

    Sure, it's better than DCL for some kinds of text processing, but you >>>>didn't say why you think it's better than Perl. Or were you not aware >>>>that Perl is in the base install of OpenVMS x86?

    In fact, I did not know that. But I fail to see the relavence.

    In some security-sensitive environments, such as the environments some
    VMS systems are running on, you can't just install a scripting language >>from the Internet that has not been validated by your vendor (ie: VSI).

    That may be true, but as you point out, there's Python, and
    besides, I wasn't talking only about VMS: that's a strawman
    Berry inserted. He appears to want to pick a fight about
    something I didn't say. Oh well.


    Sorry Dan, I guess I was too subtle.

    Python is not currently available for x86-64 VMS, but there's an
    opinion (which I share), that, instead of Perl, it would have been
    far better for VSI to do the work needed to make it available, and
    ship it as part of the base installation so that you could rely on
    it being available on a site.

    It has been available on VMS in the past as a third-party port, and
    it was very popular with those who could run third-party software on
    their systems.

    I know that Craig is very fond of Perl, but IMHO, the way forward
    is Python, not Perl. I was a Perl user at one time, but it must be
    at least 15 years since I have touched it. Other alternatives have
    taken over from the position Perl once held.

    Simon.

    --
    Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP
    Walking destinations on a map are further away than they appear.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to Simon Clubley on Mon Jan 15 19:38:40 2024
    On Mon, 15 Jan 2024 14:17:46 -0000 (UTC), Simon Clubley wrote:

    In some security-sensitive environments, such as the environments some
    VMS systems are running on, you can't just install a scripting language
    from the Internet that has not been validated by your vendor (ie: VSI).

    I don’t understand this. Corporate machines are supposed to be locked down for security, yet they let some third party (VSI, Microsoft, whoever)
    control what does and doesn’t go on their machines? Surely they would want
    to be the ones with that control. Aren’t these proprietary platforms
    supposed to give them that control?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to clubley@remove_me.eisner.decus.org- on Mon Jan 15 20:18:08 2024
    In article <uo3trp$11cnd$1@dont-email.me>,
    Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> wrote:
    On 2024-01-15, Dan Cross <cross@spitfire.i.gajendra.net> wrote:
    In article <uo3eqa$uunb$3@dont-email.me>,
    Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> wrote:
    On 2024-01-14, Dan Cross <cross@spitfire.i.gajendra.net> wrote:
    In article <uo1co2$ihn3$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:

    Sure, it's better than DCL for some kinds of text processing, but you >>>>>didn't say why you think it's better than Perl. Or were you not aware >>>>>that Perl is in the base install of OpenVMS x86?

    In fact, I did not know that. But I fail to see the relavence.

    In some security-sensitive environments, such as the environments some >>>VMS systems are running on, you can't just install a scripting language >>>from the Internet that has not been validated by your vendor (ie: VSI).

    That may be true, but as you point out, there's Python, and
    besides, I wasn't talking only about VMS: that's a strawman
    Berry inserted. He appears to want to pick a fight about
    something I didn't say. Oh well.

    Sorry Dan, I guess I was too subtle.

    Python is not currently available for x86-64 VMS, but there's an
    opinion (which I share), that, instead of Perl, it would have been
    far better for VSI to do the work needed to make it available, and
    ship it as part of the base installation so that you could rely on
    it being available on a site.

    It has been available on VMS in the past as a third-party port, and
    it was very popular with those who could run third-party software on
    their systems.

    I know that Craig is very fond of Perl, but IMHO, the way forward
    is Python, not Perl. I was a Perl user at one time, but it must be
    at least 15 years since I have touched it. Other alternatives have
    taken over from the position Perl once held.

    Ah, I see. Yes, I agree with you; Python has more of a future
    than Perl does, legacy compatibility not withstanding.

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Craig A. Berry@21:1/5 to Scott Dorsey on Mon Jan 15 20:09:12 2024
    On 1/15/24 12:50 PM, Scott Dorsey wrote:
    Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> wrote:

    I know that Craig is very fond of Perl, but IMHO, the way forward
    is Python, not Perl. I was a Perl user at one time, but it must be
    at least 15 years since I have touched it. Other alternatives have
    taken over from the position Perl once held.

    There is far more new development being done in Python. But, there is far more existing code on VMS systems in Perl. If the goal is to get x64 VMS
    up to the point of being able to move existing VMS users onto it, then Perl is a clear winner. If the goal is to get new systems and maybe even new customers onto x64 VMS, then Python is a clear winner.

    In the end, both are going to be needed but I understand that the primary argument now is to get systems ready for existing users with existing code.

    Yep, both are essential, and Python has clearly won in the marketplace
    so it's an important path to the future. It wouldn't hurt to have a
    Unix shell always available too just because of how many people are
    already familiar with them. I guess that couldn't be bash given the GPL.

    Personally I don't like either one very much and the indentation syntax
    in Python drives me insane.

    I admire Python's capabilities and I'm willing to use it if the code I'm writing is going to be maintained by someone who prefers it, but yeah,
    the significant whitespace is really hard to get used to. I was
    traumatized in my youth by some whitespace in column 72 of a Fortran
    program that prevented it from compiling and it still freaks me out in
    Python that the number of spaces at the beginning of a line changes its meaning. Millions of people seem to accept it with a shrug, though, so
    go figure.

    Also I think the lack of RDB hooks and general
    hooks into VMS is a problem for both of them, although a problem that can be remedied in the future with some effort.

    As Arne pointed out, I think there are solutions available, but I
    haven't run Rdb in a very long time.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Craig A. Berry on Mon Jan 15 22:07:04 2024
    On 1/15/2024 9:09 PM, Craig A. Berry wrote:
    On 1/15/24 12:50 PM, Scott Dorsey wrote:
    Simon Clubley  <clubley@remove_me.eisner.decus.org-Earth.UFP> wrote:
    I know that Craig is very fond of Perl, but IMHO, the way forward
    is Python, not Perl. I was a Perl user at one time, but it must be
    at least 15 years since I have touched it. Other alternatives have
    taken over from the position Perl once held.

    There is far more new development being done in Python.  But, there is
    far
    more existing code on VMS systems in Perl.  If the goal is to get x64 VMS >> up to the point of being able to move existing VMS users onto it, then
    Perl
    is a clear winner.  If the goal is to get new systems and maybe even new
    customers onto x64 VMS, then Python is a clear winner.

    In the end, both are going to be needed but I understand that the primary
    argument now is to get systems ready for existing users with existing
    code.

    Yep, both are essential, and Python has clearly won in the marketplace
    so it's an important path to the future.  It wouldn't hurt to have a
    Unix shell always available too just because of how many people are
    already familiar with them.  I guess that couldn't be bash given the GPL.

    Nothing VMS would be linked with VMS so GPL should not be a problem.

    Or maybe I should say "is" instead of "would be".

    https://vmssoftware.com/products/gnv/

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to Craig A. Berry on Tue Jan 16 02:25:17 2024
    On Mon, 15 Jan 2024 20:09:12 -0600, Craig A. Berry wrote:

    I was traumatized in my youth by some whitespace in column 72 of a
    Fortran program that prevented it from compiling ...

    I wonder how that worked, given that Fortran was one language that would happily *ignore* whitespace in the middle of identifiers and syntax words.

    (Notice I said “syntax words”, not “reserved words”, since Fortran had no
    reserved words.)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Lawrence D'Oliveiro on Tue Jan 16 08:15:23 2024
    On 1/15/2024 9:25 PM, Lawrence D'Oliveiro wrote:
    On Mon, 15 Jan 2024 20:09:12 -0600, Craig A. Berry wrote:
    I was traumatized in my youth by some whitespace in column 72 of a
    Fortran program that prevented it from compiling ...

    I wonder how that worked, given that Fortran was one language that would happily *ignore* whitespace in the middle of identifiers and syntax words.

    It is still possible.

    Even with a nice Fortran compiler like VMS Fortran.

    Anyone that can create an example where a space in
    position 72 will cause VMS Fortran to give an error?

    (my example where adding a space in column 72 in line 4 will
    cause a compile error %F90-E-ERROR is way below - to allow peple
    to think about it)

    Arne






















































    program p72
    character*8 somestr(6)
    integer*4 i
    data somestr/8hAAAAAAAA,8hBBBBBBBB,8hCCCCCCCC,8hDDDDDDDD,8hEEEEEE
    +EE,8hFFFFFFFF/
    do 100 i = 1, 6
    write(*,*) somestr(i)
    100 continue
    end

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Simon Clubley@21:1/5 to Lawrence D'Oliveiro on Tue Jan 16 13:20:32 2024
    On 2024-01-15, Lawrence D'Oliveiro <ldo@nz.invalid> wrote:
    On Mon, 15 Jan 2024 14:17:46 -0000 (UTC), Simon Clubley wrote:

    In some security-sensitive environments, such as the environments some
    VMS systems are running on, you can't just install a scripting language
    from the Internet that has not been validated by your vendor (ie: VSI).

    I don?t understand this. Corporate machines are supposed to be locked down for security, yet they let some third party (VSI, Microsoft, whoever)
    control what does and doesn?t go on their machines? Surely they would want
    to be the ones with that control. Aren?t these proprietary platforms
    supposed to give them that control?

    It's about accountability and support. If the vendor screws up, you can
    hold them accountable and your contract with them requires the vendor to
    fix any faulty software.

    You don't have to install everything the vendor offers (see my previous comments about selecting what you need during installation), but if the
    vendor offers something, you can hold them accountable if you use it and
    find a problem.

    Simon.

    --
    Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP
    Walking destinations on a map are further away than they appear.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Dan Cross@21:1/5 to clubley@remove_me.eisner.decus.org- on Tue Jan 16 16:23:48 2024
    In article <uo3eqa$uunb$3@dont-email.me>,
    Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> wrote:
    On 2024-01-14, Dan Cross <cross@spitfire.i.gajendra.net> wrote:
    In article <uo1co2$ihn3$1@dont-email.me>,
    Craig A. Berry <craigberry@nospam.mac.com> wrote:

    Sure, it's better than DCL for some kinds of text processing, but you >>>didn't say why you think it's better than Perl. Or were you not aware >>>that Perl is in the base install of OpenVMS x86?

    In fact, I did not know that. But I fail to see the relavence.

    In some security-sensitive environments, such as the environments some
    VMS systems are running on, you can't just install a scripting language
    from the Internet that has not been validated by your vendor (ie: VSI).

    Ah, yes; I remember this from when I was in the US military.
    There was a list of approved software one could install, but it
    always struck me as ponderously ambiguous. For instance, some
    specific version of a tool or editor or something would be on
    one row of the list, while the next row would be "Red Hat
    Enterprise Linux" with, presumably, its RPM repos. Of course,
    this was in Afghanistan, and I didn't have install media, so....
    *shrug*

    - Dan C.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to Simon Clubley on Tue Jan 16 19:52:00 2024
    On Tue, 16 Jan 2024 13:20:32 -0000 (UTC), Simon Clubley wrote:

    If the vendor screws up, you can
    hold them accountable and your contract with them requires the vendor to
    fix any faulty software.

    When was the last time Microsoft (or VSI, for that matter) was
    successfully sued over the quality of its software?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Arne_Vajh=C3=B8j?=@21:1/5 to Lawrence D'Oliveiro on Tue Jan 16 16:19:24 2024
    On 1/16/2024 2:52 PM, Lawrence D'Oliveiro wrote:
    On Tue, 16 Jan 2024 13:20:32 -0000 (UTC), Simon Clubley wrote:
    If the vendor screws up, you can
    hold them accountable and your contract with them requires the vendor to
    fix any faulty software.

    When was the last time Microsoft (or VSI, for that matter) was
    successfully sued over the quality of its software?

    I will recommend against fasting those days when that does not happen.

    :-)

    But what happen all the time is that customers report a problem
    and it get fixed, either because the customer pay for ongoing
    support or because the original purchase price included some
    level of support.

    The reason that many companies chose to pay Redhat for RHEL.

    Arne

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Lawrence D'Oliveiro@21:1/5 to bill on Tue Jan 16 21:16:39 2024
    On Wed, 10 Jan 2024 21:26:15 -0500, bill wrote:

    On 1/10/2024 6:54 PM, Lawrence D'Oliveiro wrote:

    There are some documents about [ZGRASS] at Bitsavers.

    Well, as long as we're bringing up non-standard BASICs. How about
    BASIC09.

    What interesting features did it have? Lexical binding, perhaps?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)