On Tue, Jul 9, 2013 at 7:30 PM, Marcel Laverdet <mar...@laverdet.com> 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 nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
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 nodejs+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to