4 ms·
You keep repeating the line that D is far more interoperable than Nim. Did you miss my reply below? Or did you simply not believe me and downvote it? Once agai
by dom96 8y ago
You keep repeating the line that D is far more interoperable than Nim. Did you miss my reply below? Or did you simply not believe me and downvote it?
Once again. Nim is superior to D in terms of interoperability with C, C++, and Objective C because Nim can compile to either of those languages. For C++ interoperability this is a huge benefit.
I'd love to hear why you disagree if you do disagree. Otherwise please give Nim a try and stop spreading this as a disadvantage of Nim.
- germandiago 8y ago> You keep repeating the line that D is far more interoperable than Nim. Did you miss my reply below? Or did you simply not believe me and downvote it? I did not downvote anyone unless it was an accident :) > Nim is superior to D in terms of interoperability with C, C++, and Objective C because Nim can compile to either of those languages. I did not try myself. Well, I did not try Nim to the level I tried D, starting bc I know C++ better than D, though I also know quite a bit of Python (my "second" language). I have a question, though, about interoperability: you can output Nim code to C++, and mix it. Fair point. But that would be useful to integrate my Nim code into C++ (C++ being the "driver" app). What about the other direction where I can consume C++ from Nim? I have no idea and I ask this question with the best of the intentions :) You thought very bad about me and the downvotes before.
- dom96 8y ago> I have a question, though, about interoperability: you can output Nim code to C++, and mix it. Fair point. But that would be useful to integrate my Nim code into C++ (C++ being the "driver" app). What about the other direction where I can consume C++ from Nim? I have no idea and I ask this question with the best of the intentions :) I was actually talking about it from that direction, i.e. using C++ libraries in Nim. You can wrap pretty much any C++ feature in Nim: destructors, namespaces, you name it. Because Nim compiles to C++ it can interface with it incredibly well. Happy to answer any more questions in case I'm not clear. > You thought very bad about me and the downvotes before. Apologies. I just saw you reiterating the line I challenged without replying to me and was wondering what happened. Was just asking, not blaming :)
- germandiago 8y agoYes, I am genuinely interested. So I am going to ask a bit more. I am open to new and better tools :) > I was actually talking about it from that direction, i.e. using C++ libraries in Nim. You can wrap pretty much any C++ feature in Nim: destructors, namespaces, you name it. Is there any documentation about how to wrap my C++ code into Nim? I do get I can generate C++ from Nim, but I am not sure how it would look to use C++ from Nim. In D for me it is quite clear (with extern (C++) and there is a clear mapping for interfaces and other things. I do not need anything spectacularly fancy, just smooth. Y' know, I am a person who likes to finish things without getting too lost on the details. You also mentioned many people consider Nim "production-ready". My question here is, if I start to try it, how many breakages can I expect? 4-5, in the tens? Until version 1.0 I mean. And my last question: how does it compare to D if I have to: - use a well-mantained GUI library in at least one system (multiplatform would be a big plus) - how mature is the standard (and other libraries also if that is easy to add) library for: json handling, binary serialization, algorithmic code (a la range-v3 or ranges in D. Something along the lines of python iterators, functools, comprehensions and itertools also ok). - would I be able to use Nim in embedded if I do a port of some software? Namely, would I be able to remove the GC? One thing that worries me is that I am much more familiar with metaprogramming in C++ and D's metaprogramming is much closer than Nim's I guess. If you could refer me to good (as in up-to-date) Nim style I would highly appreciate it, specially in the areas of how to manage runtime polymorphism and metaprogramming with an eye on generative programming (basically I want to generate a bunch of things from 3 or 4 basic building blocks in arbitrary combinations). Thanks for your time! > Apologies. I just saw you reiterating the line I challenged without replying to me and was wondering what happened. Was just asking, not blaming :) No problem, I just did not mean to make anyone offended :)
- dom96 8y ago> Is there any documentation about how to wrap my C++ code into Nim? Here is some docs: https://nim-lang.org/docs/manual.html#implementation-specific-pragmas-importcpp-pragma https://nim-lang.org/docs/manual.html#implementation-specifi... > My question here is, if I start to try it, how many breakages can I expect? 4-5, in the tens? Until version 1.0 I mean. Depends which features you are using. The newer features (concepts for example) will likely have more breakages than the rest of the language. We already have a lot of code written in Nim and a book published (which we are committed to keep compatible with 1.0) so breakages should be minimal (unforeseen circumstances of course may happen). > how does it compare to D if I have to: > > - use a well-mantained GUI library in at least one system (multiplatform would be a big plus) I'm not sure about the status of GUI support for D. Nim has bindings to GTK/QML/libui and some other more experimental GUIs rendered using pure OpenGL (nimx). They are all cross-platform (although GTK on macOS is a PITA). > - how mature is the standard (and other libraries also if that is easy to add) library for: json handling, binary serialization, algorithmic code (a la range-v3 or ranges in D. Something along the lines of python iterators, functools, comprehensions and itertools also ok). JSON handling is very mature. I don't think we have binary serialisation in the stdlib. Algorithmic code - sequtils is what you're after I guess: http://nim-lang.org/docs/sequtils.html http://nim-lang.org/docs/sequtils.html > - would I be able to use Nim in embedded if I do a port of some software? Namely, would I be able to remove the GC? Sure, but you won't be able to use a lot of the stdlib. > One thing that worries me is that I am much more familiar with metaprogramming in C++ and D's metaprogramming I suppose Nim by Example is a good place to look, it has some good metaprogramming examples: https://nim-by-example.github.io/ https://nim-by-example.github.io/ Also my book has a chapter on metaprogramming :) https://book.picheta.me/ https://book.picheta.me/ Hope that answers your questions!