What is the difference between these frameworks or languages? What are the pros and cons of each of these? Do you know any similar framework/platform/language that gives some more advantages?
I would suggest to start with Quirk as it offers a drag-and-drop circuit model. Furthermore, Quirk offers some subroutines such as basic arithmetic operation (on integers) and allows to easily define new subroutines. (All drag an drop!) It can simulate up to 17 (?) qubits.
Once you want to go beyond an "easy" circuit representation I suggest Microsofts Q#. It features everything from a (complete) quantum simulation (up to about 30 qubits), to stabilizer circuits or a Toffoli-simulators with 1000s of (qu)bits. In my opinion the documentation is a little messy, but you get great support from the developers in case you have any questions. Q# also offers libraries for arithmetic operation (integers and (!) floating-point numbers).
Finally, as @Abuzer mentioned, Qiskit is a good starting point to. It offers a circuit representation as well as a code representation. I am not aware of any arithmetic libraries, but the there exist community implementations on Github. Actually, I believe Qiskit has the biggest "community", so you ll likely find help on the web if you run into troubles. Qiskit also offers different simulators to perform a complete quantum simulation or just subset-models.
If you want to have a very rough overview over some (personal) pros/cons of simulations, you can read here Disclaimer: I asked this question
I am definitely biased (writing a book on quantum computing with Python and Q#), but I am a Pythonista and love using Q#. The design of the language is good for long term quantum computing development; it allows you to think more at the algorithmic level, not at the assembly level as many other quantum programming languages are targeting. It has a Jupyter kernel so I can use it like I do most of my Python development, is open source, great editor integration, and has some great libraries that mean you don't have to re-implement things over and over again. It also is inter-operable with Python so I can call into it from my regular Python code. For resources, check out the book in early access (if you want a discount code, hit me up on twitter), try qsharp.community, the katas, or the docs! And as with any open source project, get involved! Making pull requests and file issues are some of the fastest ways I find to learn a new language or package :)
In my opinion, at the moment, qiskit is the most suitable one for learning and teaching.
For a basic introductory material (we have used it in 14 two-day or three-day workshops), I recommend the following repo:
- the link to workshops: https://qsoftware.lu.lv/index.php/workshops/