Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Implementing a bignum calculator – Rob Pike [video] (youtube.com)
76 points by mseepgood on Dec 19, 2014 | hide | past | favorite | 25 comments


Rob mentions a video demonstrating the development of an APL version of Conway's Game Of Life. Pretty sure it's this one if anyone is interested: http://youtu.be/a9xAKttWgP4


Does anybody have suggestions for sources of software / computing / codecasting related videos similar to this? Something to put on in the background while working?

TOPLAP (http://toplap.org/) is a decent example of this but they are focused on audio/visual entertainment only.

Basically I'm looking for Twitch for programmers.



These are some great resources! Thanks.



This snippet from the implementation sheds some light on the origins of Go for me, the mindset from which it's born and why it isn't a language for me.

    interactive := false
    if name == "-" {
        interactive = true
        fd = os.Stdin
    } else {
        interactive = false
        fd, err = os.Open(name)
    }
Or do you think I am reading into it too much?


Could you explain why that snippet makes you decide that way?


He wants to compute some bignums, so he writes an APL interpreter in Go...

Now he is scratching his itch and making nice slides to boot.

However, it would have been simpler for him to have typed "python" at the commandline... Python ints are arb precision :)


The premise of this comment being that it hadn't occurred to Rob Pike that there were already arbitrary-precision calculators.


Arbitrary precision is handled by https://golang.org/pkg/math/big/

He isn't implementing a bignum package, this is all about the APL interpreter.


or GNU CLISP which not only has big ints, big ratios, big complex (like all Common Lisp implementations), but also big floats.

Big ratios:

    [2]> (/ 5723475972349572938475982734985723984759823749587 7239457928374598723984759237459723497598234)
    5723475972349572938475982734985723984759823749587/7239457928374598723984759237459723497598234
Big complex numbers:

    [4]> (* 572934759237495723482374957239475982374957239847523485 (sqrt -1))
    #C(0 572934759237495723482374957239475982374957239847523485)
Big float numbers:

    [8]> (SETF (EXT:LONG-FLOAT-DIGITS) 1000)
    1000
    [9]> (sqrt 2.0l0)
    1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727350138462309122970249248360558507372126441214970999358314132226659275055927557999505011527820605714701095599716059702745345968620147285174186408891986095523292304843087143214508397626036279952514079896872534L0


Ah yes, but a small userbase!


If you're talking about userbase, I presume, Go should have less of a userbase than lisp.


People use lisp for something other than a programming discussion talking point?


The message board that you posted this to. Written in Arc which is a dialect of lisp.


Once again, downvotes are leaned on in lieu of wit.


So you mean they use it to create an application that allows them to... talk about lisp.


So, the correct answer here would've been that Viaweb--Graham's company that later became Yahoo! Store--was done in Common Lisp. I'm not really aware of any other example of Common Lisp in a real commercial setting other than Mirai (which I think is dead nowadays anyway).

Graham later made Arc, the language in which HN is written. To the best of my knowledge Arc's only major project is in fact Hacker News.

So, essentially, yes, you're correct.


http://www.ptc.com/product/creo/elements

largely written in a few million lines of Lisp...


Yes, but he wasn't trying to compute numbers. He was trying to build a calculator. There's a difference.


You misattribute the motivation. He wants to play.

Implementing a BigNum calculator using APL concepts is one way to play. I do this all the time. I'll implement something that will never be in production somewhere or useful to anybody purely for the learning experience and challenge of it.

[EDIT: spelling]


Lisp would be even better, as he would get the speed of compiled language.


In the video he says that he already implemented an APL interpreter in Lisp.


> Python ints are arb precision

Python 2 longs or Python 3 ints ;)


Automatic promotion from a 32-bit or 64-bit storage to arbitrary precision.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: