When writing an application on a typical IDE using an OOP language one does not have to remember all functions that can be used on specific objects. The IDE provides support for that and so when the developer types a dot (usually) next to a variable a popup window appears which displays all the available functions and (on a well documented code) one can then see more details about what each function does and what arguments it requires. Of course, one can use some kind of online HTML documentation for that purpose e.g. when using Qt the online documentation for each class and the available API is excellent and easy to locate.
In Julia there can be a hundred different functions which can operate on a particular object and a hundred different versions of each one of these functions coming from anywhere e.g. the system, several versions from external packages, local versions etc.
So, my question is this: given a regular person with limited capacity to remember and limited time to read the complete documentation of everything, how can one find out the function he needs to use in order to perform some operation? Is there support for this in some Julia IDE?
For example, I may have some kind of variable of some type and I want to do an operation that computes a gradient in space and I know that there is some function available to do that but I don’t know its name and arguments I have to use. Suppose also that there are different gradient computation algorithms available from different packages/modules I am using and therefore I want to know what is available and how to use it. Other than reading the documentation of everything or looking at a long list of functions that use this type (or super types) as an argument to do all sorts of things, is there a simple and efficient way to find what I need?