[HN Gopher] Young Persons Guide to BCPL Programming on the Raspb...
       ___________________________________________________________________
        
       Young Persons Guide to BCPL Programming on the Raspberry Pi [pdf]
        
       Author : scrlk
       Score  : 46 points
       Date   : 2025-01-12 13:37 UTC (1 days ago)
        
 (HTM) web link (www.cl.cam.ac.uk)
 (TXT) w3m dump (www.cl.cam.ac.uk)
        
       | stargrazer wrote:
       | University of Cambridge Revision date: Tue Oct 23 16:58:19 BST
       | 2018
        
       | Rochus wrote:
       | Wow, this is an amazing book, nearly 800 pages; counless examples
       | of BCPL applications, by the author of the BCPL language.
        
       | b800h wrote:
       | I'm going to test out the assertion that children as young as 10
       | can use the guide, by asking my 11-year-old to use it. I don't
       | believe it; it assumes way too much knowledge of computer
       | terminology. We'll see.
       | 
       | BCPL also looks dry as hell, I'm not convinced it's a great first
       | language.
        
       | guenthert wrote:
       | Nice introduction text with detailed description to set-up a R.Pi
       | and interesting examples (AES, calculating Euler's number,
       | Rubik's cube etc.). Shame it uses an utterly obsolete language of
       | which most interesting feature (byte code interpreter making
       | porting the compiler to new architectures comparatively easy) was
       | important in the seventies with its plethora of architectures
       | (many short-lives), but hardly today.
        
       | throwaway290 wrote:
       | What makes it specifically for young people? I looked at the
       | paper but didn't spot anything obvious
        
         | rsynnott wrote:
         | In the context of BCPL, "young person" simply means "under 90".
        
       | louthy wrote:
       | Page 29 is the first code. You need to work through 'War and
       | Peace' of text before you get there. This is not good for a
       | "young person". They need to get there quicker IMHO.
       | 
       | I always say that the reason I got into programming (at the age
       | of 10) was because of the BBC Micro User Guide [1].
       | 
       | * Page 5: first code written (and importantly, code that has a
       | visual component)
       | 
       | * Page 6: Drawing lines
       | 
       | * Page 7: Playing sounds
       | 
       | etc.
       | 
       | I realised very quickly that I was able to make a game. And that
       | was it, I was hooked for life.
       | 
       | The Raspberry Pi took its inspiration from the BBC Micro (Model
       | B). It's a shame that there wasn't more of a push to make it as
       | easy as the original Model B to get going and start programming.
       | 
       | (Of course I realise that it's running Linux where nothing is
       | simple, but yeah, I'm not sure it necessarily helps kickstart the
       | next generation in the way the original BBC Micro did)
       | 
       | [1] https://archive.org/details/BBCUG/mode/2up?view=theater
        
         | tgv wrote:
         | I think the title is just a play on "A young person's guide to
         | the orchestra" (by Britten). Nobody in their right mind would
         | want to learn programming in BCPL, the predecessor of the
         | predecessor of C.
        
           | louthy wrote:
           | > Nobody in their right mind would want to learn programming
           | in BCPL
           | 
           | I agree, but that's not what the author thinks:
           | 
           | "When a new programming language is designed it is invariably
           | strongly influenced by languages that preceded it. One thread
           | of related languages is: Algol -> CPL -> BCPL -> B -> C ->
           | C++ -> Java, indicating that BCPL is just a small link in the
           | chain from the development of Algol in the late 1950s to Java
           | in the 1980s. _BCPL is particularly easy to learn and is thus
           | a good choice as a first programming language._ "
           | 
           | Emphasis mine.
           | 
           | Also,
           | 
           | "This document is intended to help people with no computing
           | experience to learn to write, compile and run BCPL programs
           | on the Raspberry Pi in as little as one or two days, even if
           | they are as young as 10 years old."
           | 
           | So, unless I'm missing something, this document is intended
           | to teach programming first concepts with BCPL. And it seems
           | like it's aimed at young people, regardless of the play on
           | words (which I didn't know, thanks!).
        
             | lordmauve wrote:
             | > > Nobody in their right mind would want to learn
             | programming in BCPL
             | 
             | > I agree, but that's not what the author thinks:
             | 
             | The author of this document is Martin Richards, the creator
             | of BCPL. Of course he thinks you would want to learn it.
        
               | 082349872349872 wrote:
               | We've all been a young person[0], so it's easy to
               | criticise from that angle.
               | 
               | However, I'd like to think the readership of HN are
               | hacker enough to like to think that, given a desert
               | island (with minor deps like sand and the Friday hardware
               | fab!) and a few spare years, they'd be capable of
               | Robinson Crusoe'ing up a personal development
               | environment.
               | 
               | From that point of view, I find[1] this effort admirable:
               | it's several hundred pages, by Martin Richards, about the
               | port of the BCPL toolchain (language, compiler, bytecode
               | interpreter, libraries, debugger, etc. all by Martin
               | Richards?) to a new system (was it a new arch as
               | well?)... by Martin Richards.
               | 
               | How many among us get a machine with new graphics, decide
               | to write a flight simulator, and then --only as a
               | minor[2] implementation detail mind you-- plumb float
               | support through our entire language ecosystem? Who needs
               | a shaved yak when you're pursuing the buttery-smooth
               | shaded yak?
               | 
               | [0] or maybe we even still are:
               | https://news.ycombinator.com/item?id=42682353
               | 
               | " _when I was your age all we had were 1 's and 0's, and
               | sometimes not even 0's, so we'd stay up all night xor'ing
               | 1's to have enough for the next day..._"
               | 
               | [1] when I did this sort of thing to pay the bills, I had
               | someone else doing the tech writing and someone else
               | providing toolchain and debugger sources, and it was
               | still not a trivial lift.
               | 
               | [2] compare Wirth FPGA'ing up an entire homebrewed arch
               | just so he could have a personal workstation using his
               | favourite mouse.
        
             | tgv wrote:
             | You're right. I'm somewhat stumped.
        
         | Tor3 wrote:
         | Chapter 4.1 (installation of BCPL, before you can start coding)
         | is indeed somewhat(!) more complicated than how it was for the
         | BBC microcomputer (or any other back in the day) - just power
         | it on, enter                 10 PRINT "HOW ARE YOU"       RUN
        
         | anonzzzies wrote:
         | Before I even had a computer (begin 80s), my grandparents used
         | to always bring me to a warehouse where they sold inventory
         | from burnt down shops. Usually I would by soccer fan shirts
         | (Ajax in my case at the time) and stuff, but this time, it was
         | a specialist bookshop and I picked up a few computer books and
         | magazines. This was so early in the computer era that I had
         | never seen a computer magazine or book; I knew what computers
         | were from the 2600 which my cousin had to play games on, but
         | outside that I knew not very much. I read these things from
         | cover to cover many (100 times possibly) times and always
         | remember that when we did get our first computer, I opened my
         | favorite one; it had the ISBN/author/publisher page and then
         | page 1 was:
         | 
         | Turn the computer on and type
         | 
         | 10 PRINT "My first homecomputer program"<enter>
         | 
         | RUN<enter>
         | 
         | And the book continued like that. I really cannot remember at
         | all what the book was called or for which homecomputer it was;
         | I do remember that after a bunch of pages, the programs stopped
         | working on my system with a syntax error. I think it maybe was
         | a ZX Spectrum or so book, but it hardly can be as I think it
         | was too early for that. It was the fastest way to get into it
         | and got me deep into programming because it went so easy that I
         | kept finding more and more.
        
       | kstrauser wrote:
       | My total knowledge of BCPL: it's what AmigaDOS was written in
       | before they ported it to C.
        
         | amiga386 wrote:
         | https://en.wikipedia.org/wiki/TRIPOS was written in BCPL (in
         | 1978) at the University of Cambridge.
         | 
         | TRIPOS was ported to the 68000 in 1981 by Dr Tim King. In 1984,
         | he joined the company MetaComCo, and they bought the commercial
         | rights to his 68000 port.
         | 
         | The Amiga OS was well behind schedule in 1984. MetaComCo were
         | contracted in March 1985 to integrate TRIPOS into the Amiga's
         | existing OS code (mainly Exec and Intuition), and the Amiga
         | launched in July 1985. That's a pretty fast turnaround time!
         | 
         | TRIPOS is most evident in the AmigaDOS portions of AmigaOS,
         | specifically dos.library, the CLI, the directory structure (C,
         | L, S are TRIPOS standard directories for commands, libraries,
         | scripts, hence the odd mix of LIBS for Amiga libraries but L
         | for AmigaDOS handlers and filesystems), the standard disk
         | filesystem, and all filesystem handlers.
         | 
         | For AmigaOS 2.0 (released 1990-1991), it wasn't quite "[TRIPOS]
         | ported to C"... AmigaDOS was rewritten entirely. There was no
         | BCPL or TRIPOS left, except deliberate structures/functions
         | (written in C!) to support backward-compatibility with BCPL
         | software.
         | 
         | AmigaDOS's API was greatly extended to provide official OS
         | calls for what were previously BCPL globvec internals, and most
         | of the command-line programs were rewritten in C. This work had
         | already been advocated for and done in 1987-1989 by the third-
         | party "AmigaDOS Replacement Project"
         | https://aminet.net/package/misc/antiq/ARP_13
        
           | icedchai wrote:
           | Heh. I love reading stuff like this. I still remember the
           | time I booted up a soft-kicked version of AmigaOS 2.0 on my
           | A500. It was like night and day compared to 1.3.
        
       | Mumps wrote:
       | BCPL ("Basic Combined Programming Language") [0]
       | 
       | Insanely frustrating that BCPL doesn't seem to be defined
       | anywhere in the document itself.
       | 
       | [0] https://en.wikipedia.org/wiki/BCPL
        
         | dboreham wrote:
         | It's defined in the BCPL book.
        
       | dfawcus wrote:
       | It one is going to play with obsolete languages, then wouldn't
       | Algol 68 be a better pick? At least it has types beyond "cell".
       | 
       | Or is the idea that BCPL is quite close to the bare metal?
       | 
       | Algol 68 Genie:
       | https://jmvdveer.home.xs4all.nl/en.algol-68-genie.html
       | 
       | See this, code starts on pg 11:
       | https://jmvdveer.home.xs4all.nl/learning-algol-68-genie.pdf
       | (after 18 pages of preface)
       | 
       | See this for how BCPL begat B which begat C: https://www.bell-
       | labs.com/usr/dmr/www/chist.html
        
         | 082349872349872 wrote:
         | > _At least it has types beyond "cell"._
         | 
         | I prefer MCPL ( https://www.cl.cam.ac.uk/~mr10/mcplman.pdf )
         | but I believe BCPL did recently pick up a floating point type,
         | after Richards got a Pi and before he wrote a flight sim.
         | 
         | [does the C in CPL stand for Cambridge, Combined, or
         | Christopher? Yes.]
        
       | GeoffKnauth wrote:
       | BCPL--hadn't had my first coffee before I read this, I thought it
       | was going to be SBCL.
        
       | the__alchemist wrote:
       | I'm confident Raspberry Pi writers have never used a credit card.
        
       ___________________________________________________________________
       (page generated 2025-01-13 23:02 UTC)