On Mon, Oct 21, 2013 at 1:40 AM, Sarvi Shanmugham <sarvil...@gmail.com>wrote:
> I get this. > But considering Javascript is JITed and highly optimized including > unrolling static loops and function calls if I understand right, > wouldn't the following > i=p.op_mul(i,2) > be faster than the current > i = (typeof ($mul1=i)==typeof ($mul2=2) && typeof $mul1=='number'? > $mul1*$mul2: > $p['op_mul']($mul1,$mul2)); > as long as op_mul() can handle numbers as well? > And much more readable too? > Unrolling requires work. If you have a lot of equations that means for every operator you will need the JS engine to unroll. There is no way "unrolling" something would be faster than var1*var2, especially not on the first pass. Also, with unrolling a function there is some book keeping required: what if $op.op_mul is changed to a different function at runtime (not that it would be) but the JS engine has to take that possibility into account. I'm not necessarily against what you are suggesting. I think in the grand scheme of things readability is more important. If you truly need something to be very performant than you can always just write that part in pure JS. > Yeah, thats sorta why I asked the question. Just a beginnner but this how > I understood java script objects and classes > and I thought this entire generated code segmented would have a been much > more readable as objects instead of dictionary objects. > There may have been a reason for doing it that way but I do not know. > And whats with the $ notation. From what I am reading this is just jQuery > convention and not required. > This has nothing to do with jQuery or conventions. $ allows you to have private implementation related variables. Since in Python you cannot have variables that start with $ that means we can prefix generated/implementation specific variables with a $ and never worry about clashing. Think of stuff like: a, b = (b, a) Above is not possible in JavaScript without a temporary variable. In pyjs this temporary variable would have a $ prefixed. I presume we do pyjamas because we love python and hence readable code. > Yet the generated Javascript seems less so, though from what I understand > there more readable alternatives. > So was just trying to understand what the thinking was. > I think a lot of attention wasn't paid to this because there are a lot of other more important things missing from pyjs that need attention. > Sarvi: > PS: Has this blog post been discussed on the list. Did any changes/action > items come out of it? > I don't remember if we discussed it or not but I can give you my take on a few of the bullet points: Browser Detection: He's right about the gwt/pyjamas stuff but this is irrelevant to pyjs core. As far as I know only one version of the compiled Python is generated. The Pyjamas/GWT library does have multiple versions per browser. Given that we plan to rip that out of pyjs core into it's own repository it will be for somebody else to deal with :-) Bloat and Boilerplate Hell: Without specifics this can't really be addressed. But my preference would be to rewrite pyjs from scratch with an eye on less boilerplate. I've started this to some degree and can send you what I have so far if you're interested. Debugging: Theoretically if it works in Python it should work in compiled JS too - if it doesn't, that's a bug in pyjs and not in your code. I've actually had very few issues with this (as long as I stayed within the limitation of pyjs). So I can't relate to Mr. Tsepkov on that point. Python is not Java, DOM is not a Desktop: We are taking the pyjamas/gwt stuff out of pyjs repository. This will encourage people to write their own frameworks/widget libraries for pyjs. JavaScript has its Strengths: Complaining mostly about the GWT stuff in pyjs. My impression from his article is that he relied too much on the widget library/gwt framework that comes with pyjs. I think pyjs can hit the sweet spot if you're willing to experiment with it and not relying too much on the gwt framework. You have access to the DOM and events in pyjs just as you do in JavaScript. In the article he implied that this was not the case. - lex -- --- You received this message because you are subscribed to the Google Groups "Pyjs.org Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to pyjs-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.