There’s also a video on this project in the offical Julia youtube channel, and I lrearn from it, that the project is done in pure Julia except for at least one C (communications) library (and no C++ library), i.e. all the “robotics” in Julia. From memory, they could have replaced it too, it just happened to be available. Julia’s standard math library is in part in C (C’s libm), and part of that was rewritten for up to 30% speed increase.
Note despite Julia having garbage collection (GC), it was still the ideal language, as you could avoid it. In some cases, e.g. the Linux kernel or other software already written in C (or C++), you may not want to extend with a different language, even if you could (e.g. with Zig language, or Rust). I’m not saying you couldn’t with Julia, extend or replace other projects (e.g. written in C or C++, because you can), at least it’s possible if you have C (or C++) code, to reuse from Julia using the ccall keyword, and that code, as it’s already compiled would be “hidden”, be obscure to read as it’s only in binary machine code.
If that’s your goal, then you may not need for all of the code used in your project to be “hidden”.
@Tamas_Papp OK, I’ll try to be less abstract. I’ve just opened another topic about a chess game. I decided to create another topic for the question because it does not fully belong to this one.
I have experience with Python for Data Analysis and I understand that Julia can be a full substitute for Python but I have no experience with creating programs so I ask questions above.
To be less abstract, I can try to clarify what I want to know. For example, Python is slow, so it can’t be used for big computation (if we don’t include Python libraries that are written in C++, etc). Also, Python cannot be used to create programs like games with an interface as I know (correct me, if no). Also one can’t use python to create software with closed code. And C++ has some problems such as difficulties with dependencies, difficult code, etc. They are all limits. I want to know Julia’s limits.
Also, I’m sorry that I’m asking almost the same questions several times. It certainly looks dumb, but I don’t receive enough information (although thank you all, now I understand more), so I try to rephrase questions to get the answers. @Palli Yes, I know that Julia is good for robotics. It’s the main reason why I’m here.
It’s certainly possible to create a chess game in Python, like here. It’s possible to in most languages, although of course you can’t do it without using libraries that use C/C++ to interface with graphics hardware. In general though, creating a graphical application like this is not a very simple task, and in Julia it will be more difficult because there are not many libraries to do it yet.
I am not sure about this, if you can use Numpy/Scipy. The problem with Python in practice is not that it is hard to make it run fast, but that it is hard to make it fast and generic.
Note that developing games (or anything with an interactive UI) is not Julia’s comparative advantage at the moment. I know little about Python packages, but I would hazard that they are more mature for this purpose.
There are very few inherent limitations, but doing some things may require a lot of work on your part.
It is inherently difficult to ask the right questions without putting some work in first. As I suggested above, you can’t just make an a priori comparison for languages, ticking off some list. You can of course keep asking similar questions here, but this strategy runs into diminishing returns quickly.
I’m not an expert in type systems, but a colleague of mine recently introduced me to dependent types and having the compiler prove useful properties about ones code using them (such as proving the correctness of e.g. leftpad). I’m not sure to what extent this is possible or not possible in Julia, but this may be one of the limits OP was thinking of (albeit dependent type systems don’t seem that easy to use in practice for user facing applications).
@rohqhq I guess the “right” question from our point of view would be “what sort of limit are you looking for?”, since there’s no real hard limit of possible vs. impossible from my point of view, only a spectrum from “piece of cake” to “requires an impractical investment of time”.
Pretty much anything is possible with julia. The only reason anything becomes easy to do in any language is because some person put in a lot of hard work towards making that feature run well and also be accessible. In Julia, many things are easy to do because there is a devoted group of developers who spend their time making their dreams come true in their favorite programming language. The point is, they pick a problem they want to solve and create and abstract environment to facilitate the solution and make it easy to share. So if you are picking a programming language to contribute with, make the choice based on the problem to solve. The best way is to just try out writing some programs to see if the language helps solve your problem.