+ All Categories
Home > Documents > Sp 0410003817

Sp 0410003817

Date post: 14-Jul-2015
Category:
Upload: willymaco
View: 36 times
Download: 0 times
Share this document with a friend

of 36

Transcript

NGEL COBO PATRICIA GMEZ DANIEL PREZ ROCO ROCHA

PHP y MySQLTecnologas para el desarrollo de aplicaciones web

V

ngel Cobo, Patricia Gmez, Daniel Prez y Roco Rocha, 2005No est permitida la reproduccin total o parcial de este libro, ni su tratamiento informtico, ni la transmisin de ninguna forma o por cualquier medio, ya sea electrnico, mecnico por fotocopia, por registro u otros mtodos, sin el permiso previo y por escrito de los titulares del Copyright. Ediciones Daz de Santos Internet: http//www.diazdesantos.es/ediciones E-mail: [email protected] ISBN: 84-7978-706-6 Depsito Legal: M. 27.919-2005 Fotocomposicin: P55 Servicios Culturales Diseo de cubierta: P55 Servicios Culturales Impresin: Fernndez Ciudad Encuadernacin: Rstica-Hilo Printed in Spain - Impreso en Espaa

VI

ndice

Agradecimientos .............................................................................................

VII

Prefacio

.............................................................................................

XVII

1. INTERNET Y LA PROGRAMACIN DE ORDENADORES ............. 1.1. INTRODUCCIN ............................................................................ 1.2. INTERNET ....................................................................................... 1.2.1. El servicio web ..................................................................... 1.2.2. Relacin cliente/servidor ...................................................... 1.2.3. Proceso de creacin y publicacin de pginas web ............. 1.2.4. Dinamismo e interactividad en las pginas web .................. 1.3. PROGRAMACIN DE ORDENADORES ..................................... 1.3.1. Tipos de lenguajes de programacin .................................... 1.4. PROGRAMACIN EN INTERNET ............................................... 1.4.1. Programacin del lado del cliente vs programacin del lado del servidor ................................................................... 1.4.2. Tecnologas de programacin del lado del cliente ................ 1.4.3. Tecnologas de programacin del lado del servidor ............. 2. OPEN SOURCE Y SOFTWARE LIBRE .................................................. 2.1. INTRODUCCIN ............................................................................ 2.1.1 Qu es open source? ..........................................................

1 1 3 4 5 7 8 9 11 15 16 18 20 25 25 27

IX

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

2.2.

2.3. 2.4.

2.5.

2.6.

BREVE RESEA CRONOLGICA ............................................... 2.2.1. Primera etapa, antecedentes ................................................. 2.2.2. Segunda etapa, desarrollo .................................................... 2.2.3. Tercera etapa, expansin ..................................................... LA CORRIENTE OPEN SOURCE Y SOFTWARE LIBRE, FILOSOFA Y CARACTERSTICAS ............................................. LICENCIAS ...................................................................................... 2.4.1. Licencias propietarias .......................................................... 2.4.2. Licencias libres .................................................................... 2.4.3. Licencias semilibres ............................................................. SITUACIN ACTUA DEL SOFTWARE OPEN SOURCE ............ 2.5.1. Software open source, aplicaciones para todo .................... 2.5.2. Comunidades open source ................................................... 2.5.3. Usuarios de software open source ....................................... VENTAJAS, INCONVENIENTES Y PERSPECTIVAS DE FUTURO ........................................................................................... 2.6.1. Ventajas ................................................................................ 2.6.2. Inconvenientes ...................................................................... 2.6.3 Perspectivas de futuro ..........................................................

28 28 28 29 31 35 36 37 38 40 40 47 48 51 51 52 52

3. CREACIN DE PGINAS WEB MEDIANTE EL LENGUAJE HTML ................................................................................. 3.1. INTRODUCCIN ............................................................................ 3.1.1. Definicin de HTML ........................................................... 3.2. HISTORIA DE HTML ..................................................................... 3.3. SOFTWARE NECESARIO PARA TRABAJAR CON HTML ....... 3.3.1. Navegadores......................................................................... 3.3.2. Editores ................................................................................ 3.4. ESTRUCTURA DE UNA PGINA WEB ....................................... 3.4.1. Complementos a la estructura bsica: metatags .................. 3.5. CARACTERSTICAS GENERALES DEL LENGUAJE Y SINTAXIS DE SUS COMANDOS .............................................. 3.5.1. Caracteres especiales ........................................................... 3.6. COMANDOS BSICOS .................................................................. 3.6.1. Comandos de cabeceras para definicin de ttulos y secciones ........................................................................... 3.6.2. Comandos de cambio de estilo de texto ............................... 3.6.3. Bloques de texto y prrafos ................................................. 3.6.4. Comandos para la generacin de listas ................................ X

55 55 57 58 60 60 60 62 62 66 67 68 68 68 69 71

NDICE

3.7.

3.8.

3.6.5. Creacin de Tablas ............................................................... 3.6.6. Insercin de imgenes .......................................................... 3.6.7. Tratamiento del color ........................................................... 3.6.8. Enlaces o hipervnculos ....................................................... MARCOS O FRAMES ...................................................................... 3.7.1. Construccin de pginas con marcos ................................... 3.7.2. Enlaces en pginas con marcos ............................................ FORMULARIOS ..............................................................................

76 79 81 82 85 85 87 90 99 99 100 102 108 111 111 112 113 113 114 119 120 124 137 137 139 141 143 144 145 146 147 153

4. INTRODUCCIN A PHP .......................................................................... 4.1. EL LENGUAJE PHP ........................................................................ 4.2. ORGENES Y EVOLUCIN DEL LENGUAJE ............................. 4.3. PROGRAMACIN EN PHP: PRIMEROS EJEMPLOS ................ 4.4. FORMAS DE INCRUSTAR EL CDIGO PHP EN LOS DOCUMENTOS HTML ................................................... 4.5. ESCRITURA DEL CDIGO FUENTE PHP .................................. 4.5.1. Aspectos sobre la sintaxis del lenguaje ................................ 4.5.2. Insercin de comentarios en el cdigo ................................. 4.6. ELEMENTOS BSICOS DEL LENGUAJE ................................... 4.6.1. Tipos de datos ...................................................................... 4.6.2. Variables .............................................................................. 4.6.3. Constantes ............................................................................ 4.6.4. Cadenas de caracteres y variables ....................................... 4.6.5. Operadores ........................................................................... 5. PHP Y LOS FORMULARIOS DE HTML ............................................... 5.1. FORMULARIOS DE HTML ........................................................... 5.2. ENVO DE DATOS A PROGRAMAS PHP .................................... 5.3. MTODOS DE ACCESO A LAS VARIABLES DEL FORMULARIO........................................................................ 5.4. MTODOS DE TRANSFERENCIA DE DATOS EN FORMULARIOS........................................................................ 5.4.1. Mtodo GET ........................................................................ 5.4.2. Mtodo POST ...................................................................... 5.4.3. Diferencias entre ambos mtodos ........................................ 5.5. TRANSFERENCIA DE DATOS AL SCRIPT DESDE EL URL ............................................................................................. 5.6. TRATAMIENTO DE FORMULARIOS CON LISTAS DE SELECCIN MLTIPLE .......................................................... XI

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

