19 February 2013

Math Programming,
et al

In the previous post we talked about math programming, calculations, and coding. Before I proceed, I’d like to apologize for my long hiatus from this series. In actuality, I had laser surgery in my left eye and am still awaiting the same surgery, this time in my right eye. (My health insurance will not allow treatment in both eyes on the same day, but rather, at least 90 days in between.) So, of course, I had some post treatment irritations in the left eye for which I had to drop some meds in the affected one. Nevertheless, as is said, "Keep on coding."

On a lighter note, I recently updated my armamentarium gadget-wise. The gadgets namely are a Nexus 7 tablet with 32GB internal memory along with wifi and 3G capabilities. Along with that, I  gota separate Android smartphone: an LG Optimus L E615 Dual Sim. This gives my eyes some exercise to perform. The reason for the acquisitions was not an electronic whim, but rather work purposes. I’m developing medical apps for the Android platform, mathematical apps in particular for calculating biophysics values. 

But do let me proceed from where I last covered a few days ago, and that was, commercial software for math purposes eg MATLAB, Maple, and Mathematica. To be fair to the open-source arena, we have MATLAB-based progs such as Freemat, SciLab, and GNU-Octave. For more data analysis and visualization needs you can try out SciDAVIS (requires Python 2.6) along with the aforementioned programs all available on the sourceforge.net website. There are quite a number of math and information analysis programs and one should be willing to search for the apps for one’s specific needs. 

Incidentally, several of these programs need pre-installed JVM (Java Virtual Machine), C++ compiler, or Python in any of its specific versions. It is worthwhile noting that these programming languages are cross-platform. So whether PC or Mac, or even Linux, there is a recipe just cut out for you, more or less.

You, and the User

Your needs, as well as user’s needs, will narrow down your choices for programming language or environment. Programs aren’t built in a day. So experience and patience are keys to your development timeline. Did we mention budget too? Let’s not forget that one.

What is the best language for your needs? The answer is open to discussion. If you are developing for the Windows platform, then C++ (Visual, or Intel) compilers will be quite useful. Like I mentioned earlier, these languages are mostly cross-platform and the compiler you use will depend on your own machine and for your intended audience. 

Python is quite handy for mathematics applications. You will need to install the Python environment on your computer. Python is a high-level language and is used a lot as a scripting language, available from the 2.4 version to the latest 3.3 version and above.

Java, both a programming language and a software platform, is almost always needed as a necessary environment on basically every computing machine, from desktops to car auto-navigation, and operating environments. In this regard, you may be using these a lot for embedded systems or Android app development.

Let me not forget Sage, a great piece of scientific and mathematics software system. And it’s free too! It does work on a Virtual Machine app like Virtual Box in Windows.

Time and Patience

It will take a bit of time learning how to encode your algorithms in any of the intended platform languages. You will have to learn basic computer programming principles. There are a plethora of books, Wikis, and videos to learn from. I will include a list of sources below, and hope you can make use of them. In the meantime understand your needs and what platform you are writing programs for. If you are hoping to deliver this program to the community, or even monetize the program, then it will be wise to learn certain distribution principles (even Marketing principles) so you get to see where your activity is intended for. From Medical Imaging to Electronic Health Record (EHR) needs, it’s all coding.

I can’t possibly cover all there is to know about programming in a blog post as this for now. If you send comments, or email me about your interest in specific programming issues then I will send you a bit of programming nuggets. Keep in touch: no worthwhile programming is done in total isolation from the community.  And do link back to this blog. Or, Like this on your Facebook page,  or Twitter. Many thanks as always!


For Open Source:


Python official website http://www.python.org/

Python 3.3 Documentation http://docs.python.org/2/tutorial/

matplotlib (a mathematics plotting environment for Python) http://matplotlib.org/


C++ Standards Foundation website http://isocpp.org/,

C++ FAQ from its founder’s website http://www.stroustrup.com/

C and C++ Programming tutorials http://www.cprogramming.com/tutorial.html

MinGW-Minimalist GNU for Windows http://www.mingw.org/

MinGW –W64 for 32 and 64 bit Windows http://mingw-w64.sourceforge.net/

ARM Linux GCC – OS X Mountain Lion (Mac, of course) http://www.benmont.com/tech/crosscompiler.html


JAVA  for end-users http://www.java.com/en/

JAVA for developers (Oracle website) http://www.oracle.com/technetwork/java/index.html

BioJAVA for processing biologic data http://biojava.org/wiki/Main_Page

For Commercial Options:

Embarcadero C++ Builder XE3 for Windows 8 and Mac http://www.embarcadero.com/products/cbuilder
Other Commercial options are mentioned on the Official Websites for the specific languages as cited above.

Extra: 3 Tips for a Good Presentation:
1: Be Real;
2: Be Interactive;
3: Be Simple.

Productivity App for the week:

Cribr (for Windows) for making Cheat Sheets.

Happy Coding! Develop for the Future and not the Past.

Fernando Yaakov Lalana, M.D. 

PS: Remember- A 64-bit operating system can run 32-bit software, but a 32-bit operating system can not run 64-bit software.

No comments:

Post a Comment