
A deeper introduction to Unix DC - ben165
https://ben165.github.io/unix_dc/index.html
======
arexxbifs
Related fun fact: bc is a dc preprocessor[0].

[0]
[https://en.wikipedia.org/wiki/Bc_(programming_language)#Hist...](https://en.wikipedia.org/wiki/Bc_\(programming_language\)#History)

------
staycoolboy
I love reading examples of these "great-great-grandparent" applications hidden
in /bin. I've used dc in shell scripts for years, but for the simplest of
simple computations (e.g., automating FDISK partitioning and doing sector
math). Had no idea it could do this.

TIL this and a cool CSS trick.

------
c0l0
dc is worth having installed because of this CLI gem alone:

    
    
        echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq" | dc
    

I've never tried to understand what's really going on to produce the result,
but also wouldn't really know where to start - maybe someone in HN's audience
can enlighten me? :)

~~~
em500
_dc_ and _bc_ are standard POSIX utils (and also part of busybox for embedded
systems) so for most unix-like systems they're installed by default unless you
take active measures to exclude them.

~~~
c0l0
POSIX.1-2017 describes the `dc` program as "excluded" from the standard; check
[https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xcu...](https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xcu_chap04.html)
for details.

Many GNU/Linux distros (at least Debian and RHEL) install neither `dc` nor
`bc` by default, afaik.

~~~
yjftsjthsd-h
> Many GNU/Linux distros (at least Debian and RHEL) install neither `dc` nor
> `bc` by default, afaik.

Yeah, I recently wrote a script that used bc and immediately discovered that
it didn't work on at least Arch Linux (and I think others, although I only
seem to have added it to the Arch ansible config...); conveniently, I only
needed the most trivial of calculations, so I just shifted to awk, which has
better default availability.

------
Hitton
Funny. Despite being long time Linux user this is the first time I remember
hearing about dc. I only knew bc.

~~~
m463
I have a way of looking at this. More people are familiar with apples than
okra. (there's a reason for that)

------
seryoiupfurds

        [Monte Carlo approximation of Pi.
        Registers:
        u - routine : execute i if sum of squares less than 1
        i - routine : increment register x
        z - routine : iterator - execute u while n > m++
        r - routine : RANDU PRNG
        m - variable: number of samples
        x - variable: number of samples inside circle
        s - variable: seed for r
        k - variable: scale for division
        n - variable: number of iterations (user input)
        ]c
        [lrx 2^ lrx 2^ + 1>i]su
        [lx 1+ sx]si
        [lu x lm 1+ d sm ln>z]sz
        [0k ls 65539 * 2 31^ % d ss lkk 2 31 ^ /]sr
        ? sn
        5dksk
        1 ss
        lzx
        lx lm / 4*
        p
    
        $ dc pi.dc
        100000
        3.13372

------
azizsaya
Aah! command I encounter and ignore when I mistype cd

~~~
yjftsjthsd-h
At least it's not sl ;)

------
082349872349872
6581840dnP

~~~
kps

        156 is unimplemented
    

Is that a gnuism?

~~~
082349872349872
Yes, sorry. Try:

    
    
        6582352
        dpP
    

(at least we now know the error is old enough to be in octal)