6. SENTENCIAS DE CONTROL ................................................................. 6.1. INTRODUCCIN ............................................................................ 6.2. ESTRUCTURAS CONDICIONALES ............................................ 6.2.1. Sentencia IF ......................................................................... 6.2.2. La clusula ELSE ................................................................ 6.2.3. Sentencia If ... ELSEIF ... ELSE ......................................... 6.2.4. Sintaxis alternativa de las sentencias IF .............................. 6.2.5. Estructuras condicionales SWITCH ... CASE .................... 6.3. ESTRUCTURAS ITERATIVAS ...................................................... 6.3.1. Sentencia WHILE ................................................................ 6.3.2. Sentencia DO ... WHILE ..................................................... 6.3.3. Sentencia FOR ..................................................................... 6.3.4. Sentencia FOREACH .......................................................... 6.3.5. Sentencias BREAK y CONTINUE ..................................... 7. DEFINICIN DE FUNCIONES ............................................................... 7.1. CMO SE DEFINEN FUNCIONES EN PHP? ............................. 7.2. LLAMADA A LAS FUNCIONES ................................................... 7.3. ARGUMENTOS DE UNA FUNCIN ............................................ 7.3.1. Argumentos opcionales ........................................................ 7.3.2. Argumentos con valores por defecto .................................... 7.3.3. Listas de argumentos de longitud variable ........................... 7.3.4. Paso de argumentos por valor o por referencia ................... 7.4. MBITO DE LAS VARIABLES ..................................................... 7.4.1. Variables locales .................................................................. 7.4.2. Variables globales ................................................................ 7.4.3. Variables estticas ................................................................ 7.5. CLUSULAS INCLUDE Y REQUIRE ........................................... 7.6. FUNCIONES VARIABLES ............................................................. 8. ARRAYS ............................................................................................. 8.1. CONCEPTOS FUNDAMENTALES ............................................... 8.1.1. Construccin de arrays ........................................................ 8.1.2. Arrays multidimensionales ................................................... 8.2. RECORRIDO DE TODOS LOS ELEMENTOS DE UN ARRAY ............................................................................................. 8.3. FUNCIONES DE MANIPULACIN DE ARRAYS ....................... 8.3.1. Transformacin de los ndices ............................................. 8.3.2. Subdivisin .......................................................................... XII

157 157 158 158 162 165 167 169 175 175 176 179 187 188 193 193 196 199 199 200 201 203 206 206 207 208 209 211 215 215 216 218 219 225 225 226

NDICE

8.3.3. 8.3.4. 8.3.5. 8.3.6. 8.3.7. 8.3.8. 8.3.9.

Contabilizacin de elementos ............................................... Bsqueda de datos ............................................................... Generacin de arrays ........................................................... Prolongacin o truncamiento de un array ............................ Combinacin de arrays ........................................................ Aplicacin de funciones ....................................................... Ordenacin de los elementos de un array .............................

227 228 232 237 238 240 244 249 249 250 250 250 253 254 256 256 258 259 259 267 269 269 272 275 277 278 281 283 285 285 286 288 291 294

9. FUNCIONES PREDEFINIDAS ................................................................ 9.1. INTRODUCCIN ............................................................................ 9.2. FUNCIONES DE MANIPULACIN DE CADENAS DE CARACTERES .......................................................................... 9.2.1. Reconocimiento de caracteres .............................................. 9.2.2. Conversiones entre cadenas y arrays ................................... 9.2.3. Prolongacin de una cadena................................................. 9.2.4. Modificacin de una cadena ................................................ 9.2.5. Comparacin de cadenas ..................................................... 9.2.6. Bsqueda de datos ............................................................... 9.2.7. Subdivisin de cadenas ........................................................ 9.2.8. Longitud de una cadena ....................................................... 9.3. FUNCIONES DE FECHA Y HORA ................................................ 9.4. FUNCIONES MATEMTICAS ...................................................... 10. PROGRAMACIN ORIENTADA A OBJETOS ................................... 10.1. INTRODUCCIN ............................................................................ 10.2. DEFINICIN DE UNA CLASE ...................................................... 10.2.1. Constructores ....................................................................... 10.3. CONSTRUCCIN DE OBJETOS ................................................... 10.3.1. Acceso a las variables y mtodos del objeto ........................ 10.4. HERENCIA ...................................................................................... 10.4.1. Definicin de subclases ........................................................ 11. COOKIES ............................................................................................. 11.1. QU SON LAS COOKIES? ........................................................... 11.2. GENERACIN DE COOKIES ........................................................ 11.3. RECUPERACIN DE LOS VALORES DE LAS COOKIES ........ 11.4. COOKIES DE SESIN Y COOKIES PERMANENTES ............... 11.5. VISIBILIDAD DE LAS COOKIES EN EL SITIO WEB ................

XIII

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

12. MANEJO DE FICHEROS ........................................................................ 12.1. MECANISMOS DE ALMACENAMIENTO DE DATOS .............. 12.2. OPERACIONES DE MANIPULACIN DE FICHEROS .............. 12.2.1. Apertura y cierre de ficheros ............................................... 12.2.2. Operaciones de lectura de datos ........................................... 12.2.3. Lectura con formato ............................................................. 12.2.4. Operaciones de escritura de datos ........................................ 12.2.5. Otras funciones de manipulacin de ficheros ...................... 12.3. ENVO DE FICHEROS A TRAVS DE FORMULARIOS HTML ... 13. BASES DE DATOS RELACIONALES Y EL LENGUAJE SQL ............ 13.1. INTRODUCCIN ............................................................................ 13.2. DISEO DE BASES DE DATOS .................................................... 13.2.1. Modelo relacional ................................................................ 13.2.2. Diagramas entidad/relacin ................................................ 13.3. UN EJEMPLO ILUSTRATIVO: CINEM@S .................................. 13.4. EL LENGUAJE SQL ........................................................................ 13.4.1. Introduccin ......................................................................... 13.4.2. Sentencias de definicin de datos ......................................... 13.4.3. La sentencia INSERT .......................................................... 13.4.4. La sentencia DELETE ......................................................... 13.4.5. La sentencia UPDATE ......................................................... 13.4.6. La sentencia SELECT ......................................................... 14. EL SISTEMA GESTOR DE BASES DE DATOS MYSQL .................. 14.1. QU ES MYSQL? .......................................................................... 14.2. UTILIZACIN DE MYSQL ............................................................ 14.2.1. Arranque del servidor MySQL ............................................ 14.2.2. Inicio del monitor de MySQL .............................................. 14.3. EJECUCIN DE SENTENCIAS SQL ............................................ 14.4. GESTIN DE USUARIOS .............................................................. 14.4.1. La tabla USER ..................................................................... 14.4.2. Eliminacin de usuarios ....................................................... 14.4.3. Establecimiento de contraseas para los usuarios ............... 14.4.4. Creacin de nuevos usuarios................................................ 14.5. BASES DE DATOS Y TABLAS EN MYSQL ................................. 14.6. TIPOS DE DATOS ........................................................................... 14.6.1. Tipos Numricos ..................................................................

