[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: GSoC Questions

M Gamal,

I just want to comment on ITL only. The rest, I have no experience with.

  I've seen in the wiki that ITL needs to be ported to other languages. I like
this idea very much as it suits GSoC ideally. It doesn't seem so hard and is
doable within 3 months.

I have ported ITL to C#, and it took only a few days. I did not do any redesigning, just a translation. In the process, I found a bug in the source. You can trace it back in the list. I know someone already port it to PHP. My target is actually to port it to javascript. I have ported a C prayer program before to javascript, and I think it is doable. To port to Javascript may take longer that C#. So, I think if you want to port ITL to other languages, I think it will take about 2 weeks fulltime, the most. However, FYI, I did the porting without much understanding how exactly it works, but rather just a translating and testing to ensure each function works as expected.

But I have a few stupid questions here:
 * What is exactly meant by porting? Should the whole code be ported to other
languages, or should we simply implement bindings to them?
 * Should the student port to more than one language, or is one language enough
? (For myself, I would like to do that with Java and/or PHP)

My understanding is, binding is just creating an interface to the target language. For example, we have created a dynamic loading library for itl, itl.dll or itl.so . To bind to other language means you need to "extend" the language to be able to load itl library. For Perl, usually people will create a Perl module. Similar is for PHP. For .NET, it is actually quite easy to do, we can load the dll using it's interface. By doing this, you can call the function in the library (which is written in C) using your favourite language.

Porting is basically you modify the original source code. Porting to
another language is basically re-implement it in another language.
There a pro and cons to both method. With binding, you can be sure
that you will get exactly the same results everytime, simple because
it is the same code that processing it. If you improve the code, the
"binded" language will get the improvement as well without much
effort. However, the cons will be, sometimes it is more difficult to
bind, esp if you have limited privilage to the system. For some
language, binding may not be possible/practicle at all (think

In my opinion, for library like ITL, maybe a good idea to port it to
another language rather than binding. I'm saying this because:
1. The library is relatively small in code size.
2. Not much changes in the code in the future.
I'm sure others have a different view.