Discussion:
sdlada, löve, and programming for beginners
(too old to reply)
Ludovic Brenta
2020-02-08 11:40:54 UTC
Permalink
Hello.

At FOSDEM, my colleague Thomas Maluszycki gave a talk[1] about rapid
application development in Ada. This made me think. You see, I have a
14-year-old son whom I teach programming to. He is lukewarm about it
but I think it is my duty as a parent to give him basic education in
this field, as computers are already everywhere and will probably govern
his live even more than ours. So I played with him with Colobot[2],
taught him a little bit of Ada (with the French translation of Barnes'
book for Ada 95), a little bit of ZX Spectrum BASIC, and now he's
writing a Pong clone with the LÖVE framework[3], in Lua[4]. This
framework makes it very easy to have immediate results... but Lua lacks
strong typing and in particular range checking, and a debugger.

So it occurred to me that LÖVE is really a Lua binding to SDL plus a
predefined event loop, and that it would be quite easy to do something
similar based on the sdlada thick binding. The goal would be to attract
teenage programmers to the language and to programming in general.
Possibly on a Raspberry Pi. I'd be willing to make a Debian package for
it. What do you think?

[1] https://fosdem.org/2020/schedule/event/ada_rad/
[2] http://colobot.info/
[3] http://love2d.org/
[4] https://www.lua.org/
--
Ludovic Brenta.
The partners leverage consumer-facing potentials.
Optikos
2020-02-08 12:29:47 UTC
Permalink
Post by Ludovic Brenta
Hello.
At FOSDEM, my colleague Thomas Maluszycki gave a talk[1] about rapid
application development in Ada. This made me think. You see, I have a
14-year-old son whom I teach programming to. He is lukewarm about it
but I think it is my duty as a parent to give him basic education in
this field, as computers are already everywhere and will probably govern
his live even more than ours. So I played with him with Colobot[2],
taught him a little bit of Ada (with the French translation of Barnes'
book for Ada 95), a little bit of ZX Spectrum BASIC, and now he's
writing a Pong clone with the LÖVE framework[3], in Lua[4]. This
framework makes it very easy to have immediate results... but Lua lacks
strong typing and in particular range checking, and a debugger.
So it occurred to me that LÖVE is really a Lua binding to SDL plus a
predefined event loop, and that it would be quite easy to do something
similar based on the sdlada thick binding. The goal would be to attract
teenage programmers to the language and to programming in general.
Possibly on a Raspberry Pi. I'd be willing to make a Debian package for
it. What do you think?
[1] https://fosdem.org/2020/schedule/event/ada_rad/
[2] http://colobot.info/
[3] http://love2d.org/
[4] https://www.lua.org/
--
Ludovic Brenta.
The partners leverage consumer-facing potentials.
Wonderful idea. Go forth & prosper. Consider packaging for as many Linux variants as possible. For example, Chromebooks are ubiquitous in the USA's schools (i.e., the ones that are not still loyal to Apple iPad). Consider every way of rolling the red carpet out to educational institutions' habits & comfort zones (e.g., ChromeOS app) instead of only a hobbyist board for at-home/independent-study/extra-curricular use.
Rick Newbie
2020-02-09 17:34:16 UTC
Permalink
Post by Ludovic Brenta
Hello.
At FOSDEM, my colleague Thomas Maluszycki gave a talk[1] about rapid
application development in Ada. This made me think. You see, I have a
14-year-old son whom I teach programming to. He is lukewarm about it
but I think it is my duty as a parent to give him basic education in
this field, as computers are already everywhere and will probably govern
his live even more than ours. So I played with him with Colobot[2],
taught him a little bit of Ada (with the French translation of Barnes'
book for Ada 95), a little bit of ZX Spectrum BASIC, and now he's
writing a Pong clone with the LÖVE framework[3], in Lua[4]. This
framework makes it very easy to have immediate results... but Lua lacks
strong typing and in particular range checking, and a debugger.
So it occurred to me that LÖVE is really a Lua binding to SDL plus a
predefined event loop, and that it would be quite easy to do something
similar based on the sdlada thick binding. The goal would be to attract
teenage programmers to the language and to programming in general.
Possibly on a Raspberry Pi. I'd be willing to make a Debian package for
it. What do you think?
[1] https://fosdem.org/2020/schedule/event/ada_rad/
[2] http://colobot.info/
[3] http://love2d.org/
[4] https://www.lua.org/
I don't know much about those languages but I was a bit puzzled when I
looked up if GNAT Ada supprts Rasperry a few weeks ago to see that it
only supports an old version. It doesn't seem to be up to date with the
hardware development. No idea if the old version can be used on the
newer boards since I don't own one yet, but that would definitely be a
thing that people would consider.

