How did you get into programming?

Off-topic discussion/chat/argue area with special rules of engagement.
Forum rules
The Off-Topic area is a general community discussion and chat area with special rules of engagement.

Enter, read and post at your own risk. You have been warned!
While our staff will try to guide the herd into sensible directions, this board is a mostly unrestricted zone where almost anything can be discussed, including matters not directly related to the project, technology or similar adjacent topics.

We do, however, require that you:
  • Do not post anything pornographic.
  • Do not post hate speech in the traditional sense of the term.
  • Do not post content that is illegal (including links to protected software, cracks, etc.)
  • Do not post commercial advertisements, SEO links or SPAM posts.
We also ask that you keep strongly polarizing topics like politics and religion to a minimum. This forum is not the right place to discuss such things.
Please do exercise some common sense. How you act here will inevitably influence how you are treated elsewhere.
User avatar
athenian200
Contributing developer
Contributing developer
Posts: 1755
Joined: 2018-10-28, 19:56
Location: Georgia

How did you get into programming?

Post by athenian200 » 2022-05-29, 02:03

I would say the first thing I ever learned to do was write fairly simple scripts using MS-DOS Batch files in the early 1990s, as a child with no Internet access and nothing better to do. I figured out how to automate DOS commands and string together different programs, conditionally doing different things based on the output of different commands. For instance, if one command was successful, run this command, otherwise run this other one, etc. Eventually it turned into a kind of a tree structure where a whole set of logic is followed based on the output of different commands at different times. I didn't think of this as real programming at the time, but I've been told before it counts, especially for the age I was at the time.

The next major programming-related thing involved an unusual game called Graal, and it looked and played a lot like A Link to the Past. It was mostly meant to be played online with other people, but I was more interested in the offline level packs. Very specifically, I got into editing the NPC action scripts that were built into the level editor. I don't actually remember what language it was, I think they called it "GraalScript," and it had characteristics from JavaScript, C, and Java. It seems like most of the info on the game has been lost to time, though. I never got very deep into that language, and never made anything I wanted to show off, but it did get me exposed to the basic concepts of a programming language and some of the logic early on.

I wound up learning a little bit of HTML4 and vBScript at one point when trying to create my own website, but I mostly stayed with plain HTML and CSS and didn't really see a need to use much scripting on my websites at the time, so not much really came of my half-hearted attempt at web design other than becoming somewhat familiar with CSS because I found CSS could do most of the things people were using JavaScript or vBScript for at the time. So really I favored avoiding active scripting and sticking with stylesheets as a way of formatting things.

Another skill I picked up involved hex editing binary files directly, partly because some stuff I wanted to do required it, and partly because I thought surely editing an existing program was easier than writing a new one. Let's just say it was very tedious, but I learned a lot about things like pointer tables, conditional branching, CPU registers, flags, and to some extent even manual memory management this way, sometimes having to hunt for free bytes or figure out when it was okay to allocate this or that without causing corruption, etc. It probably helped that I didn't realize hex editing was programming, and didn't think it was supposed to be hard, so I didn't notice how much unneeded work I was doing to achieve things that would be simple if I could use a more human-readable representation.

The next really big programming language push would come when I tried Linux for the first time as a teenager. I wound up trying to learn C since a lot of programs I was compiling for myself were written in C, and compiling stuff yourself at that point was basically a requirement to use Linux in any meaningful way, especially given that a lot of times you would have to recompile your kernel. No distro seemed to have a kernel that supported all my hardware out of the box, and I would always be told to compile again. I worked through a book called "C for Dummies," but it really only taught me the basic syntax of the language. I realized that even by the end, I didn't really understand how to do anything useful because all the useful stuff required libraries, and all those libraries had their own quirks you had to learn and their own ways of doing things, etc. What I remember noticing most of all though, was that variables as a concept seemed very closely related to pointers, and that you could do a lot of things with variables without knowing exactly where they were stored in memory or hunting around for free bytes and having to "repoint" things to target free space manually. In general, it didn't take long to figure out that a lot of the concepts in C were essentially layers of abstractions over what I had been doing in the hex editor earlier, essentially letting you describe what you want the computer to do and then letting the compiler handle the details.

