I saw this one and thought it was great! I probably should get into this kind of discussion but it made me wonder about market economies for other things too…
If you’re a newbie and don’t know which programming language to choose…
You will choose Lisp without doubts
((I (like) Lisp)!)
I think the (first and last panel of the) comic for C# applies to every language
(also Lisp ftw))
Are y’all actually using Lisp? Besides a course over 20 years ago, I have not used Lisp.
I had a feeling that Go players would be able to relate to the sort of meetup depicted in the last comic that I posted.
Honestly, I’ve only ever had experience with Haskell, but from a mathematical viewpoint, these lambda-calculus inspired programming languages are far more intuitive than any of the other ones to me, hence I like it from that standpoint.
No. I used Lisp for a little bit during a remote programming class I took some years ago, and I also took part in a Clojure workshop (Clojure is pretty close to Lisp). I enjoyed it a lot, but I don’t code in my everyday life.
I think that the features of Lisp and its dialects are neat, but I guess I just mean that Lisp does not seem so widely used these days, so it’s a bit rare to find an opportunity to really use such languages. I was just curious to hear if there are people here actually using these languages often. With some googling, I was able to find this stack exchange post with quite a catalog of actual users.
On the other hand, some of those neat features of Lisp, such as lambda calculus, anonymous functions, first-class functions, and closures are also present in many other languages, such as Python and JavaScript, which are both very widely used. I’ve had orders of magnitude more opportunities to play with such features in Python and JS coding for both professional and personal work.
Of course, prefix notation seems to be quite a distinguishing feature of the Lisp family of languages, but that was not mentioned.
The unmatched parenthesis here is delightfully ironic, and perhaps intentionally sarcastic?
There’s a scripting language for writing games to played in the program Ludii where something like Tic-Tac-Toe apparently looks like
(game "Tic-Tac-Toe"
(players 2)
(equipment
{
(board (square 3))
(piece "Disc" P1)
(piece "Cross" P2)
}
)
(rules
(play (move Add (to (sites Empty))))
(end (if (is Line 3) (result Mover Win)))
)
)
Wow, that looks really interesting. I wonder if such a language could be helpful for implementing that variant server that people are working.
I checked their description of Go found here: https://ludii.games/lud/games/Go.lud
Here the key parts:
(define "CaptureSurroundedPiece"
(enclose
(from (last To))
Orthogonal
(between
if:("IsEnemyAt" (between))
(apply
(and
(addScore Mover 1)
(remove (between))
)
)
)
)
)
(game "Go"
(players 2)
(equipment {
(board <Board> use:Vertex)
(piece "Marker" Each)
})
(rules
(meta (no Repeat))
(play
(or
(do
(move Add
(to (sites Empty))
(then "CaptureSurroundedPiece")
)
ifAfterwards:("HasFreedom" Orthogonal)
)
(move Pass)
)
)
(end
(if (all Passed)
(byScore {
(score P1 (+ (score P1) (size Territory P1)))
(score P2 (+ (score P2) (size Territory P2)))
})
)
)
)
)
However, it seems a bit overly simplified for something that appears to describe a version of territory rules with a basic superko rule. It seems to lack an explicit description of removing dead stones from territory, or even determining which stones are dead, unless all of that complexity is hidden away into the definition of territory.
Yeah I think it might be, I think a lot of the keywords hide a bunch of complexity possibly to make it easier for community contributions of .lud files.
The language reference is supposed to go into horrendous detail ^^
Things like “CaptureSurroundedPiece” are defined elsewhere, this one at the top of the Go file
(define "CaptureSurroundedPiece"
(enclose
(from (last To))
Orthogonal
(between
if:("IsEnemyAt" (between))
(apply
(and
(addScore Mover 1)
(remove (between))
)
)
)
)
)
which I think the addScore
is probably counting points for removed stones.
There does seem to be some notion of territory in that (page 246)
and then in other places it can calculate liberties and groups and various things. So maybe it can calculate a “group” of empty points or something, and then find out what it’s adjacent to?