惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
K
Kaspersky official blog
Forbes - Security
Forbes - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Proofpoint News Feed
G
GRAHAM CLULEY
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
Scott Helme
Scott Helme
S
Securelist
美团技术团队
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
W
WeLiveSecurity
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
AI
AI
L
Lohrmann on Cybersecurity
S
Security Affairs
Cloudbric
Cloudbric
SecWiki News
SecWiki News
爱范儿
爱范儿
雷峰网
雷峰网
Engineering at Meta
Engineering at Meta
C
Cyber Attacks, Cyber Crime and Cyber Security
大猫的无限游戏
大猫的无限游戏
N
News and Events Feed by Topic
I
InfoQ
S
Secure Thoughts
AWS News Blog
AWS News Blog
A
About on SuperTechFans
Schneier on Security
Schneier on Security
酷 壳 – CoolShell
酷 壳 – CoolShell
The Last Watchdog
The Last Watchdog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
Check Point Blog
P
Palo Alto Networks Blog
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Google DeepMind News
Google DeepMind News
Latest news
Latest news
I
Intezer
博客园_首页
C
CXSECURITY Database RSS Feed - CXSecurity.com
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LangChain Blog
D
Docker

Secret Weblog

Becoming More Xee: A Modern XPath and XSLT Engine in Rust Looking for new challenges! Repeat Yourself, A Bit The Curious Case of Quentell The Humble For Loop in Rust The Humble For Loop in JavaScript Don Question Best Practices I Was a 1980s Teenage Programmer Part 5: Achieving Assembly I Was a 1980s Teenage Programmer Part 4: The Call of Assembly The Tooling Shift I Was a 1980s Teenage Programmer Part 3: MSX-2 JavaScript: when you need two ways to do it! Empowering Programming Languages Bloat and Retrofuturism Refreshing my Blog Again Random Rust Impressions Apilar: An Alife System I Was a 1980s Teenage Programmer Part 2: Olivetti M24 SolidJS fits my brain Is premature optimization the root of all evil? Framework Patterns: JavaScript edition Roll Your Own Frameworks Framework Patterns Secret Weblog Highlights Refactoring to Multiple Exit Points mstform: a form library for mobx-state-tree Seven Years: A Very Personal History of the Web Morepath 0.16 released! Is Morepath Fast Yet? Introducing Bob Strongpinion Punctuated Equilibrium in Software Morepath 0.15 released! Impressions of React Europe 2016 Morepath 0.14 released! Morepath 0.13 now with Dectate Dectate: advanced configuration for Python code JavaScript Dependencies Revisited: An Example Project The Incredible Drifting Cyber A Brief History of Reselect The Emerging GraphQL Python stack Thoughts about React Europe Build a better batching UI with Morepath and Jinja2 GraphQL and REST Server Templating in Morepath 0.10 10 reasons to check out the Morepath web framework in 2015 A Review of the Web and how Morepath fits in Morepath 0.9 released! Better REST with Morepath 0.8 Morepath 0.7: new inter-app linking They say something I don Life at the Boundaries: Conversion and Validation BowerStatic 0.4 released! Morepath 0.6 released! Morepath 0.5(.1) and friends released! New HTTP 1.1 RFCs versus WSGI Against On Naming In Open Source My visit to EuroPython 2014 Morepath 0.4.1 released (with Python 3 fixes) Morepath 0.4 and breaking changes Announcing BowerStatic Morepath 0.3 released! Morepath 0.2 Morepath Python 3 support The Call of Python 2.8 Morepath 0.1 released! WebOb and Werkzeug compared Morepath: from Werkzeug to WebOb Racing the Morepath: SQLAlchemy Integration The Centre Cannot Hold Breaking Morepath Changes Morepath Update How to do REST with Morepath Morepath Security the Gravity of Python 2 #python2.8 discussion channel on freenode Alex Gaynor on Python 3 Morepath Documentation Starting to Take Shape Back to the Center Morepath App Reuse Implementing Grok Grok: the Idea Why Linux Works for Me On the Morepath Reg, Now With More Generic! The New Zope as a Web Framework Jim Fulton, Zope Architect Renewing Zope Object Publishing The Weirdness of Zope The Rise of Zope My Exit from Zope Reg: Component Architecture Reimagined JSConf EU 2013 impressions Obviel 1.0! JS Dependency Tools Redux Obviel 1.0rc1 released! Succinct data structures
I Was a 1980s Teenage Programmer: the Alphatronic
Martijn Faassen · 2022-07-20 · via Secret Weblog

