< 1183852801 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :an ideal should have two properties: it should be closed under addition, and it should be closed under multiplication with any element of the original ring, even those that are not in the ideal. < 1183852848 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Then you end up with a set like { m*x + n*y | x,y polynomials } generated from the m and n you start with < 1183852857 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm sorry, but you're going slightly over my head : \ < 1183852868 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :even though i know the concepts somewhat < 1183852874 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll retry. < 1183852906 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if it has those two properties then you can identify any two elements whose difference is in the ideal subset. < 1183852927 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :That paste in pictorial form: http://i11.tinypic.com/4yf0v4i.png < 1183852940 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and the quotient will still be a ring, with addition, subtraction and multiplication behaving almost normally < 1183852968 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: but then you want to do two sets of identifications simultaneously <<< is where you lost me :) < 1183853000 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure how a set identifies with something wither < 1183853003 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*either < 1183853031 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh. this quickly gets out of hand. < 1183853046 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :heh :) < 1183853075 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :back to the familiar (mod n) example, perhaps. < 1183853081 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1183853100 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i promise i'll start reading about math after summer :) < 1183853120 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :when you do calculations (mod n), you can treat any two numbers whose remainder are the same as if they were nearly the same number. < 1183853126 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1183853138 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because of the closednessness or? < 1183853150 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :anyway i know the system < 1183853153 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and you can add, multiply and subtract and the remainders are still the same < 1183853157 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1183853162 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that far i go < 1183853222 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so then you can ask, what ways are there of identifying numbers or polynomials such that addition, multiplication and subtraction preserves all the identifications you have done. < 1183853261 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you mean... other than modulo?= < 1183853263 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :http://video.google.com/videoplay?docid=8392009975620212485&q=solve+feet+rubik%27s+cube&total=20&start=0&num=10&so=0&type=search&plindex=0 < 1183853277 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i have a rubik's cube on the floor, can't even turn it :\ < 1183853281 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :with my feet i mean < 1183853294 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :exactly. except mathematicians as you see in the wp article use mod to denote the general case too < 1183853336 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1183853352 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'll try what you said again < 1183853361 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and the answer is that you must identify things whose difference are in some set, and you can do this if that set has the ideal property. < 1183853400 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*that set is an "ideal" < 1183853451 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :any set such that for any numbers a and b doing a=a-b and a=b-a repetitively correspons to one number in the set? < 1183853469 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i might be completely off here again < 1183853481 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er, possibly < 1183853488 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1183853534 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think i don't undestand 'difference' here < 1183853539 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :any subset such that for any numbers a and b in the subset, and any number r not necessarily in the subset, a+b, a*r and b*r are also in the subset. < 1183853541 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :is it a-b? :) < 1183853545 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1183853577 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you mean, after the operation that defines the set? < 1183853581 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :like a modulo? < 1183853627 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean, if r isn't in a subset, then why would a*r be :| < 1183853654 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well, consider again the case (mod n) < 1183853674 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :then a modulo would be taken to get it back in the set < 1183853676 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1183853683 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in that case the ideal is the set of integers divisible by n. < 1183853692 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1183853695 0 :jix!unknown@unknown.invalid QUIT :"CommandQ" < 1183853699 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no! the ideal is what you start with _before_ taking modulo < 1183853716 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it is what you use to define the modulo operation < 1183853722 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :kay i understand ideal now < 1183853742 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i guess < 1183853752 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and it must have these two properties if the modulo operation is to make sense wrt. addition, subtraction and multiplication. < 1183853772 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it must be a 'ring', that is? < 1183853776 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or was it field < 1183853800 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no, an ideal. the ring is the whole original set. < 1183853816 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the ideal is the subset that you want to identify with 0. < 1183853831 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1183853858 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :perhaps i should try understanding what you said again < 1183853869 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1183853959 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric : Then you end up with a set like { m*x + n*y | x,y polynomials } generated from the m and n you start with <<< i guess you somewhat lose me at this point now :) < 1183854014 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i should read about this instead of bugging you < 1183854026 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i know great books, but i'm too lazy to borrow them from the library < 1183854085 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :anyway, gotta go read physics now, i'm learning about the complex newtonian relations of time, speed and distance! < 1183854090 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :-> < 1183854102 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well if you look at that set it happens to be an ideal :) < 1183854124 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and it is the smallest ideal that contains m and n. < 1183854144 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :an ideal over what? :\ < 1183854168 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :polynomials with integer coefficients, if we stay by the case in the wp article < 1183854184 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or a general ring, otherwise < 1183854196 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*commutative ring < 1183854215 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(let's ignore noncommutative rings) < 1183854222 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1183854256 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you could also look at _just_ the integers. < 1183854271 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :for an example. < 1183854317 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :because then it happens to be that { m*x + n*y | x,y integers } is the same set as { gcd(m,n)*x | x integer } < 1183854342 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1183854343 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :true < 1183854350 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in the ring of integers, _all_ ideals are generated by a single number < 1183854378 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(it is what is called a "principal ideal domain".) < 1183854413 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure how they are 'generated by a single number' :) < 1183854436 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm all for you teaching me basics, but i feel somewhat annoying here :P < 1183854442 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :basically it means that set is the smallest ideal containing gcd(m,n). < 1183854468 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i guess i understand that < 1183854491 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, i do understand that < 1183854503 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hooray :) < 1183854532 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :with polynomials it's more complicated than that? < 1183854540 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it can be. < 1183854552 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :plus i'm not sure how polynoms relate to primality :P < 1183854578 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if you do polynomials in a single variable with _real_ coefficients, then they too are a principal ideal domain. < 1183854603 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :however once you restrict to integers, you may need more than one generator, as in the article. < 1183854641 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(mod n, x^r - 1) means "modulo the smallest ideal containing n and x^r-1" < 1183854658 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(i think i may have said that far above when this conversation started) < 1183854685 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :perhaps, it was even fuzzier to me then < 1183854714 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, i think i understand the idea now < 1183854726 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oerjan> it means modulo the ring ideal generated by n and m < 1183854773 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so basically (ideal over mod n) + (ideal over x ^ r - 1) where + means union? < 1183854782 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and use that for mod < 1183854794 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :not union, < 1183854820 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but S + T = { x+y | x in S, y in T } < 1183854838 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :which happens to be common mathematical notation :) < 1183854865 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can i just do 8 = 0 (mod 5,3)? because 8%5%3=0? < 1183854871 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or have i gotten something wrong again? :) < 1183854889 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that works in this case < 1183854907 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(it's also 2) < 1183854908 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :however it can trip you up in others: < 1183854937 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(and incidentally fibonacci numbers are good examples to show this) < 1183854949 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :21 = 0 (mod 13, 8) < 1183854970 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er wait < 1183855005 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :8, 5 and 3 are indeed fibz, didn't notice :P < 1183855042 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :because successive fibonacci numbers are those that compute the gcd slowest < 1183855091 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :let's see, 21 = 0 (mod 13, 5) < 1183855098 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :fib(n) = 0 | fib(n-3) (mod fib(n-1), fib(n-2)) < 1183855121 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1183855137 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :actually it is _always_ 0. < 1183855142 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1183855150 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that's when you trip up. < 1183855159 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :21 % 8 = 5, 5 % 13 = 5 < 1183855160 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay. < 1183855195 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you see, just because you have reached a number smaller than both generators doesn't mean you are finished < 1183855209 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah, i see < 1183855219 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :gcd(5,13) = 1, so it should reduce to 0 < 1183855244 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but you need to use negative coefficients to get it < 1183855258 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm, is there something fun in what fibs are factors of what fibs by the way? < 1183855276 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :perhaps < 1183855292 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i only remember that neighbors always have gcd 1 < 1183855310 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that i find obvious < 1183855316 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i like to think it's because i own. < 1183855317 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1183855330 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :can't really say why it would be < 1183855340 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :though < 1183855362 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's because gcd is preserved when you subtract one number from the other < 1183855373 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ah, of course < 1183855400 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i know the algorithm for gcd < 1183855408 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so perhaps that was why it was obvious < 1183855415 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :though, ownage, as well < 1183855450 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :now physics, unless you wanna continue the lesson. < 1183855452 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1183855478 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i guess that's enough for now. < 1183855549 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :goodz < 1183855553 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :because < 1183855562 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :physics is so much more nourishing < 1183855599 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i just read about how to calculate density < 1183855613 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :pretty hard to wrap my head around it, but i think i finally managed < 1183855653 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :also, how to draw graphs < 1183855658 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that requires some skill. < 1183855661 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :----> < 1183855712 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :why it's just a simple application of Fubini's theorem < 1183855739 0 :RedDak!unknown@unknown.invalid QUIT :Remote closed the connection < 1183857462 0 :boily!i=boily@gateway/tor/x-70cd62a163e56e65 JOIN :#esoteric < 1183858811 0 :boily!unknown@unknown.invalid QUIT :"WeeChat 0.2.5" < 1183860096 0 :sebbu!unknown@unknown.invalid QUIT :"@+" < 1183860924 0 :GregorR-L!n=gregor@c-76-27-232-8.hsd1.or.comcast.net JOIN :#esoteric < 1183860940 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :I've added bad collision to my JavaScript 3D engine 8-D < 1183861417 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You have a 3D Javascript engine?!? < 1183861593 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :It's lame and sprite-based, but yeah :P < 1183861600 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :http://gregorr.homelinux.org/js3d/3d.html < 1183862055 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Brilliant, but why isn't it in Plof? < 1183862255 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Because I'm JUST THAT LAME. < 1183864755 0 :meatmanek!n=meatmane@cpe-65-29-79-179.indy.res.rr.com JOIN :#esoteric < 1183867099 0 :edwardk!n=edwardk@pdpc/supporter/base/edwardk JOIN :#esoteric < 1183867302 0 :edwardk!unknown@unknown.invalid PART #esoteric :? < 1183867921 0 :Sukoshi!n=Sukoshi@user-11fab8o.dsl.mindspring.com JOIN :#esoteric < 1183867939 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: Ya here? (Answer when ye are.) < 1183867954 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1183867956 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :'sup? < 1183868002 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I gots an idea, and you're the only Java programmer I know. < 1183868011 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :(And I will be quick since I'm in the middle of Japanese work.) < 1183868019 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :You wanna implement Smalltalk in Java? ;) < 1183868031 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1183868033 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :eep < 1183868039 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Heh. Gigantic, I know. < 1183868041 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that sounds rather nontrivial. :S < 1183868064 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :But there are books on the exact VM structure stuff, and you can draw inspiration from the Little Smalltalk distribution in C. < 1183868084 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :So, type out your thoughts, and I'll get back to you in about 30 mins. or so. < 1183868158 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1183868160 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ACTION thinks < 1183868171 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :http://users.ipa.net/~dwighth/smalltalk/bluebook/bluebook_imp_toc.html <-- Read. < 1183868199 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :GregorR-L: btw- that 3d engine is flippin' sweet < 1183868208 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I see tons of possibilities < 1183868235 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :^^ < 1183868244 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Oh, and GregorR-L too if he has the time. < 1183868252 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :(/Drive) < 1183868274 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :ACTION doesn't speak Java. < 1183868302 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION refuses to. < 1183868791 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Well pikhq, whether you like Java or not, it is popular, readily available, and its libraries are mostly well-tested across platforms, and is faster to code in than C. < 1183868811 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Sometimes you have to realize that going down with your ship doesen't help anyone but your own pride ;) < 1183868906 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :It's too bad that the only two languages in existence are C and Java. < 1183868941 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Name one more appropriate for the task, GregorR-L. < 1183868946 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :D < 1183868948 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :If you say C++, I will shoot you :P < 1183868951 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Oh. Hmmm now. < 1183868963 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :That is a very nice idea, in fact. < 1183869000 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: I'm a Tcler. < 1183869020 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1183869022 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: does that mean you're TCLish? < 1183869024 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Now I'm torn :\ D is popular, and compiles quite well to C ... but Java is known by hundreds of thousands of people (most of them chips off the old idiot block), and makes companies go Oooh and Aaah. < 1183869027 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1183869036 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :But D is so nice :( < 1183869044 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :GregorR-L: I detest you :( < 1183869045 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: That last bit is a *bad* property of Java. :p < 1183869066 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Like I said, occasionally you have to swallow the pill of bad taste to get good effects. < 1183869100 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :You know full well that TCL is a dying profession ;) < 1183869108 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :(And Perl is soon to be, methinks.) < 1183869115 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Thank GAWD (re Perl) < 1183869138 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :You know full well that Netcraft confirms BSD is dying. < 1183869150 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Well, only Sun and IBM are capable of making a huge downloadable VM sound attractive, and that after 10 years of shameless pimping. < 1183869162 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(I'm sorry, but Tcl's not a dying language) < 1183869164 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: did you just call me an idiot in a roundabout fashion? <:| < 1183869178 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: Not a chance. I called Larry Wall one. < 1183869183 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1183869201 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Because I don't think Wall and his Perlilites have the pimping skills neccessary to pimp Parrot all the way through. < 1183869240 0 :GreaseMonkey!n=ihavdeb4@222-154-150-108.jetstream.xtra.co.nz JOIN :#esoteric < 1183869250 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: Microsoft did it in much less time. < 1183869259 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Since when was .NET fashionable? < 1183869262 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Fine, so they already have legions that bow down and grovel at any word. . . < 1183869276 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Yeah. Only M$ idiot legions attached to it. < 1183869288 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :But there's *many* of them. < 1183869314 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :But they're becoming less and less influential. Java has a *lot* more mindshare and managershare than .NET, and that's what counts. < 1183869326 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :what about C/C++? < 1183869328 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Even D does, but D doesen't have a VM. < 1183869332 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :C/C++ don't have VMs. < 1183869341 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :it's fast though < 1183869347 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :GreaseMonkey: That's an unstoppable force. :p < 1183869351 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :The topic was about pimping VMs. < 1183869355 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :oh ok < 1183869357 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders at what point you asserted that VMs are a necessity ... < 1183869362 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :LUA's VM is nice < 1183869366 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi> Well, only Sun and IBM are capable of making a huge downloadable VM sound attractive, and that after 10 years of shameless pimping. < 1183869371 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(as long as there's a computer, there will be C. . . Or something *remarkably* similar) < 1183869374 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :it's fast and has better garbage collection than Java < 1183869377 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric : Because I don't think Wall and his Perlilites have the pimping skills neccessary to pimp Parrot all the way through. < 1183869379 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :well, so i've heard < 1183869386 0 :GregorR-L!unknown@unknown.invalid PRIVMSG #esoteric :Oh, I gets it :P < 1183869396 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :hey GregorR < 1183869853 0 :edwardk!n=edwardk@pdpc/supporter/base/edwardk JOIN :#esoteric < 1183871425 0 :edwardk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1183873693 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: use real languages, please < 1183873717 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: what the hell is that supposed to mean? < 1183873731 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Java is a real language, by any sane definition < 1183873742 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Obviously, it means that Sukoshi should use Malbolge. < 1183873747 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no < 1183873845 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :java is made of fail < 1183873877 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :gcc -o java crap.c < 1183873899 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I'm afraid my ASM foo is not good enough for this project, sorry bsmntbombdood :( < 1183873901 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :gcj -o native foo.java < 1183873903 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1183873910 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Java is made of *scale*. < 1183873920 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Java is made of *design*. < 1183873924 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i thought Sukoshi was a schemer :( < 1183873928 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: lol no < 1183873951 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I am. But I'm not going to do a *practical* project in Scheme. < 1183874005 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: rms replaced tcl with guile < 1183874010 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :you must obey < 1183874030 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: Universe.MilkyWay.SolSolarSystem.Earth.KingdomsOfLife.Animal.Mammal.Hominid.Human.Society.Western.Computers.Programming.Languages.Java sucvks. < 1183874079 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: rms also replaced KDE with Gnome. Your point? < 1183874086 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("lisp sucks too, if you're fucking ridiculous about it."))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) < 1183874122 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: ad syntaxinim arguments are not valid < 1183874135 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :i heard two things. < 1183874139 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: The difference being that Java defaults to "fucking ridiculous". < 1183874143 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :1. the garbage collector is garbage. < 1183874155 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: tell that to pikhq over there < 1183874169 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :2. you have to do "if (foo!=null)", not "if(foo)" < 1183874198 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :anyways, afk < 1183874203 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :GreaseMonkey: The latter is true. The former, sometimes. < 1183874230 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :1. This depends heavily on implementation and knowing what you're doing. 2. This is a clearer way to express the concept. < 1183874300 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :if (foo) is more ambiguous than if (foo!=null). Brevity is less valuable than clarity. < 1183874321 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :in C it's still obvious though < 1183874341 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :anyways, rlyawy < 1183874358 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :nothing in C is "obvious", unless you completely ignore the hordes of exceptions to rules and gotchas. < 1183874425 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :C is a language that appears simple and hides complexity, while Java is a language that appears complex while containing very uniform, straightforward methodology. < 1183874435 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I'll take the latter any day. < 1183874492 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :there are only 2 things in languages that disgust me, python's lack of scoping and c++'s declaration order < 1183874504 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1183874508 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and python and c++ are the languages i use most :) < 1183874517 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i wonder what that tells about me < 1183874541 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: look into Ruby- I'm sure you can find some more things to add to that list. < 1183874552 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i do *know* over 20 languages well enough to program with them given google < 1183874554 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1183874565 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i haven't looked at that very closelt < 1183874567 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*closely < 1183874583 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :if you value your sight and sanity, I advise against it < 1183874594 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well < 1183874609 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Ruby is a hideous, heterogenous little language < 1183874629 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the only thing i don't like is when a programming language lets me do what i want but makes me feel like a bad guy for doing it < 1183874655 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that also sometimes happens in java < 1183874678 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Java only really does that for questionable casting < 1183874684 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :C does that for tons of things < 1183874700 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err... i'm talking about data access mostly < 1183874728 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oh, as in design < 1183874729 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :java's scoping i don't like, just as i don't like python's, but in java it's okay, because it's not supposed to work that way < 1183874729 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1183874756 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I was talking about things that would compile and run, but still illicit bitching from the compiler < 1183874786 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :nope, illicit bitching from the brain that's been listening to programming lessons :) < 1183874824 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :haha- like using break; statements. :D < 1183874834 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that, for one < 1183874839 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :and public fields. < 1183874845 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yes, i use them < 1183874846 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::< < 1183874860 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I actually make... well, everything public most of the time < 1183874863 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1183874889 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :but I tend to follow Sun's OOD principles when coding classes others will build upon < 1183874905 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :public fields can rapidly become bad juju < 1183874927 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yarr < 1183874947 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i do use accessors when using inheritance, but i rarely do < 1183874953 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :use it i mean < 1183874999 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :accessors are usually a pain in the ass, but the reason for making them is so that you can use mutators, which are often genuinely useful < 1183875060 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :mutators? < 1183875102 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the biggest problem with every language is that everything is so much easier to make using the oklotalk interface in my head < 1183875113 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :mutators change variables < 1183875122 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i see < 1183875125 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :they're the counterpart of accessors < 1183875132 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :setFoo? < 1183875147 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :getValue() vs setValue(Foo bar) < 1183875154 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1183875158 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i call them accessors as well, it seems :) < 1183875470 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, I'm turning in. 'Night, folks! < 1183875500 0 :RodgerTheGreat!unknown@unknown.invalid QUIT : < 1183875504 0 :RodgerTheGreat!n=Rodger@wads-5-232-125.resnet.mtu.edu JOIN :#esoteric < 1183875508 0 :RodgerTheGreat!unknown@unknown.invalid QUIT :Client Quit < 1183878393 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Read error: 145 (Connection timed out) < 1183878809 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1183881565 0 :Tritonio!unknown@unknown.invalid QUIT :"Bye..." < 1183881599 0 :clog!unknown@unknown.invalid QUIT :ended < 1183881600 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1183883949 0 :edwardk!n=edwardk@pdpc/supporter/base/edwardk JOIN :#esoteric < 1183886203 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :i'm doing something then heading to bed. cya. < 1183886238 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :We were obviously waiting tensely for your status at the hour after much previous indication of activity here. < 1183886270 0 :edwardk!unknown@unknown.invalid PRIVMSG #esoteric :=) < 1183886311 0 :GreaseMonkey!unknown@unknown.invalid QUIT :"Type "man apt-get" for more info... Oh wait, you use Windows. My bad." < 1183887596 0 :oerjan!unknown@unknown.invalid QUIT :"Mgrvgrvladje" < 1183888248 0 :sebbu!n=sebbu@ADijon-152-1-32-225.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1183889709 0 :GregorR-L!unknown@unknown.invalid QUIT :"Leaving" < 1183891671 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. Java's stream operations are missing some stuff that I find very useful from GNU libc's stream ops. < 1183891678 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Namely getdelim() . < 1183897168 0 :jix!n=jix@dyndsl-080-228-183-131.ewe-ip-backbone.de JOIN :#esoteric < 1183898827 0 :edwardk!unknown@unknown.invalid PART #esoteric :? < 1183900005 0 :ehird!n=test@user-54457988.lns6-c11.dsl.pol.co.uk JOIN :#esoteric < 1183900013 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Where did FukYorBrane go? < 1183900498 0 :RedDak!n=dak@87.19.82.136 JOIN :#esoteric < 1183901359 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I think oklopol stole it. < 1183901402 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hmm - various sources are saying that it's possible to write/call subroutines in brainfuck without code duplication, using a mangled loop? o.O < 1183901409 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i don't see how that's possible < 1183902862 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::/ < 1183905803 0 :ihope_!n=ihope@c-71-205-100-59.hsd1.mi.comcast.net JOIN :#esoteric < 1183906847 0 :ihope!unknown@unknown.invalid QUIT :Connection timed out < 1183907983 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you have a loop containing a switch statement < 1183907998 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :a switch statement in brainfuck? < 1183908000 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Um < 1183908040 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I'm sure you'll figure it out. < 1183908078 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :how helpful =) < 1183908107 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you can only do if/elses in brainfuck, not switches? < 1183908111 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :switches use lookup tables < 1183908160 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :not necessarily < 1183908248 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OK then - show me an example ;) < 1183910505 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Here, have an S combinator in what's sort of accidentally turned into an actual programming language: http://pastebin.ca/608829 < 1183910522 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Right now, though, it's just an extremely verbose syntax for lambda calculus. < 1183910684 0 :RodgerTheGreat!n=Rodger@wads-5-232-125.resnet.mtu.edu JOIN :#esoteric < 1183910704 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :howdy, everyone < 1183910725 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Ello. < 1183910854 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Hmm, did JavaScript just return the least expected response? < 1183910856 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :ACTION ponders < 1183910878 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Maybe. < 1183910890 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :For 2+"3", it returned 23. Then again, for "3", it returned 3. < 1183910912 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1183910932 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I think that's pretty much what you'd expect in a weakly-typed language. < 1183910984 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :clearly, string operations take precedence over mathematical operations if any string literals (or casts?) exist in an expression < 1183911247 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Or maybe it's a ChatZilla thing. < 1183911555 0 :zbrown!n=rufius@unaffiliated/zbrown JOIN :#esoteric < 1183911594 0 :jix!unknown@unknown.invalid QUIT :Nick collision from services. < 1183911608 0 :jix!n=jix@dyndsl-080-228-191-243.ewe-ip-backbone.de JOIN :#esoteric < 1183912814 0 :sebbu2!n=sebbu@ADijon-152-1-98-139.w81-50.abo.wanadoo.fr JOIN :#esoteric < 1183913959 0 :sebbu!unknown@unknown.invalid QUIT :Connection timed out < 1183913967 0 :sebbu2!unknown@unknown.invalid NICK :sebbu < 1183915726 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: really? < 1183915749 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I dunno, seems logically consistent < 1183915750 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :In a weakly typed languge I would expect 2 + "3" to be undefined < 1183915763 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :Or di you mean dynamically-typed? < 1183915773 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I seem to remember it working as I described when I last used JS < 1183915786 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it's possible I'm mixing terminology here < 1183915790 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :yup < 1183917291 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :hmmm interesting < 1183919827 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: I prefer dynamic typing. < 1183919860 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :2 + "3" ought to equal 5. :p < 1183920044 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: Cool side note on scala. You can define things like "+" or "-" or "/" or "*" as functions for a specific class < 1183920062 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yes. operator overloading < 1183920078 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That's fairly trivial. < 1183920086 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :SmallTalk does this as well, but it's a requirement, rather than an option < 1183920102 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :C++ offers it, as well. < 1183920109 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :One of the sane additions to C, IMO. < 1183920125 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :I've never used C++ so thats probably why I'm somewhat interested in it < 1183920288 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :in smalltalk, it makes sense because *everything* is synthetic, but I'm not generally a fan of operator overloading in conventional languages < 1183920463 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: by synthetic you mean...? < 1183920483 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :built from other elements in the language < 1183920490 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :non-primitive < 1183920490 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :ah ok < 1183920528 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1183920558 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: know of a good book in general on language design? < 1183920577 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it's not the kind of thing most people write books on < 1183920593 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :generally the people who would end up designing a language and then writing a book on *that* < 1183920608 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :there may be some textbooks on comparative languages that could help < 1183920640 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :The closest thing I've found is Abelman and Sussman's The Structure & Interpretation of Computer Programs < 1183921796 0 :RedDak!unknown@unknown.invalid QUIT :No route to host < 1183922489 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: in java, are initialized boolean arrays always initalized to false? I can't recall right now < 1183922499 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1183922542 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :but programming in C will give you enough paranoid knee-jerk instincts not to count on initialized values to scar you for life < 1183922636 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :ya thats pretty much where this all comes from lol < 1183922646 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :C gave me a lot of paranoia < 1183922736 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :C is evil in a much more subtle fashion than any esolang. < 1183922806 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION fails to see what's evil about something lower-level than Java < 1183922936 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :C isn't a language. It's the swiss-cheese shadow of a language. Undefined behavior is the antithesis of a language specification. < 1183923605 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1183925070 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: unidentified behaiour is the key to C's portability < 1183925115 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1183925122 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :"undefined" < 1183925138 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :is allows things like supporting multiple calling conventions < 1183925156 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :and many of the tricks it forbids are dodgy anyway < 1183925199 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: and there are primitives in Smalltalk, but they're very deeply buried < 1183925211 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION recalls the time he tried to find out how addition was done < 1183925243 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :You find similar things in the language Factor. < 1183925478 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has no idea how you can have a language without *any* primitives. . . < 1183925561 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Minimum! < 1183925783 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :? < 1183925873 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :http://esoteric.voxelperfect.net/wiki/Minimum < 1183926242 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: I'd have to assume it contains *some* kind of comparison and conditional primitives < 1183926336 0 :bsmntbombdood!n=gavin@71-208-219-119.hlrn.qwest.net JOIN :#esoteric < 1183926376 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :the language implicitly contains rough variables and function calls/definitions, so it's easy to see that you could construct things like complex flow control and looping < 1183926553 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and numeric operators aren't needed to synthesize math- I've seen some contorted examples of building things in LISP that make it pretty clear < 1183926567 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :you still need some kind of conditional, at some deep level < 1183926795 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :most of the time you can use a language sans any primitives < 1183926806 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :-> writing in it as if it's lambda calculus < 1183926865 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :So anyone care to give an example of writing "subroutines" in brainfuck without repeating code? < 1183926924 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: finally i catch you here < 1183926933 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, um -- yes? < 1183926946 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :if_zero { subroutine zero} else { - if_zero { subroutine 1 } else { ... < 1183926958 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :did you get my message that i had implemented you little regexp language properly? < 1183926961 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood, that doesn't look like brainfuck < 1183926967 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, nope - link? :) < 1183927013 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ehird: replace if_zero with its brainfuck equivalent... < 1183927026 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :http://oerjan.nvg.org/esoteric/ehird.py < 1183927035 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood, well - "+[" maybe, but that fails on "255" < 1183927070 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :plus, that doesn't allow doing anything apart from calling functions - you can't pass subroutines around - well, maybe you could store the number < 1183927079 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is thinking about compiling a simple language to brainfuck < 1183927114 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, does my hello world work with it? < 1183927145 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: i think i tested all the programs < 1183927162 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hello, X!\n.NEWLINEXNEWLINEworld < 1183927167 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and the infinite loop, which i forget < 1183927178 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure if it's turing complete < 1183927241 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :World, X!.\\n\nX\nworld < 1183927243 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :World < 1183927244 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hello# < 1183927249 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :sans # is also worth trying < 1183927262 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :should print, of course, Hello, world! < 1183927268 0 :RedDak!n=dak@87.19.82.136 JOIN :#esoteric < 1183927284 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :anyway - i'll get python on this machine < 1183927287 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I made a brainfuck variant that allowed for pointers, which made subroutines pretty feasible < 1183927302 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that last one didn't work < 1183927308 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, what happened? < 1183927325 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: Interesting. < 1183927335 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oh - oerjan, you didn't unescape escape codes in the input < 1183927336 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it raised the Malformed program exception < 1183927345 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so \n was becoming "\\n" < 1183927362 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat, i could use procedure numbers < 1183927366 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I *do* have a way of compiling a simple language to Brainfuck. . . < 1183927368 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: if you recall, it was the result of us talking about making an esoteric OS a while back- I came up with "Def-BF" to make writing a kernel somewhat more feasible < 1183927377 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but returning from procedures and calling them without ending the current procedure i haven't solved < 1183927380 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: Right, right. < 1183927394 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :there's no goto or continuations in brainfuck after all < 1183927409 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, Yes -- inspired by your language. I've lost its code though < 1183927425 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Oh? < 1183927470 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Def-BF basically adds two instructions to "jump" the pointer or the program counter to the location stored in a cell, which allows for GOTOs and indirect memory access < 1183927489 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ` is a primitive in Minimum. < 1183927491 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, Yes < 1183927510 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Example? < 1183927529 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, Um? < 1183927548 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat, subroutines aren't the kind of thing i'd put in base brainfuck though - if you have computed goto you're done < 1183927584 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just add the current label to a call stack, jump to the function, and all functions end with a jump to the last item on the call stack < 1183927587 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :of course, stacks in brainfuck are ugly < 1183927601 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION would like to know what sort of thing to add to PEBBLE, if useful < 1183927609 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, my idea was that pure Def-BF was more of a bytecode generated by a somewhat higher-level language that abstracted function calls an the like < 1183927621 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, well -- i've lost pebble's code, so < 1183927621 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lemme see if I can dig up the old spec < 1183927628 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat, well - yes < 1183927645 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: PEBBLE itself may be obtained from it's website: http://pikhq.nonlogic.org/pebble.php < 1183927704 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1183927715 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bah stupid windows < 1183927719 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i hate winzip. < 1183927724 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :http://nonlogic.org/dump/text/1183924086.html < 1183927727 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :^ found it < 1183927737 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: Is Factor fun to play with? < 1183927817 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :most definitely < 1183927835 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :see #concatenative < 1183927912 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, Hello, world!NEWLINElollerNEWLINEwtf. is not a malformed program < 1183927922 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it is a program that prints Hello, world! then a newline then loller then a newline then wtf < 1183927934 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, got that archive in another format? < 1183928002 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://koti.mbnet.fi/yiap/aeolbonn/kquine.aeo good lord. < 1183928029 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1183928031 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :wow < 1183928042 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Um, not yet. . . < 1183928046 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :hmmm that scares me lol < 1183928061 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, winzip is sucky and hates your archive. < 1183928065 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: it is not a malformed program, it is a program that goes through one substitution < 1183928070 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wishes he wasn't using windows right now < 1183928081 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, not according to my spec it isn't < 1183928112 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :http://pikhq.nonlogic.org/pebble-1.0.zip < 1183928119 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :hi Sukoshi, RodgerTheGreat told me you had a java project ;) < 1183928122 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Why the *hell* would it not like a fucking *tarball*?!? < 1183928126 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Heya zbrown. < 1183928130 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, because winzip is retarded < 1183928132 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1183928139 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Winzip claims to support tar. < 1183928153 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: People still use Winzip? < 1183928155 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: where was your spec? i have carefully implemented it so that it substitutes if it's three lines. < 1183928163 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :So zbrown, did RodgerTheGreat tell you what it was about? < 1183928180 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and that this takes precedence over printing. < 1183928191 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: Yeah; it pwns the Windows world. < 1183928197 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, that is not what the spec says. the spec says that you should substitute if 1. the program consists of 3 lines 2. the last line does not end with a . < 1183928201 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: Alls I know is that its an interpreter VM written in Java for Smalltalk < 1183928218 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: as far as the method to your madness, I have no idea :) < 1183928243 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: I recommend using 7zip. . . Or Cygwin. < 1183928254 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, indeed - i do < 1183928259 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but winzip decided to make itself the default. again < 1183928279 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: http://users.ipa.net/~dwighth/smalltalk/bluebook/bluebook_imp_toc.html <-- Have fun. < 1183928294 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: i _demand_ the link to the original spec. < 1183928298 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Just open my archive in 7zip, and rm -rf Winzip. < 1183928299 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I do somewhat keep up in the Windows world, in which I use 7Zip and occasionally IZArc. < 1183928311 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :because i clearly did not read it that way. < 1183928323 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: Apparently, Winzip is remarkably stupid. . . < 1183928338 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :They claim Tar is an old, deprecated format. -_-' < 1183928343 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, i demand that i have lost it :) < 1183928352 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :in all fairness, it's called WinZIP, not WinUnTAR < 1183928357 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Old, sure. Deprecated? No. < 1183928360 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: It was when Winzip was popular. < 1183928366 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat, then why can it Unzip as well as Zip < 1183928374 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: See, Winzip itself is old nowadays (nobody I know who is a power Windows user uses it at all). < 1183928378 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: It claims to support Tar, and .bz2. < 1183928391 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It apparently doesn't do what it claims to. < 1183928394 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: But back when Winzip was in its heydays, Linux was going through a big lull (i.e. the surge of Windows 98). < 1183928405 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: Well aware. < 1183928418 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :grumble grumble google doesn't have it yet grumble < 1183928422 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Although, actually, that lull would be called "formative years". < 1183928431 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :True. Because the GNOME project came out of it. < 1183928444 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh wait... < 1183928449 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: Hmmm this should be interesting since this will be my first go at anything even remotely like a compiler or interpreter < 1183928465 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: I've done fairly trivial VMs before, but nothing with garbage collection and such. < 1183928475 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: Also a rule of thumb: As much Smalltalk as possible. < 1183928492 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: Other than the primitives and VM, I think a full Smalltalk system would be very nice. < 1183928498 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I think I'm pretty solid on building something like the bytecode interpreter- it's the parser and other higher-level things that scare me < 1183928532 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :We'll have to read up on the Java parsers out there. I already know Flex/Bison from a previous project, so. < 1183928554 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Hmmm, looks like I need to read up on my smalltalk then < 1183928588 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: http://www.iam.unibe.ch/~ducasse/FreeBooks.html <-- Enjoy. < 1183928614 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :darn, isn't there a way to show file creation time in linux? < 1183928634 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: waitamo, how did you end up here? < 1183928639 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Also, implementation wise, I suggest Squeak (which I hear is godsome), GST (which is a bit rough, but under active development (even though it's almost completely unused, because Seaside hasn't been ported to it)) (GNU SmallTalk), and if you have a Mac, then F-Script. < 1183928651 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I've been teaching myself smalltalk, and as I was saying before, the wikipedia article gives the impression that *nothing* is primitive, which I find inscrutable < 1183928654 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: You mean in C or an a file manager? :P < 1183928670 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: i mean on the command line < 1183928672 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: any particular book you recommend? < 1183928677 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: Fire up a Smalltalk and inspect the primitives ;) < 1183928701 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: I hear ``A Taste of Smalltalk'' is good for Lisp/C backgrounds. < 1183928705 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: by way of RodgerTheGreat though I've known of its existence for a while, I tend to regularly whois the members of nonlogic to get an idea for what people are interested in? < 1183928717 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ah, ok < 1183928718 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: hmmm that sounds like me then < 1183928733 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC: he asked if I was interested in Sukoshi's project, which I was, so he pointed me here < 1183928736 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: A commercial book called ``Smalltalk Best Practice Patterns'' is the SICP of Smalltalk. < 1183928753 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: And there's a Squeak specific book too, in the mix. < 1183928772 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :I tend to fancy functional languages as opposed to esoteric, but I'm open to alll, since I find language diesng interesting < 1183928778 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Seaside is a web framework that oddly enough resurged huge interest in Smalltalk in the last 4 months its been out. < 1183928799 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :(Huge in comparison to what Smalltalk ailed under before.) < 1183928808 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: that interest is primarily why I thought of you when Sukoshi started trying to gather people for this < 1183928829 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: I've heard of seaside though I've not read much of it < 1183928831 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and a reason why you might find hanging out in #Esoteric generally interesting < 1183928840 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, i don't see anywhere in your brainfuck compiler that compiles functions < 1183928845 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :er, pebble-to-brainfuck < 1183928852 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: thank you much :) < 1183928859 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :no prob. :) < 1183928887 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Hmmm Smalltalk Best Practice Patterns doesn't sell for cheap < 1183928897 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :DOES LINUX EVEN _STORE_ FILE CREATION TIME? < 1183928929 0 :ihope_!unknown@unknown.invalid PRIVMSG #esoteric :Wouldn't ##linux be a better place for that question? < 1183928962 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ihope_: no, because i am trying to find the date i first created an esoteric interpreter < 1183928971 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, NO BUT A FILESYSTEM THAT LINUX CAN INERFACE WITH MIGHT < 1183928973 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: It doesn't *have* functions; it's got macros. < 1183928982 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, oh - then that's not very helpful =) < 1183928995 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Do you want me to tell you how to do it in C? < 1183928997 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Functions would be much, much higher-level than the design of PEBBLE opts for. < 1183929024 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ``man fstat'' should get you some information. < 1183929025 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION isn't sure, his brain is very tired right now and it might be better to take a break < 1183929037 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, functions are pretty darn low level < 1183929046 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :you have to try really hard to get lower than functions < 1183929053 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Closures. < 1183929066 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi, well - you know, same sort of thing: PEBBLE seems to have none < 1183929069 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Higher level than Brainfuck or PEBBLE. < 1183929069 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :just macros and primitive < 1183929071 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :s < 1183929077 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Oh. < 1183929087 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: Yeah, unfortunately. < 1183929093 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: hmm you guys are out for the hardcore, though this smalltalk bit is a tad strange < 1183929100 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1183929102 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :PEBBLE's pretty much a powerful macro system and macros for it. < 1183929120 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: Tell me that after spending 1 month coding in Lisp and Smalltalk and then attempting to code in C. < 1183929120 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1183929122 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Which is *exactly* what I set out for in the first place. < 1183929130 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: did you have a look at my old Def-BF spec? < 1183929139 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: yup... bf just scares me < 1183929152 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :you'll need to make it a native tongue, zbrown < 1183929155 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I love BF. Jives with my pointer-foo quite well :) < 1183929162 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1183929189 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: heh, I program in Java a lot but due to my mathematical inclinations, languages like haskell, scala (my current lust), and erlang are my favorites < 1183929195 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: which language will I need to make native? < 1183929209 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :in my cryptography course, I couldn't help but think about ways to implement the cyphers we were learning in BF < 1183929215 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: I was talking about BF < 1183929217 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: I started pining for an inspcetor :( < 1183929233 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi:haha < 1183929251 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :and of course C is in my rep. as well < 1183929263 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :I'm more of a C coder than a Java coder, since I've done more in it. < 1183929275 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, How would you suggest implementing functions? < 1183929275 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :And in general, I prefer coding low-level stuff in C. < 1183929300 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :Pointer foo rarely scares me, by the way :) < 1183929303 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: zbrown is developing an erlang obsession as we speak < 1183929305 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: Ah I'm more of a high level person. A lot of my work is algorithmically based since the majority of the programming I do is modeling < 1183929308 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Don't ask me, ask Gregor or calamari. < 1183929321 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, =P < 1183929323 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: I don't do Java. < 1183929325 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: Try Smalltalk for a bit. < 1183929340 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :GregorR, consider yourself asked < 1183929347 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: If you like high-level, :) < 1183929361 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :High-level stuff, I do in a scripting language (tempted to learn Smalltalk for that, though), low-level stuff in C, assembly, PEBBLE, or Brainfuck, depending upon insanity-level. < 1183929365 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hah! knew it! http://pastie.textmate.org/65795 < 1183929367 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: Ya, I've got squeak installed now, looking at some other stuff < 1183929370 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :bbl, guys- dinner < 1183929398 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: it definitely should substitute rather than print < 1183929405 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, no it should not < 1183929416 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that is what it says there < 1183929419 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :"if input is of the form ANYTHING." should match 3 lines with a period at the end < 1183929421 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :=) < 1183929446 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but it checks for replace even in that case < 1183929489 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that was spec v1 < 1183929492 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm sure i posted a v2 < 1183929614 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: some of the ideas in smalltalk seem slightly similar to erlang < 1183929620 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes, http://pastie.textmate.org/65806 and it is still the same in that respect < 1183929672 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: :) < 1183929683 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, hrm < 1183929710 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: anyway i'm sure you can switch the code around if you want < 1183929740 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: the breakdown is that we'll write as little of it as possible in java and then build up in smalltalk? < 1183929740 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OK it appears to work# < 1183929781 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :X, Y!.\nY\nworld < 1183929781 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :X < 1183929782 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hello < 1183929786 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :-- is not a malformed program < 1183929817 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it replaced X with Hello, giving Hello, Y!.\nY\nworld, which should then be executed, printing "Hello, world!" < 1183929883 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: Yup < 1183929885 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :. < 1183929924 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: no, because only the replaced part is unescaped < 1183929956 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so those \n are never turned into newlines < 1183929962 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :then... that's wrong. < 1183929970 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :input should have escapes expanded < 1183929997 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :not according to spec :D < 1183930004 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: haha, I thought I was gonna get away (with murder) with not knowing smalltalk and just working in Java ;) < 1183930040 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: :P < 1183930066 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, then my spec is wrong < 1183930067 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :=) < 1183930113 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: hell it couldn't hurt to have it in my repertoire. < 1183930142 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :zbrown: I'm hoping you genuinely fall in love with it along the way. < 1183930165 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Well its likely, it seems the syntax has potential to be very elegant < 1183930178 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION thinks smalltalk has some impurities < 1183930179 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :like too much syntax! < 1183930196 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Thats why bf and I don't get along. It doesn't look pretty, not that its bad, just its ugly to me. < 1183930212 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bf is pretty! < 1183930224 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :I think concise, _clear_ syntax that expresses what the algorithm is supposed to do is pretty :) < 1183930226 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it's pretty like Forth - densely packed poetry < 1183930231 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird: you can fix it by inserting prog[0] = re.sub(".", prog[0], ".") at the beginning of the while block, i think < 1183930232 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1183930237 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :well it is. < 1183930255 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :and elegant...somehow < 1183930262 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :elegant... in its minimalism! yes. < 1183930339 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :bloddy lag < 1183930377 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I, for one, think that ,[.,] is quite elegant. < 1183930393 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :afk < 1183930396 0 :zbrown!unknown@unknown.invalid PRIVMSG #esoteric :Beauty is in the eye of the beholder ;) < 1183930428 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :"@ input;in input;while input {out input;in input}" < 1183930434 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Happier? < 1183930485 0 :suifur!i=rufius@unaffiliated/zbrown JOIN :#esoteric < 1183930518 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Hmm < 1183930522 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Anyone remember that OOPBrain? < 1183930522 0 :suifur!unknown@unknown.invalid PRIVMSG #esoteric :hrm this seems much faster < 1183930524 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OOP in Brainfuck < 1183930529 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that had methods - so it stored subroutines < 1183930530 0 :suifur!unknown@unknown.invalid PRIVMSG #esoteric :seems nonlogic's server is most very slow < 1183930530 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I wonder how < 1183930667 0 :suifur!unknown@unknown.invalid PRIVMSG #esoteric :oooh, niiice i like. New algo for my model is much faster < 1183930682 0 :suifur!unknown@unknown.invalid PRIVMSG #esoteric :hopefully its also as accurate.. < 1183930925 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :What's the equivalent to a C union in Java? < 1183930938 0 :Sukoshi!unknown@unknown.invalid PRIVMSG #esoteric :When you have something that could be of different types and won't know until runtime? < 1183931209 0 :suifur!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: you do class hierarchies < 1183931215 0 :suifur!unknown@unknown.invalid PRIVMSG #esoteric :there's no single word replacement < 1183931291 0 :suifur!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: http://nonlogic.org/dump/text/1183927651.html <--- thats an example < 1183931300 0 :suifur!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: btw, this is zbrown if you didn't read my hostname < 1183931853 0 :suifur!unknown@unknown.invalid PRIVMSG #esoteric :Sukoshi: did that help at all or no? < 1183932232 0 :jix!unknown@unknown.invalid QUIT :"CommandQ" < 1183932447 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I'm back < 1183932894 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :suifur: one thing you'll have to get used to in #Esoteric is the fact that most conversations here tend to be asynchronous. Just talk, and you'll be responded to eventually < 1183932911 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ehird: GregorR wrote a C->bf compiler, ask him how he implemented subroutines < 1183932927 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood, i did - an hour or so ago < 1183932932 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :GregorR, ping < 1183932933 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh, he < 1183933372 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ACTION applies large mallot to GregorR's head as a rather more effective version of ping < 1183933373 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :*mallet < 1183933420 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :haha- I thought a "mallot" would be kinda like a "malloc" < 1183933424 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1183933435 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :mallot(sizeof(GregorR.head)); < 1183933439 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :free(GregorR); < 1183933510 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :person *destroyed_gregor=GC_mallot(sizeof(GregorR)); < 1183934277 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :http://www.itwire.com.au/content/view/13339/53/ < 1183934279 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :huh? < 1183934373 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ehird: http://esoteric.voxelperfect.net/wiki/Brainfuck_algorithms#if_.28x.29_.7B_code1_.7D_else_.7B_code2_.7D < 1183934402 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hum < 1183934406 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm sure i could specialize that < 1183934442 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :like CASE in lisps. < 1183934493 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i just need to work out how to do an IF 0 - i guess COPY_TO_NEXT_CELL>+[stuff[-]]< < 1183934617 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :boolnot x : temp; if x {code here} < 1183934641 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(sorry; PEBBLE just makes for a nice, high-level way to reason about Brainfuck) < 1183934674 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :http://pastie.caboo.se/77163 i think this snippit should work < 1183934689 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :er, wait < 1183934692 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :no < 1183934714 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Nope. That's "if (!3) code;" < 1183934834 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :yes exactly < 1183934873 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :requirements: with [0] = val, and assuming all other cells are 0, run CODE if val is equal to 4 without modifying val, and clean up mess such as changing the other cells after < 1183934876 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :competition? :D < 1183934942 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :>>[-]<[-]<[>+>+<<-]>>[<<+>>-]<----[>+<[-]]+>[<->-]<[code[-]] < 1183935011 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Not at all the shortest; just what's produced by "ift val {subcons4 temp1 : temp2;boolnot temp1 : temp2} {forceinline code} : temp1 temp2" < 1183935012 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :that was generated by PEBBLe. wasn't it < 1183935016 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yup. < 1183935017 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Knew it =D < 1183935026 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :it has the distinct feel of generated code < 1183935052 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :And, er, why can't you just do "if (eq val 4) {code}" < 1183935055 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :(I don't know pebble) < 1183935088 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :The comp macro is a good deal more complex than subcons4 + boolnot + ift, believe me. < 1183935174 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :BTW, the solution *you* wrote is just "copy val > temp1 : temp2;subtract temp1 3;if temp1 {forceinline code}" < 1183935239 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :[>+>+<<-]>>[<<+>>-]<---[code[-]] <-- And look, it's better than your hand-written code. :p < 1183935252 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OK you're just trying to confuse me with low-level code now =) < 1183935301 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Low-level would be without the macro engine. . . Making basically a Brainfuck equivalent. < 1183935331 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :x_x < 1183935620 0 :suifur!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: I figured as much, thats the way it is in #erlang and #scala :) < 1183935646 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hrm < 1183935713 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Whoo! Asynchronous multithreaded conversational engine! < 1183935726 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1183935737 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, So how does your language handle numerical comparisons? < 1183935993 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Very low-level. < 1183936000 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :pikhq, Helpful. =) < 1183936030 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(foo == 25) would be treated as roughly !(foo-25) < 1183936056 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Or, subcons25 foo : temp;boolnot foo : temp < 1183936083 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OK - what code does !((current_pointer_in_brainfuck)-4) generate? I'm not sure how one would code ! < 1183936132 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :subtract val 4;boolnot val : temp < 1183936164 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :----[>+<[-]]+>[<->-] < 1183936216 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Ok - so [>+<[-]]+ copies the value one place to the right and >[<->-] boolean-nots it < 1183936217 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :? < 1183936239 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No, "[>+<[-]]+>[<->-]" boolnots it. < 1183936242 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :No copying. < 1183936258 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :Then what's "temp" about? < 1183936368 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders how his irc client managed to get disconnected from a server running on the same frikkin' machine. < 1183936372 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :[>+<[-]] moves the value one place to the right, applying !! to it < 1183936424 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm not exactly sure how ! would work in BF < 1183936438 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :ahhh, i see < 1183936455 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :[>+<[-]] only executes if the value is already true < 1183936462 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :so [0] = 0, [1] = 0, nothing needs to be done < 1183936475 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :but otherwise, it simply sets 1 to 1, and clears 0 < 1183936495 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm - somehow i think there must be a simpler way < 1183936527 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :I am surprised that NOT is that simple in BF < 1183936553 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :SimonRC, well - it makes logical sense < 1183936596 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm... < 1183936629 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :BTW, almost all of the macros in PEBBLE are ports of the Brainfuck algorithms in the Esolangs wiki. < 1183936666 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1183936678 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure there IS a way to do it that doesn't involve a second cell < 1183936686 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :hrm - in fact, no, there can't be < 1183936753 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i think any bf algorithm on a single cell without IO will either add a constant or set the cell to a constant < 1183936791 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :OK - well something simpler than [>+<[-]] < 1183936792 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :because once you use [], you lose all information about what the original value was < 1183936794 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :i don't think its possible < 1183936825 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ehird: Long delayed pong. < 1183936835 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok, it's also possible to infinitely loop for some values < 1183936853 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :GregorR, How did you handle procedures in bf2c? < 1183936859 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :GregorR, 'specially with funcptrs and the like < 1183936875 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :It's fairly simple but difficult to describe. < 1183936880 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :er, bf2c sounds like the wrong way? < 1183936897 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, it's C2BF. < 1183936905 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :err - yes < 1183936919 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :OK, basically ... < 1183936931 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :You have an array at the beginning of the program with one cell for each enter-able code chunk. < 1183936936 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ACTION grins at the later comments here: http://forums.worsethanfailure.com/forums/2/123852/ShowThread.aspx < 1183936940 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :GregorR, the only way i can think of is a big gigantic loop with lots of nested ifs to check for an "address", then splitting functions into multiple parts at function calls to work around no continuations/gotos < 1183936959 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Well, sort of, but it's not that gross :) < 1183936991 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Basically, go to the beginning, then: >[- function 1]>[- function 2]>[- function 3] etc < 1183936996 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Mostly because it's automatic. :p < 1183936999 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Just make sure that you get back where you were. < 1183937045 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Then to call a function, all you have to do is go to the beginning of the buffer and mark the right function. < 1183937063 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :You can implement return addresses as in C (push an offset) < 1183937077 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :I think I need several diagrams and animations to explain this. *g* < 1183937090 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Like I said: Difficult to describe. < 1183937190 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I thought it was rather clear < 1183937214 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I think it's damned clear. < 1183937237 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it's how you do CASE....SELECT in BF, essentially < 1183937241 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Of course, things are easier to understand when you actually grok Brainfuck code. . . < 1183937262 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :we just happen to be using the technique to simulate functions here < 1183937485 0 :fax!n=pacman@amcant.demon.co.uk JOIN :#esoteric < 1183937487 0 :fax!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1183937531 0 :fax!unknown@unknown.invalid PRIVMSG #esoteric :oh cool I thought the wiki was broken but it seems to have fixed itself < 1183937548 0 :fax!unknown@unknown.invalid PRIVMSG #esoteric :(was getting some SQL erro, but not anymore) < 1183937549 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it does tend to do that. < 1183938281 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :ehird: http://www.codu.org/bf_functions.avi < 1183938413 0 :ehird!unknown@unknown.invalid PRIVMSG #esoteric :GregorR, oh -- so actually the function code is duplicated for each call? < 1183938583 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ISTR there is an esolang around that fits the BF function call modle very well. < 1183938617 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :ehird: no, the function code is only in one place. < 1183938623 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :watch the video < 1183938630 0 :ehird!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1183938637 0 :SimonRC!unknown@unknown.invalid PRIVMSG #esoteric :BTW GregorR, your voice doesn't match your face < 1183939120 0 :GreaseMonkey!n=ihavdeb4@222-154-150-108.jetstream.xtra.co.nz JOIN :#esoteric