danilo2 Posted September 6, 2012 Share Posted September 6, 2012 (edited) Hi! I dont know If I'm posting it in the right place, so if it's wrong, please move it to the right one A year ago I was writing my Bachelor of Science Thesis "Lex Systems - specification of high-level character processing language". I have been working for a long time on this programming language, which could very efficiently generate L-Systems and is a lot more powerful than standard L-Systems processors. Technically, it allows for definition of almost all languages of Chomsky's Type-2 and 3 grammars. Results I get were really good. I was planning that I would post them in a couple of months, because I wanted to start off with my blog or small website. But the reality was horrible. I am working as technical director in one of the film studios in Poland and in parallel I'm developing several open and closed source projects, so I've got so much work, that probably this website will not be alive for log time The following results are a year old, but this really does not matter Lex Systems is a variant of formal gramma, but more universal, than L-Systems. It even allows for writing standalone programs performing some computation, make some complex algorithms and of course generate L-Systems. The most powerfull feature is its syntax, which is very easy to learn (a lot more straightfoward than L-Systems syntax, but it is simmilar) and gives users a lot more control over the execution and data flow. This syntax is powerful and simple - rules in Lex-Systems could be as short as in L-Systems. What is really interesting is that my compiler of Lex-Systems is a LOT faster than Houdini's one (I tested it against Houdini 9,10,11,12 and 12.1 - almost the same results). It is written in C and it is optimized to get really good results and be stable even for large files. It seems, that my solution have a lot lower computational complexity, that Houdini's solution. I and a lot of people, that were reading and rating my work, have tested if results are correct. They are (we were testing if the resulting geometry is the same. Because of the size of the geometry, the tests were executed on dells workstation with 2*3.2GHz Xeon and 64 Gb of RAM). So lets put some facts in this post! I was testing the generation of L-Systems, not the drawing process in viewport! The tests are running against houdini batch and houdini master (fx) without displaying the results in viewport (for example by telling only the node to cook) some tests: premise: FFFA rules: A -> !"////////B B -> &FFFA for the first 14 generations results are similar, but next generations give us real feedback about whats going on: generation 17 - houdini: 0.84s, Lex-Systems: 0.29s generation 18 - houdini: 10.65s, Lex-Systems: 0.53s generation 19 - houdini: 24.25s, Lex-Systems: 0.87s generation 20 - houdini: 144.61s, Lex-Systems: 1.58s generation 17 - houdini: 345.49s, Lex-Systems: 2.58s generation 21 - houdini: 2,013.52s, Lex-Systems: 4.76s generation 22 - houdini: 3,887.33s, Lex-Systems: 7.28s generation 23 - houdini: crash, Lex-Systems: 14.28s Please notice, that the 22th generation took about 1 hour Houdini to process and only about 7 second L-Systems to get the same results! another example: premise: F+F+F+F rules: F -> F-F+F+F-F+F-F-F+F generation 3 - houdini: ~2*10^(−3)s, Lex-Systems ~2*10^(-3)s generation 4 - houdini: 2.7*10^(−2)s, Lex-Systems 4*10^(-3)s generation 5 - houdini: 1.01s, Lex-Systems 2.4*10^(-2)s generation 6 - houdini: 371.5s, Lex-Systems 0.2s generation 7 - houdini: after 7 hours we get 80% of generation process, Lex-Systems: 1.76s generation 8 - houdini: impossible, Lex-Systems: 15.97s generation 9 - houdini: impossible, Lex-Systems: 145.77s ------------------------------- Additional I created 2 more tools: a plugin for houdini, and pythons translator of L-System language to Lex-Systems language (it has less than 100 lines of code, because the basics of Lex-Systems are simmilar to L-Systems) As a result - all my previous tools that were using L-systems now work A LOT faster and allow for making animation of L-Systems parameters really fast. Due to some limitations in license of my thesis I cannot make it public (I have to talk about it with my university, but I've got not so much time). I would be happy to hear some feedback! If you would like, I will post some more info! Thank you, Wojciech Daniło Edited September 9, 2012 by danilo2 2 1 Quote Link to comment Share on other sites More sharing options...
rafaelfs Posted September 6, 2012 Share Posted September 6, 2012 (edited) That sounds very cool, congratulations, man! Can't wait to see it Cheers Edited September 6, 2012 by rafaelfs Quote Link to comment Share on other sites More sharing options...
Annon Posted September 6, 2012 Share Posted September 6, 2012 Sounds fantastic! Quote Link to comment Share on other sites More sharing options...
rurik Posted September 6, 2012 Share Posted September 6, 2012 Wow Quote Link to comment Share on other sites More sharing options...
kgoossens Posted September 7, 2012 Share Posted September 7, 2012 Sounds absolutely great!! Would love to test it! Quote Link to comment Share on other sites More sharing options...
eetu Posted September 7, 2012 Share Posted September 7, 2012 Ohh, sounds very very intriguing! Hope you can get permission to share your thesis as well. Quote Link to comment Share on other sites More sharing options...
Matt_K Posted September 7, 2012 Share Posted September 7, 2012 Sounds amazing! Hope we get a chance to test it out! Matt. Quote Link to comment Share on other sites More sharing options...
hopbin9 Posted September 7, 2012 Share Posted September 7, 2012 Sounds very cool. I don't understand how LEX and L-Systems are related. My understanding of LEX is that it's mainly a tokenizer used by language parsers before logic has been applied. Can you explain in more detail how your Lex System works? Thanks, Quote Link to comment Share on other sites More sharing options...
danilo2 Posted September 8, 2012 Author Share Posted September 8, 2012 Hi! Thank you for replies! I'm very happy of such positive feedback Currently you can not test the compiler, because I cannot (like the thesis) make it public. But I'm planning to rewrite this software and then I'll publish it I don't understand how LEX and L-Systems are related. My understanding of LEX is that it's mainly a tokenizer [...] Lex Systems and lex / flex are not related in any way The name Lex Systems stands for "L(Extended) Systems" or "Lexical Systems" (because it is a lot more than simple extension to L-Systems). One of the features that is better could be for example the fact, that you can describe wider range of context L-Systems. In standard implementations, the context of L-Systems could be only one character of an alfphabet, where in Lex Systems you could use an regular expression for context specification Quote Link to comment Share on other sites More sharing options...
hopbin9 Posted September 8, 2012 Share Posted September 8, 2012 Lex Systems and lex / flex are not related in any way The name Lex Systems stands for "L(Extended) Systems" or "Lexical Systems" (because it is a lot more than simple extension to L-Systems). One of the features that is better could be for example the fact, that you can describe wider range of context L-Systems. In standard implementations, the context of L-Systems could be only one character of an alfphabet, where in Lex Systems you could use an regular expression for context specification Now that sounds cool. Sidefx should hire you to write a new system for Houdini, because their L-System is kind of difficult to use. I've tried it, but honestly it would be easier to learn an ancient aztec dialect. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.