8 ms·
Solid post. It also shows how powerful Julia is: allowing to operate at different levels of abstractions (down to seeing the assembly) using the same set of too
by havercosine 3y ago
Solid post. It also shows how powerful Julia is: allowing to operate at different levels of abstractions (down to seeing the assembly) using the same set of tools.
- detourdog 3y agoThe site simply told me I was using the wrong browser. How great of an environment can it be if it can render webpages for everyone.
- thetwentyone 3y agoYour comment must be more about the environment of the web browser you are using? The site is a staticly published version of a Pluto notebook, which uses modern web features to enable interactivity, reactivity, code syntax highlighting, etc. etc. Tradeoffs to enable those features but requires enabling your browser features. The underlying file that the notebook is based on is just a basic `.jl` file, so you could happily run the notebook from a Julia instance instead of the browser-based notebook environment. Julia itself will be happy to run however you'd like it to of course.
- detourdog 3y agoI'm sure that is true but I'm just expressing my experience knowing nothing about Julia or Pluto. I thought I was visiting a website.
- sundarurfriend 3y agoDo you mind mentioning what browser it is? It works fine on Firefox, and I presume Chromium-based browsers too (since this article has gone through a few rounds and I haven't heard anyone else complain, though some of that was before it became this "notebook" version and was a static page instead). Is it one of those instances where you have Javascript disabled and the page assumes your browser is just not capable of JS instead of telling you to turn it on?
- detourdog 3y agoI was on ancient version of safari. I use for browsing. I completely understand why it wouldn’t work. I just feel that information published on the web should degrade to a useful state for consumption. The HN description actually referred to nicely layered technical abstractions. Which is why I had clicked the link. The description of Julia as being Lisp like. Thank you for taking an interest. I sill go see if a newer safaru works.
- th0ma5 3y agoI feel the biggest misleading statements around Julia is that for true speed you can somehow ignore the lower abstractions, or that there is some kind of free lunch, but always what you gain in performance you'll spend in development time. Julia has some neat tricks, but they are not generally and universally applicable at least not like other languages. I dunno. These arguments against Julia are many, but I'm still appalled they have so many handy wavy misleading statements in just their introductory text, I don't think it be less than a decade before they recover.
- jarvist 3y agoMy experience is a first implementation / novice programmer will write Julia code of a similar speed to python. But then an intermediate Julia programmer can adapt that same code to be of order C / Fortran performance, without stopping the novice programmer from being able to work on the code base. So it's this ability to iteratively improve and collaborate across very different skill sets that's really important. This is quite a different situation to traditional scientific computing.
- reachtarunhere 3y ago> My experience is a first implementation / novice programmer will write Julia code of a similar speed to python. No because of JIT compilation he would write code faster than Python by default. Now to truly rival optimized C++ code one has to do the tricks mentioned in this post like optimizing memory access, SIMD and maximizing instruction parallelism. The key point is you are better off by default and can do some ugly stuff in the critical parts of the code while still using the same language.
- eigenspace 3y agoIt really depends on what you end up doing. A lot of "python" code is really just thin wrappers around fairly optimized C routines (although there's inefficiencies from the wrapper, and the optimization barriers), so if you're doing something where the bulk of the work is happening inside those routines, beginner-written julia code will end up being roughly comparable to expert-written numpy code or whatever. But yeah if you're writing a loop or something else where the majority of work is actually being done by python itself, then it's going to typically be much much slower than the equivalent julia code.
- pjmlp 3y agoThis was the premise of Lisp Machines, unfortunely the industry took another path.
- dartos 3y agoWas it? I thought even in the lisp machine days, lisp was kind of garbage collected, so that was always the bottleneck. I remember a quote that was like “Lisp programmers know the value of everything and the cost of nothing” in reference to that.
- lispm 3y ago> “Lisp programmers know the value of everything and the cost of nothing” Obviously the developers of Lisp Machine operating systems could not ignore the cost of the operations. Especially since they developed ambitious software (an operating system and its application) on relatively slow machines (a Symbolics 3600 was as fast as a 1 MIPS DEC VAX 11/780).
- pjmlp 3y agoYes, and? GC was a kernel service, and there were low level primitives, including Assembly level Lisp forms. Parenthesis all the way down to microcode.
- lebuffon 3y agoDitto for Forth.
- mathisfun123 3y agoI don't see affordances for operating at multiple levels of abstraction. The single example of another level is ccall to an LLVM instrinsic - that's not any different from inline assembly in basically any other compiled language. Supporting multiple levels would mean you can do all (or most) the same things with LLVM IR that you can do with Julia itself.