I finally have a reason to try out Julia. In this case: Testing some things related to digital signal processing.
A lot of documentation still refers to Julia 0.7 and similar versions. I was able to find out that fft, ifft, fftshift and the likes have been moved to the FFTW package.
What I have not been able to find, is where conv has been moved to. Where can the basic convolution operation be found?
a = rand(5);
b = rand(5);
conv(a,b)
ERROR: conv has been moved to the package DSP.jl.
Run `Pkg.add("DSP")` to install it, restart Julia,
and then run `using DSP` to load it.
Stacktrace:
[1] error(::String) at .\error.jl:33
[2] #conv#1(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Array{Float64,1}, ::Vararg{Array{Float64,1},N} where N) at .\deprecated.jl:150
[3] conv(::Array{Float64,1}, ::Vararg{Array{Float64,1},N} where N) at .\deprecated.jl:150
[4] top-level scope at none:0
As a beginner moving from MatLab to Julia, it seems very odd that I have to, alongside the stable version, install the old version 0.7, just to be able to find out how to find common functionality.
What would be the best place to ask for an improvement to Juliaâs docs and âcould not find functionâ REPL response?
The awkwardness of needing to keep 0.7 around is temporary: itâs a result of the large body of outdated documentation, forum posts, etc. that predate update to julia 1.0. That situation will naturally improve over time, as the probability of your favorite search engine finding the right julia 1.0 syntax increases.
Note that, even now, the answer to your original question is on the first page of Google results for âjulia convâ (at least for me), so things are already improving.
I do think itâs possible to make things more discoverable though. If some hero wanted to put together some kind of Julia search engine that periodically (nightly?) downloaded all the registered packages, indexed all their exported names and their docstrings (also from Base and stdlib), and made it searchable - that would be awesome.
Although this probably wouldnât have fully solved the issue of discovering conv, a more verbose name DigitalSignalProcessing.jl might have helped finding the package at least.
If only code examples and tutorials were annotated with the version of the language they were using. Unfortunately, this is frequently not the case. Take the RosettaCode page on the Fast Fourier Transformation(http://rosettacode.org/wiki/Fast_Fourier_transform#Julia), for example.
This would be great! Tools like this exist in other languages; most notably, Haskellâs Hoogle comes to mind.
But I already would be very happy if the âdeprecation changesâ that are part in 0.7 were mentioned somewhere in the documentation. Results like Search ¡ The Julia Language are not useful.
I am against the notion of having to rely on a general-purpose search engine to find something specific: Searching in a confined space is for obvious reasons preferable to searching the whole of the internet, and even better is not having to search at all.
I have seen this argument used in the past for instance to keep T_PAMAAYIM_NEUKODATYIM in PHP. Because âif a newcomer would not understand it, they should just searching for itâ.
Currently, there do not seem to be any ways to search for Julia library functions, let alone packages. pkg.julialang. org is a long list, which cannot even be filtered by package name.Yes, you can currently use find-in-page in your browser, but that will cease working once there are twice as many packages and the list will have to be paginated.
Maybe Julia has had a shift in target audience, but I came here first and foremost looking for a replacement to MatLab/Octave. I would argue that things like fft and conv are common functionality in math/scientific-oriented programming languages.
Anyhow, I donât want to derail this threadâs original topic.
Thank you for your responses! I will try to create at least an issue, and potentially a PR to add a âthis is where things have movedâ page to the documentation (although Iâll need help, because it seems like an enormous undertaking to parse through all of 0.7âs deprecation warnings).
Yes, that would be great, but for small snippets it is unlikely to happen. But this problem is not specific to Julia: languages and libraries move on, and looking at the date of a comment or blog post can be helpful in deciding whether one should look for changes.
I am not sure compiling another list is needed â we have a NEWS.md for 0.7, and in any case as others have suggested the best way to get the warnings is just run 0.7.
In Engineering fields, e.g., acronyms is a widely accepted convention, a junior electrical engineering student knows what DSP stands for before studying it. Imagine a ComputeUnifiedDeviceArchitectureNative.jl package vs. CUDAnative.jl, do you think the former is still better? If I wrote ODEs.jl, will scientists be unable to recognize what this is? These rules should be wisely followed, or we will end up with a new Java. I just hate it when programmers think of users as blind robots who can make every mistake in the book, brevity still matters. The exception of course would be the weird names that scientists and engineers wouldnât recognize. I mean, yes Julia is a general purpose language, but if one doesnât know what DSP means, then DSP.jl is not for them and they shouldnât care.
DSP.jl contains conv which I assume isnât just for engineers. Iâm a theoretical physicist and looked for fftfreq at some point to conveniently get the frequencies of a FFT.
Regarding ODEs, there is (verbose) DifferentialEquations.jl as a metapackage, which everyone would find.
Anyways, as there donât seem to be many complaints, I assume you are right and most people that use the package know what DSP stands for.
This uses the JavaScript search_index.js files that a number of Documenter sets have. I was just curious as to whether loading an SQLite database on a server on the other side of the world would be as quick as JavaScript in the browserâŚ
It would make a good GSoC project, perhaps, but needs server access and knowledge.