295 295 296 296 298 300 303 306 307 309 309 310 310 311 311 316 316 317 324 328 329 330 339 339 340 340 342 344 346 346 349 350 352 354 356 356

XIV

NDICE

14.7.

14.8.

14.6.2. Tipos cadena de caracteres .................................................. 14.6.3. Tipos enum y set .................................................................. 14.6.4. Tipos fecha/hora .................................................................. INTEGRIDAD REFERENCIAL EN MYSQL ................................ 14.7.1. Definicin de claves forneas .............................................. 14.7.2. Insercin de registros en tablas relacionadas ....................... 14.7.3. Eliminacin de registros en tablas relacionadas .................. 14.7.4. Actualizacin de registros en tablas relacionadas................ IMPORTACIN Y EXPORTACIN de datos ................................. 14.8.1. Importacin de datos ............................................................ 14.8.2. Exportacin de datos............................................................

359 361 362 364 365 372 373 379 381 381 385

15. PHPMYADMIN: ADMINISTRACIN DE BASES DE DATOS MYSQL DESDE LA WEB ......................................................... 15.1. INTRODUCCIN ............................................................................ 15.2. ENTRADA A PHPMYADMIN ........................................................ 15.3. GESTIN DE BASES DE DATOS ................................................. 15.3.1. Consulta de las bases de datos ............................................. 15.3.2. Manipulacin de las tablas .................................................. 15.3.3. Estructura de las tablas ........................................................ 15.4. CREACIN DE NUEVAS BASES DE DATOS ............................. 15.4.1. Creacin de tablas ................................................................ 15.5. OPERACIONES DE IMPORTACIN Y EXPORTACIN DE DATOS ....................................................................................... 15.5.1. Importacin de datos externos en las tablas ........................ 15.5.2. Exportacin de datos............................................................ 15.6. GESTIN DE USUARIOS .............................................................. 15.6.1. Usuarios y privilegios .......................................................... 15.6.2. Creacin de usuarios ............................................................ 16. CONECTIVIDAD A BASES DE DATOS MYSQL DESDE PHP ........ 16.1. INTRODUCCIN ............................................................................ 16.2. CONEXIN CON MYSQL DESDE PHP ....................................... 16.2.1. Apertura de la conexin ....................................................... 16.2.2. Cierre de la conexin ........................................................... 16.3. SELECCIN DE LA BASE DE DATOS ........................................ 16.4. EJECUCIN DE SENTENCIAS SQL SOBRE LA BASE DE DATOS SELECCIONADA ........................................................

389 389 390 392 392 393 398 400 401 403 403 405 407 407 408 413 413 414 414 415 416 417

XV

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

16.5.

16.4.1. Insercin de datos a travs de formularios........................... 419 16.4.2. Recuperacin de los resultados de las consultas .................. 424 OTRAS FUNCIONES DE MANIPULACIN DE DATOS ........... 450 453 453 454 455 458 460 465 465 466 468 468 470 471 471 473 474 475 476 477 478 479 480 480 484 486 488 490 493 495

17. IMPLEMENTACIN DE FOROS .......................................................... 17.1. INTRODUCCIN ............................................................................ 17.2. ESTRUCTURA DE LA TABLA DE LA BASE DE DATOS .......... 17.3. GENERACIN DE LA PGINA PRINCIPAL DE LOS FOROS .... 17.4. CONSULTA DE UN MENSAJE CON SUS RESPUESTAS .......... 17.5. INSERCIN DE NUEVOS MENSAJES ........................................ 18. SOLUCIONES OPEN SOURCE BASADAS EN PHP Y MYSQL ....... 18.1. INTRODUCCIN ............................................................................ 18.2. GESTORES DE CONTENIDO ....................................................... 18.2.1. Funcionamiento .................................................................... 18.2.2. Caractersticas ..................................................................... 18.2.3. Ventajas e inconvenientes ..................................................... 18.3. GESTORES DE CONTENIDO BASADOS EN PHP Y MYSQL ......................................................................................... 18.3.1. PHP-NUKE ......................................................................... 18.3.2. POSTNUKE ........................................................................ 18.3.3. MAMBO SERVER.............................................................. 18.3.4. PHPWEBSITE .................................................................... 18.3.5. PHP-WCMS ........................................................................ 18.3.6. XOOPS ................................................................................ 18.3.7. DRUPAL .............................................................................. 18.3.8. SITEFRAME ....................................................................... 18.4. OTRAS SOLUCIONES OPEN SOURCE ....................................... 18.4.1. Weblogs ................................................................................ 18.4.2. Sistemas de foros ................................................................. 18.4.3. Plataformas de e-learning ................................................... 18.4.4. Entornos de comercio electrnico ........................................ 18.4.5. Sistemas de atencin al cliente ............................................. 18.4.6. Herramientas de gestin de proyectos .................................. 18.4.7. Otras herramientas ............................................................... ndice alfabtico

............................................................................................. 497

XVI

Prefacio

