I’ve always been fascinated by programing languages. Not just as tools, and not just by the differences in syntax and grammar, but by their internals.
Dispatching, message passing, scope, stack frames, interpretation vs. compilation vs just-in-time compilation, static vs. dynamic libraries, functions and feature sets, each has core elements that define not only how a particular language “works”, but also the tasks for which it’s best suited.
Programing languages have evolved over the years. Concepts rise, fall, and are revisited as new generations of developers find them and discover them. The features merge and intertwine as procedural languages add objects, and object-oriented languages add blocks and closures and other elements of functional languages like LISP and Clojure.
I’ve studied and used many languages over the years; even written more than my share of lexical parsers and interpreters.
But I’m always hungry to learn just one more…
Speaking of which, recently I’ve been learning Objective-C in order to port client applications to smartphones and tablets.
- Objective-C for iOS and OS X
My bread and butter languages I’ve used pretty much day-in and day-out for the past 10-15 years.
- SQL (MySQL, Transact-SQL)
- PHP 5
- Extensible Markup Language (XML)
My prior “bread and butter” languages, used on many projects and while working with previous employers.
- Visual BASIC
- Macintosh Object Pascal
- 68000 Assembly
- RAXIS Business BASIC
- Apple Applesoft
- 6502 Assembly
- DEC PDP-11 Assembly
- DEC PDP-8e Assembly
Languages I’ve studied either in school or simply in order to get a better understanding of their concepts, underpinnings, strengths, and weaknesses.
- Turbo Pascal
- Microsoft BASIC
- 8080 Assembly
- Apple /// BASIC
- UCSD Pascal
- IBM 360 Assembly
- IBM RPG