Instead of programming the way we do, why don't we make specifications of common tasks such as sorting, and then let the environment compile it to make best use of it's hardware? This way, we could ship computer with new specialized hardware such as sorting networks, and it would automatically work with existing code.
Why don't computers come with specialized hardware such as sorting networks?
programming languages;hardware;sorting
First of all, computers come with specialized hardware.  Every laptop and desktop computer sold for quite a few years now has a specialized co-processor, a Graphics Processing Unit, that handles visual-processing algorithms, such as video and gaming applications require.  Very large computers (e.g., supercomputers, IBM's System Z family) have a variety of specialized processors to handle numerical processing (vector processing), etc.Secondly, sorting is one of the best-researched aspects of computing, and turns out to be far too complex to build into hardware for more than the simplest cases.  Sorting is all about speed and correctness.  Speed depends on the choice of algorithm, the type and variation in the data, and the volume of data.  Correctness depends on the type and context of the data.  It is positively trivial to sort a medium-sized array of integers that fit inside the CPUs native word size (e.g., 31 or 63 bits plus sign).  Sorting character strings that contain more than merely ASCII values is extremely complex - IBM published a 500+ page book 20 years ago just discussing the issues of character sets in the context of national boundaries and common usage.  And then there's the question on non-contiguous data - sorting a linked list involves chasing pointers all over memory.