El presente libro aborda una temtica de plena actualidad y de gran auge en los ltimos aos, como es el uso de soluciones open source para el desarrollo de aplicaciones web. El uso conjunto del lenguaje PHP y el sistema gestor de bases de datos MySQL permite la construccin, de una manera sencilla y eficiente, de verdaderos sitios web dinmicos. En los ltimos tiempos se est observando cmo son cada vez ms las empresas que optan por estas tecnologas para el desarrollo de sus portales; incluso, en el caso de particulares, algunos de los servicios gratuitos de alojamiento de pginas web ofrecen la posibilidad de usar PHP en conjuncin con MySQL. Los autores de este libro somos profesores de la Universidad de Cantabria, con experiencia en la imparticin de cursos sobre tecnologas de programacin, desarrollo de aplicaciones web, informtica de gestin y sistemas de informacin. Fruto de nuestra dilatada experiencia docente de estos aos surge el presente libro. Parte del material que incluye ha sido usado exitosamente para la imparticin de varios cursos de verano y un mdulo de desarrollo de aplicaciones web en el Mster en e-Business que organiza la Universidad de Cantabria. Nuestra intencin ha sido escribir un libro que pueda ser seguido por personas con conocimientos muy bsicos de lenguajes de programacin y con inquietudes por el desarrollo de sitios web. En el campo de la informtica, especialmente, existe un gran nmero de personas autodidactas y con un carcter claramente vocacional; este tipo de libros va dirigido a ellos.

XVII

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

Es por ello que se ha buscado un enfoque eminentemente prctico, ilustrando los diferentes conceptos con un gran nmero de ejemplos. De hecho, se pretende que a lo largo de los diferentes captulos se vaya describiendo paso a paso todo el proceso de desarrollo de un sitio web verdaderamente dinmico y profesional. Para ello hemos optado por mostrar el desarrollo del sitio web de una empresa ficticia; en concreto consideraremos el sitio web de un multicine que hemos bautizado como Cinem@s y que ofrecer la posibilidad de consultar carteleras dinmicas (mostrando siempre la informacin actualizada), consultar disponibilidades de localidades, registrarse como cliente,... El libro comienza con una rpida presentacin de las caractersticas generales de Internet y las diferentes tecnologas de programacin que pueden ser usadas. Para pasar posteriormente a analizar la filosofa y evolucin de la conocida como corriente open source. El tercer captulo tiene por objeto presentar los comandos bsicos del lenguaje HTML que permitan disear unas sencillas pginas web en torno a las que construir posteriormente la aplicacin web. Tras estos tres captulos iniciales, los siguientes se dedican a la presentacin del lenguaje PHP, su interaccin con los formularios de HTML, as como a presentar las estructuras bsicas presentes en todo lenguaje de programacin (sentencias de control, funciones y estructuras de datos). Se ha dedicado tambin un captulo a una introduccin muy bsica a la programacin orientada a objetos; as como sendos captulos dedicados a manejo de cookies y ficheros. La segunda parte del libro se centra en el uso del sistema MySQL, para lo que se ha considerado oportuno introducir un captulo previo de estudio del modelo relacional de bases de datos y el lenguaje SQL. Tras analizar las caractersticas de MySQL se muestra cmo es posible la administracin remota de las bases de datos mediante una aplicacin desarrollada en PHP. Una vez analizada esta aplicacin de administracin, los siguientes captulos muestran la sencillez de los procesos de conectividad a MySQL desde PHP. El libro finaliza con un captulo en el que se presentan muy brevemente algunas de las aplicaciones open source ms conocidas en Internet y que se basan en las tecnologas explicadas en el libro. Llegado a este punto se espera que el lector pueda no solo hacer uso de esas aplicaciones, sino tambin modificarlas y adaptarlas a sus necesidades particulares, aprovechando de esta forma la gran ventaja de las aplicaciones de cdigo abierto. Finalmente, quisiramos mostrar nuestro agradecimiento a los Departamentos de Matemtica Aplicada y Ciencias de la Computacin y de Administracin de Empresas de la Universidad de Cantabria por sus facilidades y apoyo para escribirXVIII

PREFACIO

este libro. Agradecimiento que hacemos extensivo a todos nuestros alumnos durante estos aos; ellos nos han servido de incentivo para embarcarnos en este proyecto editorial. ngel Cobo Patricia Gmez Daniel Prez Roco Rocha Santander, febrero de 2005

XIX

INTERNET Y LA PROGRAMACIN DE ORDENADORES1.1. INTRODUCCINLa aparicin a principios de los noventa del servicio web supuso una verdadera revolucin en el campo de la informtica y las telecomunicaciones. Con la irrupcin de este nuevo servicio, Internet inici una rpida transicin hacia el mbito empresarial y supuso un enorme impulso al crecimiento de la red. Lo que haba surgido en plena guerra fra como un proyecto militar y que posteriormente fue dirigindose hacia el mbito cientfico y acadmico, se empez a convertir en un perfecto escaparate virtual en el que las empresas pudieran ofrecer sus productos y servicios rompiendo barreras geogrficas y de comunicaciones. En la actualidad las empresas no ven nicamente el servicio web como un mero escaparate o medio publicitario de enorme difusin. Internet, y en particular el servicio web, abre a las empresas enormes posibilidades. La utilizacin de tecnologas web permite agilizar los procesos, mejorar la productividad y aumentar la eficacia, adems de abrir las puertas a nuevas formas de negocio en el mercado global que facilita Internet (e-business).

1

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

Por supuesto, no han sido las empresas las nicas beneficiadas con el desarrollo de Internet y del servicio web. Las instituciones pblicas tienen tambin nuevas formas de ofrecer servicios a los ciudadanos (e-governement), los usuarios individuales tienen nuevas formas de adquirir productos (e-commerce) o nuevas formas de formarse e instruirse (e-learning),... Para poder realmente obtener todos estos beneficios ha sido preciso desarrollar nuevas tecnologas que consigan hacer del servicio web un servicio dinmico e interactivo. En sus orgenes el servicio World Wide Web fue concebido como un sistema flexible de compartir informacin multimedia entre equipos heterogneos a travs de redes informticas. Para ello fue desarrollado un sistema de generacin de documentos a travs de un lenguaje estndar: el lenguaje HTML. Los documentos generados de esta forma podan incorporar texto y elementos grficos, pero eran documentos totalmente estticos. Posteriormente fueron desarrollndose diferentes tecnologas que, trabajando en conjuncin con el lenguaje HTML, pudieran paliar estas carencias. As por ejemplo, Netscape incorpor en la versin 2.0 de su clebre navegador un intrprete de un nuevo lenguaje que poda ser intercalado entre el cdigo HTML y que permita realizar operaciones no disponibles en un lenguaje puramente descriptivo como es HTML; dicho lenguaje, llamado en sus orgenes LiveScript, adquiri posteriormente el nombre de JavaScript. Unos aos ms tarde la empresa Sun Microsystems lanz un revolucionario lenguaje de programacin, el lenguaje Java, que permita incrustar en las pginas web programas con las prestaciones propias de cualquier lenguaje de programacin. Microsoft por su parte tambin se uni a esta evolucin primero con sus lenguajes de script: VBScript basado en Visual Basic y JScript, versin Microsoft de JavaScript, y, ms recientemente, con las tecnologas .NET. Igualmente se han venido desarrollando diferentes extensiones del propio lenguaje HTML con objeto de aumentar su dinamismo; en este contexto se podra citar el HTML dinmico (DHTML) y el lenguaje XML. Internet ha jugado un papel esencial en la expansin de la denominada corriente open source. Los defensores de esta corriente defienden el desarrollo de aplicaciones informticas y su distribucin libre, de forma gratuita; pero no solo eso sino que tambin ponen a disposicin de los usuarios el cdigo fuente de los programas desarrollados. Se trata, en definitiva, de que los usuarios puedan utilizar los programas sin ninguna restriccin y puedan conocer si lo desean su funcionamiento interno. El ejemplo ms emblemtico de esta corriente open source lo constituye el sistema operativo Linux. En los ltimos aos est corriente se ha desarrollado enormemente y ya se pueden obtener en la propia red Internet todo tipo de programas basados en esta filosofa: servidores y navegadores web, entornos de programacin, editores, herramientas ofimticas,... Grandes empresas como IBM o Yahoo, por ejemplo, han apostado muy fuerte por las soluciones open

