Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
ddragon
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
14 ms
·
61.
▲
by
ddragon
6y ago
It's mentioned in the video [1], it does static analysis of the code to create a graph of dependencies (for example which cell uses a variable defined by another cell), so when you update any cell it will find what cells are affected b
62.
▲
by
ddragon
6y ago
Even if you do it completely top down, it doesn't mean all cells need to update if you change something on the top, so you'll still profit from the dependency graph. And notebooks are mostly for exploration, and you don't rea
63.
▲
by
ddragon
6y ago
The grandparent meant that OCaml is static while Julia is dynamic, and both are strongly typed. >You can specify types, but they don't really do anything except help with performance. For Julia it's the exact opposite though, t
64.
▲
by
ddragon
6y ago
Plus high performance Julia code (at the 80% of C range, maybe not at the 100% range where micro-optimizations start to happen) isn't any less readable than low performance Julia code. A common misconception is that annotating every ty
65.
▲
by
ddragon
6y ago
That's true, but it's because Julia looks like Python/Fortran/Matlab on the surface but it's a really unique language that you can't really learn in one day or two. Write Julia like Python and it will be slow (
66.
▲
by
ddragon
6y ago
I'd say it's not a good choice if like your example, you want to integrate with a mature web framework, or something else that only Python has (though Julia FFI allows to call Python almost like you're writing python directly
67.
▲
by
ddragon
6y ago
It's easier and faster because it's a more powerful language. You can achieve fortran/C speeds without leaving the language (for example Tullio.jl and LoopVectorization.jl competing with super optimized BLAS methods). Multipl
68.
▲
by
ddragon
6y ago
It's kind of complicated to consider creating new programming languages as reinventing the wheel. Every new language will be created with a smaller ecosystem so someone will always have to rewrite X that some older language already has
69.
▲
by
ddragon
6y ago
Fair enough, it might be my own view on what I'd use Julia in a production environment clouding my interpretation of the scope of the text, especially as the author defines this as his area at the start and says how it's what Juli
70.
▲
by
ddragon
6y ago
The built-in array (which is multidimensional) is unnamed, but Julia was made in a way that anyone can create as a library their own types that are as high performance as the native ones (most of which are written in Julia) so you can just
71.
▲
by
ddragon
6y ago
I read this article not as a "Julia is ready to replace the all-purpose languages used in business", but as "Julia is ready to deploy it's scientific computing into production environments" (as opposed to just local
72.
▲
by
ddragon
6y ago
Being a dynamic language is not about start-up time, interpretation or compilation, but about types being a part of the value instead of the container (the variable definition). Julia is definitely dynamic. The warm-up period is definitely
73.
▲
by
ddragon
6y ago
In the Julia community they frequently call it Just Ahead-Of-Time the compiler strategy of making the inference of all downstream types and methods to dispatch and compiling all at once. And the period while purely running a static program
74.
▲
by
ddragon
6y ago
Even if Julia never ends up being the very best at anything particular, Python has shown that being "generally the second best language for everything" has even more value for most people. Leveraging 80% of the flexibility and com
75.
▲
by
ddragon
6y ago
Julia (and likely Dylan and CL which are all similar languages) are not nearly as dynamic as Python. Or more accurately, they are nearly as dynamic, but writing code like that is not idiomatic and it will lead to performance similar to Pyth
76.
▲
by
ddragon
6y ago
It's hard to say limited benefit when the entire Julia ecosystem evolved to so heavily rely on it, to allow for each package to work on it's own level of abstraction: For example, the Julia's standard library implements all o
77.
▲
by
ddragon
7y ago
I used the more common definition (strong vs weak being orthogonal to static vs dynamic). Both Julia and Python are strong and dynamic (and duck typed). https://en.wikipedia.org/wiki/Strong_and_weak_typing
78.
▲
by
ddragon
7y ago
It happens at compile time in Julia (required for the multiple dispatch to work), the compile time is just interlocked between runtime steps. Calling something with incorrect arguments will fail even if the function is never called during r
79.
▲
by
ddragon
7y ago
Not sure what you mean by that example. If "f" accepts a float and you give a float it will work. If "f" accepts a number (or t subclass number) it will work since float subclass number. If "f" only accepts int
80.
▲
by
ddragon
7y ago
Julia is also "compiled" down to it's (untyped) IR before even starting (when all macros are expanded), but since it's a dynamic language like Python, it can't know types at compile-time, so this step can only know
81.
▲
by
ddragon
7y ago
You can also use @code_native to look at the assembly code of any function, @code_lowered/@code_typed to see the Julia IR (which you can also modify before fully compiling, which is how source-to-source differentiation with Zygote work
82.
▲
by
ddragon
7y ago
It's not really the same. Non-standard string literals in Julia are an adaptation of Common Lisp reader macros (which is much older than LINQ), which is a type of macro that allows to fully ignore the parser of the language for parts o
83.
▲
by
ddragon
7y ago
Technically, RNNs, including LSTMs, are already turing complete, neural turing machines mostly decoupled memory from the hidden layers so it can grow the memory size without a square increase on the number of parameters, which helps with th
84.
▲
by
ddragon
7y ago
Julia is compiled unlike Python though (at least by default), the moment you call Zygote it will have to run through the entire program you want to differentiate and fail immediately if any type does not match (without the need of any type
85.
▲
by
ddragon
7y ago
More than AST manipulation (which is probably not a key element in Zygote), the most important aspect is Julia's multi-stage JIT compilation (which is actually an aggressive mixture of JIT and AoT). A Julia program has access to it
86.
▲
by
ddragon
7y ago
There was a post last year [1] pondering about the tiobe methodology of "x programming" in the context of Julia, since the most common way to search for it is "julia language" instead. Adding that option makes both Julia
87.
▲
by
ddragon
7y ago
Julia is definitely trickier to control because it's an extremely powerful language. After all you can write even programs that can rewrite itself in it (like Cassette/Zygote, which is more than simply AST manipulation but full IR
88.
▲
by
ddragon
7y ago
I wonder if the issue here is the graduate students part more than the Julia part (although obviously the tooling needs work). Maintainability is an art that comes with experience (or proper guidance), and I had to deal in college with a to
89.
▲
by
ddragon
7y ago
I mean, I can't really guess the future, but I kind of feel it's not a simple case of "if you build they'll come" here. Python has a dominance over ML (and over the academy in general) that is beyond any current lan
90.
▲
by
ddragon
7y ago
You mean the future of Julia or the future of Flux? While an amazing accomplishment (that is still on the way of becoming truly mature, just like s4tf), Flux is just one of Julia's current ML libraries, and it definitely doesn't f
More ›