# What concepts from classical computing are vital for quantum programmers?

Many scientific programmers get by fine without having a computer science background, i.e. they don't need to know the machinery behind the prevailing paradigm of 0's and 1's (bits), let alone basic logic, to code.

Given this lack of awareness of classical computing's inner workings, what are stand-out concepts from classical computing that every aspiring quantum programmer should know?

• Hi @devalrist, although I think this question as phrased has issues, it might be salvageable if rewritten, with effort and attention initially payed to formatting (e.g. make an effort to capitalize the first word of a sentence, etc.) and with dropping any reference to what one should know. For example, reversible computing is a topic from classical computation with direct applicability to quantum computation. – Mark S Nov 22 '19 at 23:32
• – glS Dec 3 '19 at 10:11

I take your statement that programmers "don't need to know the machinery behind the prevailing paradigm" to mean that most scientific programmers need not know how a $$\mathsf{NAND}$$ gate is realized, with, say, a set of $$6$$ or so transistors.
However, probably a concept that is fundamental in quantum computing, that can be understood by anyone familiar with logical operations like $$\mathsf{AND}$$, $$\mathsf{OR}$$, etc. is that of reversible computing. For example quantum computing logical gates must be reversible, and gates like $$\mathsf{NAND}$$ etc. are ruled out. Information is lost in such gates.
However, gates like $$\mathsf{XNOR}$$ are still allowed in quantum computing (because they are reversible, and the input could be recovered.)