Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 16:34 24 Aug 2026 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : Left behind ?

     Page 3 of 3    
Author Message
PhenixRising
Guru

Joined: 07/11/2023
Location: United Kingdom
Posts: 2055
Posted: 08:10pm 07 Aug 2026
Copy link to clipboard 
Print this post

Never left behind. I won't bore the group with yet another story but I just had the opportunity to compare our Picomite with a high end industrial controller (£2500)

The PicoMite smoked it 😂🤣

It's an absolute beast as it stands 👍😎
 
zeitfest
Guru

Joined: 31/07/2019
Location: Australia
Posts: 700
Posted: 11:12am 11 Aug 2026
Copy link to clipboard 
Print this post

The tide is going out I think.

I looked for a very specialised, old physics program on the net. Originally
it had been painfully written and tweaked over some years by a physics research group
and the PhD students, post-docs and academic staff.
The source code was only on paper archives, but Gemini (Google) read the academic papers description and logic and recreated the program in a minute or so... and translated it into some other languages as wanted.  
So you could translate your MMBasic into most other languages and probably vice
versa... programming is becoming arbitrary.
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 9080
Posted: 11:41am 11 Aug 2026
Copy link to clipboard 
Print this post

If, as is quite possible based on recent events*, simple access to AI eventually becomes impossible, will the resulting code still be maintainable by humans? Will there still be humans that can program well enough to understand it without AI assistance?

*The apparent ease with which AI systems can break out of their sandbox and run amok.




"... scientists were so preoccupied with whether or not they could that they didn't stop to think if they should." - Jurassic Park
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 3360
Posted: 12:31pm 11 Aug 2026
Copy link to clipboard 
Print this post

Good points Mick.
I guess the instructions you give the AI should be to include detailed comments within the program. Then follow that by getting it to write a detailed account of how the program works overall and for each module within it.
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3868
Posted: 12:50pm 11 Aug 2026
Copy link to clipboard 
Print this post

  phil99 said  I guess the instructions you give the AI should be to include detailed comments within the program.


All the programs I've had AI write have been amply commented without my asking, and much more helpfully and comprehensively commented than if I had written it all. YMMV.
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on FOTS
 
Martin H.

Guru

Joined: 04/06/2022
Location: Germany
Posts: 1519
Posted: 01:08pm 11 Aug 2026
Copy link to clipboard 
Print this post

  Mixtel90 said  If, as is quite possible based on recent events*, simple access to AI eventually becomes impossible, will the resulting code still be maintainable by humans? Will there still be humans that can program well enough to understand it without AI assistance?

That’s a very good point.
That’s why I get the AI to explain the procedure or the algorithm to me, so that I understand it. AI doesn’t get annoyed if I ask the same question 20 times. I’ll then write the programme myself. It’s debatable, though, whether I’ll still understand my own source code a year from now.
Edited 2026-08-11 23:10 by Martin H.
'no comment
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11779
Posted: 02:17pm 11 Aug 2026
Copy link to clipboard 
Print this post

Much human written legacy code is unsupportable once the authors are no longer available. An AI has a much better chance of understanding it than we do. I used to work for a bank whose entire back office was written in Dec Basic. It couldn't safely be touched or maintained so 15 years after being written it was still in use. The only solution was a start-from-scratch rewrite at huge expense
 
Bryan1

Guru

Joined: 22/02/2006
Location: Australia
Posts: 2225
Posted: 09:38pm 11 Aug 2026
Copy link to clipboard 
Print this post

One of the best things I thought of with my projects with Claude I simply asked it to make a help page for each page so now got a ? in the top right of the screen with an explanation of the commands on the page.

If you guys want an example of this just have a look at my club.py as when someone else uses the code they are not left in the blue so a good understanding can be had from reading the help file.

Regards Bryan
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 9080
Posted: 07:43am 12 Aug 2026
Copy link to clipboard 
Print this post

That sounds like an excellent idea. If AI is sorting out the code it's only fair that it should do the documentation as it goes along. :)

