http://www.tabnak.ir/fa/pages/?cid=54775
http://www.hamshahrionline.ir/News/?id=90531
هی فلانی، زندگی شاید همین باشد
یکی از بزرگترین اشتباهاتی که ما آدم ها مرتکب می شویم این است که برای رسیدن به خوشبختی به دنبال موفقیت می رویم. کمتر وقتی هست که فکر کنیم خوشبختی با موفقیت چه فرقی می کند. شاید خیلی وقت ها پیش خودمان فکر می کنیم آدم خوشبخت باید آدم موفقی باشد و یا آدم موفق حتما آدم خوشبختی هست. خیلی وقت ها فکر می کنیم خوشبختی همان موفقیت هست. ولی به نظر من خوشبختی و موفقیت دو مفهوم کاملا متفاوت و در بسیاری از موارد متضاد هستند.
چند ماه پیش، مثل همیشه، حالم از دست این دنیای لعنتی حسابی گرفته بود. داشتم توی مترو با عجله میرفتم که به قطار برسم. وسط شلوغی یک جوانی پرسید کرج از کدام طرف هست؟ گفتم با من بیا. دستش را گرفتم و کشیدم توی قطار. هم سن و سال خودم بود. سر و وضع تر و تمیزی هم داشت. گفتم انگار بچه اینجا نیستی؟ گفت نه. خیلی ساده و بی دست و پا به نظر می رسید. انگار بار اولش بود که آمده بود تهران. گفتم دانشجویی؟ گفت نه. گفتم چه کاره ای؟ گفت توی میوه فروشی کار می کنم. گفتم میوه فروشی برای خودت هست؟ گفت نه. پیش خودم گفتم خوب حتما برای پدرش هست وگرنه جوانی با این سن و سال و تیپ و قیافه پیش آدم غریبه کارگری نمی کند. گفتم مغازه دار آشنا هست؟ گفت نه! گفتم چقدر حقوق میگیری؟ گفت صد و پنجاه تومان! گفتم راضی هستی؟ گفت آره. قبلا یه جای دیگه کار میکردم طرف خیلی اذیت میکرد ولی این صاحب کارم خیلی آدم خوبیه. یه کم دیگه که باهاش حرف زدم دیدم انگار جدا از زندگی راضی هست! همین که صاحب کارش زیاد اذیتش نمی کند و ماهی صد و پنجاه هزار تومان حقوق می گیرد و روزی دوتا سیب گاز میزند فکر می کند زندگی خوبی دارد.
راستش خیلی تحت تاثیر قرار گرفتم. پیش خودم گفتم چرا آدمی مثل این آدم باید اینقدر خوشحال باشد و تو اینقدر از دست زندگی شاکی باشی؟ یک مقداری که با دقت بیشتری اطرافم را نگاه کردم دیدم که این مشکل خیلی از آدم های اطراف ما هست. این حالت افسردگی یا حداقل ناراضی بودن از شرایط، توی قشر دانشگاهی ما و به خصوص دانشجویان دکترا خیلی متداول هست. شاید بشود این مشکل را – کم و بیش – در همه آدم هایی که در اصطلاح آن ها را موفق می نامند دید. به نظر من مشکل از آنجا ناشی می شود که خیلی از آدم هایی که تمام وقت خود را صرف رسیدن به موفقیت می کنند هیچ وقت به اینکه زندگی واقعا چه هست فکر نمی کنند. دائم می خواهند به یک جایی برسند. بعد که به آنجا رسیدند می خواهند به یک جای دیگر برسند. کمتر به این فکر می کنند که بعد که آن موفقیت را به دست آوردیم می خواهیم با آن چه کار کنیم. حتی به این فکر نمی کنیم که همین موفقیت هایی هم که تا حالا به دست آورده ایم به چه دردمان خورده. خیلی احمقانه به نظر می رسد که یک آدم عاقل برای رسیدن به موفقیت تا آخر عمر تلاش می کند و هیچ وقت فرصت لذت بردن از آن را پیدا نمی کند. به نظرم برای خوشبخت بودن اصلا لازم نیست آدم موفقی باشیم. همین جایی هم که هستیم می تواند جای خوشبختی باشد. به قول مهدی اخوان ثالث: هی فلانی، زندگی شاید همین باشد.

