It should be noted that no ethically-trained software engineer would ever consent to write a DestroyBaghdad procedure. Basic professional ethics would instead require him to write a DestroyCity procedure, to which Baghdad could be given as a parameter. (N
ou do need to have very good linear algebra skills. If you don’t know what the formula for a dot product is (a dot b = a.x * b.x + a.y * b.y + a.z * b.z ) and what it means geometrically (|a| * |b| * cosine of the angle between a and b), then there’s