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.
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.
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!
Links:
For Open
Source:
Sage http://sagemath.org/
Python>
Python
official website http://www.python.org/
Python 2.7 Tutorial http://docs.python.org/2/tutorial/
Python 3.3 Documentation
http://docs.python.org/2/tutorial/
C++>
C++ Standards
Foundation website http://isocpp.org/,
C++ FAQ from
its founder’s website http://www.stroustrup.com/
C++ Tutorials http://www.cplusplus.com/doc/tutorial/
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/
Dev-C++
(Windows, Linux) http://sourceforge.net/projects/dev-cpp/?source=directory
ARM Linux
GCC – OS X Mountain Lion (Mac, of course) http://www.benmont.com/tech/crosscompiler.html
JAVA for developers (Oracle website) http://www.oracle.com/technetwork/java/index.html
Microsoft
Visual Studio (2012) http://www.microsoft.com/visualstudio/eng/team-foundation-service
Embarcadero
C++ Builder XE3 for Windows 8 and Mac http://www.embarcadero.com/products/cbuilder
Intel Developer Zone for Different Platforms
http://software.intel.com/,
http://software.intel.com/en-us/intel-parallel-studio-xe
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:
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.
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