On the topic of teenage programmers: Although I am not a teenager I am
new to Ada. What is repelling is when you read Barne's book and you
throw up your arms and think: How am I ever going to master all that?!

But I guess what is true for C++ must be true for Ada as well: People
use 20% of the language features 80% of the time. it would be good to
find a way to introduce new programmers using these 20% to start with.
Barne's book is simply overwhelming for the newcommer since it covers
nearly all aspects and you can start out with much less
Lucretia
2020-02-09 19:26:54 UTC
Permalink
Post by Rick Newbie
I don't know much about those languages but I was a bit puzzled when I
looked up if GNAT Ada supprts Rasperry a few weeks ago to see that it
only supports an old version. It doesn't seem to be up to date with the
See https://www.raspberrypi.org/downloads/ for up to date OS with up to date GNAT.
Post by Rick Newbie
On the topic of teenage programmers: Although I am not a teenager I am
new to Ada. What is repelling is when you read Barne's book and you
throw up your arms and think: How am I ever going to master all that?!
It's not the best book for learning, but it's fine for people who know previous Ada's.
Post by Rick Newbie
But I guess what is true for C++ must be true for Ada as well: People
use 20% of the language features 80% of the time. it would be good to
find a way to introduce new programmers using these 20% to start with.
Barne's book is simply overwhelming for the newcommer since it covers
nearly all aspects and you can start out with much less
I wouldn't necessarily say that's true for Ada, there are certainly people using quite a lot of Ada features in their projects. Maybe not all, like DSA, but a lot, like OO, aspects, tasking, interfaces, containers, etc.
Dmitry A. Kazakov
2020-02-09 20:01:08 UTC
Permalink
Post by Rick Newbie
I don't know much about those languages but I was a bit puzzled when I
looked up if GNAT Ada supprts Rasperry a few weeks ago to see that it
only supports an old version. It doesn't seem to be up to date with the
hardware development. No idea if the old version can be used on the
newer boards since I don't own one yet, but that would definitely be a
thing that people would consider.
GNAT fully supports Raspberry (ARMv7). Debian, Ubuntu, Fedora all have
GNAT Ada compiler in their repositories for ARMv7 target.

P.S. If you meant rather a barebone ARM. GNAT Pro has support for that
too, AFAIK. Though it does not make sense to run such a thing on a
Raspberry.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
Simon Wright
2020-02-10 14:06:31 UTC
Permalink
Post by Dmitry A. Kazakov
P.S. If you meant rather a barebone ARM. GNAT Pro has support for that
too, AFAIK. Though it does not make sense to run such a thing on a
Raspberry.
The "Ada and SPARK on ARM Cortex-M" tutorial[1] works best on a Pi,
because the native compiler already understands ARM and has an Ada
runtime! It requires some work to get a cross-compiler on Windows, other
Linux, or Mac to work (can be done, I should write it up)

[1] http://www.inspirel.com/articles/Ada_On_Cortex.html
Ludovic Brenta
2020-02-09 22:55:05 UTC
Permalink
Post by Rick Newbie
On the topic of teenage programmers: Although I am not a teenager I am
new to Ada. What is repelling is when you read Barne's book and you
throw up your arms and think: How am I ever going to master all that?!
Even though it is out of date by now, I still like and recommend the
free book by John English, "Ada 95: the Craft of Object-Oriented
Programming". This is a gentle introduction to Ada as a first
programming language and it is not overwhelming. Professionals and
die-hard enthusiasts can always learn from the reference manual :)

