Ya has visto pequeños trosos de código javascript En esta sección, quiero hablar sobre lo que conecta ese mundo con el código de máquina en el CPU Así que esto será generalmente sobre el tema de los lenguajes informáticos. Por lo tanto un programador trabaja en algunos lenguajes de programación. Y se dice que los lenguajes de programación tienen funciones de alto nivel. Y eso quiere decir, cosas como, bucles (loops), y si las sentencias "if" y cadenas (strings) y aquellas facilidades que son más complicadas y que están en un simple código de máquina en el CPU. Por lo que el programador escribe lo que se denomina código fuente en cualquier lenguaje de programación, que estén escribiendo Aquí hay un ejemplo de algún código fuente de C++. Esto asigna una cadena (string), a una variable y a continuación pone un signo de exclamación (!) al final de la cadena. Esto es un poco similar al código javascript que hemos visto. Todos estos lenguajes a nivel de sintaxis son un poco similares. Así, um, ¿cómo se consigue que el código fuente de C++, digamos, se ejecute en la CPU? una estrategia utiliza lo que se llama un compilador. el compilador es un programa separado y lo que el compilador hace es que mirar todo el código fuente y hace una traducción mayor para crear un gran cuerpo de código máquina. Así, por ejemplo, puede ser que haya una parte del código fuente, donde hay una instrucción "if" y no hay una instrucción específica de código máquina para una instruccion "if" pero puede haber una secuencia de 5 instrucciones de código máquina que de hecho constituyen una sentencia "if" Por lo que el compilador hace ese tipo de expansión. Así que, sólo como ejemplo, Firefox está escrito en C++. Por lo tanto, para hacer una nueva versión de Firefox, alguien corre el compilador de C++ y este lee en los muchos archivos fuentes, el "gran cuerpo" de código fuente que conforma a firefox, y básicamente produce firefox.exe Firefox.exe es la salida del compilador al traducir todo ese código fuente. Un par de cosas a señalar es que, la compilación sólo tiene que pasar una vez. Así, algunos cuerpo de código fuente, alguien hace firefox.exe y, a continuación, sólo puede enviarse firefox.exe Los usuarios finales no necesita el código fuente y no necesitan el compilador. Por lo que realmente se realiza la compilación en la fábrica, de hecho. Otra característica es no funciona al revés. Por lo que yo puedo distribuir firefox.exe todas esta máquina código, pero no algo que puede leer en e ir hacia atrás para darme un gran cuerpo de código fuente. Al menos no perfectamente, puede hacerlo de modo imperfecto. Lo ideal, para producir una inversión realmente desea el código fuente. Por lo tanto, hablemos sobre el código fuente. Por lo tanto, si desea agregar una funcionalidad o corregir un error en firefox, realmente la forma de hacerlo es volver al código fuente, y repasarlo, sólo una que he hecho en java script. Así que añadir unas líneas o un si instrucción para cambiar algunos comportamiento de alguna manera, en el código fuente y, a continuación, ejecutar el compilador una vez más, de hecho para hacer una nueva versión de Firefox que tiene este pequeño cambio que ha puesto en el código fuente. Como estamos tomando sobre código fuente, Esto también le da un buen sentido de qué abierto software de origen significa. Un software de código abierto es una formato donde se distribuye el programa, sino también no hay acceso al código fuente original, a la programa. Y esto viene normalmente con una licencia, diciendo: ' Hey, aquí está el código fuente. Si desea hacer su propia versión o corregir un error o lo que sea, este programa, Siéntase libre. " Eso de las 2 principales características del software de código abierto uno, normalmente se distribuye gratuitamente, por lo que saben, su barata. Pero el otra característica es que viene con una especie de libertad. Porque si el software es un código cerrado y desea alguna característica diferente, hay que algunos fallos necesario se aplique, usted realmente depende del proveedor, quien tiene la código fuente, como bien-do se sienten como aplicación ¿esa característica? En contraste con el software de código abierto, es como que no hay esposas. El código fuente está disponible, y si hay algo que realmente quieres hacer, o decir que el proveedor original va fuera del negocio, entonces porque tienes el código fuente, usted sabe, usted puede puede ser pagar a alguien para hacer un cambio y producir sus propios versión personalizada. Por lo que viene con este tipo de profundidad, uh- puede considerar como una póliza de seguro. A menudo hay muchos tipos diferentes de los términos de licencia para un software de código abierto, pero, más a menudo requieren en algunos casos, que si usted tomar sus código fuente y agregar alguna característica, entonces debe ofrecer esos cambios a la comunidad. Así, en el mismo manera han beneficiado del otro trabajo, puede beneficiarse de su trabajo. Los detalles de cómo se puede hacer es complicado. Hay muchas formas diferentes de la misma. Me vas a hablar del software de código abierto un poco más tarde, sólo menciono esto ahora, porque nos da la idea de lo que es el código fuente del programa vs sólo tener el archivo .exe de algo. Así que hasta el momento hablé acerca de C++, por lo que es esto toda otra gran categoría de lenguas, que Me va a llamar, lenguajes dinámicos o a veces Idiomas de intérprete. Y esto es una especie de una gran prueba estrategia y hay muchos idiomas diferentes con muchas cualidades diferentes y yo apenas estoy va a ordenar de bulto, tumor les en esta gran categoría. Ejemplos de lenguajes dinámicos son actualmente Java, Secuencia de comandos de Java y Python. Por lo tanto, va a una manera de que estos son el trabajo es que se apliquen por lo que se llama un intérprete. Supongo que el caso de compilador estaba tomando antes. Un intérprete es un programa que toma en código escrito en algún lenguaje y tipo de [inaudible] lo ejecuta. El mejor ejemplo es hay este lenguaje informático llamado java script, que realmente han estado utilizando y navegadores que son web incluye programas como una parte de ellos, un java intérprete de comandos. Y cuando viene el navegador web a través de una página con código java script puede utilizar el intérprete para ejecutar ese código para que sea hacer todo lo que se va a hacer. Así que la forma del intérprete obras son que trata con el programa 1 línea a la vez. Así que aquí es un poco de código de secuencia de comandos de java, Si el intérprete quería ejecutar este, bien se verá en la primera línea y a mirar lo que dice esa línea y, a continuación, el intérprete lo haría. Así que en este caso, el intérprete dirá, UH-así que supongo que necesito una variable denominada A, y Necesito poner un 1 en ella. Así que una vez se realiza con esa línea luego va hacia adelante, y lo hace la siguiente línea. Y así sucesivamente. Lo mismo ocurre con el compilador de este gran grueso traducción del código fuente en el código de máquina Pero no realmente está ejecutando el código, su justo haciendo la traducción para ejecutarse en el futuro. Por el contrario intérprete vive realmente en el momento. Sólo pasando por el código línea por línea y sólo hacerlo. Así que permítanme hablar un poco sobre las diferencias entre estos dos. Debo decir como una renuncia, Hay muchos lenguajes de programación, no hay ninguna mejor el viejo chiste de lenguaje, es que realmente saben, cuando estás en el seminario y cuando estás argumentando sobre los pros y los contras de algo, en última instancia, la respuesta es simplemente, depende. Como no hay ninguna mejores idiomas, pero bien lo que es los idiomas mejores esta situación, con todos los características. Tan ampliamente hablando, código de compilador justo tiende a correr más rápido. Cuando se compila un código de C++ y producir ese .exe, es una especie de en un sentido magro, gran cantidad de detalles y decisiones ha sido despojado tanto como sea posible. Por otro lado dinámico o idiomas de intérprete, tienden a tener más funciones. Más funciones que hace el trabajo del programador un poco más fácil. O puesto de otra manera, ampliamente hablando, el programador puede tienden a hacer más trabajo por hora, en lenguajes dinámicos, que lo hacen en la compilación Idiomas. Sin embargo hay no hay almuerzo gratis, es también el caso de que el código de lenguaje dinámico tiende a ejecutar más lento de la CPU en términos de sólo obtener sólo el trabajo realizado, en comparación con las lenguas de compilador. Código de fuente del compilador se va a hacer lo mismo. Así que un ejemplo de esto, es un gran ejemplo de esto, Administración de memoria. Por lo que la administración de memoria se refiere a la problema en el código de saber cuántos bytes son ¿necesarios para almacenar algo y, en particular por cuánto tiempo? Bueno necesito esos bytes para la línea 6, sabes, pero quizás en la línea 20, y no necesitan ya y realmente puedo reutilizarlos para algo más. Y en realidad es un problema de tipo de complicted. En c y C++, administración de memoria es un grado Manual. y eso sólo significa que el programador se están produciendo todas estas líneas de códigos para cosas y va a ser a veces, cuando puede tener a agregar algunas líneas para hacer algún pensamiento, para ayudar a la Guía la administración de la memoria. Así que hay algunos esfuerzo de programador requerido. En contraste, la mayoría lenguajes dinámicos tienen lo que se llama, automático Administración de memoria. Y esto significa que, no entrada de programador es necesario. El lenguaje se va a notar automáticamente, cuando se necesita memoria, Cuando memoria no es necesaria ya, puede ser reciclado y eche en ese conjunto problema. Por lo tanto, esto encaja dentro de la tendencia de lenguajes dinámicos que estaba mencionando anteriormente, Por eso, este un ejemplo de cómo, bueno, ya sabes, porque el programador tiene menos que ver, son capaces de justo obtener cosas hecho un poco más rápido. Administración de memoria tan es un gran ejemplo de ello. Sin embargo también se puede imaginar Esta es una de las cosas que hace dinámico código de idioma ejecutar un poco más lento. Porque, la CPU tiene ahora suggestional libro manteniendo el problema, donde su mirando la memoria y tratando de figura fuera, cuando puede ser reutilizado. Por lo tanto, muy amplia hablando, la tendencia para el equipo de programación hoy es hacia los lenguajes dinámicos. El rasgo que la programador obtendrá un liitle rápido, cosas a expensas de utilizar un poco más CPU o más memoria, es un equilibrio bastante atractivo para muchos de los problemas. Esto puede ser un poco intuitiva, pero se puede pensar lo que es la escasa calidad, para un programa de ordenador y muchas veces es el programador, que tenga programador experto trabajando en que, sabes, trabajando en este dominio, mucho de los tiempos son difíciles de encontrar. Y así sus horas, es decir, utilizando algunas de sus horas, luce atractivo, en contraste, la CPU siempre quiero trabajar tan rápido como sea posible, pero CPUs son bastante barato y bastante eficaz y hay incluso este efecto curioso donde esta Moore Derecho, sigue haciendo más cierto, donde la CPU cada año obtiene más barata y si pensamos en el equilibrio entre el programador costo y el costo de CPU de conseguir algo, Esto significa en términos de la parte del pastel, el programador de hecho cada vez más caro cada año, un poco más escaso. Por lo que estos se ajusta en el patrón. En el conjunto de los lenguajes dinámicos se están volviendo populares. La última cosa que será mención es que existe una cosa llamada "JIT", un compilador Just In Time. Y este tipo de la síntesis natural del compilador e intérprete estrategias, de tratar de obtener lo mejor de ambos mundos. Tan su parecido, bueno, nos gustaría tener un lenguaje dinámico, con todas estas funciones, todas estas favorables de programador características, pero nos quieren correr rápido. Y así Este JIT tomar partes del código y probar y compilar sobre la marcha. Por lo que trata de una especie de para casarse con dos de ellos. Resulta funciona bastante bien. Así que todos los navegadores tienen ahora JITs para código de secuencia de comandos de Java. Así que realmente cuando usted está ejecutando código Java Script en esta clase, dentro del explorador había un JIT que estaba en el mosca, teniendo esos trozos de código Java Script y compilarlos sobre la marcha, en el código de máquina. De todos modos, no obtendrá exactamente los formatos del compilador código, pero se obtiene bastante estrecha. SO. Esto es realmente Cómo funciona la mayoría de los lenguajes dinámicos. Es un activo área de investigación. Pero parece que funciona bastante bien.