I know there's a lot of legacy code that is almost impossible to figure out now, but why repeat the same mistake now, when there's no need to? In the past there were sometimes (well, occasionally anyway) times when all comments were omitted or single letter variable names used in interpreters simply to save a bit of speed or some user RAM, but neither of those excuses really works now.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
ManiB
Senior Member

Joined: 12/10/2019
Location: Germany
Posts: 163
Posted: 11:27pm 12 Aug 2026
Copy link to clipboard 
Print this post

  Martin H. said  Out of curiosity and because of the Video  from ExplainingComputers,
I just installed LM Studio on my Linux laptop. And I set up the gemma-4-e4b model locally.
What can I say? It basically supports MMBasic, too.
My question was: “I'd like to try the ‘Game of Life’ in MMBasic. Do you have any ideas about that?”
His answer: “Absolutely! Conway's Game of Life is a perfect, classic project for any programming language—and for MMBasic, too.”

That was followed by a presentation several pages long on how the program works and the logic behind it, and then he handed me a finished listing.

...

Cheers
Martin


Hi Martin,
I took a look at your AI-generated source code and ported it to my PicoMiteHDMIUSB. Here's what I came up with. If you don't mind, I'd like to include this in my MMBasic tutorial: Mein erstes MMBasic Programm


' Game of Life fuer MMBasic
Option Explicit
Option Default None

Const MAX_X = 50
Const MAX_Y = 30
Const STARTANTEIL = 10       ' Anteil lebender Zellen in Prozent

Dim GridA(MAX_X, MAX_Y) As Integer
Dim GridB(MAX_X, MAX_Y) As Integer

' ======================== Hauptprogramm ========================
MainLoop
End

' ======================== Subs & Functions ========================

Sub MainLoop
 Local iteration As Integer

 iteration = 0
 InitialisiereGitter GridA()

 Do
   ZeigeGitter GridA(), iteration
   iteration = iteration + 1

   ' Optional: Animation verlangsamen
   ' Pause 500

   BerechneNaechstesGitter GridA(), GridB()
   UebernehmeGitter GridB(), GridA()
 Loop
End Sub


' Setzt alle Zellen eines Gitters auf 0.
Sub ClearGrid(Grid() As Integer)
 Local x As Integer, y As Integer

 For y = 1 To MAX_Y
   For x = 1 To MAX_X
     Grid(x, y) = 0
   Next x
 Next y
End Sub


' Erzeugt eine zufaellige Startbelegung.
' Es werden exakt STARTANTEIL Prozent der Zellen gesetzt.
Sub InitialisiereGitter(CurrentGrid() As Integer)
 Local x As Integer, y As Integer
 Local AnzahlZellen As Integer, GesetzteZellen As Integer

 ClearGrid CurrentGrid()

 AnzahlZellen = (MAX_X * MAX_Y * STARTANTEIL) \ 100
 GesetzteZellen = 0

 Do While GesetzteZellen < AnzahlZellen
   x = Int(Rnd * MAX_X) + 1
   y = Int(Rnd * MAX_Y) + 1

   ' Nur neue Zellen zaehlen. Dadurch entstehen exakt
   ' AnzahlZellen unterschiedliche lebende Startzellen.
   If CurrentGrid(x, y) = 0 Then
     CurrentGrid(x, y) = 1
     GesetzteZellen = GesetzteZellen + 1
   End If
 Loop
End Sub


' Berechnet aus CurrentGrid die naechste Generation in NextGrid.
Sub BerechneNaechstesGitter(CurrentGrid() As Integer, NextGrid() As Integer)
 Local x As Integer, y As Integer
 Local NachbarnCount As Integer

 For y = 1 To MAX_Y
   For x = 1 To MAX_X
     NachbarnCount = ZaehleLebendeNachbarn(CurrentGrid(), x, y)

     If CurrentGrid(x, y) = 1 Then
       ' Lebende Zelle:
       ' Bei 2 oder 3 lebenden Nachbarn ueberlebt sie.
       If NachbarnCount = 2 Or NachbarnCount = 3 Then
         NextGrid(x, y) = 1
       Else
         NextGrid(x, y) = 0
       End If
     Else
       ' Tote Zelle:
       ' Bei genau 3 lebenden Nachbarn wird sie geboren.
       If NachbarnCount = 3 Then
         NextGrid(x, y) = 1
       Else
         NextGrid(x, y) = 0
       End If
     End If
   Next x
 Next y
