I am seriously considering swapping to Python as my primary language. There are several things which hold me back.
- Multiple concurrent versions of the official Python is symptom of something gone terribly wrong. Today there were new the following versions available at python.org: 2.7.5, 3.2.5, and 3.3.2. This is because some libraries etc are incompatible with the latest version, and that sucks. However, they are never going to keep up with the current version as long as this practice continues. Please keep only one current python version on the official page. Python3 was released in 2008! If there is a need for old versions/branches then let somebody fork and maintain it elsewhere! I don’t care how much it breaks doing this, because those things will break eventually anyway.
- That some scientific packages are only compatible with old versions (this has partially been addressed since the last time I checked). I want to use the new python versions because I do not want to build a large library of custom functions that are only compatible with old python.
- A nice IDE preferably with scientific plotting included (and an awesome debugger). I know this exists. But again i see multiple options and not a defacto standard. I would like something like “RStudio” for R. (This may be unfair because I have not fully researched this. Anyway it is major concern.)
- Interactive Plotting and 3D plotting. I think actually this is pretty good now, but i would have to do some research to see if it is satisfactory for my typical usecases. (I also need precise pdf+png(+svg+tiff) -exports where point sizes, margins, fontsizes, dpi are easy to control. I guess that python is better than matlab at this though.)
- I have invested a large effort in matlab and I am extremely proficient in it. But then I am an extremely great programmer and I know I would adapt quickly (and I already have some experience with python.)
- Python syntax. There is lots to like about the python language but parts of the syntax is just not pretty to behold (i do not care if religious python fanatics claim otherwise). I do not like the use of single and double underscores. I like explicit terminations of code-blocks with e.g. “}” rather than the use of indentation. Yes, it imposes a uniform indentation style, but my IDE could auto-indent the code anyway and present it to me in a nice way. There is a reason why virtually every other language uses explicit endings. E.g. Using indentation gives problems when you want to blog code snippets.
I have also looked at R, which looks great for the tasks I usually do. But I think i will not use this because of syntax, lack of interactive plotting, and because i think python has a greater momentum from a much larger community. R has other advantages though. E.g. It seems much less likely to have version conflicts in R than in python. Also there are some really excellent statistics toolboxes available.
I am afraid of ending up in a python dependency hell.