https://www.adaic.org/resources/add_content/docs/craft/html/contents.htm
--
Ludovic Brenta.
Competitiveness and implementation enable the team players.
Simon Wright
2020-02-10 14:07:08 UTC
Permalink
Post by Ludovic Brenta
Post by Rick Newbie
On the topic of teenage programmers: Although I am not a teenager I am
new to Ada. What is repelling is when you read Barne's book and you
throw up your arms and think: How am I ever going to master all that?!
Even though it is out of date by now, I still like and recommend the
free book by John English, "Ada 95: the Craft of Object-Oriented
Programming". This is a gentle introduction to Ada as a first
programming language and it is not overwhelming. Professionals and
die-hard enthusiasts can always learn from the reference manual :)
https://www.adaic.org/resources/add_content/docs/craft/html/contents.htm
I strongly support this.
Nasser M. Abbasi
2020-02-10 04:53:13 UTC
Permalink
Post by Rick Newbie
On the topic of teenage programmers: Although I am not a teenager I am
new to Ada. What is repelling is when you read Barne's book and you
throw up your arms and think: How am I ever going to master all that?!
One of the reasons a programming language become less popular
is that it becomes more complicated with time.

Look at what happened to C++. Same with Ada. They start
relatively small and simple, and each few years, they update
the standard and add more complication and "advanced" features
so that few could understand it all. This has also happened
to Fortran with addition of OO to it, where it is as complex as
C++ and Ada. Fortran used to be very simple language.

One of the reason why python is so popular (even though I think
it is a horrible language myself) is that it is "simple".

There should be something in between. A simple, yet well designed
and strongly typed language. That is why I liked Pascal the
most of all the languages I programmed in (followed by Ada).

--Nasser
Rick Newbie
2020-02-10 10:05:45 UTC
Permalink
That's actually very true. I have to work in C++ professionally but I
always remember the day of Turbo Pascal or Modula-2. Install, run the
IDE and ready to go, no fighting about missing libraries or esoteric
features. I must admit that I look at some new C++ programs and I don't
understand what's going on. Same with forums. Sometimes I browse
Stackexchange just for fun and I read questions from people about the
behavior of pieces of code that they don't understand and the answers
just make me shake my head. Who would have ever thought of that?!

When I learned C I had a book about 200 pages. I read that and
afterwards I was able to write my first small programs. I don't have the
feeling it will be that easy with Ada. In fact I try to keep it simple
and get me some exercise by translating some of the games from David
Ahl's 1970's book from BASIC to Ada because I think that it is possible
to translate those games with the more simple features of Ada to get me
going.

I think when the language becomes so complicated that you need
professional help, not with algorithmic problems but with syntactical
questions, it is too bloated. Hence my above remark that you use 20% of
the features 80% of the time. I know certain modern features are a
blessing, for instance I love Lambdas in C++ because they allow me to
put active code in a datatable instead of in a long switch statement,
but I could live without it if necessary.

If I remember my early teachings correctly you can formulate nearly
every problem on a Touring Machine :)
g***@hotmail.com
2020-02-10 10:37:19 UTC
Permalink
Post by Rick Newbie
That's actually very true. I have to work in C++ professionally but I
always remember the day of Turbo Pascal or Modula-2. Install, run the
IDE and ready to go, no fighting about missing libraries or esoteric
features.
Then, LEA is for you:
https://sourceforge.net/projects/l-e-a/

NB: it runs without installing. The compiler included has guaranteed less than 20% of Ada features :-). Not completely pure Ada yet (work in progress).
Rick Newbie
2020-02-10 17:47:03 UTC
Permalink
Post by g***@hotmail.com
Post by Rick Newbie
That's actually very true. I have to work in C++ professionally but I
always remember the day of Turbo Pascal or Modula-2. Install, run the
IDE and ready to go, no fighting about missing libraries or esoteric
features.
https://sourceforge.net/projects/l-e-a/
NB: it runs without installing. The compiler included has guaranteed less than 20% of Ada features :-). Not completely pure Ada yet (work in progress).
Thanks I check it out
Lucretia
2020-02-10 14:27:31 UTC
Permalink
On Saturday, 8 February 2020 11:41:01 UTC, Ludovic Brenta wrote:

Dragging this thread back on track...
Post by Ludovic Brenta
So it occurred to me that LÖVE is really a Lua binding to SDL plus a
I never looked at it before, but knew of it, never knew it was a wrapper around SDL.
Post by Ludovic Brenta
predefined event loop, and that it would be quite easy to do something
similar based on the sdlada thick binding. The goal would be to attract
Yeah, that would be pretty cool. Any features required, just add a PR.

I want to get iterators around Surfaces (old, not really for new projects) and textures (for accelerated 2D and for new stuff).

Definitely not having to mess about with OpenGL/Vulkan is a good start.
Post by Ludovic Brenta
teenage programmers to the language and to programming in general.
Possibly on a Raspberry Pi. I'd be willing to make a Debian package for
it. What do you think?
Sounds good to me.