We need a Better Matlab!
I have used Matlab in some of my projects (mostly in university and just when I had to do that). I really don’t enjoy it. I think the worst problem with Matlab is the language itself. Poor design of the language, from function definition and typing mechanism to OO support and lack of namespaces, makes it an unpleasant choice for a computer scientist(it may seem very nice from a non-computer-scientist view). Of course it has some nice features including an exhaustive scientific library and efficient support for matrix and vector operations. Unfortunately, the Matlab library is completely based on the awful programming language. Because of the poor language constructs, matrices are overused in library design. Despite the mentioned weaknesses, Matlab is vastly used in scientific world, that’s because you cannot find any other single alternative in scientific programming.
I have found some ongoing works to make a Matlab replacement, Scilab and Octave are more or less a clone of Matlab (which means they are not a better Matlab), SciPy is a scientific python library (and just a library) which seems pretty good to me.
Based on my experience, a scientific environment at least must have the following components to be called a better Matlab:
1) A better programming language, by better I mean powerful but simple. As the language is used by non-computer scientists, simplicity is a must for the scientific programming language.
2) An excellent library, of course an excellent language is almost useless without a proper library.
3) Efficient support for matrix and vector operations. Maybe hardware accelerated operations or support for parallel processing (e.g. support for SMPs or use the power of GPU SIMD instructions) may be helpful.
4) A simple and useful distributed processing platform. As scientific programs are usually CPU intensive, a built-in Cluster Computing platform will greatly help scientists.
5) A better Development Environment
For the programming language, we must choose to use a compiled or scripting language, of course scripting languages are simpler to learn, understand and use and more appropriate for scientific experience and simulations. Moreover we have the following options:
1) Design a programming language from scratch for scientific purposes, it has the benefit that it could completely fit to the scientific computing requirements, but it has a huge cost and is very risky.
2) Use an existing language, there are many programming languages around. We can easily choose one of them; among several programming languages which I have studied, I prefer python and ruby. Although python has a more matured library, ruby design is more consistent. I will discuss later how ruby would be fitted to the needs.
3) Choose an existing platform with multiple programming languages, e.g. .Net or Java with a mixture of compiled-scripting languages; I don’t like this option for many reasons including its complexity.
So, why ruby is a good choice for our goal? There are many reasons to be considered.
1) Ruby is not designed for scientific computation but its flexible nature made it fully DSL-able. There are already some proofed examples of success of ruby in specific domains; Ruby on Rails is an excellent example. As an example of adaptation, consider the scalar expansion capability. Ruby does not support scalar expansion (e.g. 2 * [1, 2, 3, 4]), but this feature could be easily added to the language so as to become native to the language! Here is some lines of code which do that:
class Fixnum
alias_method(:old_mult, :*)
def *(a)
if(a.is_a?(Array))
a.collect { |i| self * i }
else
self.old_mult(a)
end
end
end
This is the job that needs AOP in many other languages to be done, even in many languages like java it can’t be done at all.
2) Ruby is simple, it could easily be learned by non computer scientist and students, and it has very simple OO semantics. Moreover, it is strongly and dynamically typed, its dynamic typing semantic made it simple to use and its strong typing nature prevents many programming errors.
3) Ruby has a wonderful implementation called JRuby which runs over JVM. This is an excellent option because you can easily use all of available java libraries out of the box. Using some simple wrappers, many scientific java libraries could be ported to ruby. Also some parts of new libraries may be implemented in java for efficiency. Additionally, both NetBeans and eclipse (through RadRails plug-in) support ruby. As the IDEs are extendable they could easily be modified to make a better Matlab development environment.
As many other java fans I love ruby because it is very consistence and clean (just like java). It might be some other good choices.