2

INTERNET Y LA PROGRAMACIN DE ORDENADORES

source y, sin lugar a dudas, el impacto de este tipo de soluciones parece destinado a incrementarse en el futuro debido a sus altas prestaciones y calidad, su menor coste y su alta difusin. Las dos herramientas que se analizarn en este libro surgen de esta corriente. Por un lado el lenguaje PHP, que naci como un lenguaje para realizar un seguimiento de visitas de pginas personales, se ha convertido en uno de los referentes actuales en los denominados lenguajes de script. Por otro lado, el sistema gestor de bases de datos MySQL se presenta como una herramienta con altas prestaciones para el desarrollo de bases de datos, especialmente apropiado para ser usada por pequeas organizaciones o empresas. La utilizacin conjunta de ambos: PHP y MySQL permite llegar a desarrollar interesantes aplicaciones web que puedan cubrir las necesidades de pequeas empresas que quieran fortalecer su presencia en Internet o usuarios individuales que quieran generar verdaderas pginas dinmicas. Como complemento a ambas herramientas, en Internet se pueden encontrar igualmente gestores de contenidos, aplicaciones basadas en PHP que permiten a los usuarios finales aprovechar las ventajas de estas tecnologas sin necesidad de tener grandes conocimientos sobre su funcionamiento y sintaxis de los lenguajes. En el presente libro se darn referencias de algunas de estas herramientas de gestin de contenidos y otras herramientas para la creacin de aplicaciones web que han sido desarrolladas igualmente haciendo uso de las dos tecnologas que se analizarn en este libro: el lenguaje PHP y el gestor de bases de datos MySQL. El Captulo 18 presentar algunas de estas herramientas.

1.2. INTERNETEl objeto de esta seccin no es tanto definir lo que es Internet como el poner de manifiesto algunas de las caractersticas ms destacadas de la misma que influyen decisivamente en las tecnologas de desarrollo vinculadas al servicio web, como es el caso del lenguaje PHP. Se asume que cualquier lector interesado en este libro es usuario de Internet y conoce los diferentes servicios que la red ofrece, posiblemente tambin su inters en el desarrollo de aplicaciones web es el que le ha impulsado a adquirir este libro. Internet (INTERconected NETwork) es una red de redes de ordenadores de todo tipo que se comunican mediante un lenguaje comn: el conocido como protocolo TCP/IP. Esa primera caracterstica de la heterogeneidad de los equipos conectados es clave para entender el funcionamiento de todos los servicios de la red y para comprender la necesidad de la portabilidad en cualquier desarrollo que se quiera hacer en el mbito de Internet. A nivel de programadores de aplicaciones web, que 3

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

es en el que se sita el presente libro, no es necesario disponer de conocimientos tcnicos sobre los protocolos de comunicacin en los que se basa Internet. Los desarrollos de aplicaciones realizados en Internet tienen tambin un campo de aplicacin en aquellas redes privadas que usan los mismos sistemas y protocolos que Internet: las denominadas Intranets. Otro de los aspectos a tener en cuenta es el carcter distribuido de la red. Ese carcter totalmente distribuido se concreta a todos los niveles: en el aspecto geogrfico no existe ningn nodo central de la red, de hecho, los orgenes de Internet se sitan en un proyecto militar del Gobierno de los Estados Unidos para crear una red que no fuera vulnerable ante el ataque a alguno de sus nodos. En el aspecto econmico, tampoco existe ningn gobierno o institucin que mantenga la red sino que son las propias subredes que la componen las encargadas de su propio mantenimiento. El carcter distribuido tambin se manifiesta en el aspecto poltico ante la ausencia de un gobierno central de la red; lo que s existen son diversas organizaciones o asociaciones que tratan de establecer diferentes estndares para el desarrollo de la red. Aunque el servicio web es actualmente el servicio ms conocido y utilizado de la red Internet, conviene recordar que no es el nico. Los tres servicios originarios de la red: correo electrnico (e-mail), transferencia de fichero (FTP) y acceso remoto (Telnet), siguen estando presentes y siguen siendo ampliamente utilizados. Pero podran citarse otros servicios, algunos muy conocidos y otros en cierta decadencia al haber absorbido el propio servicio web sus funciones: servicios de noticias (news), gopher, servicios de bsqueda de archivos (Archie), Vernica, servicios de localizacin,... En los ltimos aos tambin estn teniendo mucho auge las aplicaciones P2P.

1.2.1. EL SERVICIO WEBEl servicio WWW, o simplemente Web, se podra definir como un amplio sistema multimedia de acceso a informacin heterognea distribuida por toda la red en forma de documentos hipertextuales (hipertextos). Como ya fue comentado en la introduccin de este captulo, este servicio surgi en 1990 en el CERN (Centre Europen de Recherche Nuclaire) con el objetivo de facilitar la distribucin de informacin entre equipos investigadores geogrficamente dispersos. Se buscaba que los recursos disponibles en formato electrnico fuesen accesibles para cada investigador desde su propia terminal de forma clara y simple, posibilitando el salto entre elementos de informacin conexos. En definitiva, se trataba de integrar todos los recursos existentes en una red hipertextual. Aunque el nacimiento del 4

INTERNET Y LA PROGRAMACIN DE ORDENADORES

