Computer Languages
Putting together the C vs Pascal page got
me reminiscing a bit, and I thought I'd collect all the computer
languages I have learned. I am including anything I worked on/with as
a hobbiest, in school (college), or as part of a job. I am excluding
anything that I might have learned a bit about along the way, but
where I have not actually 'produced' something.
(SNOBOL,
APL,
PILOT,
Logo,
Objective C,
Go,
x86 assembly, etc.)
Also listed is where I first experienced the language. (The
68000 and C first at home, for example, but I had extensive work
experience with it—more than any of the other languages.)
The lists are approximately in the order in which I learned them.
Not all of these imply any sort of expertise, only that I did
produce something in each, however small or badly written. (Contrast
the
9900,
for which I wrote exactly one subroutine
[a CORDIC
rotator for a school assignment] with the
34010, for which I
wrote a complete low-level graphics library, defined a custom ABI for
higher-level C code, and for which I ported the
DIAB C
compiler. [The magnificent and highly-retargetable DIAB compiler
is still out there, now a product of Wind River, though they've almost
certainly never heard of that 34010 cross-compiler I did. Its
author did offer me a job once, stating that I was
the only person in the world who knew how the compiler worked who did
not already work there, but I didn't want to relocate to
California—the only option at the time.])
- Assembly
- 1802 (Home)
- 6502 (Home)
- 8085/Z-80 (School)
- 9900 (School)
- 8048 (Work)
- 8051 (Work)
- 680x0 (Home)
- 6809 (Home)
- 68HC11 (Home)
- 34010 (Work)
- FINGER (Work) This was a custom bitfield-moving
80-MIPS processor that I designed in Verilog for use
in Packet Engines' then-new Gigabit Ethernet
switch
ASICs.
There were six pipelined in a single channel's data path,
IIRC, and each had about 50 instructions in its time budget in
order to keep up at line rate. Software wanted an ARM and a C
compiler, which was entirely impractical, ludicrous even, so
we gave them the FINGER. (There was a
backronym,
but I forget what we came up with, besides 'N' for Network.
Fast Ingress Network General Execution Resource?)
The FINGER was a key part of providing
low-latency
cut-through
switching and programmable
MPLS
and
Layer-3
switching in the product. The FINGER
array, in conjunction with two search engines and other
dedicated hardware in the Ingress ASIC, was responsible for
analyzing the incoming frames and determining their
disposition (forward, drop, flood), and what, if any, edits
were to be accomplished in the Egress ASIC; all at line rate.
- PowerPC (Home)
- MIPS (Work)
- ARM (Work)
- FORTRAN (School)
- BASIC (Home)
- Pascal (School)
- FORTH (Home)
- C (Home)
- FoxBase (Work)
- sh et al. (Work)
- LISP (Work)
- AWK (Work)
- PERL (Work)
- Verilog/Vera (Work)
- PHP (Work)
- Python (Work)
- SQL (Work)
Return to Site Home