Lee,

Thanks for the link - I can see that I have a lot of reading ahead of me 
:-) - looks very interesting indeed.

Jules

On Saturday, 28 November 2015 20:26:48 UTC, Lee wrote:
>
>
> Jules, 
>
> There's work using random variation and selection to do some of the more 
> ambitious things you've suggested. 
>
> See, for example, http://geneticimprovement2015.com 
>
> It'd be great to see work in this area being done in Clojure, perhaps in 
> conjunction with some of the more deterministic methods you've suggested 
> here. 
>
>  -Lee 
>
>
>
> > On Nov 28, 2015, at 1:53 PM, Lucas Bradstreet <lucasbr...@gmail.com 
> <javascript:>> wrote: 
> > 
> > Kibit (https://github.com/jonase/kibit) does many of the things that 
> > you describe, though it doesn't go as far you dream. It also uses 
> > core.logic to suggest equivalent substitutions. 
> > 
> > I'd be happy to see more work in this area. 
> > 
> > Lucas 
> > 
> > On 29 November 2015 at 02:01, Jules <jules....@gmail.com <javascript:>> 
> wrote: 
> >> Guys, 
> >> 
> >> I've had pieces of this idea wandering around my head for years now and 
> have 
> >> finally decided that the time might be right for putting them together 
> in 
> >> the context of Clojure. I'm sure that others have had similar ideas 
> before : 
> >> 
> >> Imagine my Clojure program which reads in your Clojure program and 
> spits out 
> >> a smaller, simpler, faster Clojure program which does exactly what 
> yours 
> >> did... 
> >> 
> >> Of course, you are such a good programmer that your program could not 
> be 
> >> improved ? In which case we need you writing my Clojure program :-) 
> >> 
> >> This is opening the door onto a very large but very interesting problem 
> >> space. 
> >> 
> >> Starting the project off in a language that is homoiconic should 
> deliver 
> >> enormous benefits straight away as the language itself provides a 
> reader, an 
> >> Abstract Syntax Tree (itself) , a macro language (itself) etc... 
> >> 
> >> I have some initial ideas - 
> >> 
> >> - I was thinking of looking at core.logic to see if I might be able to 
> use 
> >> it to match code to which refactorings might be applied. 
> >> 
> >> - I was wondering whether analysing a class/methods transitive bytecode 
> >> might be enough to decide whether a function/method was effectively 
> pure or 
> >> not. 
> >> 
> >> - I was wondering whether a simple initial approach would be to inline 
> all 
> >> but the recursive macros and functions in a program and then work 
> backwards 
> >> from the fully expanded program applying refactorings to extract shared 
> code 
> >> etc. 
> >> 
> >> - I was thinking that some of this machinery would be a nice thing to 
> have 
> >> in a Clojure IDE, advising you about potential refactorings and 
> applying 
> >> them as you type. 
> >> 
> >> - I was imagining that ultimately the inputs might not be have to be 
> >> Clojure, but maybe anything that compiled down to Java bytecode. 
> >> 
> >> - I was wondering whether there was much synergy with core.typed. 
> >> 
> >> - I was wondering whether you could work out how many cpu cycles a 
> function 
> >> might take to run by inspecting its bytecode or optimise for mechanical 
> >> sympathy if your system knew a bit about the right things. 
> >> 
> >> - I was wondering whether my program could benchmark functions then 
> rewrite 
> >> them and benchmark them again to confirm that they were faster. 
> >> 
> >> - i was considering which metrics should be used to decide that a 
> program 
> >> was simpler, 
> >> 
> >> - I was wondering whether a Clojure program could learn much about 
> writing 
> >> Clojure programs from analysing all the Clojure programs stored on e.g. 
> >> GitHub. 
> >> 
> >> - I am dreaming of the day when programs are written by more abstract 
> >> programs which are written by more abstract programs... which are 
> written by 
> >> AIs :-) 
> >> 
> >> 
> >> I guess I am talking about writing an Expert System whose problem 
> domain is 
> >> Clojure [and Java bytecode], which encodes a set of rules for 
> transforming 
> >> one form of its input into another form that in some way satisfies some 
> sort 
> >> of [sub]goal. A system which can plan refactorings from an initial 
> state to 
> >> an 'improved' goal state. 
> >> 
> >> I haven't written any code yet. I realise that this is a huge subject 
> and 
> >> that the best thing to do would be to talk to lots of people much 
> smarter 
> >> than myself about it - so here I am. 
> >> 
> >> What does everyone think ? 
> >> 
> >> Is this worth discussing or just pie in the sky ? 
> >> 
> >> Looking forward to hearing your thoughts, 
> >> 
> >> 
> >> Jules 
> >> 
> >> -- 
> >> You received this message because you are subscribed to the Google 
> >> Groups "Clojure" group. 
> >> To post to this group, send email to clo...@googlegroups.com 
> <javascript:> 
> >> Note that posts from new members are moderated - please be patient with 
> your 
> >> first post. 
> >> To unsubscribe from this group, send email to 
> >> clojure+u...@googlegroups.com <javascript:> 
> >> For more options, visit this group at 
> >> http://groups.google.com/group/clojure?hl=en 
> >> --- 
> >> You received this message because you are subscribed to the Google 
> Groups 
> >> "Clojure" group. 
> >> To unsubscribe from this group and stop receiving emails from it, send 
> an 
> >> email to clojure+u...@googlegroups.com <javascript:>. 
> >> For more options, visit https://groups.google.com/d/optout. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> > Groups "Clojure" group. 
> > To post to this group, send email to clo...@googlegroups.com 
> <javascript:> 
> > Note that posts from new members are moderated - please be patient with 
> your first post. 
> > To unsubscribe from this group, send email to 
> > clojure+u...@googlegroups.com <javascript:> 
> > For more options, visit this group at 
> > http://groups.google.com/group/clojure?hl=en 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups "Clojure" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to clojure+u...@googlegroups.com <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
>
> -- 
> Lee Spector, Professor of Computer Science 
> Acting Dean, School of Cognitive Science 
> Director, Institute for Computational Intelligence 
> Hampshire College, Amherst, Massachusetts, USA 
> lspe...@hampshire.edu <javascript:>, http://hampshire.edu/lspector/, 
> 413-559-5352 
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to