One of the really interesting insights came later when I studied Algebra for the first time in High School. I noticed that variables in Algebra really weren't that different conceptually from variables in C, and it hit me when they were telling me what an integer was, that it was an awful lot like an "int" in C, because it could be positive or negative but never fractional. So overall my mental picture of all this got a lot clearer... I eventually came to understand that variables as a concept were a mathematical abstraction, and variables in C were a way of providing that abstraction in a computer science context by letting the programmer visualize something like a mathematical variable while having the compiler deal with the operating system and architecture specific processes involved in allocating memory locations to store a value for later reference to be retrieved and such.

I eventually noticed more parallels in philosophy as well, with conditional logic, truth tables, etc. So by the time I had learned a bit about philosophy and got to my first C++ class, I didn't really have a hard time picking it up. It seemed like just another abstraction layer on top of C, which was an abstraction on top of machine code and assembler. This time bringing in more philosophy and logic with concepts of true and false, describing types and classes of objects, etc. It also helped that the syntax of the two languages was similar in a lot of ways. A lot of times I could look at a piece of code and not be sure whether I am looking at C or C++, because there seems to be some substantial overlap depending on what exactly you're doing.

And after that, I wound up building on my C++ knowledge mostly while working on this project, even though I never took another class on the subject or developed a particularly deep knowledge of that specific language. Most of my ability to understand what is going on comes from my background in C not being totally useless when looking at C++, especially given this codebase has a lot weird quirks that wouldn't make sense from a C++ perspective, but would from a C perspective, like having its own string classes based on arrays of chars. Logically if this were developed as a C++ application from the start, it wouldn't have done this, but it makes a lot of sense if this is actually a C codebase that started to incorporate C++ concepts later on. I feel like I'm slowly learning more about both C and C++ just by continuing to work on UXP.
"The Athenians, however, represent the unity of these opposites; in them, mind or spirit has emerged from the Theban subjectivity without losing itself in the Spartan objectivity of ethical life. With the Athenians, the rights of the State and of the individual found as perfect a union as was possible at all at the level of the Greek spirit." -- Hegel's philosophy of Mind

User avatar
andyprough
Board Warrior
Board Warrior
Posts: 1399
Joined: 2020-05-31, 04:33

Re: How did you get into programming?

Post by andyprough » 2022-05-29, 02:24

I took a course in Fortran in college and then many years later took a basic course in python. But I've never used either language professionally, so I don't recall much about them other than the basic programming concepts. Recently I've been having to work with C in order to change the config files for my window manager, DWM. I'm probably learning a little bit about C without realizing it. I've also dabbled in some simple bash scripts, but nothing complex. I'd like to take the time to learn some C more formally, I'll probably take a couple months soon and dive into a C programming book.
athenian200 wrote:
2022-05-29, 02:03
I eventually noticed more parallels in philosophy as well, with conditional logic, truth tables, etc. So by the time I had learned a bit about philosophy and got to my first C++ class, I didn't really have a hard time picking it up.
This is the most interesting part of what you said - I've heard of math concepts in programming, but philosophy in programming is a new idea for me. I've been studying philosophy lately, this sounds intriguing.

User avatar
Moonchild
Project founder
Project founder
Posts: 39276
Joined: 2011-08-28, 17:27
Location: Sweden

Re: How did you get into programming?

Post by Moonchild » 2022-05-29, 08:29

I think the first actual programming I did was on a Sharp MZ-700 my friend owned, back in... 1982? Shortly after, I got my own MSX-1 (1983) and started programming in (the actually very powerful) MSX-BASIC. DOS Batch programming came later since I simply didn't have money for (or use of) a PC until the early '90s. I did have an early computer programming course in COMAL-80 that was part of my secondary education's curriculum (1985 or so). Yes talk about an obscure language XD but that is what they used. On "Newbrain" computers. Of course with my BASIC knowledge and past experience it was completely wasted on me because at that time I had already programmed several simple games on the MSX. But I got to learn a different language anyway!
So that's the short of how I got into programming. As a kid when home computers were rising and PCs were obscure monstrosities for companies.
"Praise from a narcissistic person is always a poison dart. They don't share the stage, so discernment matters." - Dr. Ramani
"Seek wisdom, not knowledge. Knowledge is of the past; wisdom is of the future." -- Native American proverb
"Linux makes everything difficult." -- Lyceus Anubite