servicio se sita en 1990, es en 1991 cuando el sistema desarrollado en el CERN se abre a Internet, apareciendo en 1992 el primer navegador web: Mosaic. El trmino hipertexto que empez a hacerse popular a partir de la aparicin de este servicio tiene, sin embargo, su definicin en un trabajo de Ted Nelson en 1965, la definicin original del trmino es: "Un cuerpo de material escrito o grfico interconectado de un modo complejo que no se puede representar convenientemente sobre el papel; puede contener anotaciones, adiciones y notas de los estudiosos que lo examinan". En una definicin ms moderna y aplicable al concepto de hipertexto en Internet, se podra decir que un hipertexto es un documento multimedia, es decir, integrando bajo una plataforma informtica todas las tecnologas de la informacin, y que incorpora relaciones estructurales que enlazan el documento con otros documentos o recursos. Algunas de las caractersticas destacadas de los hipertextos son: Almacenamiento de un gran volumen de informacin. Facilidad de acceso y consulta. Presentacin de una forma ms agradable. Uso de todas las tecnologas de la informacin. Permiten una navegacin individualizada. Estructuracin multidimensional. Multiplataforma. Dinamismo e interactividad.

1.2.2. RELACIN CLIENTE/SERVIDORTodos los servicios que ofrece Internet, y por supuesto entre ellos el servicio web, se basan en la denominada relacin cliente/servidor. El comprender bien esta relacin es esencial para entender el funcionamiento posterior de lenguajes como PHP. En Internet se pueden encontrar dos tipos de equipos conectados: Servidores: ordenadores que ofrecen sus servicios al resto de equipos conectados. Suelen tener una presencia estable en la red, lo que se concreta en tener asignadas direcciones IP permanentes. En ellos es donde estn alojadas, por ejemplo, las pginas web.

5

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

Clientes: equipos que los usuarios individuales utilizan para conectarse a la red y solicitar servicios a los servidores. Durante el tiempo de conexin tienen presencia fsica en la red. Normalmente los proveedores de acceso a Internet asignan a estos equipos una direccin IP durante su conexin, pero esa direccin es variable, es decir, cambia de unas conexiones a otras (IP dinmica). Los conceptos de cliente y servidor se suelen utilizar con dos significados diferentes, en referencia al hardware el sentido es el indicado anteriormente, el servidor hace referencia al equipo remoto al que se realiza la conexin y el cliente sera el equipo local utilizado para efectuar dicha conexin. Pero tambin se utilizan esos conceptos en referencia al software: Programa servidor es el programa que debe estar ejecutndose en el equipo servidor para que este pueda ofrecer su servicio. Un documento HTML sin ms almacenado en el equipo remoto no basta para que sea accesible como pgina web por el resto de usuarios de Internet, en ese equipo debe estar ejecutndose una aplicacin servidor web. Uno de los programas servidores web ms conocido y utilizado es Apache, programa que tambin pertenece a la corriente open source. Existen otros servidores web como el Personal Web Server (PWS) o el IIS disponibles en los equipos Windows. En el caso de otros servicios como el correo electrnico o la transferencia de ficheros se necesitaran igualmente los correspondientes programas en el servidor. Programa cliente es en este caso el software necesario en el equipo cliente para tener acceso al correspondiente servicio. As por ejemplo, los navegadores como el Internet Explorer o Mozilla son ejemplos de clientes web; un programa como Outlook es un ejemplo de cliente de correo electrnico y programas como WS_FTP o CuteFTP son ejemplos de clientes FTP.

Figura 1.1 Relacin cliente/servidor. Los clientes realizan peticiones de servicio a los servidores

6

INTERNET Y LA PROGRAMACIN DE ORDENADORES

1.2.3. PROCESO DE CREACIN Y PUBLICACIN DE PGINAS WEBEl proceso de creacin y publicacin de una pgina web debe pasar por una serie de fases: Definicin de la pgina: toda pgina web tiene detrs un cdigo fuente que la define. Cuando se accede a una pgina web, aunque en el monitor se puedan visualizar documentos con imgenes y texto de diferentes tamaos, colores y formatos, debe tenerse presente que detrs de eso hay un documento de texto sin ningn tipo de formato y que incorpora una serie de instrucciones o comandos que son los que realmente generan la pgina que se visualiza. Ese documento fuente est definido en un lenguaje especial: el conocido HTML (HyperText Markup Language). Se trata de un lenguaje puramente descriptivo que incorpara una serie de comandos o etiquetas (tags) que permiten definir la estructura lgica del documento, dar formato al texto, aadir elementos no textuales,... Se asume que los lectores interesados en este libro tienen un cierto conocimiento de este lenguaje de definicin de hipertextos, no obstante, se ha considerado oportuno incluir un captulo introductorio en el que se presenten los comandos bsicos de HTML (Captulo 3). Para aquellos lectores sin conocimientos de HTML, una comprensin rpida de los comandos expuestos en dicho captulo es ms que suficiente para poder entender el resto del libro. Publicacin del documento: una vez creado el documento HTML que define la pgina web, el siguiente paso es evidentemente publicarla para que est disponible para el resto de usuarios de Internet. La publicacin implica la transferencia del documento a un equipo servidor que disponga de un programa de servidor web. Puede optarse por utilizar algn servidor de alojamiento gratuito de pginas o utilizar los espacios que los proveedores de acceso a Internet suelen ofrecer a sus clientes. Otra posibilidad sera configurar un equipo propio para que acte de servidor, para ello sera preciso contratar con algn proveedor una direccin IP fija y registrar el dominio que se quiera utilizar. Acceso a las pginas web: en el momento en que una pgina es publicada en el servidor, cualquier usuario de Internet podra acceder a ella. Para ello es preciso, por un lado que el usuario utilice un programa adecuado (el navegador, explorador o cliente web), y que el cdigo que define la pgina sea transferido por la red utilizando el protocolo http (hypertext transfer protocol). Sobre este ltimo aspecto, en principio la mayora de usuarios no deberan preocuparse. El navegador web es el que se encarga de interpretar los

7

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

comandos HTML que se reciben y producir a partir de ellos la pgina web. Existen diferentes navegadores web que se pueden utilizar, por ejemplo, Internet Explorer, Netscape Navigator, HotJava, Mozilla,... este ltimo sigue la corriente open source.

