ChanServ changed the topic of #picolisp to: PicoLisp language | Channel Log: | Check also for more information
ubLIX has quit [Quit: ubLIX]
_whitelogger has joined #picolisp
orivej has quit [Ping timeout: 240 seconds]
alexshendi has quit [Ping timeout: 260 seconds]
rob_w has joined #picolisp
xkapastel has quit [Quit: Connection closed for inactivity]
razzy has joined #picolisp
ubLIX has joined #picolisp
orivej has joined #picolisp
rob_w has quit [Remote host closed the connection]
rob_w has joined #picolisp
rob_w has quit [Remote host closed the connection]
rob_w has joined #picolisp
ubLIX has quit [Quit: ubLIX]
xkapastel has joined #picolisp
rob_w has quit [Remote host closed the connection]
ubLIX has joined #picolisp
<Regenaxer> s
<razzy> :]
<Regenaxer> Sorry
<razzy> ?
<Regenaxer> The 's'
<Regenaxer> typing in wrong tmux window
<razzy> Regenaxer: np, do you remember your work on chess simulator?
<Regenaxer> Hmm, a simulator?
<Regenaxer> Or do you mean games/chess.l ?
alexshendi has joined #picolisp
<razzy> yes
<razzy> chess.l
<Regenaxer> ok, long time ago
<razzy> is it a no?
<Regenaxer> I remember a little
<Regenaxer> Especially as I wrote it several times during the last 35 years
<razzy> in different lisps?
<Regenaxer> no
<razzy> in pil?
<Regenaxer> First in SC/MP machini code
<Regenaxer> then Forth
<Regenaxer> Then C
<Regenaxer> Then pil
<Regenaxer> The C version was a commercial product for Sony MSC
<razzy> hmm, how long it took to write it
<Regenaxer> For fun I rewrote in pil
<razzy> in pil
<Regenaxer> Not sure now, several days
<Regenaxer> And changed experimentally over time
<Regenaxer> So in total several weeks perhaps
<Regenaxer> It has 447 lines of code. So if you go with the rule of 15 lines/day, you get 29.8 days
<Regenaxer> I think this value fits
<Regenaxer> As we discussed with freemint and beneroth yesterday
<Regenaxer> 15 lines/day is a very good rule of thumb
<razzy> for exprt progamers?
<razzy> change 15 line a day?
<Regenaxer> in general I think
<Regenaxer> the 15 lines are better if it is an expert
<Regenaxer> Not chang
<Regenaxer> e
<Regenaxer> Total development time
<Regenaxer> including testing and debugging
<Regenaxer> Total time on a project
<razzy> how do (dm) knows what class it suppose to add its propeties
<Regenaxer> "Defines a method for the message sym in the current class,"
<Regenaxer> (doc 'dm)
<razzy> i do not like oop :]
<Regenaxer> You don't like many things
<razzy> yes :]
<Regenaxer> Think positively ;)
<Regenaxer> For this chess program OOP is indeed a bit overkill
<Regenaxer> Not much inheritance, and things will not change as the rules are fixed
<razzy> i like to change the rules
<Regenaxer> Change to Shogi?
<razzy> i play several modifications of chess
<razzy> not really shogi, but closer :]
<Regenaxer> cool
<Regenaxer> Some heuristics will no longer apply then
<razzy> standard chess are ugly
<Regenaxer> Especially the board evaluation function
<razzy> yes :]
<razzy> i can do my own board evaluation :]
<Regenaxer> It is 'cost'
<Regenaxer> sure
<razzy> i hope most of the functions "tryMove" are never used :]
<razzy> try attack
<razzy> and so on
<Regenaxer> Oh, they are heavily used
<Regenaxer> the core of the move generators
<razzy> should not there be (available moves) and alpha-beta search, evaluation function?
<Regenaxer> yes, there is
<razzy> is it some additional heuristic?
<razzy> those three are plenty for good game
<razzy> i do not know why you have those tryAttack
<Regenaxer> Alpha-beta search is in 'cost' from @lib/simul.l
<Regenaxer> Alpha-beta search is in 'game' from @lib/simul.l
<razzy> i know
<razzy> thx
<Regenaxer> ok
<beneroth> hey friends
<Regenaxer> Hi beneroth!
<beneroth> Guten Abend Regenaxer :)
<Regenaxer> :)
<Regenaxer> razzy, the attacks are needed to simulate a battle
<Regenaxer> board control
<razzy> i think alpha-beta (sometimes called min-max search tree) should be capable of simulating a battle on its own
<Regenaxer> yes, but it is too costly
<razzy> that is what i asked for
<Regenaxer> if many pieces attack a single field, you can't go down the tree so many levels
<Regenaxer> It is cheaper to simulate the attack
<Regenaxer> starting with the lowest-valued pieces
<Regenaxer> This program is usable for 3 to 7 tree levels
<razzy> so try-attacks are heuristics :]
<Regenaxer> typically up to 5 on a fast machine
<Regenaxer> The evaluation function is heuristics. Attacks are exact I would say
<Regenaxer> A simple exchange
<Regenaxer> You know exactly who would win the battle
<razzy> they prune search tree
<Regenaxer> T
<Regenaxer> The program could be shorter
<Regenaxer> if it would not keep pre-calculated lists
<razzy> precalculated lists?
<Regenaxer> I thought it is cheaper to maintain the lists than to build them each tim
<Regenaxer> e
<Regenaxer> yes, eg attackers of a field
<Regenaxer> (: whAtt) are the white attackers
<razzy> smaller program is also easier to understand, and better to penetrate audience :]
<Regenaxer> yes, but perhaps slower
<Regenaxer> For chess speed matters
<razzy> i do not care for computing resources that much
<razzy> the program beated me,.. which i found very funny
<razzy> and it looks very simple :]
<razzy> my first step is gut it even more :]]
<Regenaxer> I just found an minor optim :)
<Regenaxer> (= 1 -> (=1
<razzy> Regenaxer: and to be pedantic, battle simulation is precise from local point of view(who would win exchange), but just heuristic from the whole game view. heuristic about who would win in the end.
<razzy> yes?
<Regenaxer> I would not say so
<Regenaxer> Heuristics are results of experience without precise explanation
<Regenaxer> Attacker exchange is precise
<Regenaxer> Just weighting the attackers
<Regenaxer> in a special order
<Regenaxer> beneroth, we just talked about the 15 lines / day
<razzy> what i want to do is change some rules, and make function (analyse) that spit out 5 best moves for you and 5 best moves for you oponent :]
<Regenaxer> games/chess.l is a good example
<Regenaxer> 447 lines after several weeks of work
<razzy> maybe for several value functions :] and heuristics :]
<Regenaxer> Alpha-beta does not find the 5 best
<razzy> why not?
<Regenaxer> It does not search the whole tree, it prunes ;)
<Regenaxer> It stops if it finds a worse move
<Regenaxer> So it finds the best one, but perhaps skips the second best
<Regenaxer> Anyway, good luck!
<razzy> in a good game, there are lots of very similiar moves :].
<beneroth> Regenaxer, yeah I saw. Problem is, not all lines are equal. Logic vs. content like the html part of a webpage
<Regenaxer> yes, of course
<Regenaxer> But the order of magnitude
<Regenaxer> code, not counting resources and other bloat
<Regenaxer> So maybe 1 line Lisp is 10 lines Cobol, but in that range
<Regenaxer> maybe 20 in Cobol and 10 in Java
<Regenaxer> If you write C, each line is less powerful, but harder to write, so you stay with the same lines/day
<beneroth> :)
<Regenaxer> Just heuristics ;)
<beneroth> of course
<beneroth> I wonder about order for pico vs common lisp. but I don't know common lisp enough.
<Regenaxer> PicoLisp is more succinct than CL
<Regenaxer> eg. if you compare in RosettaCode
<beneroth> yeah, that's why I wondered what the guesstimated order number could be :)
<Regenaxer> Yeah, it is a very rough estimate, a rule of thumb
<Regenaxer> But despite I may write a few hundred lines in an hour, it will not hold in the long range
<Regenaxer> You have days over days just modifying stuff and so
<Regenaxer> changing, factoring, re-arranging
<Regenaxer> And meetings! Meetings are most time consuming!
<Regenaxer> With zero lines output
<Regenaxer> OK, OK, maybe 15 really does not hold. But it is a good way to shock management
<razzy> why shock?
<Regenaxer> The project will take so long and be expensive
<razzy> :D
<beneroth> T
<beneroth> <Regenaxer> The project will take so long and be expensiv
<beneroth> always does
<beneroth> such management should be removed, would be win for all I believe.
<beneroth> The Fred Brooks original quote was about 10 lines per day, afaik
<beneroth> but well, that was back in assembler times :)
<razzy> but what heuristic for programmer? how many lines of code he should rework?
<razzy> until his think/day quote is filled?
<Regenaxer> beneroth, I see, thx :)
<Regenaxer> razzy, until the program is perfect
<razzy> pff,.. never is
<Regenaxer> So it never stops, like @games/chess.l
<razzy> hmm, do not know if it is good thing, or bad thing
<Regenaxer> As long as it is fun it is good
<razzy> if it is not, you die
<razzy> :D
<beneroth> no razzy
<razzy> solve
<razzy> solved
<beneroth> its not a guideline for a programmer
<beneroth> its about realistic average pseudo-productivity-number
<razzy> i know, i want to have guideline for programmer
<beneroth> a guideline for about how productive you should be?
<beneroth> work longer if you are interested or "in the flow" (in the zone). don't kill your mental and physical health by beating yourself to much or by letting yourself exploited.
<beneroth> work-life balance.
<beneroth> and be aware of the impostor syndrome and don't fall for it.
<beneroth> that would be my 2 cents to that.
orivej has quit [Ping timeout: 240 seconds]
<beneroth> too sleepy for me :)
<beneroth> I like it
<razzy> it is much better for problemsolving :]
<razzy> fo me
<razzy> for me
<beneroth> its very nice now as I'm relaxing and reading
<beneroth> but I think it would be too slow for my taste when I try to focus :)
<razzy> i do not want to die during work
<razzy> hmm,.. cost function is not working as expected :]
<beneroth> as YOU expected?
<beneroth> or as who would expect? :)
orivej has joined #picolisp
<razzy> as I would expect just from code
<razzy> if anybody want to look at chess.l
<razzy> am i crazy? or what :]
<beneroth> sorry, I'm to tired to look into it now :)
<razzy> no problem, i am also half sleeping. just seem not working
<beneroth> you probably use it wrong.
<razzy> i think so
<beneroth> thats 90%+ the reason for unexpected behaviour with picolisp :)
<beneroth> and not because picolisp is weird, I would argue
<beneroth> though maybe because peoples expection sometimes got weird after being exposed to too much other weirdness, haha
<beneroth> hm
<razzy> the whole program works, but the single pieces are mystery
<beneroth> maybe its pil. dunno.
<beneroth> step through it on paper with some concrete values.
<razzy> yeah, stepping through :]
<razzy> but there are many many evaluations :]
<razzy> like 4s of evaluations in realtime :]
<razzy> maybe 3s :]
<razzy> ha ha, this software is soo experimental :D
<tankf33der> picoLisp was playing active role as prototype modeling language for this:
<tankf33der> someday will be announce after formal verification and etc.
<tankf33der> proto already pass tis-interpreter.
<beneroth> woah interesting
<beneroth> so thats the stuff you are busy with? I wondered if you just solve programming puzzles all day :P tankf33der :)
<tankf33der> warming before advent of code 2018
<beneroth> nice :)
<beneroth> I admire you tankf33der :)
alexshendi has quit [Read error: Connection reset by peer]
ubLIX has quit [Quit: ubLIX]
pierpa has joined #picolisp
alexshendi has joined #picolisp
<aw-> beneroth: at first i thought tankf33der's programming puzzles were pointless, but really they are brilliant and extremely useful.
<aw-> they are a great foundation for anyone wanting to build a project or protocol on top of tankf33der's implementations (assuming the implementations are correct) ;)