Today, you will meet someone that knows so many computer programming languages.
From Atari BASIC, Modula-2, Fortran, Cobol, Ada to Python, Java, Perl, PHP etc.
He started when he was 8 years old and by 10, he was coding games.
Clifford John Hill is a father, husband, software developer, and a geek in programming. Cliff, like Margaret Hamilton, is an inspiration to computer programmers.
Now I suggest you sit back, get a glass of wine or juice and some snacks if available, and enjoy the details of this educative interview.
Clifford John Hill Shares His experiences He Has in Learning many Computer Programming Languages.
Godson: Good day, Cliff Hill, welcome to Cool Python Codes. Thanks for taking time to be here.
Cliff Hill: Godson, thanks for having me.
Godson: Could you please kindly tell us about yourself like your full name, hobbies, nationality, education, and experience in programming?
Cliff Hill: My name is Clifford John Hill (I go by Cliff), I am 41 and am from the USA: born in Illinois, grew up in California, now live in South Carolina.
I am largely a self-taught programmer but have gotten a two-year degree (Associate’s degree) in Computer Science, just so I have something that says I know what I know.
I started programming at the age of 8, and have used a multitude of languages over the time to develop softwares.
I worked for the US Army as a systems/network administrator for a few years, and mostly have been employed as a software developer for my career.
Godson: Can you narrate your first programming experience and what got you to start learning to program?
Cliff Hill: My dad bought our first computer when I was 7. It was an amazing system at its time, an Atari 800XL, an 8-bit computer with 64K of RAM, BASIC built into the ROM, plugged into a TV, he bought two external 5¼” floppy drives, a dot-matrix printer, and a 300bps modem. We’re talking top of the line back in the early 80’s.
With it, my uncle got us copies of a lot of computer games. I spent many hours playing and beating them.
Games like Boulder Dash, Pac-Man, Space Invaders, Galaga, Donkey Kong Jr, Ultima I, Zork I, II, and III, River Raid, Blue Max, Frogger, etc.
Eventually, I had gotten bored with these games, and Dad went and bought a book on how to program in Atari BASIC, and told me to learn how to write my own.
I started teaching myself how to program, first by simply doing the examples in the book, seeing them work, and then fiddling with them to try and understand what changing different parts of the program would do.
Over time, I began to start to write clones of games like Mr. Do, or something else. I would make a game that was pretty close to the original, and then would modify it to do what I wanted instead, changing the rules and such for the game to be something more challenging for me.
I think I was about 10 when I started giving copies of my cloned games to friends.
Godson: Which programming language do you know and which is your favorite?
Cliff Hill: The languages I know? Hmm…. that’s a long list.
Well, it depends on how much programming in a particular language would be required to “know” the language. I started, as I said, with Atari BASIC, and learned a lot of the 6502 processor Assembly code (for improving the performance of my games).
Eventually, we got the Atari 540ST, which was a 16-bit computer. With that, I learned GFA Basic and moved to C.
I also learned Atari Logo just to prove a point to my school’s programming teacher (who said that it was impossible to do certain kinds of programs in Logo, and I did prove him false).
I took a couple programming courses in High School just to fill some time at school, and through those, I learned Pascal.
Over the years I have also programmed in C++, Modula-2, Fortran, Cobol, Ada, before landing in Java and enjoying that language for a while.
I also have since learned multiple varieties of SQL, plus ColdFusion, WiTango, PHP, Perl, multiple Unix scripting languages (bash, sh, ksh, etc.), Tcl/Tk, Visual Basic, Common Lisp, Lua, and probably many other languages I have since forgotten.
But I would have to say that when I found Python, I found my true programming favorite. See, I would often write programming logic on paper whenever I wasn’t near my computer. I had developed my own pseudo code — something I could use to jot down the algorithms to later write in another language (usually Java) later.
Then I found Python, back in 2000. And what I found was a bonafide programming language that was almost identical to my own pseudo code.
So… it was a very easy language for me to learn. I think I started Python with version 2.1, and have followed its progress up to now using 3.6 in my current professional project.
I hold Python as my favorite because I like its simplicity, elegance, and flexibility. It simply fits my needs. I can write a program that does what I need quickly. I have an expansive set of pre-built libraries at my fingertips.
And as of the past couple years, my favorite language has become extremely popular, which has helped me be able to find better and better jobs in the market.
I have used a few variants of Python: Jython (which is Python in Java), Pypy (which is Python written in Python and then translated to different backends with a powerful optimizing interpreter and JIT), Pypy.js (pypy translated into asm.js and made to run natively in the browser), IronPython (Python in .Net), and of course CPython.
Godson: What inspired you to venture into the world of programming and drove you to learn a handful of programming languages?
Cliff Hill: What inspired me?
Probably the idea that I could write my own computer games. Computer games were a large part of my calling into programming, even though I never have professionally been a video game developer.
What drove me to use other languages was simple. First, it was for performance/efficiency purposes. Atari BASIC was nice but slower than Assembly, so I wrote some of my code in Assembler and could inject that into my BASIC code with the (then infamous) PEEK and POKE commands.
Then we switched to a new computer (the Atari ST), and I was forced to learn something new.
My curiosity at new languages started up by then, so I would often search for a language and teach myself how to write programs in it. Just to see the differences between that language and what I already knew.
Over time, I developed quite the understanding of a wide variety of languages and had learned many of their strengths and weaknesses.
Godson: What’s your peak time for programming?
Cliff Hill: It varies a lot. Back when I was in school I would program when I got home, through the night.
I had joined the US Army when I got out of High School and had worked on a few projects of my own in my room on my off-hours, including a project that resulted in saving the Army quite a bit of money.
Now I tend to program mostly at work, as I am a Lead Python Developer.
I also tend to do other kinds of programming work, in video games, I might build macros, scripts, mods, etc. as I see fit, if the game lets me.
I maintain a home network where I have built a number of scripts to automate what I do there so I don’t need to spend much time keeping it running.
But honestly, I rarely have much time off-hours anymore to do any programming due to having a family and several responsibilities that are far more important.
Godson: Can you tell us which IDE makes you more productive?
Cliff Hill: I have used several IDEs over the years, and honestly don’t like any of them. They almost always are too bloated, they cause performance issues on the systems, and in my personal common use-case (which is SSHing over to a server, and then editing files on that server local to the server), don’t really help at all.
When it comes to development, I generally prefer vim over other tools. Especially with a good set of extensions.
In the “vim vs emacs war”, I generally am disinterested. I am sure that emacs is a good tool too, but I have been using vim since the early 90’s. It’s just what I am comfortable with. Combined with tmux, it really becomes quite the useful tool.
Godson: How do you handle bugs in your program?
Cliff Hill: Well, beyond the good business practices with Test Driven Design (I prefer the pytest module for Python), I usually am able to dig in, track down what is causing the bug, and fix it.
I prefer using some kind of logging, but print statements work in a pinch. Debuggers are handy, like pdb, but often I am using the ipython shell and stepping through the code myself by making the requisite function calls when possible.
Usually, I can avoid most bugs with Python thanks to its extremely simple syntax.
Godson: How do you remember the syntax of the different programming languages you use today?
Cliff Hill: Once you learn a particular language’s syntax and nuances, to me it is kinda like riding a bike. I might need to shake some cobwebs off minor details, but I can usually simply remember what’s worked before.
Often, I try to minimize how many different languages I am using at one time. For example, I use the SQLAlchemy library for Python so I don’t need to write SQL code in my programs.
I just write Python and let it do the rest. When forced to use another language environment, like between native code, the JVM, or .Net, I usually use Python as my language (CPython, Jython, or IronPython respectively), so that way I keep a consistency in what language I am actually writing in.
Godson: What remains your best resource when keeping up with the fast changes in different programming languages.
Cliff Hill: Google. Well, seriously I tend to keep up by watching various websites. As I focus on Python, I read what is coming in new versions of Python from the official website of Python.
I also have watched most; if not all of the pycon lectures on YouTube.
I generally am more interested in language-agnostic books, a favorite of mine is “Beautiful Code”, where each chapter covers a different topic, in a different language.
I also, of course, like Donald Knuth’s “The Art of Computer Programming” books, and use them as references, as they are still extremely valuable.
Godson: Thanks for your time with Cool Python Codes.
Cliff Hill: It is a pleasure.
I believe you enjoyed this interview with Cliff John Hill. Indeed a lot of lessons can be tapped from this conversation.
As for me; I learned a great deal; one quality of Cliff I admire most is his keen to learn.
Let’s have the rest of the conversation via the comment section.
Should you have any contribution or question as regards this interview; kindly use the comment box below.
Try being social as well – share this post on your Social Media accounts, I will really appreciate that.
How many programming languages do you know?