C++ also becomes pretty awkward when trying to interact with the API of a VM 
that expects to do things in a very specific way. You can't really use the 
inheritance mechanics on V8 types without making things even more awkward, so 
the class-based advantage of C++ deteriorates rather quickly. I feel like the 
design of the C API is much more explicit and descriptive of what it is doing 
at each step.

On Wednesday, 10 July, 2013 at 10:53 AM, Tim Caswell wrote:

> 
> 
> 
> On Tue, Jul 9, 2013 at 7:30 PM, Marcel Laverdet <[email protected] 
> (mailto:[email protected])> wrote:
> > But if you're unfamiliar with C/C++ then "myType *pointer = 
> > js_get_pointer(C, myObject);" is no more familiar than "Local<Value> 
> > my_value = arguments[2]->This();" or whatever. You don't necessarily have 
> > to understand what's happening with the <>'s and ->'s to get utility from 
> > them. 
> 
> It's not that a C or C++ is impossible to learn, it's that a C is a *much* 
> simpler language to learn.  There is one and only one pointer type, there are 
> no templates, no references, no magic destructors, no classes, no virtual 
> functions, etc.  It's all very direct and plain. 
> 
> If you're going to write a binary addon for node and haven't yet learned C or 
> C++, it's going to be a much shorter learning curve to learn just C than 
> learn C++.
> 
> Yes these features in C++ are there for a reason and can make for prettier 
> APIs *once* you're comfortable with C++.  My argument is that many people 
> aren't comfortable with C++.  I know a little and have written a node addon 
> or two using V8's API, but I'm not comfortable with the language.  With 
> luvit, on the other hand, I only have to use C to write bindings and I'm much 
> more productive and happy, even though the APIs are sometimes more verbose. 
> 
>  
> > 
> > Specifically C++ brings the possibility of much better memory management. 
> > If you do "Local<Value> my_thing" C++ can determine automatically when 
> > you're done with it and throw it away. With C you have to specifically say 
> > you're done, and if you don't say you're done then there's a silent leak. 
> > Basically I feel that in C it's much easier to do something very wrong and 
> > not know it. In C++ many times if you do something wrong it just won't 
> > compile, which is more frustrating right now but way less frustrating when 
> > your code hits production. 
> 
> Don't forget that the shim layer between bindings and V8 can handle this for 
> you.  Nowhere in my API do you have to manually say you're done with a 
> javascript object.  There are hooks the other direction so that the engine 
> can tell you when it's done with an object in case you've embedded some 
> memory you manage in it, but that's simple logic. 
> 
> My goal is to expose a very JS-like semantic to bindings authors since they 
> are interfacing with JS.
>  
> -Tim Caswell
> 
> 
> 
> 
> -- 
> -- 
> Job Board: http://jobs.nodejs.org/
> Posting guidelines: 
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> You received this message because you are subscribed to the Google
> Groups "nodejs" group.
> To post to this group, send email to [email protected] 
> (mailto:[email protected])
> To unsubscribe from this group, send email to
> [email protected] 
> (mailto:[email protected])
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en
>  
> --- 
> You received this message because you are subscribed to the Google Groups 
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> (mailto:[email protected]).
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to