Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
ddragon
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
28 ms
·
151.
▲
by
ddragon
7y ago
The interop is a great stopgap (like Julia with Python and R), but they don't replace a native ecosystem. A Lisp flavored Julia would have native access to the libraries, it could define new types, new function implementations, new alg
152.
▲
by
ddragon
7y ago
Each language will have different design priorities. For example auto-currying is great but it wouldn't make sense in a multiple dispatch language since you have to evaluate every argument to dispatch (which makes n-arity functions nec
153.
▲
by
ddragon
7y ago
That was the strength of Lisp as the original 'AI' language, but the following AI summer were always more numerical oriented (neural networks, bayesian inference, SVM, neural networks part 2), so that particular strength was not v
154.
▲
by
ddragon
7y ago
Considering how close Julia is to Lisp, it could be interesting to have an actual Lisp targeting the Julia compiler, for people who don't want to compromise on s-expr but would still want to have a performance oriented Lisp with access
155.
▲
by
ddragon
7y ago
There are many approaches they could go, they could improve the live session approach (for example saving between sessions), which could also help people who repeatedly run scripts on the bash (for example with a --save-session flag). It wo
156.
▲
by
ddragon
7y ago
That's mostly because Julia doesn't have yet an interpreter (outside of the debugger), only a JIT compiler. Thankfully the "time to first plot" is the new priority for the compiler team since the multithreading is alread
157.
▲
by
ddragon
7y ago
In the presentation posted here there was a paper citation that compared in terms of cache the model used (parallel depth first scheduling) over work stealing, but I didn't have time to read it yet. https://www.cs.cmu.edu&#x
158.
▲
by
ddragon
7y ago
You can use the search tools to find libraries for the categories you're interested at: https://juliaobserver.com/packages https://pkg.julialang.org/docs/ As a personal answer, I really like unitf
159.
▲
by
ddragon
7y ago
At least in Julia, which is a Lisp-inspired language without s-expressions, what you have is a dual representation for all code [1] in which you can manipulate either directly on the normal infix notation with quote and unquote, which is go
160.
▲
by
ddragon
7y ago
I prefer vanilla Julia since it has all the packages at the latest released versions and it's the most used so it's easier to get help. CUDANative.jl documentation doesn't mention being mac/linux only (the only mention w
161.
▲
by
ddragon
7y ago
Julia isn't that much positioned as an AI language, it's more of a numerical analysis and scientific computing language at this point competing with matlab, which is something that doesn't go through hype cycles. The fact tha
162.
▲
by
ddragon
7y ago
Those are based on overloading functions to add the new behaviors (computing the forward diff or building the graph within a special variable for the reverse mode) which in Julia is implemented for example in [1], [2], [3] and [4], while th
163.
▲
by
ddragon
7y ago
Yes https://github.com/FluxML/Zygote.jl "Without compromising on performance, Zygote supports the full flexibility and dynamism of the Julia language, including control flow, recursion, closures, structs, dictiona
164.
▲
by
ddragon
7y ago
Autograd (and most of the current approaches) work by having a special object for the data and overloaded methods that instead of immediately executing an operation they instead store it in a graph of transformations. Then when you need the
165.
▲
by
ddragon
7y ago
In this case it might be the exact opposite. Regardless of the structure (as long as it has at least one hidden layer and enough parameters), neural networks are universal approximators, which is why they are effectively black boxes that ca
166.
▲
by
ddragon
7y ago
Actually, type annotations in Julia do not improve performance (and in some pathological cases can even reduce performance). The Julia JIT compiler will always infer the type at compile-time regardless of annotation and will (almost) always
167.
▲
by
ddragon
7y ago
It's not Julia's dynamic typing, but Julia's multimethod approach. For each function you don't have one set of arguments that must be generic enough to cover all cases (for example f(number, number)), but you have one vi
168.
▲
by
ddragon
7y ago
Why? When I see the '.' I immediately know it's a broadcasted function (for example * for matrix multiplication vs *. hadamard product), and I get the vectorized version of any function I write for free with no extra boilerpl
169.
▲
by
ddragon
7y ago
Yes, and in both cases the language should provide tools so you don't have to deal directly with those edge cases. For example in Julia, for modular arithmetic with 1-based indexing there is mod1 [1], and for iterating in Julia you sho
170.
▲
by
ddragon
7y ago
>since I'm relying on fast editing/execution cycles While you can't do it from the shell very well right now (rerunning the program at each step like you would with an interpreted language), that kind of fast cycle is some
171.
▲
by
ddragon
7y ago
While the aggressive JIT it's a core part of the current approach, it's still an implementation detail and not a property of the language design itself, and other compilation strategies are being developed, such as interpretation&
172.
▲
by
ddragon
7y ago
You're probably right, I didn't really go deep in with the macros, mostly just injecting code with 'quote' to remove occasional boilerplate. The point was more about the ability to easily manipulate the code within the c
173.
▲
by
ddragon
7y ago
I meant that macros being a little harder to use and the result being a little more restricted is the feature, a small protection against the Lisp Curse (if every custom language is just as good as the base language, then no one can agree w
174.
▲
by
ddragon
7y ago
The idea of the m-expressions might be coming back though, two of the popular newcomers are homoiconic languages (depending on your definition), Elixir as a functional programming language and Julia as an imperative CLOS inspired language.
175.
▲
by
ddragon
7y ago
Yes, I was thinking about that case. While Ruby was comparatively still a modern language at that point, Rails used the metaprogramming of the language to effectively create a new unique language on top of it with it's opinionated desi
176.
▲
by
ddragon
7y ago
Are there examples of languages that were not popular for a long while before suddenly going mainstream (the definition of success from the article)? I feel like even a potential killer app is not enough, there were some interesting web fra
177.
▲
by
ddragon
7y ago
I wasn't trying to argue that this was the only or even the best way of doing it, just why it's advantageous that you separate runtime and compile time functions, especially in languages with eager evaluation. The advantage of mac
178.
▲
by
ddragon
7y ago
Not existing at runtime seems more like a performance consideration. The macro could very well had just deferred evaluation of it's arguments, so you could manipulate the AST during runtime and return the code for immediate eval, and i
179.
▲
by
ddragon
7y ago
Julia "default" behavior (the 'using' keyword) is also importing everything (that is exported on the selected module) to the global namespace, using multiple dispatch to safely assign the optimal implementation of each f
180.
▲
by
ddragon
7y ago
Julia (a language focused on science/math) does it partially. For example in the editor or REPL you can just type \sqrt [tab] \alpha [tab] and it will generate √α which is valid code. Most math symbols in unicode are supported and over
More ›