On Mon, 10 Feb 2014 22:20:38 -0500 Stefan Karpinski <[email protected]> wrote:
> We were never directly influenced by Dylan. As far as I know, neither > Jeff nor Viral nor I have done any Dylan programming. This is really interesting info. > Any linguistic similarities are due to common influences (e.g. Lisp, > Pascal, Algol), convergent design, or coincidence. I did (Turbo) Pascal many years ago, but was, unfortunately, never exposed to Lisp (in the last moment the course moved to Prolog instead.) > As the wikipedia page details, Dylan doesn't have parametric types, > which means, among other things, that you can't have a generic array > type that allows arrays that can only contains values of a particular > element type. Hmm, righ. That's cool features and brings nice type-safety to the whole application. > In particular, that > means that you can't store such an array in C/Fortran-compatible > form, which is a non-starter for numerical work since that's the > layout that all the numerical libraries expect. I'm not 100% clear I got this one, maybe due to not being familiar with numerical libs. > The fact that Julia is jitted is technically an implementation detail > – there's nothing that prevents Dylan and other languages from doing > the same thing (JavaScript and Lua both have excellent, fast > production-quality jit implementations that were built long after the > languages were created). That said, Julia's implementation has been > jitted from the start, so its design is particularly amenable to jit > compilation and efficient execution in general. Do you find that native executables (like the one provided by Dylan) are not (much) superior peformance-wise due to it? (I know that Lua has great jit, but never played with it.) > I also personally find Dylan's syntax to be unfortunately verbose, and > feel that some of the object-oriented aspects of the language are > overly "featurey". It's kind of a shame, imo, that Dylan didn't stick > with its original S-expression syntax and adopt less of the > object-oriented thinking of the time. I must say that I like Julia's clean syntax and, in general, like FP approach more than OOP. > The distinguishing factor between Julia and Python + Cython isn't > performance (the difference in that thread was, in fact, due to > 32-bit vs. 64-bit arithmetic). Rather, it's the fact that Cython is > thinly veiled C programming that just happens to be embedded in > Python with some clever glue. Some people seem to love Cython, but > there are many others who would rather just write their performance > critical code in C using CPython's internal APIs. Cython is *not* > Python code that runs fast. This isn't just a nitpick: whereas Python > code is highly polymorphic, Cython code is inherently monomorphic > just like C. You can write Cython code that is fast or Python code > that is generic, but you can't have both. In Julia, on the other > hand, it is perfectly standard to write very generic, abstract code > that runs fast. Yeah, that's right. Mixing those 2 languages is bad marriage - abstraxction leaks. > Even really basic things like adding an Int and Float64 are handled > via an incredibly abstract promotion mechanism. I saw one of those MIT videos - nice ModInt example. Cool stuff. ;) > In general, it's unclear to me exactly what you're looking for. If you > want to build a portable GUI app and numerical work and performance > isn't really a big concern, Python seems like a sensible, mature > choice. If you only need a bit of performance here and there, you may > be able to do what you need with Cython, CPython's C API, and NumPy. I'm not sure whether my app is falling into the category of 'technical computing', altough I believe it does. We're interested to build Vedic astrology program (something like http://saravali.de/screenshots.html) for which we need to call 3rd party C library (http://www.astro.com/swisseph/swephinfo_e.htm?lang=e) which calculates planetary ephemeris (based on NASA's JPL data). On top of that, we need to write custom libraries (preferrably in native (e.g. Julia) language) and then the GUI part of the app consists of accepting user's input data, perform different calculations and render result on the screen. There is some animation involved (for simulations), then some calculus (finding extremes of functions etc.). All that should be ready to operate with lot of data from the database (plan is to use sqlite3) so that app can be, besides calculation, used for research purposes as well. Considering that some similar apps which started in Python were abandoned to speed reasons (some moved to C++) and that I prefer spending my time with some pleasant higher-level language instead of fiddling with pointers' bugs, I tend to feel Julia might be great candidate since, afaict, offers less steep learning curve (in comparison with e.g. OCaml/Haskell) to program desired functionality with decent performance or as you put on your slide: power = performance / effort > Julia's GUI libraries are nowhere near as mature, so if you > choose Julia, you're going to be doing some bushwhacking and building > things yourself. I'm aware of it and that's why I asked about Qt bindings in devel list. Otoh, do you believe Julia will become attractive to build GUI apps, iow. to become first class general purpose prog. lang.? > On the other hand, Julia's community is very active and responsive and > the language itself is *very* productive, so it may be easy enough > build out the things that you need. That's very strong point - I see that Julia is building momentum, community is much bigger than Dylan's, active development, etc. Well, yesterday I built Julia on my Free/PC-BSD-10.0, but it was complaining (gmake[2]: /usr/home/gour/repos/external/julia/contrib/relative_path.sh: Command not found) 'cause I use fish shell and there is no /bin/bash on my OS, but I'll try to play with it more and see how it goes. Thanks a lot for very elaborate reply and for being part of the team designing very human language to help those who are not pro-coders to have very valuable tool to accomplish their goals. It's very noble achievement! > s/incredibly/highly/g – I got a little overly enthusiastic with my > adjectives. No problem, it's appreciated here. ;) Sincerely, Gour -- Even if you are considered to be the most sinful of all sinners, when you are situated in the boat of transcendental knowledge you will be able to cross over the ocean of miseries. http://www.atmarama.net | Hlapicina (Croatia) | GPG: 52B5C810
