On Friday, December 5, 2014 8:54:26 AM UTC, Tamas Papp wrote:
>
> I find your aversion to femtolisp difficult to understand, probably 
> because I tend to think of Julia as a Lisp with the following key 
> features: 
>

I don't really have an aversion to femtolisp. I understand it's an awesome 
implementation of Scheme.

If you "think of Julia as a Lisp" (including Scheme, right?) then when 
would you prefer Lisp (or Scheme) for new things after Julia came along?

I "learned" Scheme (and ML) in the "programming language Uni course", never 
to use them (or other functional languages) again. That is, I put in quotes 
as we didn't go into macros if I recall, it may have been mentioned as a 
concept.

But given these two (very important) differences
>

Why "very important"? I understand there is a difference in the syntax, is 
it important as in better *fro something*? Or just different.


> Modern CL implementations can be very fast, but it turns out that the 
> type system of CL is not rich enough to allow optimizations necessary 
> for generic numerical code (at least without a lot of biolerplate).
>

What I thought. What I'm getting at, if Julia is better at somethings (e.g. 
the above) must it then be worse for other things?
 

>
> but infix 
> clearly makes macros easier because the AST is much cleaner.


This is the thing I do not get, is non-infix then a problem in Julia? Will 
(user) code get bigger more complicated?

The core of Julia is generic enough to be a potential substitute for all 
> dynamic languages in the long run, as the language matures.


Not already? Then some dynamic language should currently be better, I would 
like to know why.
 

> I am not so 
> sure that current technology allows a single language to be good at 
> everything, languages like C seem to be difficult to replace with 
> dynamic languages in some situations.
>

Why? For C, Julia seems already better for almost all users. If "languages 
like C" means C++, I could see all new code in Julia and C++ as legacy. 
What other "like C" do you mean?