End Sub


' Zaehlt die lebenden Nachbarn einer Zelle.
' Zellen ausserhalb des Spielfelds gelten als tot.
Function ZaehleLebendeNachbarn(Grid() As Integer, X_Zelle As Integer, Y_Zelle As Integer) As Integer
 Local Count As Integer
 Local dx As Integer, dy As Integer
 Local NeighX As Integer, NeighY As Integer

 Count = 0

 For dy = -1 To 1
   For dx = -1 To 1
     ' Die Zelle selbst darf nicht mitgezaehlt werden.
     If Not (dx = 0 And dy = 0) Then
       NeighX = X_Zelle + dx
       NeighY = Y_Zelle + dy

       If NeighX>=1 And NeighX<=MAX_X And NeighY>=1 And NeighY<=MAX_Y Then
         If Grid(NeighX, NeighY) = 1 Then Count = Count + 1
       End If
     End If
   Next dx
 Next dy

 ZaehleLebendeNachbarn = Count
End Function


' Kopiert das berechnete Gitter in das aktuelle Gitter.
Sub UebernehmeGitter(SourceGrid() As Integer, TargetGrid() As Integer)
 Local x As Integer, y As Integer

 For y = 1 To MAX_Y
   For x = 1 To MAX_X
     TargetGrid(x, y) = SourceGrid(x, y)
   Next x
 Next y
End Sub


' Gibt das Spielfeld und einige Statusinformationen aus.
Sub ZeigeGitter(Grid() As Integer, iteration As Integer)
 Local x As Integer, y As Integer
 Local ZeileStr$ As String
 Local n As Integer, counter As Integer

 counter = 0
 CLS

 ' Ueberschrift auf MAX_X Zeichen zentrieren.
 ZeileStr$ = " Game of Life [" + Str$(iteration) + "] "
 n = MAX_X - Len(ZeileStr$)
 If n > 0 Then
   ZeileStr$ = String$(n \ 2, "-") + ZeileStr$ + String$(n - n \ 2, "-")
 End If
 Print ZeileStr$

 ' Spielfeld ausgeben.
 For y = 1 To MAX_Y
   ZeileStr$ = ""

   For x = 1 To MAX_X
     If Grid(x, y) = 1 Then
       ZeileStr$ = ZeileStr$ + Chr$(219)   ' voller Block
       counter = counter + 1
     Else
       ZeileStr$ = ZeileStr$ + "."
     End If
   Next x

   Print ZeileStr$
 Next y

 ' Anzahl lebender Zellen ausgeben.
 ZeileStr$ = " Living cells [" + Str$(counter) + "] "
 n = MAX_X - Len(ZeileStr$)
 If n > 0 Then
   ZeileStr$ = String$(n \ 2, "-") + ZeileStr$ + String$(n - n \ 2, "-")
 End If
 Print ZeileStr$
End Sub
 
Martin H.

Guru

Joined: 04/06/2022
Location: Germany
Posts: 1519
Posted: 06:03am 13 Aug 2026
Copy link to clipboard 
Print this post

  Quote   If you don't mind, I'd like to include this in my MMBasic tutorial: Mein erstes MMBasic Programm


Of course you can use that.
What I was really interested in was seeing how a large language model, without an internet connection, was able to recognise the correct game from my phrase ‘Game of Life’ and was also capable of generating a Basic programme.
'no comment
 
     Page 3 of 3    
Print this page


To reply to this topic, you need to log in.

The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2026