1.2.4. DINAMISMO E INTERACTIVIDAD EN LAS PGINAS WEBHTML es un lenguaje puramente descriptivo que permite definir las pginas web pero que en modo alguno se puede considerar un lenguaje de programacin. Con HTML no se pueden generar estructuras iterativas o condicionales, no se pueden definir funciones que sean utilizadas en distintos puntos del documento, no se pueden declarar variables, no se pueden realizar clculos matemticos,... Las pginas creadas nicamente con HTML son bsicamente estticas, es decir, siempre muestran la misma informacin y no ofrecen ningn grado de interactividad con el usuario. Los nicos elementos de HTML que podran de alguna forma considerarse interactivos son los formularios a travs de los cuales se solicita informacin al usuario. Si se requiere aumentar el dinamismo e interactividad de las pginas se hace por tanto obligado el recurrir a otros lenguajes y tecnologas como las que se abordan en este libro. Esas dos caractersticas: dinamismo e interactividad son los dos elementos clave que se deben tratar de potenciar para desarrollar verdaderas aplicaciones web. Pero, qu es una pgina dinmica? Pinsese, por ejemplo, en un multicine que quiere publicar en Internet la informacin actualizada sobre horarios y pelculas que se proyectan en cada una de sus salas. Evidentemente, sera muy sencillo generar una simple pgina en HTML con una tabla en la que se muestre esa informacin; incluso sin necesidad de tener ningn tipo de conocimiento sobre HTML, por ejemplo, se podra escribir en Word y usar la opcin de Guardar como pgina web.... Hasta aqu sencillo, pero la informacin en s es un elemento dinmico, las pelculas que se proyectan en cada sala cambian y por tanto la pgina web debera ser actualizada. Tiene sentido tener que modificar el documento HTML cada vez que se produzca un cambio en la cartelera?, no sera muchsimo ms rentable disponer de un sistema que modifique de forma automtica la informacin que muestra la pgina web? Esto es dinamismo, y esto no se puede conseguir solo con HTML. A lo largo de los diferentes captulos de este libro el usuario aprender cmo resulta muy sencillo generar una base de datos con MySQL con toda la informacin de las pelculas a proyectar y una pgina web con un programa PHP que se encargue, cada vez que un usuario solicita la pgina, de hacer una consulta a la base de datos para obtener la cartelera actualizada y generar con ella de forma automtica el cdigo HTML que se enva al usuario. Este mismo ejemplo se ir desarrollando paso a paso en los prximos captulos y servir de hilo conductor del resto del libro.

8

INTERNET Y LA PROGRAMACIN DE ORDENADORES

Otro ejemplo de dinamismo puede ser el preprocesamiento de datos introducidos en formularios, comprobando por ejemplo la validez sintctica de direcciones de correo electrnico o la pertenencia a determinados rangos de valores numricos. En lo referente a interactividad, se trata de permitir que entre el usuario que acceda a la pgina y la propia pgina exista un cierto grado de comunicacin que no se limite a que la pgina muestre la informacin al usuario. El usuario, por ejemplo, le podra solicitar a la pgina que realice algn clculo. Volviendo al ejemplo de los multicines, supongamos que se desea que el usuario pueda hacer un clculo de forma automtica de los importes de las entradas; mediante un formulario el usuario puede introducir el nmero de entradas a adquirir, la sesin para la que se desean y determinados parmetros que puedan afectar al precio (ser estudiante, disponer de un vale de descuento,...) y la pgina debe calcular de forma automtica el importe total a pagar. Esto es interactividad.

1.3. PROGRAMACIN DE ORDENADORESLa programacin de ordenadores se podra definir como el conjunto de tcnicas, mtodos y reglas para poder construir programas de ordenador legibles, correctos y eficientes. Un programa de ordenador no es ms que una secuencia de instrucciones en las que se le indican a la mquina las rdenes o acciones a realizar; se podra entender por tanto la programacin como el arte de decir a una mquina lo que queremos que haga de una manera que pueda entenderlo. Como todos los campos de la informtica, la programacin de ordenadores ha sufrido una importante evolucin en las ltimas dcadas. Los orgenes se sitan en la dcada de los 50 con la aparicin de los primeros lenguajes de programacin: Fortran (1954), Cobol (1954) y Algol (1957). Estos primeros lenguajes estaban muy orientados hacia aplicaciones concretas; as por ejemplo, Fortran es un lenguaje orientado hacia el clculo cientfico mientras que Algol lo es hacia aplicaciones de gestin. Los aos 60 vienen marcados por el nacimiento de la programacin estructurada y la aparicin de lenguajes como PL/1 de IBM (1960) o el BASIC (1963). Es en los aos 70 cuando aparecen dos de los lenguajes estructurados de mayor difusin: el Pascal (1970) y el C (1972); este ltimo evolucionara posteriormente hacia el C++ y hoy en da es el lenguaje ms utilizado en el desarrollo de aplicaciones. La programacin estructurada se basa en el desarrollo de mdulos o funciones independientes que puedan ser utilizadas en cualquier momento. Es destacable tambin en esta dcada de los 70 el desarrollo del modelo relacional de

9

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

bases de datos, modelo en el que se basan la mayora de los sistemas gestores de bases de datos actuales, entre ellos MySQL. Los 80 vienen marcados por la aparicin del ordenador personal y el nacimiento de la microinformtica. La informtica deja de ser algo exclusivo de las grandes empresas e instituciones y se acerca al pblico en general. En esta poca aparecen tambin los primeros sistemas operativos con interfaces de usuario grficas: el clebre Mac de Apple Macintosh. Aos ms tarde Microsoft seguira esos pasos con su sistema operativo Windows. La aparicin de este tipo de interfaces tambin afectara notablemente a la evolucin de los lenguajes de programacin, en concreto surge la necesidad de desarrollo de tcnicas de programacin basadas en eventos. En los aos 80 aparece tambin una nueva forma de entender la programacin: la programacin orientada a objetos, as surgen los lenguajes ADA (1980) y C++ (1985). La base en la que se apoya este estilo de programacin es el entender los objetos como entidades compuestas de acciones y datos y, por tanto, a la hora de programar las funciones (acciones) y las variables (datos) deben entenderse como componentes de una misma unidad. La dcada de los 90 se inicia con la aparicin del revolucionario servicio web y la necesidad cada vez ms patente de orientar los desarrollos hacia la integracin de aplicaciones. El servicio web, como ya se coment, rpidamente crea la necesidad de nuevas formas de programacin y as en 1995 nace el lenguaje Java, primer lenguaje pensado para integrar directamente programas en las pginas web. Los programas Java que se integran en esas pginas se denominan applets. En la actualidad, la evolucin en los diferentes sistemas operativos, de los nuevos servicios de Internet y del propio hardware influyen en las prestaciones recomendadas que debe tener un lenguaje de programacin, algunas de las que se podran citar son: Programacin estructurada: en la actualidad todos los lenguajes de programacin soportan este tipo de programacin, en la que las instrucciones se agrupan en bloques constituyendo mdulos que se llaman unos a otros. Programacin orientada a objetos: los lenguajes de programacin de mayor xito se basan en la construccin de clases de objetos. Cada clase engloba, por un lado las acciones que pueden ser realizadas con esos objetos y, por otro, los datos o caractersticas asociadas a los mismos. Algunos lenguajes actuales, aunque no pueden ser considerados orientados a objetos, s que incorporan algunas caractersticas propias de estos lenguajes, trabajando tambin con objetos.

