1

Background

I once witnessed this conversation between two software engineers.. something like: eng1: I just gave you the api eng2: are the results deterministic when I enter key i?

I'm not sure if the term was deterministic, although its definition online makes sense:

In mathematics and physics, a deterministic system is a system in which no randomness is involved in the development of future states of the system. A deterministic model will thus always produce the same output from a given starting condition or initial state.

Question

I have an engineer who gave me a piece of code that generates random results (ie of how a website behaves as it receives requests). I want to instruct him to provide me a command or instructions that can make the site behave in a deterministic way.. ie when I gave a site instruction A, I will only get result B and nothing but result B.

I don't feel like the term deterministic is right here.. since it's describing a system as a whole.. I want it to apply more specifically to action A causing action B and nothing but action B

1

I initially wanted to write a double suggestion, static and fixed. However, this would also imply that the output doesn't change based on any parameters, not even the parameters supplied by you.

When I considered what you're looking for, you're basically asking if there are other external factors that influence the result of your query.

As a software developer, I've never come across a single word (other than "deterministic") which encapsulates everything while also not implying that the result never changes (as is the case with both "static" and "fixed")


If you want a single word...

Deterministic seems to be exactly what you want. From the definition you've supplied:

A deterministic model will thus always produce the same output from a given starting condition or initial state.

To put it into software terms, the same parameters will always yield the same result, though different parameters may (and probably will) lead to different results.

This is further proven by the fact that a deterministic algorithm is an established concept in software development:

In computer science, a deterministic algorithm is an algorithm which, given a particular input, will always produce the same output, with the underlying machine always passing through the same sequence of states. Deterministic algorithms are by far the most studied and familiar kind of algorithm, as well as one of the most practical, since they can be run on real machines efficiently.


A pedantic counterargument (two, actually)

Pedantic counterargument 1
You could argue that "yielding the same results" is not the same as "yielding the same results and passing through the same sequence of states" (as a counterexample to the latter, consider a load-balanced or asynchronous service, which may use different CPUs or different servers every time), but this seems to be a pedantically unnecessary distinction to make.

Pedantic counterargument 2
You're talking about using an API. Odds are that you're talking about the retrieval of data (e.g. fetching someone's Facebook posts). Such a process is inherently not deterministic, in the sense that every yielded result is only correct at the time it is yielded.

Is the API call that returns Facebook posts (for a given user ID) deterministic?

  • You could say yes, because the call will always return the posts of the person that was supplied.
  • You could say no, because this person's posts get added to over time. If you make an API call today and tomorrow, and that person has made new posts inbetween those two calls, then the results will be different.

But as I said, I think this is a pedantic counterargument. From your question body, I infer that you are focusing on the existence of uncontrollable external factors, not whether the results can change over time (for the same parameters).


If you want to communicate with this engineer...

Instead of trying to encapsulate this meaning in a single word, why not use a sentence?
If you're already struggling to find an appropriate word, don't you think that the engineer is going to struggle with understanding all the intricacies of the word you've used?

Are the results influenced by anything other than the parameters I've supplied?

If you're expecting to talk about this topic with him in the future, you can introduce "deterministic" here:

Are the results deterministic? I.e. are they only influenced by the parameters I've supplied, and not by anything else?

This way, you've made sure that the engineer understands what you mean by "deterministic", you're on the same page about the word's meaning in this context, and you can then use the word freely (in communication with him, probably not his colleagues).

  • +1 If only for the problem of condensing a potentially complex meaning into a single word that might then be misconstrued. – TripeHound Sep 20 '17 at 10:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.