I have been programming computers for a long time; I started as a teenager at some point in the 1980s. I thought I might reminiscence a bit about it. That's fun for me, but it also may also be fun for others to see a small snapshot of what programming could be like back then. For some, of my generation or older, there may be recognition, but for others who got into programming later this might be an unknown world.

I had a long article sitting as a draft for a few years. Today I read The Home Computer Generation, and it reminded me of it. There's quite a lot of material, so I will publish it as a series. Here is part 1.

Here are the other parts:

In a Dutch Village

I grew up in a village in the south of the Netherlands. My father was an accountant who ran his own firm from an office near my house. It was next to the village church. A park with a some goats and deer and ducks was next door, and primary school was right next to it. All of these were within a few minutes walking distance, without even the need to cross a road.

Here's a picture of the office building: ivy-clad, tower of the local town hall next door. You can see the top of the steeple of the village church just behind it.

My father's ivy-clad office.

My perspective on programming was extremely limited compared to my perspective now. I was a child, and I didn't speak English very well at all, at first. There was no Internet. Information did not spread quickly, at least not to me. The world is so different now!

Let's go back to the year 1983. I was about 10 years old.

I'm not entirely sure what the first computer was that I actually touched. It could have been a Commodore PET, owned by my uncle.

A Commodore PET computer. My uncle had one.

The Computer

I do know what the first computer was that I actually programmed -- the Triumph Adler Alphatronic. I have tried to reconstruct the model: I think it was a P2, but may it was a P3. It was in my father's office. I suspect I first encountered it in my house during a Christmas break as my father took it home, but I'm not sure.

The computer in my father's office. A Triumph Adler Alphatronic P2

Since my father's office was near our house, sometimes he would take me there Friday evening, when he had to work late. I would play. If I was lucky his work didn't require the computer, and I could play with that. If it did, I was out of luck and I had to amuse myself with other, much more boring, office equipment. That wasn't a lot of fun; I was there for a computer.

Note how I say "the computer"; my father had employees and there were many desks, but there was only a single computer in the whole office.

The Triumph Adler Alphatronic P2 was a computer made by a German typewriter and office equipment manufacturer. The Alphatronic came equipped with an Intel 8085 CPU. This was an 8 bit CPU with a clock speed of few megahertz. It had a monochrome screen, with amber letters in the standard 80x24 grid. The operating system was CP/M. But back then I had no idea what any of this meant. It was just the computer.

BASIC

My father had a BASIC implementation for the computer on a floppy disk. He taught himself how to program to help him to automate office tasks, like registration of hours for invoicing. He continued automating office tasks for years, writing ever more sophisticated software. Some of his creations were also used by his clients. Doing this automation gave his office an edge, but he also enjoyed technology and learning, as he still does.

BASIC on an amber screen. I think we had a disk BASIC, not ROM, but it must have looked much like this.

My father taught me how to write a few very simple programs in BASIC. I remember we wrote a calculation program together that could do addition, substraction, multiplication and the like. I thought it would be very convenient for school arithmetic exercises but that it would probably be considered cheating.

My next program that I can recall writing was an AI. You could type in a word, and depending on whether the word was "good" or "bad", the program would respond with an ASCII art happy or sad face. The dictionary it understood was probably 5 words. It could respond to whole words only, not a word in a sentence, as I didn't know how to make the program look inside a string yet.

Programming as Magic

Programming back then for me involved some statements that I could understand, like IF and FOR and GOTO and PRINT and A = 10. If you made a typo in your code you generally got a Syntax Error. As a Dutch speaking kid I did know enough English to know that "error" meant something went wrong. "Syntax" was just a magic word to me and would remain one for many years to come. But I did know syntax errors were generally easy to fix; it would just be a simple typo somewhere.

BASIC also had a bunch of magic incantations like INSTR. If you used them wrong you would get the much harder to understand Illegal function call or a Type mismatch. I had no idea what a function call was as this old BASIC did not support creating your own functions -- you used subroutines for that with GOSUB. In BASIC everything was a global variable and there was no argument passing. I did not know what a "type" was either, or what "mismatch" meant. These were just the mysteries of the machine and you learned to work with them.

Next time...

Thanks for reading so far! Next time, we'll delve into my programming adventures with the upgraded computer in my dad's office.