Stories
Slash Boxes
Comments

SoylentNews is people

posted by janrinok on Sunday March 13 2022, @02:14PM   Printer-friendly

10 years of Raspberry Pi: The $25 computer has come a long way:

This little device has revolutionized computing since it came on the scene. We take a look back at its journey.

The UK in the 1980s was ground zero for the microcomputer revolution. Cheap computers based on 8-bit processors flooded the market, teaching a generation to program using built-in BASIC interpreters. Homes had devices like Sinclair's ZX81 and Spectrum, while schools used Acorn's BBC Micro.

These weren't like today's PCs. They were designed and built to be accessible, with IO ports that could be accessed directly from the built-in programming environments. Turn one on, and you were ready to start programming.

But then things changed: 16-bit machines were more expensive, and technical and marketing failures started to remove pioneers from the market. The final nail in the coffin was the IBM PC and its myriad clones, focused on the business market and designed to run, not build, applications.

It became harder to learn computing skills, with home computers slowly replaced by gaming consoles, smartphones and tablets. How could an inquisitive child learn to code or build their own hardware?

The answer first came from the Arduino, a small ARM-based developer board that served as a target for easy-to-learn programming languages. But it wasn't a computer; you couldn't hook it up to a keyboard and screen and use it.

Eben Upton, an engineer at microcontroller chip manufacturer Broadcom, was frustrated with the status quo. Looking at the current generation of ARM-based microcontrollers he realized it was possible to use a low-cost (and relatively low power) chip to build a single-board computer. Using a system-on-a-chip architecture, you could bundle CPU and GPU and memory on a single chip. Using the SOC's general purpose IO ports, you could build it into a device that was easily expandable, booting from a simple SD storage card.

Work on what was to become the Raspberry Pi began in 2006, with a team of volunteers working with simple ARM SOC.

Can anyone remember the first program that they actually wrote (rather than copied from a magazine or downloaded from a friend's cassette tape)? Mine simply moved an asterisk around the screen 'bouncing' off the edges, and was written in Z80 assembly language. That is all I had on my Nascom 1.


Original Submission

 
This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 3, Interesting) by Anonymous Coward on Monday March 14 2022, @06:26PM (3 children)

    by Anonymous Coward on Monday March 14 2022, @06:26PM (#1229115)

    There is always more you have to get in there and using GOTO and a line number is not good programming.

    There has never been a compelling case for this made. Very quickly after that Djikstra ACM letter [arizona.edu], this idea was quickly picked up by people because it allowed one to separate the masses into the "good" programmers and the "bad" programmers based upon whether they used it or not. This quickly became unquestionable dogma in the academic circles, largely because Djikstra had said it so! GOTO is a programming tool, and like most parts of a language, there are better ways to use it than others. Frank Rubin had written a letter about this [archive.org], which led Djikstra to finally respond in a very condescending and pithy way [utexas.edu], not in defense of his arguments (he explicitly expressed frustration that those in his camp have failed to defend his position adequately), but in personal attacks on Rubin: "By my standards. a competent professional programmer in 1987 should know . . ." He criticizes Rubin's counter argument by saying that if he were a competent professional programmer, he should not only know the theorem of the bounded linear search, but should be able to derive its proof. In other words, "I am a competent professional programmer, and if you don't do it my way, you are NOT a competent professional programmer." Nevermind that the "next" in a for-next loop is a GOTO statement, the "break" statement is a GOTO statement, etc. We need this kind of redirect statement, but as long as we name it something else, we can worship at the altar of the competent professional programmer (at least BASIC loops were honest about it). If you have a situation where an efficacious GOTO would suffice, one is compelled to completely change the logic (while deriving a mathematical theorem here and there) to maintain an air of academic purity.

    Those views quickly caught on in the academic world in the 70s and 80s, I think, because computer programming had become very accessible, and BASIC very easy to program. It became a very easy to apply metric to separate people and languages into castes. "Not only do BASIC programmers use GOTOs, I also heard that they eat their toast with the butter side down!" I remember well being shown examples of horrendous spaghetti code and been told the cautionary tales that this is the path one's code will result in if one heads down that path. "This is your brain on GOTO." As a scientist in training, I was never too captivated by those sorts of computer science academic arguments; I needed code that worked and gave me the correct answer. I didn't give a rat's ass whether using recursive functions made my code more elegant unless I needed to speed things up. We were ten years past the punch card for me to care about issues like that. To me is was no different than being considered uncouth because I didn't know which fork I was supposed to pick up first at a fancy restaurant.

    I was once a FORTRAN wizard and have written many thousands of lines in that language, and though FORTRAN provided a GOTO, I had never had a need to use one. To give an example the depths these ideas took, just within the last month I have a young colleague who maintains a some scientific FORTRAN code. I overhead another young acquaintance talking to him about that, expressing pity that he had to work with that old FORTRAN code because it must be hard since "FORTRAN requires you to use GOTOs."

    Starting Score:    0  points
    Moderation   +3  
       Interesting=3, Total=3
    Extra 'Interesting' Modifier   0  

    Total Score:   3  
  • (Score: 2) by looorg on Tuesday March 15 2022, @01:22AM

    by looorg (578) on Tuesday March 15 2022, @01:22AM (#1229204)

    That was not the issue really. The issue is/was that if you fill a program with GOTO functions, because you run out of line numbers or something similar, it doesn't really become very readable or good code as you keep jumping back and forth. It has nothing to do with Djikstra or academic coding practices. I wasn't old enough for that or to even know who Djikstra was at the time. My conclusion was solely based on that all these GOTO lines and jumping back and forth wasn't really doing wonders for the code and readability. It didn't exactly do wonders for the performance either.

  • (Score: 2) by hendrikboom on Tuesday March 15 2022, @01:38AM

    by hendrikboom (1125) on Tuesday March 15 2022, @01:38AM (#1229207) Homepage Journal

    That third letter is marvelous. Dijkstra criticizes several of the programs as being wrong. The only one in which he finds no error is the first one, which was written explicitly with go-to's, and made no attempts to avoid them.

  • (Score: 2) by hendrikboom on Tuesday March 15 2022, @02:09AM

    by hendrikboom (1125) on Tuesday March 15 2022, @02:09AM (#1229215) Homepage Journal

    Years after this controversy, I had written a program (in turbo Pascal, by the way) that had a search process that was composed of two recursive searches through a complicated data structure. The inner recursion was used every time the outer recursion had a candidate to tell if it had found what it was looking for.
    Each recursion nest would signal it had found what it was looking for by a go to out of the entire mess. The inner recursion, on success, would thus jump into a success: label within the outer recursion, and the outer recursion would jump out of the entire search altogether.
    At one point I converted the entire thing to Modula 3, which did not have go to statements.
    Lots of Boolean flags passed around.
    It became a model of unclarity.