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