1. 程式人生 > >Clifford John Hill knows so many computer programming languages.

Clifford John Hill knows so many computer programming languages.

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.

Guess what,

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.

IMG 20170914 084838 015 - Discover How Clifford John Hill knows so many Computer Programming Languages.

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.

With JavaScript, I am just forced (currently) to write in that language. But projects like the pypy.js one is slowly erasing that problem.

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.

Conclusion

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.

Your Say

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?

相關推薦

Clifford John Hill knows so many computer programming languages.

Today, you will meet someone that knows so many computer programming languages. From Atari BASIC, Modula-2, Fortran, Cobol, Ada to Python, Java, Perl,

jzoj 5178. 【NOIP2017提高組模擬6.28】So many prefix?(kmp+dp)

5178. 【NOIP2017提高組模擬6.28】So many prefix? Description Sample Input 樣例一: abababc 樣例二: isdashagayisdashagaydashisnotagaydashisnotagay Samp

[jzoj 5178] [NOIP2017提高組模擬6.28] So many prefix? 解題報告(KMP+DP)

題目連結: https://jzoj.net/senior/#main/show/5178 題目: 題解: 我們定義$f[pos]$表示以位置pos為字尾的字串對答案的貢獻,答案就是$\sum_{i=1}^{n} f[i]$ 考慮怎麼得到f陣列,我們有$f[i]=f[nxt[i]]+[i是偶數]

CSE143—Computer Programming Java

代做CSE143作業、代寫Java程式設計作業、代寫Computer Programming作業、代做Java實驗作業CSE143—Computer Programming IIProgramming Assignment #8due: Thursday, 3/8/18, 9 pmThis assignmen

【JZOJ5178】So many prefix?【KMP】【DP】

題目大意: 題目連結:https://jzoj.net/senior/#main/show/5178 題目圖片: http://wx3.sinaimg.cn/mw690/0060lm7Tly1fwlvu2xyz7j30mx05oq3e.jpg http://wx3.sinaimg.c

CSCI 1300 Introduction to Computer Programming

CSCI 1300作業代做、代寫TA/CA留學生作業、代做C/C++程式作業、C/C++課程設計作業代寫CSCI 1300 Introduction to Computer ProgrammingInstructor: FlemingHomework 9: Choose Project, Meet with

Why so many Campers are using Solar Car Battery Chargers?

Do you know what is Solar Car Battery Charger? You may never know about it if you are not a camper. This is a very good device that

10.24 So many prefix?

題目: 解題思路: KMP + DP f[i]=f[next[i]]+(if[i] = f[next[i]] + (i%2 == 0)f[i]=f[next[i]]+(i Accepted code: #include<cmath> #includ

ssl1217.So many prefix?

題目 題解 發現是一道變了形的kmp 然後用一下快讀,再觀察一下樣例,然後上kmp 程式碼 #include <cstdio> #include <cstring> usi

Here’s Why You’ve Been Getting So Many Privacy Policy and Terms of Service Updates Lately

Here’s Why You’ve Been Getting So Many Privacy Policy and Terms of Service Updates LatelyThank the General Data Protection Regulations (GDPR) for the recen

Why do Google webapps use so many iframes (and web workers)?

Poking around Google with a browser dev console open, I noticed that Google apps like Gmail use almost 10 unique JavaScript contexts, iframes and webworker

Why so many data scientists are leaving their jobs

Big data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they

Ask HN: How Does Google manages so many businesses well and why Yahoo couldn't?

Google seems to be doing well trying everything thing new, managing its core business. Yahoo had done the same thing but it failed. Why?

Why the World Cup Suddenly Has So Many Goals

This story is for Medium members.Continue with FacebookContinue with GoogleMedium curates expert stories from leading publishers exclusively for members (w

Computer Programming News

Thursday, November 29, 2018 Wednesday, November 28, 2018 Monday, November 5, 2018 Friday, November 2, 2018 Thursday, November 1, 2018 Wednesday, Octob

【字串】SSL_1216 So many prefix?

題意 給出一個字串,求出字首長度為偶數的子串在這個字串中出現的次數的總和。 思路 我們可以想到動態規劃。設f[i]f[i]f[i]為字首1∼i1\sim i1∼i中偶數串出現的次數(包括自己),可得:

So many things I have to do but nothing I can do

   Tomorrow will be another day,another month,it's the start of the National Day.I mean to  learn some professional knowledge these days,b

MTH5001: Introduction to Computer Programming

normal labels pri available triangle however div creat rms projectMarch 14, 20191 MTH5001: Introduction to Computer Programming 2018/191.

C: release & debug differences (might apply to all programming languages)

keep cau variable volatile pro symbol com centos exec Sometimes we build a program as release and when debugging, some variables cannot b

Coursera課程 Programming Languages, Part B 總結

pos 計算 但是 for 我們 org 情況 再計算 fec Programming Languages, Part A Programming Languages, Part B Part A 筆記 碎言碎語 很多沒有寫過 Lisp 程序的人都會對 Lisp 中的