You're asking a relatively subjective question; it's a question about terminology, that vernacular, and perspective.
For example, is Lisp a high-level or a low-level language? What if the implementation is running on a Lisp Machine?
Often, when people attempt to build a spectrum from low-level to high-level, what they are trying to quantify is a degree of "closeness to the hardware" as opposed to the degree of "abstraction."
Qualities which count toward an implementation's closeness to the hardware:
- The programmer directly controls the memory layout of data and has access at run-time to memory addresses of data.
- Mathematical operations are defined in terms of the hardware or loosely defined in order to conform to different types of hardware.
- There may be a library providing dynamic memory allocation, but use of dynamic memory is manual.
- Management of memory during string manipulation is manual.
Converse qualities which count toward an implementation's abstraction from the hardware:
- The programmer does not have run-time access to address of data (references instead of pointers).
- Mathematical operations are defined in specific terms not tied to specific hardware. (e.g., ActionScript 3 supports the
Number
type which self-converts from integer to floating-point rather than experience overflow.)
- Management of dynamic memory is handled by the environment, possibly through reference counting, garbage collection, or another automated memory management scheme.
- Management of memory during string manipulation is always hidden from the programmer and handled by the environment.
Other qualities might render a language very abstract compared to the hardware on which it runs:
- Declarative, search-based syntax. (e.g. Prolog)
With factors like these in mind, I would revise the spectrum you have written as follows:
Lowest level:
- Assembly language of the platform in question.
Low-level languages with higher-level flow control than assembly:
High-level languages:
- FORTRAN
- COBOL
- Python
- Perl
Highest-level languages:
Python appears twice by intent -- it spans a portion of the spectrum depending on how the code is written.