PensarEnC++ / master_Volumen2.xml

The branch 'PensarEnC++' does not exist.
<?xml  version="1.0" encoding="utf-8"?>

<!--  Documento maestro, NO MODIFICAR -->

<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
                 "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">

<book
  xmlns:xi="http://www.w3.org/2001/XInclude"
  lang="es"
  id="pecpp_v2">

  <bookinfo>
    <title>Pensar en C++ <parameter>(Volumen 2)</parameter></title>

    <subtitle>
      Traducción (INACABADA) del libro <emphasis>Thinking in C++,
	Volumen 2</emphasis>
    </subtitle>

    <authorgroup>
      <author><firstname>Bruce</firstname><surname>Eckel</surname>
      <affiliation><orgname>Mindview, Inc.</orgname></affiliation>
      </author>
    </authorgroup>

    <copyright>
      <year>2004</year>
      <holder>Bruce Eckel</holder>
    </copyright>


  </bookinfo>

  <toc />

  <xi:include href="V2-Intro.ok.xml"/>

  <part>
    <!-- Building Stable Systems -->
    <title>Construcción de Sistemas estables</title>

    <partintro>
      <!-- Software engineers spend about as much time validating code
      as they do creating it. Quality is or should be the goal of every
      programmer, and one can go a long way towards that goal by
      eliminating problems before they happen. In addition, software
      systems should be robust enough to behave reasonably in the
      presence of unforeseen environmental problems.  -->
      <highlights>
	<para>
	  Los ingenieros de software gastan tanto tiempo en validar código como el que
	  tardan en crearlo. La calidad es, o debería ser, el objetivo de todo
	  programador, y se puede recorrer un largo camino hacia ese objetivo eliminando
	  problemas antes de que aparezcan. Además, los sistemas software deberían ser lo
	  suficientemente robustos como para comportarse razonablemente en presencia de
	  problemas imprevistos.
	</para>
      </highlights>

      <!-- Exceptions were introduced into C++ to support sophisticated
      error handling without cluttering code with an inordinate amount
      of error-handling logic. Chapter 1 shows how proper use of
      exceptions can make for well-behaved software, and also introduces
      the design principles that underlie exception-safe code. In
      Chapter 2 we cover unit testing and debugging techniques intended
      to maximize code quality long before it's released. The use of
      assertions to express and enforce program invariants is a sure
      sign of an experienced software engineer. We also introduce a
      simple framework to support unit testing.  -->
      <para>
	Las excepciones se introdujeron en C++ para facilitar una
	gestión de errores sofisticada sin trocear el código con una
	innumerable cantidad de lógica de error. El Capítulo 1 explica
	cómo el uso apropiado de las excepciones puede hacer software
	FIXME:well-behaved, y también introduce los principios de diseño
	que subyacen al código seguro. En el Capítulo 2 cubrimos las
	pruebas unitarias y las técnicas de depuración que prevén
	maximizar la calidad del código antes de ser entregado. El uso
	de aserciones para expresar y reforzar las invariantes de un
	programa es una señal inequívoca de un ingeniero de software
	experimentado. También introducimos un entorno simple para dar
	soporte a las pruebas unitarias.
      </para>
    </partintro>

<!--
     <xi:include href="V2-C01.ok.xml"/>
     <xi:include href="V2-C02.ok.xml"/>
