Hi Vick, and welcome! My replies to your questions are below, interleaved with your comments.
On Sat, Apr 11, 2015 at 04:32:38PM +0400, Vick wrote: > However I recently talked to a guy online and he told me the following, > which actually intrigued and surprised me: > > "The vast majority of numerical codes in science, including positional > astronomy, are written in Fortran and C/C++. If you wish to use these codes > in minority and less efficient languages such as Python and VBA, learning to > translate this code into those languages is a skill you will have to > acquire." [...] > But his statement is insinuating that Python is inferior to Fortran as a > mathematical tool and that all of the scientific community prefers to use > Fortran. > > My question is simple: Is he right or wrong? He is partly right, partly wrong. But mostly wrong. Twenty years ago, if you wanted to do scientific computing, C and Fortran were essential. They are still very important, but they are no longer essential. There are many professional-quality mathematical libraries. Older libraries are nearly all written in C/C++ or Fortran. Some are older libraries are written in Pascal, but because few people use Pascal any more, you won't find many of them still in use. Some newer libraries are written in Java. In the future, I would expect new scientific libraries to start coming out written in Julia: http://julialang.org/ Although these libraries are written in C or Fortran, you don't need to program in those two languages to *use* those libraries. Most scripting languages like Python, Lua or Ruby include ways to call code in C or Fortran libraries as if they were written in Python (or Lua, Ruby, and so forth). We call languages like Python a "glue language", because it is very good for "gluing together" code from different libraries. You want to use this library for planetary orbit calculations, written in Fortran, and that library for calculating lunar eclipses written in C, so you use a Python script to bring them together. Many mathematicians, statisticians and scientists use products such as Mathematica, Matlab, R, SAS, Minitab, Maple, and similar. These are all good products that have been around for a long time, with their own strengths and weaknesses. One Python-based product which is becoming widely used in scientific circles is Numpy, together with its sister-library Scipy. The core numeric routines in Numpy and Scipy are mostly written in C and Fortran, but the interface is designed for use with Python. http://www.numpy.org/ http://www.scipy.org/ Another Python product is SAGE, which aims to be a free alternative to Maple, Mathematica and other similar products. http://www.sagemath.org/ The idea is to create a group of powerful maths, statistics and scientific libraries. Those libraries can use whatever language they want, and often they are written in C and Fortran, but the glue that holds them together is Python. Together, they combine the power of low-level, hard-to-use but powerful fast languages like Fortran and C with the ease of use and convenience of modern high-level languages like Python. The core of scientific computing with Python includes: Numpy - fast N-dimensional array calculations Scipy - scientific computing libraries Matplotlib - 2D graphing IPython - enhanced interactive console with Mathematica-like notebook Sympy - symbolic mathematics Pandas - data analysis SAGE - integrated scientific computing system Parts of these are written in Python, and parts in C, Fortran, Javascript, and potentially any language imaginable. I also expect that people can start using PyPy to run pure-Python code almost as fast as C: http://pypy.org/ Or they can use Cython to write C code using Python syntax: http://cython.org/ All of these are parts of the Python ecosystem, and are why Python is currently becoming the "go-to" language for scientific computing. Where scientists used to write code in Fortran (hard and slow to write, but fast to run) or expensive proprietary products like Mathematica or Matlab, many people are gradually moving towards the Python ecosystem of Python, Numpy, IPython notebooks, and others. This post explains Python's advantages over Matlab, why the author thinks that scientific computing will continue to move towards Python, and links to a number of other good articles from people who already have done so. http://cyrille.rossant.net/why-using-python-for-scientific-computing/ My advice if you want to be a good scientific programmer: - Stay with Python. Anyone who tries to tell you that you need to know how to program in Fortran or C to do scientific computing is wrong. - Learn how to program in Python as well as possible. - Learn when *not* to program in Python, and know when to use existing tools already written in C, Fortran or other languages. Chances are very good that Numpy, Scipy and others above already solve some of your problems. - If you really need high-speed computing power that Python alone cannot provide, consider PyPy, Cython or Numba first. If and only if they still don't provide what you need should you bother learning C or Fortran and using those. -- Steve _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor