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