I've actually played around with assembly in an introductory Computer Science course. We used the Pep/8 simulator. Once I got the hang of it, it was a strange sort of fun. I might check that out. Thanks.

You don't have to learn PL/SQL (the programming language) but SQL is still a language and still something you need to know. While it's not technically a "programming language" on the big imaginary venn diagram, it's a great suggestion, and complex enough that you can't just assume you'll be able to figure it out.

SQL isn't easy, but it is useful. Also it isn't really that much more difficult than assembly, it's just a step in the opposite direction.

Most database-specific implementations of SQL are turing complete, which is usually the most basic requirement for something to be considered a full programming language. Not that you would want to use it for most algorithms though.

However, a vast majority of non-trivial programs need to use a database of some type, and SQL databases are extremely popular, not only for web applications, but also for desktop and embedded applications. I can't imagine anything that would complement a normal programming language better even if you don't consider SQL to be a full language itself (it's certainly not a normal language).

PHP has strong roots in C though, so you would probably find yourself right at home with it. However, you would not normally find yourself building a PHP+C application, while you could easily find yourself building a C+SQLite application or a PHP+MySQL application.

If your goal is web development, then look at PHP or another scripting language first; they tend to have easier to use SQL adapters than C.

SQL isn't easy, but it is useful. Also it isn't really that much more difficult than assembly, it's just a step in the opposite direction.

I'd say SQL is, at least at first, extremely difficult. As a programmer, I couldn't get my head around normalisation - if I had a problem with repeating data, I'd want to compress that data. Normalisation didn't 'click' with me until I wrote a 2D space-shooter type game, how would I allow certain ships to be at the same X/Y location and determine the type of ship and the order in which it's drawn etc...? Then all of a sudden, 3rd form normalisation magically made sense.

Most database-specific implementations of SQL are turing complete, which is usually the most basic requirement for something to be considered a full programming language. Not that you would want to use it for most algorithms though.

I seem to remember something which says that if a computer can play you at chess, it passes the Turing test. So, the MOS KIM-1 (1976) and Sinclair ZX81 (1981) pass this test because a simple Chess program was implemented on both in just 1K of RAM.

Playing chess as passing the Turing Test? That doesn't sound right. The whole point of the Turing Test is that the AI's statements and responses are indistinguishable from a human might reasonably make. Chess is far too focused and limited a venue for that.

However, it is somewhat irrelevant, as 'Turing-complete' does not refer to the Turing Test, which is a hypothetical means for determining whether an artificial intelligence program is in fact sentient. 'Turing-complete' refers to the ability to compute the same range of computations as a Universal Turing Machine, a simple (and decidedly non-sentient) abstract machine capable of performing any computable result. 'Turing-complete' is usually considered the minimal requirement for a practical programming language, as it shows that it is capable of performing any computable result. A lot of things are Turing-complete - including Game of Life, Minecraft, the programming languages BrainF**k and Unlambda, and even the card game Magic: The Gathering are capable of simulating a UTM, but would not be considered very expressive as far as programming goes.