Classification of programming errors

My context for this question is teaching an introduction to programming. Several introductory textbooks identify three broad types of programming error:

  • Syntax error (e.g. missing bracket - the code could not be parsed correctly by the BNF)
  • Logical error (for example the common 'off by one' error, or an erroneous algorithm design)
  • Runtime error (e.g. a division by zero, null reference, or other exception)

I don't find this framework very satisfactory. There are lots of errors I encounter that don't fit readily into this. For example;

  • In a statically typed language, lots of errors show up at compile time which aren't syntax errors. For example mis-spelling a method name, or use a variable before it is declared, you get an immediate compile error, even though the code may be syntactically correct. Or type errors. One might call these 'other compile time errors', except that...

  • In a dynamically typed language (Python being the most common language taught in schools), the same type of errors don't show up until run-time, and again it will throw a specific exception type.

My question really is: is there a good generic name that covers errors in the coding rather than in the logical design i.e. the wrong bit of code could never run correctly with any data - but are not syntax errors, bearing in mind that these errors might show up at compile time or run time depending on whether the language is statically or dynamically typed. Or can one only legitimately refer to the (many) specific types of error that might occur?

I suppose one possibility might be 'semantic errors' - but I don't particularly like it.

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum