I keep running into "system-dependent" operations in programming languages.
I can understand if some "high-level assemblers" want to maintain a direct hardware approach to coding, but those that have carried the misnomer "third-generation language" should be based on standards which make common native operations accessible to the "higher level" programming languages.
It seems reasonable to me that what is often called a "hardware abstraction layer" have common functions within it for a more complete control of what might otherwise be considered a "low-level operation." It makes no sense to have different software platforms behaving differently, using different functions to control functions common to all platforms. We still plan to have keyboards, pointer devices, displays, etc., don't we?
If we are going to let a hardware abstraction layer intervene between the program and the disk-drive device, where did the notion go that would have us derive a data-storage device from a generic device that could have a form that would be a disk? What of the idea that it should make no difference to the higher-level language program code whether the data sink were a disk, memory or some network device? Why should this be true of a disk, but not of a keyboard, display or pointer?
Are we just giving up on principles of modelling so that we can continue to bicker about the superiority of one operating system or another? So the flame wars based on behavior we insist on continuing can continue, blaming one chip manufacturer or another for what we have imposed at higher levels of design?
Hey, I'm just askin' here, yanno?