[Mumps2Py:] Mumps to Python Naive translation notes #1

[ Thread Index | Date Index | More lists.mumps2py.org/discuss Archives ]


while piecemeal translation of Mumps to python seems relatively straightforward (at least so far), the truth of the matter is that Mumps does not have the exact same semantics as Python and vice-versa.

One example is that extracting the -1 character of a string is meaningless in Mumps, whereas in Python it means extract the last character of a string.

Another example is the equivalence of Python's print command to Mumps' WRITE command. print x,y,z, is almost equivalent to WRITE x,y,z except that print will add a space between each argument. If you don't want spaces between the arguments written out, then you should join the strings together. For strings all you have to do is x+y+z to get a joined string. However, in Python, you can't join strings with numbers; you first have to convert the number to a string, either using str() or the modulo operator to produce a formatted string.

I see essentially two approaches that can be taken  to address this problem:
1. Translate Mumps expressions into the most equivalent Python statement, realizing that this naive translation *will* introduce bugs into all but the most trivial of programs. 2. Instead of translating directly to Python, translate to a compatibility library with classes and functions which implement the same semantics as Mumps.

I think that Mumps2Py has to implement both approaches.
I think that the naive approach needs to be the dominant one because the goal of the translation is to use it as a starting point for change (adding functionality, restructuring functionality for maintainability, optimizing performance), and the task will be that much harder if the maintainer has to work around compatibility layer crud. At the same time, a behavior-faithful translation to compare against should be helpful when fixing up a naive translation.

That's what I think at this point anyway.

Cheers,
-Patrick

---


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/