User avatar
athenian200
Contributing developer
Contributing developer
Posts: 1755
Joined: 2018-10-28, 19:56
Location: Georgia

Re: How did you get into programming?

Post by athenian200 » 2022-05-29, 09:24

andyprough wrote:
2022-05-29, 02:24
Recently I've been having to work with C in order to change the config files for my window manager, DWM. I'm probably learning a little bit about C without realizing it. I've also dabbled in some simple bash scripts, but nothing complex. I'd like to take the time to learn some C more formally, I'll probably take a couple months soon and dive into a C programming book.
I did enjoy the book I used to learn, C for Dummies by Dan Gookin. I generally enjoyed his humor and the way he talks about things, in fact he was also the author of DOS for Dummies, which is a book I used to read all the time as a kid even though a few of the jokes went over my head.
This is the most interesting part of what you said - I've heard of math concepts in programming, but philosophy in programming is a new idea for me. I've been studying philosophy lately, this sounds intriguing.
Well, yeah. Think about logic... "All men are mortal. Socrates is a man, therefore Socrates is mortal." You get a lot of that same kind of logical evaluation all the time in programming. And especially with object-oriented programming, a lot of philosophical concepts get introduced. The distinction between classes and objects makes me think of Plato's theory of forms. There's a realm of ideas (classes), and a physical realm that imperfectly reflects those ideas (objects). Classes attempt to describe some kind of universal concept that will be used throughout the program, and objects are specific instances of that universal concept brought down to Earth to be more usable.
"The Athenians, however, represent the unity of these opposites; in them, mind or spirit has emerged from the Theban subjectivity without losing itself in the Spartan objectivity of ethical life. With the Athenians, the rights of the State and of the individual found as perfect a union as was possible at all at the level of the Greek spirit." -- Hegel's philosophy of Mind

Lucio Chiappetti
Keeps coming back
Keeps coming back
Posts: 919
Joined: 2014-09-01, 15:11
Location: Milan Italy

Re: How did you get into programming?

Post by Lucio Chiappetti » 2022-05-29, 13:46

Fortran programming on an Univac 1106 during the 2nd year at University ... punched cards :D Overcame that during a stay in UK (ever heard of a thing called Electric at RAL ? sort of a terminal front-end to IBM JCL). Then the status-of-the-art in astronomy was either Fortran on PDP-11 or HP1000 (we had it in Milan, and they had it at ESA and ESO). Talking of early '80s.
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)

User avatar
Disil07
Moon lover
Moon lover
Posts: 76
Joined: 2021-03-31, 05:15
Location: Indonesia

Re: How did you get into programming?

Post by Disil07 » 2022-05-29, 13:50