-->
  </part>

  <part>
    <!-- The Standard C++ Library -->
    <title>La librería Estándar de C++</title>

    <partintro>
      <highlights>
	<!-- Standard C++ not only incorporates all the Standard C
	libraries (with small additions and changes to support type
	safety), it also adds libraries of its own. These libraries are
	far more powerful than those in Standard C; the leverage you get
	from them is analogous to the leverage you get from changing
	from C to C++. -->
	<para>
	  El C++ Estándar no solo incorpora todas las librerías de
	  Estándar C (con pequeños añadidos y cambios para permitir
	  tipos seguros), también añade sus propias librerías. Estas
	  librerías son mucho más potentes que las de C. La mejora al
	  usarlas es análoga a la que se consigue al cambiar de C a C++.
	</para>
      </highlights>

      <!--
      This section of the book gives you an in-depth introduction to key
      portions of the Standard C++ library.
      -->
      <para>
	Esta sección del libro le da una introducción en profundidad a
	las partes clave de la librería Estándar de C++.
      </para>

      <!-- The most complete and also the most obscure reference to the
      full libraries is the Standard itself. Bjarne Stroustrup's The
      C++ Programming Language, Third Edition (Addison Wesley, 2000)
      remains a reliable reference for both the language and the
      library. The most celebrated library-only reference is The C++
      Standard Library: A Tutorial and Reference, by Nicolai Josuttis
      (Addison Wesley, 1999). The goal of the chapters in this part of
      the book is to provide you with an encyclopedia of descriptions
      and examples so that you'll have a good starting point for
      solving any problem that requires the use of the Standard
      libraries. However, some techniques and topics are rarely used and
      are not covered here. If you can't find it in these chapters,
      reach for the other two books; this book is not intended to
      replace those books but rather to complement them. In particular,
      we hope that after going through the material in the following
      chapters you'll have a much easier time understanding those
      books.
      -->
      <para>
	La referencia más completa y también la más oscura para las
	librerías es el propio Estándar. <citetitle>The C++
	Programming Language, Third Edition (Addison Wesley,
	2000)</citetitle> de <author><firstname>Bjarne</firstname>
	<surname>Stroustrup</surname></author> sigue siendo una
	referencia fiable tanto para el lenguaje como para la
	librería. La referencia más aclamada en cuanto a la librería
	es <citetitle>The C++ Standard Library: A Tutorial and
	Reference, by Nicolai Josuttis (Addison Wesley,
	1999)</citetitle>. El objetivo de los capítulos de esta parte
	del libro es ofrecer un catálogo de descripciones y ejemplos
	para que disponga de un buen punto de partida para resolver
	cualquier problema que requiera el uso de las librerías
	Estándar. Sin embargo, algunas técnicas y temas se usan poco y
	no se tratan aquí. Si no puede encontrar algo en estos
	capítulos, mire en los dos libros que se citan anteriormente;
	esto libro no pretende reemplazarlos, más bien
	completarlos. En particular, esperamos que después de consular
	el material de los siguientes capítulos pueda comprender mejor
	esos libros.
      </para>

      <!-- You will notice that these chapters do not contain exhaustive
      documentation describing every function and class in the Standard
      C++ library. We've left the full descriptions to others; in
      particular to P.J. Plauger's Dinkumware C/C++ Library Reference
      at http://www.dinkumware.com. This is an excellent online source
      of standard library documentation in HTML format that you can keep
      resident on your computer and view with a Web browser whenever you
      need to look something up. You can view this online or purchase it
      for local viewing. It contains complete reference pages for the
      both the C and C++ libraries (so it's good to use for all your
      Standard C/C++ programming questions). Electronic documentation is
      effective not only because you can always have it with you, but
      also because you can do an electronic search.  -->
      <para>
	El lector notará que estos capítulos no contienen
	documentación exhaustiva describiendo cada función o clase del
	la Librería Estándar C++. Hemos dejado las descripciones
	completas a otros; en particular a <ulink
	url="http://www.dinkumware.com"><citetitle>Dinkumware C/C++
	Library Reference</citetitle></ulink> de
	<author><firstname>P.J.</firstname> <surname>
	Plauger</surname></author>. Esta es una excelente
	documentación que puede puede ver con un navegador web cada
	vez que necesite buscar algo. Puede verla on-line o comprarla
	para verla en local. Contiene una referencia completa para las
	librerías de C y C++ (de modo que es buena para cualquier
	cuestión de programación en C/C++ Estándar). La documentación
	electrónica no sólo es efectiva porque pueda tenerla siempre a
	mano, sino porque también puede hacer búsquedas electrónicas.
      </para>

      <!-- When you're actively programming, these resources should
      satisfy your reference needs (and you can use them to look up
      anything in this chapter that isn't clear to you). Appendix A
      lists additional references.  -->
      <para>
	Cuando usted está programando activamente, estos recursos
	deberían satisfacer sus necesidades de referencias (y puede
	usarlas para buscar algo de este capítulo que no tenga
	claro). El Apéndice A incluye referencias adicionales.
      </para>

      <!-- The first chapter in this section introduces the Standard C++
      string class, which is a powerful tool that simplifies most of the
      text-processing chores you might have. Chances are, anything you'
      ve done to character strings with lines of code in C can be done
      with a member function call in the string class.  -->
      <para>
	El primer capítulo de esta sección introduce la clase
	<classname>string</classname> del Estándar C++, que es una
	herramienta potente que simplifica la mayoría de las tareas de
	procesamiento de texto que podría tener que realizar. Casi
	cualquier cosas que tenga hecho para cadenas de caracteres en C
	puede hacerse con una llamada a un método de la clase
	<classname>string</classname>.
      </para>

      <!-- Chapter 4 covers the iostreams library, which contains
      classes for processing input and output with files, string
      targets, and the system console.  -->
      <para>
	El capítulo 4 cubre la librería <literal>iostreams</literal>,
	que contiene clases para procesar entrada y salida con ficheros,
	cadenas, y la consola del sistema.
      </para>

      <!-- Although Chapter 5, 'Templates in Depth,' is not explicitly
      a library chapter, it is necessary preparation for the two
      chapters that follow. In Chapter 6 we examine the generic
      algorithms offered by the Standard C++ library. Because they are
      implemented with templates, these algorithms can be applied to any
      sequence of objects. Chapter 7 covers the standard containers and
      their associated iterators. We cover algorithms first because they
      can be fully explored by using only arrays and the vector
      container (which we have been using since early in Volume 1). It
      is also natural to use the standard algorithms in connection with
      containers, so it's good to be familiar with the algorithms
      before studying the containers.  -->
      <para>
	Aunque el Capítulo 5: <quote>Las plantillas a fondo</quote> no es
	explícitamente un capítulo de la librería, es una preparación
	necesaria para los dos siguientes capítulos. En el capítulo 6
	examinaremos los algoritmos genéricos que ofrece la librería
	Estándar C++. Como están implementados con plantillas, esos
	algoritmos se pueden aplicar a cualquier secuencia de
	objetos. El Capítulo 7 cubre los contenedores estándar y sus
	iteradores asociados Vemos los algoritmos primero porque se
	pueden utilizar usando únicamente arrays y el contenedor
	<classname>vector</classname> (que vimos en el Volumen
	1). También es normal el uso de algoritmos estándar junto con
	contenedores, y es bueno que le resulten familiares antes de
	estudiar los contenedores.
      </para>
    </partintro>

<!--
     <xi:include href="V2-C03.ok.xml"/>
     <xi:include href="V2-C04.ok.xml"/>
     <xi:include href="V2-C05.ok.xml"/>
-->
     <xi:include href="V2-C06.ok.xml"/>
<!-- <xi:include href="V2-C07.ok.xml"/> -->
  </part>

  <part>
    <!-- Special Topics -->
    <title>Temas especiales</title>

    <partintro>
      <!-- The mark of a professional appears in his or her attention to
      the finer points of the craft. In this section of the book we
      discuss advanced features of C++ along with development techniques
      used by polished C++ professionals.  -->
      <highlights>
	<para>
	  La marca de un profesional aparece en su atención a los
	  detalles más finos del oficio. En esta sección del libro veremos características
	  avanzadas de C++ junto con técnicas de desarrollo usadas por
	  profesionales brillantes de C++.
	</para>
      </highlights>

      <!-- Sometimes you may need to depart from the conventional wisdom
      of sound object-oriented design by inspecting the runtime type of an
      object. Most of the time you should let virtual functions do that
      job for you, but when writing special-purpose software tools, such
      as debuggers, database viewers, or class browsers, you'll need to
      determine type information at runtime. This is where the runtime
      type identification (RTTI) mechanism becomes useful. RTTI is the
      topic of Chapter 8. -->
      <para>
	A veces necesita salir de los convencionalismos que suenan a
	diseño orientado a objetos, inspeccionando el tipo de un objeto
	en tiempo de ejecución. La mayoría de las veces debería dejar
	que las funciones virtuales hagan ese trabajo por usted, pero
	cuando escriba herramientas software para propósitos especiales,
	tales como depuradores, visualizadores de bases de datos, o
	navegadores de clases, necesitará determinar la información de
	tipado en tiempo de ejecución. Ahí es cuando el mecanismo de identificación
	de tipo en tiempo de ejecución (RTTI) resulta útil. RTTI es el
	tema del Capítulo 8.
      </para>

      <!-- Multiple inheritance has taken abuse over the years, and some
      languages don't even support it. Nonetheless, when used properly,
      it can be a powerful tool for crafting elegant, efficient code. A
      number of standard practices involving multiple inheritance have
      evolved over the years, which we present in Chapter 9. -->
      <para>
	La herencia múltiple ha sido maltratado a lo largo de los años,
	y algunos lenguajes incluso no la permiten. No obstante, cuando
	se usa adecuadamente, puede ser una herramienta potente para
	conseguir código eficiente y elegante. Un buen número de
	prácticas estándar que involucran herencia múltiple han
	evolucionado con el tiempo; las veremos en el Capítulo 9.
      </para>

      <!-- Perhaps the most notable innovation in software development
      since object-oriented techniques is the use of design patterns. A
      design pattern describes solutions for many of the common problems
      involved in designing software, and can be applied in many
      situations and implemented in any language. In chapter 10 we
      describe a selected number of design patterns and implement them in
      C++.  -->
      <para>
	Quizás la innovación más notable en el desarrollo de software
	desde las técnicas de orientación a objetos es el uso de los
	patrones de diseño. Un patrón de diseño describe soluciones para
	muchos problemas comunes del diseño de software, y se puede
	aplicar a muchas situaciones e implementación en cualquier
	lenguaje. En el Capítulo 10 describiremos una selección de
	patrones de diseño y los implementaremos en C++.
      </para>

      <!-- Chapter 11 explains the benefits and challenges of
      multithreaded programming. The current version of Standard C++ does
      not specify support for threads, even though most operating systems
      provide them. We use a portable, freely available threading library
      to illustrate how C++ programmers can take advantage of threads to
      build more usable and responsive applications. -->
      <para>
	El Capítulo 11 explica los beneficios y desafíos de la
	programación multihilo. La versión actual de C++ Estándar no
	especifica soporte para hilos, aunque la mayoría de los sistema
	operativos los ofrecen. Usaremos un librería portable y
	disponible libremente para ilustrar cómo los programadores
	pueden sacar provecho de los hilos para construir aplicaciones
	más usables y receptivas.
      </para>
    </partintro>

<!-- <xi:include href="V2-C08.ok.xml"/>
     <xi:include href="V2-C09.ok.xml"/>
     <xi:include href="V2-C10.ok.xml"/>
     <xi:include href="V2-C11.ok.xml"/>
 -->
  </part>


<!-- <xi:include href="V2-ApenA.ok.xml"/> -->
<!-- <xi:include href="V2-ApenB.ok.xml"/> -->


</book>

<!--
.. Local Variables:
..  coding: utf-8
..  mode: flyspell
..  ispell-local-dictionary: "castellano8"
.. End:
-->
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.