@Pedro said:
@dakur said:
You're apparently the one completely ignorant of software development. Yes APIs handle this layer but it highly depends on the quality and capabilities of the API how it is translated into the different hardware architectures. APIs are abstractions of the hardware capabilities and with more hardware configurations APIs have to sacrifice more specific optimizations, this is software development 101. That's the same reason why the more abstracted a programming language is the less efficient it usually is. The abstraction takes a toll on efficiency for particular cases. A dev working with APIs that are more specialized for a specific hardware configuration will have an optimization advantage.
I love the deviation from the point that you are conveniently avoiding. You have indicated in previous posts that your knowledge of this is limited and you lack substantial programming experience and that you would not consider yourself a software programmer. So, with that said I can say that your ignorance is not only genuine but also bias because the reality is not fitting into your weak argument.
OMG let me put it to you as if I were explaining this to a 4 year old.
You have two situations where you have to create two APIs:
Situation 1: you have two machines, one machine has 4 spaces for storing data and the other only two spaces. You want to describe a protocol (API) that, no matters on which machine it runs, stores 3 units of data on both machines and uses that data to make a sequential task. What do needs to know and how will it function?
Situation 2: you only have one machine with only 2 spaces of data and you need a protocol for this machine that does the the same (store and use 3 units of data) as the one above. What does needs to know and how will it function?
Situation 1: you first need to figure out how much space the machine you're in has (step 1). Once you know that, if you're on the one with 4 spaces you store all 3 units (step 2.1). And then use them (step 3.1). If you're on the one with 2 spaces you need to store only 2 units (step 2.2) use one or two units (step 3.2), delete one or both (step 4.2), copy the missing unit (step 5.2), use it (step 6.2).
So in situation 1 we need a protocol that needs to handle the problem with 8 different steps.
Situation 2: You don't need to figure out how much space the machine you're on has, you already know so you skip this step and go directly to the second branch of the above process. You need to store only 2 units (step 1.2) use one or two units (step 2.2), delete one or both (step 3.2), copy the missing unit (step 4.2), use it (step 5.2).
In situation 2 the protocol described has to handle only 5 steps since it doesn't need additional overhead from deciding on which machine it is and how to best fit resources on it.
This is the difference, in the end the second situation is saving in time resources since it needs an API with less steps (less abstraction). On software any additional steps are important for optimization. Hell even how you arrange a sequence of numbers can make huge differences in time and efficiency for some compilers so everything counts.
And even if I don't consider myself a full fledged software developer I have developed enough to understand this. I have developed applications on C that require you to be very specific and optimize processes as much as possible. In fact when you're dealing with data processing applications like I do cutting corners and doing things faster and more efficiently is important so programming for a specific hardware is normally more efficient than doing a program that works wherever.
What kind of expertise do you even have? because it seems you know nothing about how computers work.
Log in to comment