3 ms·
Implementing a bignum calculator – Rob Pike [video]
- Intermernet 12y agoRob 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 http://youtu.be/a9xAKttWgP4
- xkarga00 12y agoGithub repo: https://github.com/robpike/ivy https://github.com/robpike/ivy
- willvarfar 12y agoHe 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 :)
- raverbashing 12y ago> Python ints are arb precision Python 2 longs or Python 3 ints ;)
- willvarfar 12y agoAutomatic promotion from a 32-bit or 64-bit storage to arbitrary precision.
- pjmlp 12y agoLisp would be even better, as he would get the speed of compiled language.
- mseepgood 12y agoIn the video he says that he already implemented an APL interpreter in Lisp.
- arthurbrown 12y agoArbitrary precision is handled by https://golang.org/pkg/math/big/ https://golang.org/pkg/math/big/ He isn't implementing a bignum package, this is all about the APL interpreter.
- dsymonds 12y agoYes, but he wasn't trying to compute numbers. He was trying to build a calculator. There's a difference.
- lispm 12y agoor 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
- angersock 12y agoAh yes, but a small userbase!
- pkhagah 12y agoIf you're talking about userbase, I presume, Go should have less of a userbase than lisp.
- deeviant 12y agoPeople use lisp for something other than a programming discussion talking point?
- reportingsjr 12y agoThe message board that you posted this to. Written in Arc which is a dialect of lisp.
- deeviant 12y agoSo you mean they use it to create an application that allows them to... talk about lisp.
- tptacek 12y agoThe premise of this comment being that it hadn't occurred to Rob Pike that there were already arbitrary-precision calculators.
- zaphar 12y agoYou 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]
- xixixao 12y agoThis 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?
- xtacy 12y agoCould you explain why that snippet makes you decide that way?
- throwaway_99837 12y agoPseudocode (better). Notice the immutable everything and the brevity (i.e., vertical space saved). interactive := (name == "-") fd, err := interactive ? (os.Stdin, None) : os.Open(name) [And yes I understand that Go probably doesn't have tuple literals or a concept of 'None'].
- parktheredcar 12y agoDoes 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/ 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.
- arobertson 12y agoA couple links I have stashed: http://coderstv.com/ http://coderstv.com/ http://confreaks.com/ http://confreaks.com/ http://www.dotconferences.eu/ http://www.dotconferences.eu/ http://brikis98.blogspot.com/2014/05/must-see-tech-talks-for-every-programmer.html http://brikis98.blogspot.com/2014/05/must-see-tech-talks-for...
- parktheredcar 12y agoThese are some great resources! Thanks.
- deleted 12y ago[deleted]