Wish you best luck! As Chris pointed out, when it comes to performance, you might not gain a lot if you migrate from C to Pike. However, extra tests never hurt. In your case, if you intend to write code for numerical simulations i.e. Monte Carlo technique, or Algebraic operation using LAPACK for example, then C might offer more mature solutions. Pike (again as Chris mentioned) is excellent for text processing. It also offers garbage collector as well as strict type casting (similar to Ada) which would prevent faulty code and over/underflow errors. 


On Tue, Jul 22, 2014 at 11:05 PM, Chris Angelico <rosuav@gmail.com> wrote:
On Wed, Jul 23, 2014 at 6:49 AM, Guillaume Collet <bilouweb@free.fr> wrote:
> First, I need to install Pike... I didn't got it work.

What platform?

There's been a new 7.8 release made, but currently there's no Windows
installer for it. You can still use 7.8.700 on Windows:
http://pike.lysator.liu.se/pub/pike/all/7.8.700/Pike-v7.8.700.msi

On Linux, I like to build my own Pike from source. (This is partly
because I have a few patches which haven't yet been accepted into the
core - preventing some obscure segfaults in GTK2, mainly.) You can get
Pike from several distros' repositories, or you can fetch the source
and build, whichever you're more comfortable with.

On a Mac, I'm not sure what's best to use. I have an unofficial build
that includes GTK, or you can use the prebuilt 7.8.700, or you can
build from source as with Linux.

http://pike.lysator.liu.se/download/pub/pike/all/7.8.700/

> But after that, I will try to write some bioinformatic codes of my own,
> currently in C++
> I want to see if I can get better performances with Pike.
>
> But the web server side is also interesting... in fact, I think I will try a
> little bit of many things ;)

Cool!

You probably won't get better performance with Pike than with C++, but
you may well get something comparable. Pike's more similar to Python
than to C/C++; it's a high level language, designed to be easy to
write reliable code in. It might well not run faster, but it'll be a
LOT faster to get something that won't crash - for one thing, Pike
takes care of memory management. You can simply work with strings,
instead of allocating buffers and making sure you have enough room.
And strings store Unicode, not just bytes; important in today's
international world. Integers store arbitrary precision, so you'll
never have to worry about wraparound. Arrays are real things that can
be passed around; so are mappings, which are like std::unordered_map
(I think; I never used unordered_map much), and multisets. Functions
are first-class objects too, which is HUGELY helpful.

Here's a handy reference for the object model Pike uses. It's written
about Python, but the two follow the same structure.

http://nedbatchelder.com/text/names.html

It's cheap and fast to pass objects around, nothing gets copied unless
you ask for it.

ChrisA