>
> Best, 
>
> Tamas 
>
> On Thu, Dec 04 2014, Páll Haraldsson <pall.ha...@gmail.com <javascript:>> 
> wrote: 
>
> > Hi, 
> > 
> > This is my first post here and since I've gotten your attention, my 
> answer: 
> > Julia is (or seems to be) good at "everything".[*] But I'm just not 
> sure.. 
> > [You could stop reading here.] 
> > 
> > I think Julia could be the last language people need to learn (and 
> should 
> > be the first).[*] Maybe I'm being incredibly naive thinking no *better* 
> > language will come along and I need to qualify that[*] but it seems 
> people 
> > here, when saying the Wired article has it wrong (e.g. Bezanson), are 
> being 
> > modest (or know better than I do). Maybe I just do not have enough 
> > perspective on languages/paradigms out there. I'm probably ignorant on 
> > (new) language/paradigm research.. 
> > 
> > Is Julia ready for prime time (0.3.3 considered stable)? I see some talk 
> of 
> > breaking changes ("Array nirvana" and "staged functions" (for C++) will 
> > they break anything?). I already recommend Julia for technical computing 
> > (quant/financial) at least (to learn/try); there may be issues 
> (especially 
> > for those doing non-technical) - for now. That seems to be changing 
> fast. 
> > 
> > I would be preaching to the choir saying Julia is great for its target 
> > audience. But why do you just want to unify all of technical computing 
> in 
> > one language and not all of computing? "A fresh approach to technical 
> > computing" might stop other people from considering Julia. I guess it's 
> > good to have a niche but I hope other people do not get scared away. 
> > 
> > What is needed is to support all the important platforms so that people 
> > will not overlook Julia as "it doesn't support my work or run on my 
> > platform". This means the web (JavaScript as an "assembly language" 
> > target), Android (and iOS..). 
> > 
> > 
> > At least Bezanson seems to like (love?) Scheme ("femtolisp"). I wander 
> if 
> > Scheme/Lisp (or any language) is *clearly* better than Julia for 
> anything? 
> > Or would he stop using Scheme except to maintain Julia's core.. [Maybe 
> > femtolisp should be removed from Julia (e.g. to bootstrap Julia)..] 
> > 
> > While functional style is getting more popular, people seem to like 
> > imperative and Julia isn't either or. Can/should !-functions be 
> enforced? 
> > It is only a recommendation? 
> > 
> > I know Lisp-syntax is "simple". Maybe non-infix notation is "better" in 
> a 
> > language but only for the interpreter it seems; or in regular math, had 
> it 
> > been used first/what people are used to. I and most people just don't 
> see 
> > it. I wander if there is anything to this other than preference. The 
> > S-expressions that come with Lisp and infix, do they have an inherent 
> > advantage that Julia can't match? In other words, I think that means, 
> are 
> > Julia's "Lisp-like" macros and its homoiconicity as powerful as Lisp's? 
> > 
> > As for the (linked) lists (L in Lisp), of course we need lists (and 
> trees) 
> > sometimes and Julia has them, but as a basic data structure of a 
> language, 
> > seems to me to be a performance killer. I do not see caches (locality of 
> > reference) going away any time soon.. 
> > 
> > 
> > As all (Turing-complete) languages are equivalent in a sense, one can't 
> be 
> > more "powerful" than another; "C can implement Lisp", but without that 
> > exception ("Greenspunning"), programming a new runtime, languages with 
> real 
> > macros can be more powerful. I used to associate macros with Lisp, are 
> > there (m)any other "ALGOL-like"/non-S-expression/not-list-based 
> languages 
> > with real macros? Is Julia a first? I understand macros are the key to 
> > Lisp's power and Lisp is said to be the most powerful language. 
> > 
> > 
> > In short is there any area where another language (which one and for 
> what) 
> > would be (*clearly*) better (not just slightly, see my metric below)? 
> Maybe 
> > I'm not asking the right people.. I can assume people here have language 
> > theory covered (the basic three (more?) categories including logic 
> > programming/Prolog) that I know (and, I guess, a deeper understanding 
> than 
> > I do). 
> > 
> > 
> > If course which language (syntax) is best, is partly a value judgment; 
> > maybe somewhat a personal taste and objectively there may be no best 
> > language. 
> > 
> > 
> > People focus much on the speed of Julia. My metric is not (just) the 
> speed. 
> > I see basically just that dimension (parallel is part of that) and then 
> > readability as important. And that means how short the programs can be 
> > (without getting cryptic). I could maybe go with programming fault rates 
> as 
> > a third or safety/fault-tolerance (see Erlang or hard real-time) as some 
> > third/fourth metric but fault rate is stated as being (roughly) 
> independent 
> > of lines of code. So let's just stick with how short you can make code 
> > (while keeping readability) as a metric. Is there a reason Lisp or 
> Prolog 
> > (or Haskell or other language I know less about) should win that metric 
> (by 
> > a non-trivial/low constant amount at least)? Are there likely to be 
> (m)any 
> > as good available or better ones available in the future? While also 
> being 
> > good on the speed metric? I would really like to know because I really 
> know 
> > of no other language. Any candidates that are even about as good? OCaml 
> and 
> > Racket come to mind, just not sure they can compete and win. 
> > 
> > 
> > Readability is maybe subjective and Perl and Haskell are not, at least 
> to 
> > me.. Julia is, but maybe it's just my upbringing in imperative.. 
> > 
> > 
> > 
> > * Caveats/possible doubts for some 
> > 
> > What I mean by "best language" is judging it on the language merits not 
> > based on any particular missing library for some specific use. [However, 
> I 
> > would like to know where they need improving, especially for 
> "non-technical 
> > use", to see how "practically best" Julia is and possibly improve the 
> > situation.] Imagine if other languages did not have a headstart. Given 
> the 
> > library headstart, I also think Julia would be best since you can use 
> > (almost) any library you are likely to need right now. Are there 
> important 
> > libraries/languages that can't be supported right now or theoretically. 
> And 
> > how mature is the support for R, MATLAB (does it include Octave 
> support?), 
> > Java and C++? 
> > 
> > You can call Java, meaning the JVM. Would it be impossible reuse Java 
> code 
> > without the JVM or the other way to compile Julia (a executable or the 
> > whole environment) to Java (or CLR)? Is a C2Java available/possible? As 
> > Julia2C (and f2c) is available and assuming C2Java, couldn't Julia run 
> in 
> > the JVM? Or in JavaScript (see Emscripten C2JavaScript compiler). 
> > 
> > Yes, you can't call all languages. It seems though, all that matter, 
> except 
> > maybe Objective-C/Swift, C#, COBOL? and few others; which ones are not 
> > callable right now? Is CLR support in general possible or important? 
> > 
> > 
> > Parallel 
> > 
> > In the long run, supporting parallel and resulting speed seems to be 
> what 
> > would make or break new languages and I just do not know what language 
> > could be best at parallel. Any theoretical reason to suspect another 
> > language than Julia? Auto-parallel would be nice; any reason another 
> > language could do better with auto-parallel than Julia? That is, did the 
> > developers shoot themselves in the foot, not doing pure functional (or 
> lazy 
> > vs. eager)? Microsoft made some "breakthrough" recently so imperative 
> > languages are not (much?) worse off than pure functional. Anyone know 
> more 
> > about this? 
> > 
> > I assume Julia has, at least non-parallel, speed covered. If not (for 
> now) 
> > I assume it could at least never get slower than C than by some low 
> > constant factor (if not, it can call C anyway so not a big problem). I 
> just 
> > trust the developers when they say that they can close the gap with C. 
> And 
> > I assume C (for non-parallel) using restrict keyword can't really be 
> beat 
> > by much speed-wise in any language. Assembly included. [Still, will 
> Julia 
> > support assembly directly (or does already?) in any way? Could it be 
> done 
> > in some way that is still portable (translated for other CPUs?).] 
> > 
> > 
> > Garbage collection 
> > 
> > Is a plus for almost all programmers and while some disagree even that 
> > seems not a good objection to Julia as best for everything (eventually). 
> GC 
> > can be disabled (possibly helping with real-time functionality in the 
> short 
> > term) or by calling C. Java has hard-real-time GC (even concurrent). I 
> > assume Julia could to (an implementation issue and not a "language" one) 
> > use all the GC algorithms Java can. I assume multi-dimensional arrays 
> will 
> > not be an issue (seem to recall some array issues with Java's GC that 
> were 
> > overcome). 
> > 
> > For game programming, would it be a good strategy to disable GC and run 
> GC 
> > manually at every vblank? Would beat C/C++ with malloc/free? 
> > 
> > 
> > Game programming 
> > 
> > I mentioned games and a friend replied, "you wouldn't use Julia", au 
> > contraire?! At least 3D games are about the only heavy users of computer 
> > power (and often physics heavy) I can think of for ordinary users. Would 
> > any other language (C++) be clearly better/faster? See next for event 
> > driven: 
> > 
> > 
> > GUI programming 
> > 
> > GTK (does it also work (well) for Windows/Mac with Julia?). With C++ 
> > recently covered Qt should work (perfectly eventually?). Would any other 
> > language be clearly better for GUI work with Qt (or otherwise)? Plex 
> > language for GUI and/or business application? [What is currently best?] 
> > 
> > Even RAD/Visual Basic-style programming is just based on BASIC (or 
> Pascal 
> > in case of Delphi or lately what C#?). Julia doesn't have the GUI part 
> of 
> > that equation but could and it wouldn't be any worse as a part of a such 
> > larger system, right? 
> > 
> > Same argument for individual games or engines (Unity uses JavaScript, 
> C#, 
> > could use Julia). 
> > 
> > 
> > Android could work (already?), iOS probably (Apple requires using XCode 
> to 
> > submit to the app store, ok w/Julia2C?). 
> > 
> > 
> > Database programming 
> > 
> > Julia supports *databases* but does it support the relational model as 
> best 
> > as possible? I'm not sure what should be in the languages themselves. 
> Not 
> > too familiar with: 
> > https://en.wikipedia.org/wiki/Dataphor 
> > 
> > See: https://en.wikipedia.org/wiki/The_Third_Manifesto 
> > 
> > I have mixed feelings about OO in relation to RDMS (see ORM). 
> > 
> > For an opposing view to relational-only-best-programming, see (nothing 
> > "should" use separate relational database, use only objects in memory): 
> > 
> > http://prevayler.org/ 
> > 
> > 
> > At least PHP can't support this concept but this has been ported e.g. to 
> C# 
> > and I think Julia could (should?) have an implementation. Not seeing if 
> > multiple dispatch (not "regular OO") should be any problem. 
> > 
> > [I haven't yet looked into it much, Julia has some serialization support 
> > and not much else needed.] 
> > 
> > 
> > 
> > Maybe there are better 4GL languages? I only know Informix 4GL (and 
> Delphi 
> > in the GUI world).. not ABAP (SAP's), RPG or some later (or earlier 
> 4GL's 
> > that most have "died"..?). 
> > 
> > I see Julia supports ODBC (most (relational) databases covered) and 
> SQLite, 
> > MongoDB (and JSON). Any data(base) problems you know of? 
> > 
> > PostgreSQL at least supports Python for stored procedures. I assume an 
> > extension for Julia could be done.. 
> > 
> > SQL or MDX (not really competitors to Julia, no more than other 
> > non-Turing-complete ("non-programming") languages (HTML, XML). Could 
> query 
> > languages be better worked into Julia. Macros would help? Maybe changed 
> > syntax (SQL->LINQ)? 
> > 
> > 
> > First programming language 
> > 
> > I see three (more?) universities have started teaching Julia. For Matrix 
> > methods (I guess replacing MATLAB). I don't know if any have used it as 
> a 
> > first language, but why not..? 
> > 
> > Unlike many common alternatives (e.g. C/C++/Java) I understand Julia 
> avoids 
> > Hoare's "billion dollar mistake" - pointers (and like newer Java etc. 
> has 
> > GC and easier than OO Java or Ruby). 
> > 
> > 
> > First programming language for (really young) kids 
> > 
> > May not compete directly with Scratch, Alice etc. but note Scratch is 
> > really a "GUI-wrapper" using Squeak language (a dialect of Smalltalk). 
> > 
> > Julia even could be competitive here. 
> > 
> > 
> > Hard real-time 
> > 
> > Something like the Metronome GC algorithm could work Julia? 
> > http://trs-new.jpl.nasa.gov/dspace/bitstream/2014/41809/1/04-2432A.pdf 
> > 
> > Then at least I'm sure Julia *could* work but would it be "best" for 
> that 
> > "environment": 
> > 
> > Could Julia do similar to Atom? I don't know it or the other languages, 
> > like those two for real-time: 
> > http://lambda-the-ultimate.org/node/4488 
> > "You might take a look at Atom, which is a DSL embedded into Haskell, 
> and 
> > is used to produce real-time code for commercial products. It's open 
> > source, so you can see what they do. You could also look at the book 
> > Compiling Esterel, or some of Stephen Edwards' papers on the same topic. 
> > 
> > Synchronous reactive programming languages, like Esterel and Lustre, 
> > typically execute the `whole graph` (whole program) on a per-cycle 
> basis." 
> > 
> > https://en.wikipedia.org/wiki/Esterel 
> > "Difficult to compile in the general case, but simple correctness 
> criteria 
> > exist".. 
> > 
> > 
> > AI 
> > 
> > Lisp (and Prolog(?)) was popular for AI. Isn't "symbolic" pretty much 
> > covered in Julia? Is Julia worse for something like that? Or anything 
> you 
> > can think of that Lisp is good for? 
> > 
> > Most have probably not heard of Replicode language for strong AI and I 
> do 
> > not really know to much about it or even if it's Turing-complete or 
> right 
> > to compare that to regular "programming languages". 
> > 
> > [Any AI languages/"systems" I should know about?] 
> > 
> > 
> > Formal methods 
> > 
> > https://en.wikipedia.org/wiki/Z_notation 
> > "Why Z?" with "Because it is the ultimate language!" 
> > 
> > I just do not know enought about Z-notation or formal in general, is Z 
> even 
> > a programming language (Turing-complete)? Just a "specification 
> language"? 
> > 
> > 
> > Operating systems (including "web browser" (OSes)).. 
> > 
> > Linus famously doesn't like C++, wander if he would like Julia.. Would 
> or 
> > could Julia be considered a "systems programming language" (is Lisp..?)? 
> > Seen articles saying so.. *Could* Julia at least work with C to build an 
> OS 
> > or even in Linux? That is made work to without major changes to the 
> > *language*? But possibly to the implementation. Lisp machines had their 
> own 
> > OS written in Lisp. Maybe they only had single-tasking (non-preemptive) 
> and 
> > not fair to say OS in the modern sense (were just running Lisp?). 
> > 
> > 
> > Alien OSes (such as RISC OS?) 
> > 
> > Only three platforms, but could be extended to run in non-Unix.. 
> > 
> > 
> > * "Exotic" hardware 
> > 
> > Decimal floating point hardware. DFP (or even BCD) can be emulated, just 
> a 
> > library issue or native instructions used. And supporting both the 
> hardware 
> > and software format. I may recommend some small changes to core 
> > (non-library) Julia just the same.. Not sure if a library (a first step) 
> > will do. 
> > 
> > It seems Julia can support all current hardware (Julia2C) and as I'm not 
> up 
> > to speed on GPU's I reserve judgment there, but would like to know if 
> Julia 
> > supports "automatically" or could (OpenCL.jl is not for that?). Same 
> with 
> > FPGA's (unusual bitwidths.. But see myhdl.org "From Python to 
> Silicon!") 
> > using Julia as a HDL.. And Micron's automata processor. 
> > 
> > 
> > Microcontrollers 
> > 
> > 4-bits are out.. but very hard to find anyway. 
> > 
> > 8-bit and 16-bit almost dead? Seems would work but 32-bit (ARM) is 
> killing 
> > them anyway.. 
> > 
> > Even Python had been proposed for microcontrollers: 
> > http://www.micropython.org/ 
> > 
> > Since even Python can work, including for interrupt handling, then I 
> assume 
> > Julia could work in that space also. 
> > 
> > 
> > 
> > Adapteva's co-processor CPU. Very memory constrained (32 KB per core for 
> > code, data and stack.. best not to use more..). How small could Julia 
> > executables get (or the parts of executable, kernels, the coprocessor 
> would 
> > run)? 
> > 
> > GreenArray Forth chips are another story.. even more constrained.. 
> > 
> > 
> > Lower than 32-bit CPUs (or maybe non-standard 18/36-bit etc..) 
> > 
> > Yes for serial; impossible for parallel (atomic issues)? Then Julia 
> would 
> > be "worse" than C, but not really in the modern age.. 
> > 
> > 8-bit bytes assumed (and no support for non-two's complement CPUs) is 
> also 
> > hardly a limitation (except FPGA support?). 
> > 
> > 
> > Binary-coded decimal (4-bit) also not an issue, BCD not a means to an 
> end, 
> > seems fixed or floating point decimal would be better. 
> > 
> > 
> > 
> > Quantum computers 
> > 
> > Quantum computing, I do not know to well, has at least one programming 
> > language, probably better than Julia in that case.. 
> > 
> > 
> > Am I missing major areas? 
> > 
> > Best regards, 
> > Palli. 
>
>

Reply via email to