Hi,
My name's Wang Renxin.
BASIC is my first programming language. It was also the only language when I taught myself programming during highschool. So I have always a special passion with BASIC, even now, my major languages (C/C++) for my programming career are not BASIC like at all. It's BASIC which leads me onto the life of programming. So I decided to write this page to talk a little about it.
I was a highschool student during 2002 to 2005. Learning at highschool means heavy homework and pressing test in China. As Chinese highschool students, we found ways ourselves to recreate efficiently. We went to internet cafe for a short while after lunch, most for entertainments from LAN or online video games. That's the only opportunity I could put my hands on a desktop computer keyboard and access the Internet during weekdays. I began to wonder how were the amazing software and video games made out. I'd learned coding when I was a primary school student with another famous programming language for beginners, the LOGO language, but I didn't even consider it programming because at then there's no difference for me between drawing with the tortoise and inputting DOS commands. I didn't know where to start for quite some days, until I got a book on how to program in QBASIC at a second-hand bookstore. I started to spend most of the time with QBASIC on my desktop computer at home at every weekend afternoon; and searched for solution of problems when I sat in a internet cafe. Programming became my favourite entertainment.
I was dissatisfied with programming at home only, after I'd read and practiced the QBASIC book in a fortnight. It just so happened that an
electronic dictionary company deployed a new product model of the
文曲星 product line which was based on a 6502 CPU and included a
GVBASIC interpreter. The interpreter was crude, just like old school GW-BASIC or Applesoft BASIC with line numbers. I programmed a quadratic equation solver to get start with GVBASIC when my dad bought me the e-dictionary; after that, I tried to program some games. The e-dictionary has a 128x64 mono LCD screen, and GVBASIC has limited graphics operating characteristics. I made a Snake porting, a turn-based fighting game, a simple RPG, etc. The most interesting thing was that the e-dictionary has an IrDA facility, which made it possible to share games with each other. I was excited that my friends got a lot of fun from my games. The screen could only display 4 lines of code at one moment, so I wrote my program down on pieces of paper, debugged in mind, then typed and tested it on the device. I believe that's why I'm used to think more before coding. I've spent a lot of time on it, including school hours, that it's a memorable time of my programming life. There was quite a lot of pure fun playing with this old school style interpreter. "It would be really nice to program in my own BASIC interpreter like this", I wished.
The 文曲星 Electronic Dictionary with BASIC
After several months I'd like to do something more than retro programming, so I picked a Visual Basic book to teach myself how to make something with windows. I learned modern OOP, Windows API, etc. Besides, I also read some non-technical books such as biographies of the industry, companies and pioneers. That experience made my mind more close to the software industry. And with no doubt I chose Computer Science and Technology as my college subject. I got interested in video game programming and decide to take it as my job, so I've read more beyond BASIC after highschool graduation. But there's nothing, but BASIC, which guides me to control a computer.
I became a game programmer after graduation, C/C++ is my primary language. I was a little bored during the spring festival holidays of 2011, I got a great interest in compiler principles, especially script programming as a game programmer. Why not start to make my own BASIC interpreter with C? That is how I begin to accomplish my highschool idea in about 4 days by making the first runnable version of
MY-BASIC. I didn't pay much wish to this hobby project after putting it open source. But to my surprise peoples find it useful and send feedback to me. I'd be glad if it helped someone. I decided to take care of it seriously as a spare time project. I've added some modern programming paradigms to MY-BASIC this year, and I still have a big plan in my mind to make a game engine with it.
The Learning Machine of China
Children are lucky now, that it's easier to get a computer (or other smart devices) and get information about programming nowadays. I believe it's not only me who got a great hunger on electronics (or computer) but couldn't afford a computer. Desktop computers were so expensive during 1980s and 1990s, that it would cost almost one or two years of family deposit to purchase one. Once upon a time, owning a computer was a sign of wealthy men. Chinese people are good at imitation, some companies produced variants of low cost family computers, most encapsuled the mainboard inside the keyboard, and often has a floppy drive or a cartridge slot; yes, just like
Atari 8-bit computers. The most famous was called 中华学习机 (literal translation: The Learning Machine of China). Some companies also made Famicom (NES) compatible machines with a keyboard. Those low cost computer were fantastic toy for a young kid. It's able to not only play games but also program with buildin BASIC interpreters on those computers. But unfortunately lots of Chinese parents disliked their children playing video games neither did mine, so I missed the opportunity. I think there're plenty of programmers got start to learn programming on low cost family computers at or older than my age, so BASIC was the only easy to get programming language during the years in China. Children have more choices to learn program now, I'm happy to see there are Python, Scratch, Alice, etc. available for kids. But in my eyes, BASIC could give the most pure fun and experience to a newbie, it never changed since
its birth.