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.