Luke.
Chris Sykes
2020-02-11 19:10:46 UTC
Permalink
Post by Ludovic Brenta
So it occurred to me that LÖVE is really a Lua binding to SDL plus a
predefined event loop, and that it would be quite easy to do something
similar based on the sdlada thick binding. The goal would be to attract
teenage programmers to the language and to programming in general.
Possibly on a Raspberry Pi. I'd be willing to make a Debian package for
it. What do you think?
FWIW, I think it's an excellent idea.

One of the most important things for a beginner is being able to achieve
visible results from simple code. So something that allows you to draw to
the screen and respond to user input, while minimum boiler-plate code
(often confusing to newbies) really helps.

If you're looking for inspiration for some demos/examples, you should
checkout the "One Lone Coder" videos on YouTube:
https://www.youtube.com/channel/UC-yuWVUplUJZvieEligKBkA/featured

He has written a really simple "game engine" in C++ along the same lines,
and (IMO) his projects show just how valuable lowering the barriers to
experimentation can be. Lots of fun too!
Post by Ludovic Brenta
[1] https://fosdem.org/2020/schedule/event/ada_rad/
[2] http://colobot.info/
[3] http://love2d.org/
[4] https://www.lua.org/
Lucretia
2020-02-11 19:25:40 UTC
Permalink
Post by Chris Sykes
If you're looking for inspiration for some demos/examples, you should
https://www.youtube.com/channel/UC-yuWVUplUJZvieEligKBkA/featured
Can confirm OLC is very good / accessible, check out his SNES emulator series.
Tama McGlinn
2021-10-03 12:59:16 UTC
Permalink
I have a 14-year-old son whom I teach programming to.
This framework makes it very easy to have immediate results... but
Lua lacks strong typing and in particular range checking, and a debugger.
Perhaps you will find AdaBots[1] interesting. It happens also to be a 'binding' from Ada to lua, in the sense that it leverages the already existing lua interpreter built into ComputerCraft[2], and the world already provided by Minecraft. This makes it quite easy to think of interesting challenges without having to program that whole world; e.g. help I'm stuck at the bottom of a well, have the turtle build me a staircase back to the surface.

[1] https://github.com/TamaMcGlinn/AdaBots
[2] https://tweaked.cc/
darek
2021-10-03 17:45:16 UTC
Permalink
Post by Ludovic Brenta
Hello.
At FOSDEM, my colleague Thomas Maluszycki gave a talk[1] about rapid
application development in Ada. This made me think. You see, I have a
14-year-old son whom I teach programming to. He is lukewarm about it
but I think it is my duty as a parent to give him basic education in
this field, as computers are already everywhere and will probably govern
his live even more than ours. So I played with him with Colobot[2],
taught him a little bit of Ada (with the French translation of Barnes'
book for Ada 95), a little bit of ZX Spectrum BASIC, and now he's
writing a Pong clone with the LÖVE framework[3], in Lua[4]. This
framework makes it very easy to have immediate results... but Lua lacks
strong typing and in particular range checking, and a debugger.
So it occurred to me that LÖVE is really a Lua binding to SDL plus a
predefined event loop, and that it would be quite easy to do something
similar based on the sdlada thick binding. The goal would be to attract
teenage programmers to the language and to programming in general.
Possibly on a Raspberry Pi. I'd be willing to make a Debian package for
it. What do you think?
[1] https://fosdem.org/2020/schedule/event/ada_rad/
[2] http://colobot.info/
[3] http://love2d.org/
[4] https://www.lua.org/
--
Ludovic Brenta.
The partners leverage consumer-facing potentials.
Hi Ludovic,
there could be an alternative for teaching kids programming. Have a look at Object Oriented Turing (https://en.wikipedia.org/wiki/Turing_(programming_language)).
Strong typed, with a simple syntax, and powerful constructs. The language was used at University of Toronto, and in high schools in Ontario.

The only drawback is that the system is no longer maintained.

- Object Oriented Turing Reference:
http://compsci.ca/holtsoft/OOTRef.pdf
- Introduction to Programming in Turing:
http://compsci.ca/holtsoft/IPT.pdf
- The environment:
http://tristan.hume.ca/openturing/
- ... and more here ...
http://compsci.ca/holtsoft/

Regards,
Darek

Loading...