¿Cuáles son las diferencias entre dcy bccalculadoras?
¿Cuándo debo usar dcy cuándo bc?
command-line
bc
calculator
sintagma
fuente
fuente

exprmuy a menudo para cálculos simples en la línea de comandos y en los scripts.Respuestas:
dcEs una herramienta muy arcaica y algo más antigua quebc. Para citar la página de Wikipedia :La sintaxis es una notación de pulido inverso, lo que básicamente significa que los argumentos (es decir, los números) vienen primero seguidos por el operador. Un ejemplo básico del
dcuso es:Donde
pse requiere para imprimir el resultado del cálculo.bcpor otro lado usa la notación infija más familiar y por lo tanto es más intuitiva de usar. Aquí hay un ejemplo debcuso:¿Cuál usar?
bcestá estandarizado por POSIX y probablemente sea el más portátil de los dos (al menos en los sistemas modernos). Si está haciendo un trabajo de calculadora manual, definitivamente es la opción (a menos que sea un poco masoquista).dcSin embargo, todavía puede tener sus usos, aquí hay un caso en el que la notación de pulido inverso es útil. Imagine que tiene un programa que genera una secuencia de números que desea sumar, por ejemplo:Hacer esto
dces muy simple (al menos con implementaciones modernas donde cada operador puede tomar más de dos números) ya que solo tiene que agregar un+pa la secuencia, por ejemplo:Pero con
bcesto es más complejo, ya que no solo necesitamos poner un+entre cada número y asegurarnos de que todo esté en la misma línea, sino también asegurarnos de que haya una nueva línea al final:fuente
gen_numsejemplo en un uso terriblemente complejobc. Se podría simplificarse a:gen_nums | paste -sd+ | bcbcera solo una herramienta front-end que compilaba labcnotación a la notación dedcy la canalizabadcpara obtener el resultado. En FreeBSD todavía existe la-cbanderabccon la que aún puede compilar ladcnotación. For exampleecho '3 * 4' | bc` es igual aecho '3 * 4' | bc -c | dc. Ver el linux.die.net/man/1/bc y freebsd.org/cgi/man.cgi?query=bc&sektion=1dcestá usando? En Ubuntu 14.04 y OS X, el+operador siempre opera con exactamente dos valores fuera de la piladcuso:gen_nums_nonnegative | dc -e '0 0 [+?z1<m]dsmxp'. Este scriptdclee y agrega números uno por uno en bucle y luego imprime el resultado. Ver la nota sobre números negativos.bc -chace algo extraño y diferente (y la-cbandera no está documentada). Si trato de canalizarlodc, obtengo un montón de errores (y la salida sin canalizardces muy críptica@iK3:K4:*W@r\n@i).Una diferencia básica entre los dos es que
dcusa la notación polaca inversa . Requiere comandos explícitos incluso para producir una salida.Puede agregar dos enteros
bcdiciendo:y produciría
6en una línea por sí mismo. Sin embargo, endctendrías que decir:También puede hacer cosas muy divertidas usando
dc, por ejemplo, consulte mi respuesta aquí para producirutilizando
dc.fuente
corriente continua antes de Cristodces una calculadora mientras quebces un lenguaje real. Ver sus páginas de manual.Realmente depende de lo que finalmente quieras hacer matemáticamente. Algunas operaciones no son posibles usando
dc. He usado ambos a lo largo de los años además de varias otras herramientas de calculadora de línea de comandos. Consulte " Solucionador de expresiones de línea de comando? " Para ver algunos ejemplos adicionales.fuente
dcser una calculadora de notación polaca inversa y desde siempre he utilizado HP inversa calculadoras de notación polaca en realidad prefieren usardcabc, pero yo diría que ambos son usados en cualquier momento todavía es necesario realizar un cálculo matemático complejo. A menudo los uso para convertir números en blanco y negro de base 10 a base 16 y base 2. Pero los he usado para contar columnas en datos tabulares también desde un script AWK.bcera un lenguaje en el sentido de que lo hacíadcamigable para los humanos, no es que fuera más poderoso. En estos días, las aplicaciones comparten bibliotecas, perobcse llamaba un idioma ydcuna calculadora porquedchacía matemáticas ybchablaba de matemáticasdc. Aquí hay unamanpágina anterior : se ha desarrollado un lenguaje llamadoBC[1] que acepta programas escritos en lenguajes de nivel superior y compila resultados que DC interpreta. Algunos de los comandos descritos a continuación fueron diseñados para la interfaz del compilador y no son fáciles de manipular por un usuario humano.dcque también es un idioma. por ejemplo codegolf.stackexchange.com/a/47921/11259En mi humilde opinión y en la menor cantidad de palabras posible, GNU dc difiere de GNU bc en 3 formas:
1) Si la biblioteca matemática de bc no le preocupa, guardar tantas pulsaciones de teclas como sea posible (en palabras de Jan Łukasiewicz: una notación sin paréntesis) al hacer aritmética elemental, para concentrarse más en lo esencial y evitar distracciones.
2) En la línea de comandos de Microsoft Windows 7, GNU dc consume menos memoria (~ 320K) que GNU bc (~ 360K).
3) Mucho control granular en GNU dc que en GNU bc, por ejemplo, los comandos de pila y registro están ausentes de GNU bc.
La versión 1.07.1 win32 para ambos está en https://embedeo.org/ws/command_line/bc_dc_calculator_windows/
fuente