starting on Q# : check out: https://docs.microsoft.com/en-us/quantum/quickstart?view=qsharp-preview&tabs=tabid-vscode
Q# is a programming language for quantum computing. Q# draws on inspiration from F# as a functional language, C# for syntax, and draws some ideas from Python.
A Q# operation is a callable routine, which contains Q# code to carry out a quantum operation. An operation is the basic unit of quantum execution in Q#. It returns a single value as output, specified after a colon, and may be a tuple.
A Q# Function is classical subroutine used within a Quantum algorithm and can only contain classical code. A function will take a single value as input and returns a single value as output.

namespace Quantum.HelloWorld
{
open Microsoft.Quantum.Canon;
open Microsoft.Quantum.Primitive;
operation SayHello () : Unit {
Message("Hello World!");
}
}