You moved into the higher-level languages sooner than I did. My progression was more like: BASIC, Z-80 ASM, 8051 ASM, C
Maybe it depends too on what you did with BASIC. I did a lot of fairly high-level stuff with BASIC: string-handling, graphics, character-based GUI-like stuff (pulldown menus, repositionable overlapping windows, ...), and the like. I did also do some pixel graphics and PC speaker sound, but although the flow control was fairly primitive in the variant of BASIC I used (mostly consisting of IF ... GOTO and GOSUB), it was in most other respects a rather higher-level language than C. Critically, BASIC has dynamic-length strings, which I for years considered to be the single most important data structure for a general-purpose language to have. (These days I tend to think hashes are just as important, but that's my Perl addiction talking.) If a language doesn't have dynamic-length strings, you usually end up spending 75% of your time working around the lack of them.
The only exception I have ever encountered to this is Inform. Inform not only doesn't have dynamic-length strings, it doesn't have dynamic strings: the characters that make up all strings are determined when you write the code, not at runtime. I'd been happily programming in the language for a couple of years before I even noticed this, but the reason has to do with the peculiar combination of Inform's fantastically good object model and paradigm with its special problem space. Because of these special considerations, an Inform programmer who wants a string in a particular place to be dynamic can just substitute a routine that dynamically decides (based on the current states of various objects and their properties) what to print and prints it; because of the way the object model and paradigm work, this is the natural way to do things. (I know, it sounds weird, but given the problem space and paradigm of the language, it's very natural. The reason it was done this way is because of the virtual machine that Inform targets, which was designed for extreme portability. Strings and routines are at the end of the compiled program, in the part that can be accessed directly from read-only media if necessary.)
It's like the editing holy wars: When your fingers are programmed to like vi/emacs/WordStar/etc., it "feels natural"
I don't use Emacs for the key bindings. Frankly, I don't want anything to do with the default keybindings in Emacs. I use Emacs for its copious functionality, but I've got the keystrokes I use with any frequency rebound to something sane. I am occasionally forced to use an installation of Emacs that doesn't have my custom lisp installed, so that it's got the default keybindings, and it drives me nuts. I can generally only take that for an hour or two, and then I have to install my elisp stuff and set it up for _comfortable_ editing.
--roboticus (still wanting to find someone to pay him to learn Lisp!)
Don't wait. Shoehorn it into your Copious Free Time. It only takes a couple dozen hours to become conversant in Emacs lisp, and it's probably the best time investment I've ever made in a computer technology, or maybe the second-best. (The time I spent initially learning Perl is the other contender.)
In reply to Re: YAC (Yet Another Challenge): Oldest Useful Computer Text
by jonadab
in thread YAC (Yet Another Challenge): Oldest Useful Computer Text
by hsmyers
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |