Source

PensarEnC++ / V1-Prologo.xml

The branch 'PensarEnC++' does not exist.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
<?xml  version="1.0" encoding="utf-8"?>
<!-- -*- sgml -*- -->

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

<preface
  xmlns:xi="http://www.w3.org/2001/XInclude"
  id="prologo">

  <title>Prólogo a la traducción</title>

  <para>
    Este trabajo de traducción ha sido realizado íntegramente por
    voluntarios. Le agradecemos que nos comunique cualquier error de
    traducción o transcripción en el texto. También será bienvenido si
    desea colaborar más activamente en la traducción. Ayúdenos a
    hacer de esta traducción un trabajo de calidad.
  </para>

  <para>
    Si desea saber más sobre este proyecto, obtener el segundo
    volumen, colaborar enviando informes de fallos, traduciendo o
    revisando, etc. visite <ulink
    url="http://arco.inf-cr.uclm.es/~david.villa/pensarC++.html">la
    página web</ulink><footnote><para><ulink
    url="http://arco.esi.uclm.es/~david.villa/pensarC++.html">http://arco.esi.uclm.es/~david.villa/pensarC++.html</ulink></para></footnote>
    o nuestro <ulink
    url="http://groups.google.com/group/pensar-en-cpp">grupo
    Google</ulink><footnote><para><ulink
    url="http://groups.google.com/group/pensar-en-cpp">
    http://groups.google.com/group/pensar-en-cpp</ulink></para></footnote>.
  </para>

  <para>
    El trabajo de traducción de este volumen prácticamente ha
    terminado, pero es posible que todavía queden muchos errores
    debido a que la revisión es trabajosa y contamos con pocos
    voluntarios. Le agradecemos su colaboración para corregir posibles
    erratas o fallos de cualquier tipo. En todo caso, el libro está
    completo y es perfectamente útil en su estado actual.
  </para>

  <para>
    Este prólogo no forma parte del libro original y ha sido incluido
    como reseña y referencia de los trabajos de traducción que se han
    llevado a cabo. Este capítulo no lo daré por terminado hasta que
    concluya el proceso de traducción y revisión de este volumen al
    menos. La traducción del Volumen 2 ya está en marcha.
  </para>


  <sect1>
    <title>Licencia y normas de distribución</title>

  <para>
    El equipo de traducción ha seguido al pié de la letra las
      directrices marcadas por Bruce Eckel, autor de
      <citetitle>Thinking in C++</citetitle> (el libro original), para
      la realización de traducciones y distribución de éstas.  Si
      utiliza o distribuye este texto debe cumplirlas y advertir de su
      existencia a los posibles lectores. El equipo de traducción
      elude toda responsabilidad por la violación (por parte de
      terceros) de las citadas directrices<footnote>
      <para>
	El texto original de estas directrices está accesible en la
	<ulink
	url="http://mindview.net/Books/TIJ/Translations.html">página web
	del autor</ulink>.
      </para>
    </footnote>.
    Se incluyen a continuación respetando el idioma original para
    evitar eventuales interpretaciones incorrectas:
  </para>

  <blockquote>
    <para>
      In my contract with the publisher, I maintain all electronic
      publishing rights to the book, including translation into foreign
      languages. This means that the publisher still handles
      negotiations for translations that are printed (and I have nothing
      directly to do with that) but I may grant translation rights for
      electronic versions of the book.
    </para>

    <para>
      I have been granting such rights for <quote>open-source</quote>
      style translation projects. (Note that I still maintain the
      copyright on my material.)  That is:
    </para>

    <itemizedlist>
      <listitem>
	<para>
	  You must provide a web site or other medium whereby people may
	  participate in the project (two easy possibilities are
	  http://www.egroups.com or http://www.topica.com).
    	</para>
      </listitem>
      <listitem>
	<para>
	  You must maintain a downloadable version of the partially or
	  fully translated version of the book.
	</para>
      </listitem>
      <listitem>
	<para>
	  Someone must be responsible for the organization of the
	  translation (I cannot be actively involved - I don't have the
	  time).
	</para>
      </listitem>
      <listitem>
	<para>
	  There should only be one language translation project for each
	  book. We don't have the resources for a fork.
	</para>
      </listitem>
      <listitem>
	<para>
	  As in an open-source project, there must be a way to pass
	  responsibility to someone else if the first person becomes too
	  busy.
	</para>
      </listitem>
      <listitem>
	<para>
	  The book must be freely distributable.
	</para>
      </listitem>
      <listitem>
	<para>
	  The book may be mirrored on other sites.
	</para>
      </listitem>
      <listitem>
	<para>
	  Names of the translators should be included in the translated
	  book.
    	</para>
      </listitem>
    </itemizedlist>
  </blockquote>
  </sect1>

  <sect1>
    <title>Tecnicismos</title>

    <para>
      Se han traducido la mayor parte de los términos específicos
      tanto de orientación a objetos como de programación en
      general. Para evitar confusiones o ambigüedades a los lectores
      que manejen literatura en inglés hemos incluido entre paréntesis
      el término original la primera vez que aparece traducido.
    </para>

    <para>
      Para traducir tecnicismos especialmente complicados hemos
      utilizado como referencia la segunda edición de <citetitle>El
      lenguaje de Programación C++</citetitle> (en castellano) así como
      la <ulink url="http://www.wikipedia.es">Wikipedia</ulink>.
    </para>

    <para>
      En contadas ocasiones se ha mantenido el término original en
      inglés. En beneficio de la legibilidad, hemos preferido no hacer
      traducciones demasiado forzadas ni utilizar expresiones que
      pudieran resultar desconocidas en el argot o en los libros
      especializados disponibles en castellano. Nuestro propósito es
      tener un libro que pueda ser comprendido por
      hispano-hablantes. Es a todas luces imposible realizar una
      traducción rigurosa acorde con las normas lingüísticas de la
      RAE, puesto que, en algunos casos, el autor incluso utiliza
      palabras de su propia invención.
    </para>
  </sect1>

  <sect1>
    <title>Código fuente</title>
    <para>
      Por hacer
    </para>
  </sect1>


  <sect1>
    <title>Producción</title>
    <!--
    Herramientas utilizadas en la traducción, generación de
    resultados y figuras
    -->
    <para>
      Todo el proceso de traducción, edición, formato y tipografía ha
      sido realizado íntegramente con software libre. Todo el software
      utilizado está disponible en la distribución Debian GNU/Linux,
      que es la que se ha utilizado principalmente para la
      actualización y mantenimiento de los documentos obtenidos como
      resultado.
    </para>

    <para>
      El texto ha sido escrito en el lenguaje de marcado DocBook versión
      4.5 en su variante XML. Cada capítulo está contenido en un fichero
      independiente y todos ellos se incluyen en un fichero
      <quote>maestro</quote> utilizando XInclude.
    </para>

    <para>
      Debido a que muchos procesadores de DocBook no soportan
      adecuadamente la característica XInclude, se usa la herramienta
      <application>xsltproc</application><footnote><para><ulink
      url="http://xmlsoft.org/XSLT/xsltproc2.html">http://xmlsoft.org/XSLT/xsltproc2.html</ulink></para></footnote>
      para generar un único fichero XML que contiene el texto de todo
      el libro, y es ese fichero resultante el que se procesa.
    </para>


    <sect2>
      <title>Código fuente</title>

      <para>
	También se utiliza XInclude para añadir en su lugar el contenido
	de los ficheros de código fuente escritos en C++. De ese modo,
	el texto de los listados que aparecen en el libro es idéntico a
	los ficheros C++ que distribuye el autor. De ese modo, la
	edición es mucha más limpia y sobretodo se evitan posibles
	errores de transcripción de los listados.
      </para>

      <para>
	Utilizando un pequeño programa escrito en lenguaje
	Python<footnote><para><filename>./utils/fix_includes.py</filename></para></footnote>,
	se substituyen los nombres etiquetados de los ficheros por la
	sentencia XInclude correspondiente:
      </para>

      <programlisting>
	//: V1C02:Hello.cpp
      </programlisting>

      <para>
	pasa a ser:
      </para>


<programlisting>
&lt;example>
  &lt;title>C02/Hello.cpp&lt;/title>
  &lt;programlisting language="C++"&gt;
    &lt;xi:include parse="text" href="./code_v1/C02/Hello.cpp"/>
  &lt;/programlisting&gt;
&lt;/example>
</programlisting>


      <para>
	Una ver realizada esta substitución, se utiliza de nuevo
	<command>xsltproc</command> para montar tanto el texto como los
	listados en un único fichero XML.
      </para>
    </sect2>

    <sect2>
      <title>Convenciones tipográficas</title>

      <itemizedlist>
	<listitem>
	  <para>
	    Palabras reservadas: <kw>struct</kw>
	  </para>
	</listitem>
	<listitem>
	  <para>
	    Código fuente: <code>printf("Hello world");</code>
	  </para>
	</listitem>
	<listitem>
	  <para>
	    Nombres de ficheros: <filename>fichero.cpp</filename>
	  </para>
	</listitem>
	<listitem>
	  <para>
	    Aplicación o fichero binario: <code>make</code>
	  </para>
	</listitem>
	<listitem>
	  <para>
	    Entrecomillado: <quote>upcasting</quote>
	  </para>
	</listitem>
      </itemizedlist>
    </sect2>

    <sect2>
      <title>Esquemas y diagramas</title>

      <para>Los dibujos y diagramas originales se han rehecho en
	formato <filename>.svg</filename> usando la herramienta
	<application>inkscape</application><footnote><para><ulink
	url="http://inkscape.org/">http://inkscape.org/</ulink></para></footnote>. A
	partir del fichero fuente <filename>.svg</filename> se generan
	versiones en formato <filename>.png</filename> para la versión
	HTML y <filename>.pdf</filename> para la versión PDF.
      </para>
    </sect2>

    <sect2>
      <title>Generación de productos</title>

      <para>
	A partir del documento completo en formato DocBook se generan
	dos resultados distintos;
      </para>

      <variablelist>
	<varlistentry>
	  <term><ulink
	  url="http://arco.esi.uclm.es/~david.villa/pensar_en_C++/products/vol1/vol1.html">HTML
	  en una sola página</ulink></term>
	  <listitem>
	    <para>
	      Una página web XHTML. Para ello se utiliza también la
	      herramienta <command>xsltproc</command> aplicando hojas
	      de estilo XSLT que pueden encontrarse en el repositorio
	      de fuentes del proyecto. Estas plantillas son
	      modificaciones de las del proyecto de documentación del
	      programa <quote>The Gimp</quote>, que tienen licencia
	      GPL.
	    </para>

	    <para>
	      Para el coloreado de los listados de código fuente se ha
	      utilizado el programa <command>highlight</command>. Para
	      ello, un pequeño programa Python marca los listados para su
	      extracción, a continuación se colorean y por último se vuelven
	      a insertar en la página HTML.
	    </para>

	  </listitem>
	</varlistentry>
	<varlistentry>
	  <term><ulink
	  url="http://arco.inf-cr.uclm.es/~david.villa/pensar_en_C++/products/vol1/index.html">HTML
	  (una página por sección)</ulink></term>
	  <listitem>
	    <para>
	      Un conjunto de páginas XHTML. Automáticamente se generan
	      enlaces para navegar por el documento y tablas de
	      contenidos.
	    </para>
	  </listitem>
	</varlistentry>

	<varlistentry>
	  <term><ulink
	  url="http://arco.inf-cr.uclm.es/~david.villa/pensar_en_C++/products/Volumen1.pdf">PDF</ulink></term>
	  <listitem>
	    <para>
	      Un documento en formato PDF utilizando la aplicación
	      <application>dblatex</application><footnote><para><ulink
	      url="http://dblatex.sourceforge.net/">http://dblatex.sourceforge.net/</ulink></para></footnote>. Ha
	      sido necesario crear una hoja de estilo específicamente
	      para manipular el formato de página, títulos e
	      índices. Para el resalte de sintaxis de los listados se
	      ha utilizado el paquete LaTeX <ulink
	      url="http://www.ctan.org/tex-archive/macros/latex/contrib/listings/">listings</ulink>.
	    </para>
	  </listitem>
	</varlistentry>
      </variablelist>
    </sect2>
  </sect1>


  <sect1>
    <title>El equipo</title>

    <para>
      Las siguientes personas han colaborado en mayor o menor medida en
      algún momento desde el comienzo del proyecto de traducción de
      <citetitle>Pensar en C++</citetitle>:
    </para>

  <itemizedlist>
    <listitem>
      <para>
David Villa Alises (coordinador)  <email>dvilla#gmx.net</email>
      </para>
    </listitem>
    <listitem>
      <para>
Míguel Ángel García <email>miguelangel.garcia#gmail.com</email>
      </para>
    </listitem>
    <listitem>
      <para>
Javier Corrales García <email>jcg#damir.iem.csic.es</email>
      </para>
    </listitem>
    <listitem>
      <para>
Bárbara Teruggi <email>bwire.red#gmail.com</email>
      </para>
    </listitem>
    <listitem>
      <para>
Sebastián Gurin
      </para>
    </listitem>
    <listitem>
      <para>
Gloria Barberán González  <email>globargon#gmail.com</email>
      </para>
    </listitem>
    <listitem>
      <para>
Fernando Perfumo Velázquez  <email>nperfumo#telefonica.net</email>
      </para>
    </listitem>
    <listitem>
      <para>
José María Gómez <email>josemaria.gomez#gmail.com</email>
      </para>
    </listitem>
    <listitem>
      <para>
David Martínez Moreno <email>ender#debian.org</email>
      </para>
    </listitem>
    <listitem>
      <para>
Cristóbal Tello <email>ctg#tinet.org</email>
      </para>
    </listitem>
    <listitem>
      <para>
Jesús López Mollo (pre-Lucas)
      </para>
    </listitem>
    <listitem>
      <para>
José María Requena López (pre-Lucas)
      </para>
    </listitem>
    <listitem>
      <para>
Javier Fenoll Rejas (pre-Lucas)
      </para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1>
    <title>Agradecimientos</title>
    <para>
      Por hacer: LuCAS, spanglish@uma.es, docbook-ayuda@es.tldp.org
    </para>
  </sect1>

  <sect1>
    <title>Utilidades</title>

    <formalpara role="html">
      <title>Validación HTML/CSS</title>
      <para role="validate"/>
    </formalpara>

  </sect1>
</preface>
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.