On Fri, Feb 25, 2011 at 9:28 AM, Barend Gehrels <span dir="ltr">&lt;<a href="mailto:barend@xs4all.nl">barend@xs4all.nl</a>&gt;</span> wrote:<div>[SNIP]</div><div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


I don&#39;t understand this:<br>
- if the API/ABI changes, then you might have (sometimes) the same problem with Python (don&#39;t know sip).<br></blockquote><div><br></div><div>Not exactly.  Python code is interpreted, not compiled. As long as the plugin code remains valid Python-- moving from Python 2.x to 3.x is an example of where this may break--and the QGIS Python API remains unchanged, then the Python interpreter built into QGIS will be able to execute it.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
- faster to implement but C++, in general, runs faster. If I&#39;ve write labelling or routing plugin -&gt; I would prefer C++<br></blockquote><div><br></div><div>True.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">


- some people knew C++ better, some Python, some both, if there are two options, would one be deprecated?<br></blockquote><div><br></div><div>Nope. Python is great for rapid development, flexibility and an enormously capable standard library.  As you noted above, C++ is great when you absolutely need something to execute as fast as possible. Reason enough to keep both options.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
- why easier to distribute?<br></blockquote><div><br></div><div>Python code is interpreted so one does not have to compile and test a separate binary distribution for every platform QGIS runs on. That cuts the distribution workload by several orders of magnitude.</div>

<div><br></div><div><br></div><div>Of course, if you start mixing Python *Extensions* (which contain compiled C/C++ code), into your Plugin module, then it is a whole different ballgame.</div><div> </div><div><br></div><div>

-Charlie</div></div></div>