10

INTERNET Y LA PROGRAMACIN DE ORDENADORES

Programacin guiada por eventos: los programas deben ser capaces de dar respuesta a las diferentes acciones que el usuario efecta sobre la interfaze del programa. Por ejemplo, cuando un usuario elige una opcin de men o pulsa un botn se genera un evento que debe ser detectado, identificado y tratado por el programa. Programacin concurrente: la aparicin cada vez con ms frecuencia de equipos con ms de un procesador plantea nuevas formas de programacin; un programa podra ser susceptible de dividir en varias tareas que puedan estar realizndose de forma simultnea, cada tarea puede ser ejecutada por un procesador diferente o bien utilizar mecanismos de reparto del tiempo de procesador. Esta es la base de la programacin paralela o concurrente. Prestaciones multimedia: los programas deben ser capaces de manejar todo tipo de informacin y recursos; deben de estar preparados para trabajar con elementos grficos en diferentes formatos, animaciones o vdeo, sonido,... Portabilidad: evidentemente los programas son desarrollados para que puedan ser utilizados por diferentes usuarios y no siempre est garantizado que los usuarios tengan equipos similares. La portabilidad de los programas permite que estos puedan ser ejecutados sobre diferentes plataforma informticas. Sin embargo, la portabilidad puede entenderse a dos niveles: a nivel de cdigo fuente la portabilidad implica que el cdigo puede ser compilado sobre las dos plataformas para obtener dos versiones diferentes del programa. En algunos casos, la portabilidad se consigue a nivel no de cdigo fuente sino del cdigo resultado del proceso de compilacin; esto es lo que ocurre por ejemplo con el lenguaje Java. En Internet, la portabilidad es un concepto clave por cuanto a la red estn conectados todo tipo de equipos. Integracin de aplicaciones: cada vez es ms necesario que los lenguajes de programacin incorporen mecanismos sencillos para conectarse con otras aplicaciones. Quizs el caso ms claro de ello sea la conectividad a bases de datos; los programas deben ser capaces de establecer esa conexin y realizar consultas sobre los datos almacenados.

1.3.1. TIPOS DE LENGUAJES DE PROGRAMACINLos lenguajes de programacin pueden ser clasificados de acuerdo a varios criterios. Una de las primeras clasificaciones que se suele efectuar es la distincin entre lenguajes de bajo nivel y de alto nivel. La programacin en los primeros resulta ms dificultosa puesto que las instrucciones estn muy prximas al 11

PHP Y MYSQL. TECNOLOGAS PARA EL DESARROLLO DE APLICACIONES WEB

hardware del equipo y resultan difciles de entender por un programador no especialista. El ejemplo clsico de lenguaje de bajo nivel es el lenguaje ensamblador. La mayor parte de los programadores optan por utilizar lenguajes cuyo cdigo resulta ms fcil de entender, por cuanto sus reglas sintcticas se asemejan ms a la forma de comunicarse las personas; son lenguajes que estn ms cerca del programador pero ms lejos de la mquina a la que van dirigidos. Estos lenguajes son los denominados "lenguajes de alto nivel" y a ellos pertenecen los lenguajes de programacin ms conocidos. Cuando se est desarrollando un programa usando un lenguaje de programacin se genera un cdigo (cdigo fuente) que es comprensible para todo aquel usuario que tenga los conocimientos suficientes sobre el correspondiente lenguaje, pero que en ningn caso es comprensible directamente para la mquina. Los ordenadores trabajan internamente mediante circuitos electrnicos que admiten dos posiciones: abierto o cerrado (1 0) y por tanto, toda orden a dar a la mquina debe ser planteada en ltima instancia como secuencias de ceros y unos (cdigo binario). Parece claro por tanto que se necesita un proceso de traduccin del cdigo fuente que nosotros entendemos a instrucciones entendibles por la mquina. Ese proceso de traduccin se puede realizar de dos maneras, y eso da pie a establecer una nueva clasificacin de los lenguajes de programacin: Lenguajes compilados: en un lenguaje compilado el cdigo fuente pasa por un proceso denominado "compilacin" en el que se genera un cdigo denominado "objeto", que una vez enlazado con otros posibles mdulos de cdigo objeto necesarios, genera el fichero ejecutable con el programa. Ese fichero ejecutable es lo nico necesario para poder utilizar el programa y contiene todas las instrucciones del mismo pero en el formato entendible por la mquina. El aspecto ms importante a destacar es que el proceso de compilacin se realiza con anterioridad a cualquier ejecucin o uso del programa; en ese proceso se comprueba la validez sintctica del programa y si todo es correcto se genera el ejecutable. Si se produce un error en la compilacin el programa no podr ser utilizado. Lenguajes interpretados: en los lenguajes interpretados, la traduccin de las instrucciones se va realizando de forma secuencial por una aplicacin, denominada "intrprete", al mismo tiempo que se ejecuta el programa. De esta forma, si llegado un punto del programa el intrprete se encuentra con una instruccin errnea, el programa no contina pero s que habr podido ejecutar todas las sentencias previas. A diferencia de los lenguajes

12

INTERNET Y LA PROGRAMACIN DE ORDENADORES

compilados, la verificacin de la correccin sintctica del programa no se realiza antes de la ejecucin sino al mismo tiempo. Por poner un smil que sirva para clarificar la diferencia entre ambos tipos de programas, supngase que una persona recibe una lista con una serie de tareas a realizar. Podra optar por utilizar dos estrategias: Antes de comenzar la persona pierde unos minutos leyendo toda la lista y analizando la coherencia o factibilidad de las tareas que se le estn encomendando. Si todas las tareas son coherentes realiza un proceso de planificacin para determinar la forma de realizarlas todas. Pero si detecta alguna tarea que no entiende o le resulta incoherente, informa a la persona que le ha encargado las tareas y opta por no iniciar sus labores a la espera de una posible rectificacin en el listado de tareas (enfoque de un programa compilado) Nada ms recibir la lista de tareas, la persona lee la primera labor encomendada y la realiza. A continuacin pasa a la segunda, la lee y la realiza, y as sucesivamente. Si todo ha ido bien, habr realizado todas las tareas, pero si al llegar a un punto de la lista se encuentra con una tarea errnea o no coherente, opta por abandonar el resto del trabajo e informar a la persona que le encarg las tareas de tal extremo (enfoque de un programa interpretado)

if(x


Recommended