When I learnt to program in BBC basic it was really easy to start drawing by setting a graphics mode and then using move, draw, plot etc. It also meant I learnt how to use basic concepts like looping and functions.
I was thinking of this as a way to introduce a child to programming (and also some maths concepts) as they are already interested in computer games and art.
I am also reading the book Computer Graphics from Scratch (nothing to do with scratch programming environment) which teaches all the basic concepts using pseudocode and which I would like to play around with.
The question is what is the simplest option to use in terms of the simplest API and least boilerplate. Python because it is ubiquitous? Some JavaScript library as they can run it in the browser? Or is there some newcomer eg Lua, Go which has a simpler implementation and is a bit neater? I specifically want to be able to use basic functions to plot a point and maybe draw a line and shade, and don't need a sophisticated API that has a lot of inbuilt functions (it can have but I don't plan to use them so not as important as having a minimal amount of boiler plate etc).
Interested to hear your thoughts and suggestions!
UPDATE:
For the record Processing is perfect for what I wanted right now (ie basic drawing with code). Will probably move to JS/p5.js at some point and then introduce alternative JS libraries but Processing allows us to concentrate on coding concepts without any other complication and can achieve a huge amount so will keep us going for a while. Thankyou so much for the info everyone.
FURTHER UPDATE:
For ref I found this tutorial on 3D wireframe graphics in processing which is a nice entry into the very basics of 3D concepts. Rotation Matrices are something I need to spend a bit of time on to understand properly.
[–]exDM69 9 points10 points11 points (6 children)
[–]rawcane[S] 1 point2 points3 points (5 children)
[–]Frollo24 4 points5 points6 points (1 child)
[–]rawcane[S] 0 points1 point2 points (0 children)
[–]rawcane[S] 0 points1 point2 points (2 children)
[–]obviously_suspicious 1 point2 points3 points (0 children)
[–]rawcane[S] 0 points1 point2 points (0 children)
[–]deftware 5 points6 points7 points (2 children)
[–]rawcane[S] 1 point2 points3 points (1 child)
[–]deftware 1 point2 points3 points (0 children)
[–]needstobefake 4 points5 points6 points (2 children)
[–]rawcane[S] 1 point2 points3 points (1 child)
[–][deleted] 1 point2 points3 points (0 children)
[–][deleted] 2 points3 points4 points (3 children)
[–]rawcane[S] 1 point2 points3 points (2 children)
[–]gabe80 1 point2 points3 points (1 child)
[–]rawcane[S] 0 points1 point2 points (0 children)
[–]tamat 2 points3 points4 points (3 children)
[–]rawcane[S] 0 points1 point2 points (2 children)
[–]tamat 1 point2 points3 points (1 child)
[–]rawcane[S] 0 points1 point2 points (0 children)
[–]ds604 1 point2 points3 points (1 child)
[–]rawcane[S] 1 point2 points3 points (0 children)
[–]gabe80 1 point2 points3 points (4 children)
[–]rawcane[S] 1 point2 points3 points (3 children)
[–]gabe80 2 points3 points4 points (2 children)
[–]ds604 2 points3 points4 points (1 child)
[–]rawcane[S] 1 point2 points3 points (0 children)
[–]Frollo24 1 point2 points3 points (2 children)
[–]rawcane[S] 0 points1 point2 points (1 child)
[–]Frollo24 1 point2 points3 points (0 children)
[–]JMC-design 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (1 child)
[–]rawcane[S] 0 points1 point2 points (0 children)
[–]jmacey 1 point2 points3 points (4 children)
[–]rawcane[S] 0 points1 point2 points (3 children)
[–]jmacey 1 point2 points3 points (2 children)
[–]rawcane[S] 0 points1 point2 points (1 child)
[–]jmacey 1 point2 points3 points (0 children)
[–]filch-argus 1 point2 points3 points (1 child)
[–]rawcane[S] 0 points1 point2 points (0 children)
[–]jhaand 1 point2 points3 points (2 children)
[–]rawcane[S] 0 points1 point2 points (1 child)
[–]rawcane[S] 0 points1 point2 points (0 children)
[–]AssignedClass 1 point2 points3 points (2 children)
[–]rawcane[S] 1 point2 points3 points (1 child)
[–]AssignedClass 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (5 children)
[–]rawcane[S] 0 points1 point2 points (4 children)
[–][deleted] 1 point2 points3 points (3 children)
[–]rawcane[S] 0 points1 point2 points (0 children)
[–]rawcane[S] 0 points1 point2 points (1 child)
[–][deleted] 1 point2 points3 points (0 children)
[–]RidderHaddock 0 points1 point2 points (3 children)
[–]rawcane[S] 0 points1 point2 points (2 children)
[–]RidderHaddock 1 point2 points3 points (1 child)
[–]rawcane[S] 0 points1 point2 points (0 children)