Skip to main content


I want to learn programming and I'm trying to find a language to start in.

I want a language I can write a to do program in && something I can easily bounce onto other languages from

Anyone have any thoughts on this

#programmingadvice
@Becky Choosing a programming language often depends on the target use. Will it be a Command-Line Interface tool? A Graphical User Interface? A web page? A program on a controller circuit (Arduino, etc...)?

From there, languages have affordances.
This entry was edited (1 year ago)
I think I want the to-do program to have a gui as I'm still not great at using a command line.... probably run on a "standard" desktop computer, if such a thing exists.... computers are weird but I've relied on @silverwizard a lot and I'm trying to think outside that while also learning from him
Based on what I suspect it'll be a real basic DB frontend, with fancy outputs

But figuring out the front ends. And making modular to allow front ends, especially allowing several front ends, is, I think, the main goal
But also - learning to code from me is like learning to fix a car from someone who loves physics and bike repair, so it's gonna be a hell of a ride
@Becky In the programming world, unfortunately there's no such thing as a standard desktop computer. So much so that the current most popular way of writing "portable" programs is to embed an entire web browser within the program.
😂 I kinda suspected this, but I'm still new to it all and have learned it all by accident or in roundabout ways
@Becky So, first target one specific system with one specific front end. This will greatly reduce the scope of the required learning.

I started learning programming with command line programs in C because of the low learning overhead. I was also taught COBOL for file manipulation and Java for Object-Oriented Programming. In parallel, I had SQL classes on an Oracle system, but no integration with a programming language until my final project after 2 years of full-time classes.

It was a long process and it started pretty small, so I think that's what you should do as well to make it palatable.
I think a "standard" desktop computer means "targets X" in this case ;)
Starting from scratch today I'd probably suggest starting with JavaScript, as you can then use it on the web (and mobile with progressive web apps) maybe with VueJS, or on the command line with NodeJS, or to create GUIs with Electron. 🤔
It's not the best language to start learning with maybe (personally I have a preference for strongly typed languages), but it's pretty flexible, under very active development both in syntax and ecosystem.
Although it's a pet peeve of mine Java's GUI probably could be thought of as a "standard" desktop computer, as the things written in Java bring Java's GUI with them (except the one's that don't, like LibreOffice and TuxGuitar). Users of the three desktop systems all get the same user experience out of the usual Java packages. Java stuff is a pet peeve of mine because I'm spoiled by having Linux' "bookmarks" to various directories in my load and save dialog boxes. OTOH Java's dialogs and other GUI things I have found to have a gentler learning curve than GTK+ and Qt, might get you writing GUI programs faster. If I feel a need to write something that interacts in a GUI way, I write a "web app" instead, but that's more a standard desktop browser experience than a standard desktop computer experience.
This is where my experience with @silverwizard has kinda messed with me. I know the way java works and it kinda irks me, although I know why you say it would be useful too, because it carries everything with it.....

This is why I'm a complicated case, I think.... because ultimately I've had too many people complain to me about languages... and by too many, I mostly mean one in particular lol
If you want to learn the foundations well and don't mind taking the long way around? Start with Racket and work through HtDP <https://htdp.org/>. (Racket probably even has a way to build GUI programs on any system you can install it on.)
If you want to get a to-do list manager up and running? Use Perl to shuffle things in and out of the database, use CGI and a web browser for the GUI, and that'll put you in the space where you can ask @silverwizard for help when you get stuck.
I hear about Racket randomly, what is it?

Also - she doesn't wanna use the web and wants a GUI

Because she still doesn't believe google broke the web
Racket is a variant of Scheme, designed by people who have put a lot of thought into programming and how to teach it, and does a good job of the space it's in. The downside is that its structure is (partly by historical accident) not very much like most programming languages that most people consider "serious".

And as annoying as web browsers are, CGI is still the easiest way to get a GUI, followed by "whatever your dev tooling thinks is native", with anything else way behind.
Yeah, I've thoughts about TKL and Lua bouncing in my head

We discussed Scheme as an option, but she is currently wanting to try a more procedural language
I do want to learn both.... actually I am very much considering this if it's simple to create a to-do list, easy to learn, and will get my feet wet.... my main concern is if it's easily knowledge I can take on to learn other programming languages because really really I want to learn the skills to do any language vs one specific one
I think I'm mostly waffling on scheme, even though I think it's pretty and it would work with my brain, is because I don't know if it would make a to-do program that simple..... but it was my university days that I touched it, and early on at that... I hardly remember what I did with it, other than something with drawing shapes
⇧