Started when I was kindergarten circa 2012, I create my own email and Facebook account. I was so stunned by tech at that time, and I think I have a fetish of installing & uninstalling computer program, to get 'new' version, because 'new'=great (imo at that time). My favorite program to be tweaked is Flash Player (I would download a new version from Adobe every week somewhere around 2013, even though I can't even differentiate new and old version)

In 2nd grade in elementary I create a story, one of the figure is called Disil. So... after a while it is becoming my username. In this era I also created my first blog, which is about random stuff I've found in my 'tech life'.

When I became 4th grader in Elementary, I found a community focused on 'child coding' created by a programmer. Im instantly hooked up into that activity. I create my first website with that community in a project, with 2 other child that's also geeky in this stuff (in github/gomix). I've never think about the hosting part, because Github providing them for free.

After that project I instantly created my second website with Wordpress (not coding from zero because that is hard.)

Circa 2020 I am starting to aware of 'online privacy', and deciding to move away from big tech by reducing the use of their apps, including WordPress. This time, I've found a great platform for blogging, called Bear (blogging platform with focus on simplicity, so they only support HTML&CSS, no JS). Right now I've been moving my blog post from WP to Bear, and also relearning code.
Off-topic:
Pale Moon is great but unfortunately the Developer Tools on Firefox are just top tier god level. They have dark scheme simulation and all other stuff. So for developing my site, I use Firefox :?
Debian 12 Bookworm - KDE Plasma 5.27
Intel Celeron N5100 - 4 gigs of RAM - 256 gigs of SSD

I can barely speak english, so bear that in mind when talking to me

User avatar
smithy
Moon lover
Moon lover
Posts: 87
Joined: 2020-07-02, 11:44

Re: How did you get into programming?

Post by smithy » 2022-05-29, 20:33

Off-topic:
athenian200 wrote:
2022-05-29, 09:24

Well, yeah. Think about logic... "All men are mortal. Socrates is a man, therefore Socrates is mortal."
Reminds me of the law of the undistributed middle, which ends up in nonsense such as :

All men are mammals. Some mammals are rabbits, therefore some men are rabbits.
It is common to think of our own time as standing at the apex of civilisation from which the deficiencies of preceding ages may patronisingly be viewed in the light of what is assumed to be progress. The reality is that in the long perspective of history the present century will not hold an enviable position unless the second half is to redeem its first.

Chief US prosecutor Robert Jackson's closing statement - Nurenburg 1946

User avatar
Bilbo47
Lunatic
Lunatic
Posts: 408
Joined: 2017-11-18, 04:24

Re: How did you get into programming?

Post by Bilbo47 » 2022-06-25, 03:16

Lucio Chiappetti wrote:
2022-05-29, 13:46
IBM JCL ... early 1980s.
This acronym stands for Job Control Language - basically batch scripts for mainframe and mini computers.

User avatar
Bilbo47
Lunatic
Lunatic
Posts: 408
Joined: 2017-11-18, 04:24

Re: How did you get into programming?

Post by Bilbo47 » 2022-06-25, 03:46

1981, playing Microsoft Adventure = an "interactive" text-based game on an actual IBM PC-XT. Never did finish with a perfect score of 350. At the same time, the computer lab at middle school / high school had a few Apple IIe, Apple Lisa, and TRS-80 microcomputers. They all had BASIC in ROM, so you could boot with no disk and still edit + run whatever code you could type in. Then it became worthwhile to buy a box of 5.25 inch floppy disks to save the program code and resume developing later. Each "operating system" formatted the floppies with its own sector layout and file system, so the disks could not be read in the other machines.

Light bulb idea: Hey, *anyone* can write something like this Adventure game using BASIC or another Microsoft compiler, and have other people use it. That was the hook. "I'm understanding something that very few peers are noticing. These PCs are going to take over the world, and I can build a frickin' career out of that."

So a self-education with Turbo Pascal and WordPerfect was more practically useful for a first-time programming job than college classes in Unix Pascal and command-line shells.

After developing in around three compiled or interpreted languages, it doesn't matter what new language comes up, you can still read+write enough in that language "to be dangerous". Of course the whole point of inventing a new language is to introduce access to a conceptual realm that existing languages can't easily touch. It helps keep the brain young to go through the intellectual exercise of cultivating a new region of cognition so as to grok the new language concepts.

Lucio Chiappetti
Keeps coming back
Keeps coming back
Posts: 919
Joined: 2014-09-01, 15:11
Location: Milan Italy

Re: How did you get into programming?

Post by Lucio Chiappetti » 2022-06-25, 13:49

Bilbo47 wrote:
2022-06-25, 03:46
1981, playing Microsoft Adventure = an "interactive" text-based game on an actual IBM PC-XT. Never did finish with a perfect score of 350.
You mean the great cave adventure ? xyzzy, the plover room, pay the troll and so on ? I believe the original one was a Fortran program. I played as version on a Digital PDP 11/70, and saw a version on Digital VAX 750. More or (slightly) less the same years. There is something left on the net !
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)

User avatar
Bilbo47
Lunatic
Lunatic
Posts: 408
Joined: 2017-11-18, 04:24

Re: How did you get into programming?

Post by Bilbo47 » 2022-06-25, 14:39

Yes, and the flippin' mirror room. As usual for Microsoft, they stole/appropriated the "community" intellectual property for the game and made bank from doing so.