Language translators and IDEs · Traductores de lenguaje e IDEs
| English | Español |
|---|---|
| compiler/kəmˈpaɪlə/ | compilador |
| source code/sɔːs kəʊd/ | código fuente |
| translator/trænˈsleɪtə/ | traductor |
| machine code/məˈʃiːn kəʊd/ | código máquina |
| assembler/əˈsemblə/ | ensamblador |
| assembly language/əˈsemblɪ ˈlæŋɡwɪdʒ/ | lenguaje ensamblador |
| object code/ˈɒbdʒekt kəʊd/ | código objeto |
| executable/ɪɡˈzekjʊtəbl/ | ejecutable |
| interpreter/ɪnˈtɜːprɪtə/ | intérprete |
| bytecode/ˈbaɪtkəʊd/ | bytecode |
| portable/ˈpɔːtəbl/ | portable |
| virtual machine/ˈvɜːtʃuːəl məˈʃiːn/ | máquina virtual |
| just-in-time compilation/dʒʌst ɪn taɪm ˌkɒmpɪˈleɪʃn/ | compilación justo a tiempo |
| integrated development environment/ˈɪntɪɡreɪtɪd dɪˈveləpmənt enˈvaɪrənmənt/ | entorno integrado de desarrollo |
| context-sensitive prompts/ˈkɒntekst ˈsensɪtɪv prɒmpts/ | mensajes contextuales |
| auto-complete/ˈɔːtəʊ kəmˈpliːt/ | autocompletado |
| dynamic syntax checks/daɪˈnæmɪk ˈsɪntæks tʃeks/ | comprobaciones sintácticas dinámicas |
| prettyprint/ˈpretɪprɪnt/ | formato bonito |
| breakpoints/ˈbreɪkpɔɪnts/ | puntos de interrupción |
| single stepping/ˈsɪŋɡl ˈstepɪŋ/ | paso a paso |
| report window/rɪˈpɔːt ˈwɪndəʊ/ | ventana de informe |
Nobody believed the computer could write its own program
- In 1952 Grace Hopper built the first compiler 编译器, a program that turned a programmer's notation into machine instructions. "Nobody believed that," she said later. "I had a running compiler and nobody would touch it. They told me computers could only do arithmetic."
- Every language you have used since rests on that idea: you write source code 源代码 for people, and a translator produces the machine code 机器码 the processor runs.
- There are three kinds of translator and one famous hybrid, and the exam wants you to say which to use when, and why.
- This lesson is the translators, the trade-offs between compiling and interpreting, Java's mixture of both, and the tools an IDE puts around them.
Nadie creía que la computadora pudiera escribir su propio programa
- En 1952, Grace Hopper construyó el primer compilador (compiler), un programa que convertía la notación de un programador en instrucciones de máquina. "Nadie lo creía", dijo más tarde. "Tenía un compilador funcionando y nadie quería tocarlo. Me dijeron que las computadoras solo podían hacer aritmética".
- Cada lenguaje que ha utilizado desde entonces se basa en esa idea: escribe código fuente (source code) para personas, y un traductor produce el código de máquina (machine code) que ejecuta el procesador.
- Hay tres tipos de traductores y uno híbrido famoso, y el examen quiere que sepas cuándo usar cada uno y por qué.
- Esta lección trata sobre los traductores, los compromisos entre compilar e interpretar, la mezcla de ambos en Java y las herramientas que un IDE ofrece alrededor de ellos.
Source code, machine code and the assembler
- The processor executes only machine code. A translator 翻译器 converts a program written for people into it.
- An assembler 汇编器 translates assembly language 汇编语言 into machine code: each mnemonic instruction,
LDD,ADD,JMP, becomes exactly one machine-code instruction, and labels and symbolic addresses are replaced by real addresses. - Assembly is used where the programmer needs direct control of the hardware: device drivers, embedded systems, the innermost loops of a game.
Código fuente, código de máquina y ensamblador
- El procesador ejecuta únicamente código de máquina. Un traductor (translator) convierte un programa escrito para personas a este formato.
- Un ensamblador (assembler) traduce el lenguaje ensamblador (assembly language) en código de máquina: cada instrucción mnemotécnica, como
LDD,ADD,JMP, se convierte exactamente en una instrucción de código de máquina, y las etiquetas y direcciones simbólicas son reemplazadas por direcciones reales. - El ensamblador se utiliza donde el programador necesita control directo del hardware: controladores de dispositivos, sistemas embebidos y los bucles más internos de un juego.
Match each translator to what it does. · Asocia cada traductor con lo que hace.
Assembler: assembly→machine code; compiler: all-at-once to an executable; interpreter: line by line at run time. · Ensamblador: ensamblable→código máquina; compilador: todo junto a un ejecutable; intérprete: línea por línea en tiempo de ejecución.
The compiler
- A compiler translates the whole high-level program into machine code, object code 目标代码, before it is run. It produces an executable 可执行文件 file and reports all the syntax errors together, as a list, at the end of translation.
- It does not run the program. Once the code is clean, the executable runs without the compiler installed, as many times as you like.
- Fast at run time, since nothing is translated while running; but the machine code is tied to one processor and operating system.
El compilador
- Un compilador (compiler) traduce el programa completo de alto nivel en código de máquina (código objeto, object code) antes de ser ejecutado. Produce un archivo ejecutable (executable) e informa de todos los errores de sintaxis juntos, como una lista, al final de la traducción.
- No ejecuta el programa. Una vez que el código está limpio, el ejecutable se ejecuta sin tener instalado el compilador, tantas veces como desee.
- Rápido en tiempo de ejecución, ya que no se traduce nada mientras se ejecuta; pero el código de máquina está ligado a un único procesador y sistema operativo.
The compiler route: source to running program · La ruta del compilador: desde el código fuente hasta el programa en ejecución
Step through how a compiler works — translating the whole program once, before it runs. Contrast it with an interpreter, which translates and runs one line at a time. · Paso a paso cómo funciona un compilador: traduce todo el programa una vez, antes de ejecutarlo. Contrástalo con un intérprete, que traduce y ejecuta línea por línea.
A compiler differs from an interpreter because it: · Un compilador difiere de un intérprete porque:
A compiler translates all at once into an executable that runs without the compiler. An interpreter runs line by line. · Un compilador traduce todo junto a un ejecutable que se ejecuta sin el compilador. Un intérprete ejecuta línea por línea.
Put the compiler route in order, from writing code to running it. · Ordena la ruta del compilador, desde escribir código hasta ejecutarlo.
A compiler translates the whole program once into an executable; that file then runs without the compiler. · Un compilador traduce todo el programa una vez en un ejecutable; ese archivo luego se ejecuta sin el compilador.
The interpreter
- An interpreter 解释器 translates one statement of the high-level program at a time and executes it immediately before moving to the next.
- No executable is produced. It stops at the first error it meets and reports it, with the line, so you fix it and run again.
- Both the source code and the interpreter must be present every time the program runs, and each run re-translates, so execution is slower; but the same source runs wherever an interpreter exists.
Translate once and ship, or translate as you go
El intérprete
- Un intérprete (interpreter) traduce una sola sentencia del programa de alto nivel a la vez y la ejecuta inmediatamente antes de pasar a la siguiente.
- No se produce un ejecutable. Se detiene en el primer error que encuentra y lo informa, indicando la línea, para que lo corrija y vuelva a ejecutar.
- Tanto el código fuente como el intérprete deben estar presentes cada vez que se ejecuta el programa, y cada ejecución vuelve a traducir, por lo que la ejecución es más lenta; pero el mismo código fuente se ejecuta en cualquier lugar donde exista un intérprete.

Traduce una vez y envía, o traduce según avanzas
When does an interpreter report an error? · ¿Cuándo informa un intérprete un error?
An interpreter runs line by line, so it reports an error at the moment it reaches that line — handy during development. · Un intérprete ejecuta línea por línea, por lo que informa un error en el momento en que llega a esa línea — útil durante el desarrollo.
An interpreter produces no stand-alone executable, so the interpreter itself must be installed to run the program. · Un intérprete no produce un ejecutable independiente, por lo que el propio intérprete debe instalarse para ejecutar el programa.
An interpreter translates and runs line by line each time — there is no separate executable to ship, unlike a compiler. · Un intérprete traduce y ejecuta línea por línea cada vez — no hay un ejecutable separado para distribuir, a diferencia de un compilador.
Benefits and drawbacks, as the mark scheme lists them
| compiler | interpreter | |
|---|---|---|
| execution speed | fast, already machine code | slower, translated on every run |
| what the user needs | only the executable; the source stays private | the source code and the interpreter |
| finding errors | all listed at once after translation | each reported at its line, as you develop |
| changing the code | recompile the whole program | edit and run again immediately |
| portability | one platform; recompile for each | runs wherever an interpreter exists |
Ventajas y desventajas, según el esquema de calificación
| Compilador | Intérprete | |
|---|---|---|
| Velocidad de ejecución | Rápida, ya es código de máquina | Más lenta, se traduce en cada ejecución |
| Lo que necesita el usuario | Solo el ejecutable; el código fuente permanece privado | El código fuente y el intérprete |
| Detección de errores | Todos listados a la vez después de la traducción | Cada uno reportado en su línea, durante el desarrollo |
| Cambiar el código | Re-compilar todo el programa | Editar y ejecutar de nuevo inmediatamente |
| Portabilidad | Una plataforma; recompilar para cada una | Ejecuta en cualquier lugar donde exista un intérprete |
You should choose a compiler when: · Debes elegir un compilador cuando:
Compiled executables are fast and stand-alone. Interpreters suit quick development and portable scripts. · Los ejecutables compilados son rápidos e independientes. Los intérpretes son adecuados para desarrollo rápido y scripts portátiles.
Which points favour using an interpreter while developing a program? Select all · todos that apply. · ¿Qué puntos favorecen usar un intérprete durante el desarrollo de un programa? Selecciona todos los que correspondan.
Fast edit-run cycles and errors at their line are the interpreter's strengths. Run-time speed is the compiler's. · Ciclos rápidos de edición-ejecución y errores en su línea son las fortalezas del intérprete. La velocidad en tiempo de ejecución es la del compilador.
Worked example: an interpreter while writing, a compiler when finished
- A developer uses an interpreter while writing a program and a compiler when it is finished. Explain how each is used. [4]
- During development the interpreter runs the partly written program at once, without waiting for a complete translation. When it meets an error it reports the line, so the developer fixes it and runs again immediately: a fast edit-run cycle that makes debugging easier.
- When the program is finished, the compiler translates the whole program into an executable that runs faster, needs no translator on the user's computer, and keeps the source code private.
- Two marks for each tool: what it does, and why that suits that stage.
Ejemplo resuelto: un intérprete mientras se escribe, un compilador cuando termina
- Un desarrollador usa un intérprete mientras escribe un programa y un compilador cuando este ha terminado. Explica cómo se usa cada uno. [4]
- Durante el desarrollo, el intérprete ejecuta el programa parcialmente escrito al instante, sin esperar a una traducción completa. Cuando encuentra un error, informa la línea, por lo que el desarrollador lo corrige y vuelve a ejecutar inmediatamente: un ciclo rápido de edición-ejecución que facilita la depuración.
- Cuando el programa está terminado, el compilador traduce todo el programa en un ejecutable que se ejecuta más rápido, no necesita un traductor en la computadora del usuario y mantiene el código fuente privado.
- Dos puntos por cada herramienta: qué hace y por qué eso se adapta a esa etapa.
Java: partially compiled, partially interpreted
- Java source is compiled into bytecode 字节码, a compact, portable 可移植的 intermediate form that is not machine code for any real processor.
- A virtual machine 虚拟机, the JVM, then interprets the bytecode on whatever machine it runs on, or uses just-in-time compilation 即时编译 to turn the busiest parts into native code while the program runs.
- The compile stage catches syntax errors early; the interpret stage lets one bytecode file run anywhere a JVM exists. Java in console mode, a text program run from the command line, is the syllabus's example.
Write once, run anywhere: one bytecode file, one JVM per platform
Java: parcialmente compilado, parcialmente interpretado
- El código fuente de Java se compila en bytecode (字节码), una forma intermedia compacta y portátil que no es código de máquina para ningún procesador real.
- Una máquina virtual (virtual machine), la JVM, interpreta luego el bytecode en cualquier máquina en la que se ejecute, o utiliza compilación just-in-time (just-in-time compilation) para convertir las partes más exigentes en código nativo mientras el programa se ejecuta.
- La etapa de compilación detecta errores de sintaxis tempranamente; la etapa de interpretación permite que un único archivo de bytecode se ejecute en cualquier lugar donde exista una JVM. Java en modo consola, un programa de texto ejecutado desde la línea de comandos, es el ejemplo del plan de estudios.

Escribe una vez, ejecuta en todas partes: un archivo de bytecode, una JVM por plataforma
Java compiles to bytecode that runs on a JVM. The main benefit is: · Java compila a bytecodes que se ejecutan en una JVM. La principal ventaja es:
Bytecode is platform-independent; any JVM can run it (with JIT giving near-native speed for hot code). · El bytecode es independiente de la plataforma; cualquier JVM puede ejecutarlo (con JIT dando velocidad casi nativa para código caliente).
Java's compiler produces platform-independent ____, which a virtual machine then interprets. · El compilador de Java produce ____ independiente de la plataforma, que luego interpreta una máquina virtual.
Bytecode is an intermediate form: compiled once, then run by the JVM on any platform. That is what makes Java partially compiled and partially interpreted. · El bytecode es una forma intermedia: compilado una vez, luego ejecutado por la JVM en cualquier plataforma. Eso es lo que hace que Java sea parcialmente compilado y parcialmente interpretado.
Worked example: why compile to bytecode and then interpret?
- Explain why Java is compiled to bytecode rather than straight to machine code.
- A compiler produces machine code for one processor and operating system, so a program compiled on one machine will not run on another.
- Java's compiler targets a virtual machine instead, so the bytecode is identical everywhere. Each platform supplies its own JVM to interpret it.
- The cost is speed: interpreting bytecode is slower than running native code, which is why the JVM adds just-in-time compilation for the hot parts.
Ejemplo resuelto: ¿por qué compilar a bytecode y luego interpretar?
- Explica por qué Java se compila a bytecode en lugar de directamente a código de máquina.
- Un compilador produce código de máquina para un procesador y sistema operativo específicos, por lo que un programa compilado en una máquina no funcionará en otra.
- El compilador de Java apunta a una máquina virtual, por lo que el bytecode es idéntico en todas partes. Cada plataforma proporciona su propia JVM para interpretarlo.
- El costo es la velocidad: interpretar bytecode es más lento que ejecutar código nativo, por lo que la JVM añade compilación just-in-time para las partes críticas ("hot spots").
The IDE and its four groups of features
- An integrated development environment 集成开发环境 (IDE) is one application for writing, translating, running and debugging a program. The syllabus groups its features in four.
- For coding: context-sensitive prompts 上下文相关提示 pop up the identifiers, keywords or parameters that fit at that point; auto-complete 自动补全 finishes the name.
- For initial error detection: dynamic syntax checks 动态语法检查 underline a mistake as you type, before translation. For presentation: prettyprint 代码美化 shows keywords, identifiers, strings and comments in different colours with consistent indentation; expand and collapse hides the body of a block so you see the outline.
- For debugging: breakpoints 断点 pause the program at a marked line; single stepping 单步执行 runs one line at a time; a window shows the values of variables and expressions; the report window 报告窗口 lists errors, warnings and output.
Coding, error detection, presentation, debugging
El IDE y sus cuatro grupos de características
- Un entorno de desarrollo integrado (IDE, integrated development environment) es una única aplicación para escribir, traducir, ejecutar y depurar un programa. El plan de estudios agrupa sus características en cuatro categorías.
- Para codificar: Los comandos contextuales (context-sensitive prompts) aparecen con los identificadores, palabras clave o parámetros que corresponden en ese punto; el autocompletado (auto-complete) finaliza el nombre.
- Para la detección inicial de errores: Las verificaciones de sintaxis dinámicas (dynamic syntax checks) subrayan un error mientras escribe, antes de la traducción. Para la presentación: El resaltado de sintaxis (prettyprint) muestra palabras clave, identificadores, cadenas y comentarios en diferentes colores con sangrías consistentes; expandir y contraer oculta el cuerpo de un bloque para ver el esquema.
- Para la depuración: Los puntos de interrupción (breakpoints) pausan el programa en una línea marcada; la ejecución paso a paso (single stepping) ejecuta una línea a la vez; una ventana muestra los valores de variables y expresiones; la ventana de informes (report window) enumera errores, advertencias y salida.

Codificación, detección de errores, presentación, depuración
Which feature is part of an IDE's debugger? · ¿Cuál característica forma parte del depurador de un IDE?
A debugger lets you set breakpoints, step through code line by line, and inspect variable values. · Un depurador te permite establecer puntos de interrupción, avanzar línea por línea y inspeccionar valores de variables.
Match each IDE feature to its syllabus group. · Asocia cada función del IDE con su grupo del plan de estudios.
Coding, initial error detection, presentation, debugging: the four groups the syllabus names, one feature each here. · Codificación, detección inicial de errores, presentación, depuración: los cuatro grupos que nombra el plan de estudios, una función cada uno aquí.
Worked example: finding the bug in Calculate()
- A function
Calculate()returns an unexpected value. Describe how the debugging features of an IDE help find the cause. [4] - Set a breakpoint on the first line of
Calculate(), so the program pauses there instead of running through. - Single-step through the function one line at a time. After each step, read the values of the variables and of any expression you have asked the IDE to watch, and compare them with what you expected.
- The first line after which a value is wrong is where the logic error is. The report window shows any run-time error messages and output along the way.
Pause, step, inspect
Ejemplo resuelto: encontrar el error en Calculate()
- Una función
Calculate()devuelve un valor inesperado. Describe cómo las características de depuración de un IDE ayudan a encontrar la causa. [4] - Establezca un punto de interrupción en la primera línea de
Calculate(), para que el programa se pause allí en lugar de ejecutarse completamente. - Ejecute paso a paso a través de la función línea por línea. Después de cada paso, lea los valores de las variables y de cualquier expresión que haya solicitado al IDE que vigile, y compárelos con lo que esperaba.
- La primera línea después de la cual un valor es incorrecto es donde se encuentra el error lógico. La ventana de informes muestra cualquier mensaje de error en tiempo de ejecución y la salida a lo largo del proceso.

Pausa, paso, inspección
Put the steps of finding a logic error with a debugger in order. · Ordena los pasos para encontrar un error lógico con un depurador.
Pause, step, inspect, compare, locate. Each is one of the debugging features the syllabus lists. · Pausa, avanza, inspecciona, compara, localiza. Cada uno es una de las funciones de depuración que enumera el plan de estudios.
Marks that slip away
- A compiler does not run the program. It translates the whole of it and produces an executable.
- An interpreter stops at the first error; a compiler lists them all. Do not swap these.
- "Faster" needs "at run time", and "portable" needs "the same source runs wherever an interpreter exists".
- Sort IDE features into the syllabus's four groups: a breakpoint is debugging, prettyprint is presentation, a context-sensitive prompt is coding. Bytecode is not machine code.
Puntos que se pierden fácilmente
- Un compilador no ejecuta el programa. Traduce todo él y produce un ejecutable.
- Un intérprete se detiene en el primer error; un compilador lista todos. No intercambia estos conceptos.
- "Más rápido" requiere "en tiempo de ejecución", y "portable" requiere "el mismo código fuente se ejecuta en cualquier lugar donde exista un intérprete".
- Clasifique las características del IDE en los cuatro grupos del plan de estudios: un punto de interrupción es depuración, el resaltado de sintaxis es presentación, un comando contextual es codificación. El bytecode no es código de máquina.
You've got it
- assembler: one assembly instruction to one machine-code instruction · compiler: the whole program, before it runs, an executable, all errors listed · interpreter: one statement at a time, executed at once, stops at the first error, no executable
- compiler for speed, distribution and privacy of the source; interpreter for a fast edit-run cycle, portability and beginners
- Java compiles to portable bytecode that a JVM interprets or JIT-compiles: partially compiled, partially interpreted
- IDE features in four groups: coding (context-sensitive prompts), initial error detection (dynamic syntax checks), presentation (prettyprint, expand and collapse), debugging (breakpoints, single stepping, variables, report window)
Ya lo tienes
- Ensamblador: una instrucción de ensamblaje por una instrucción de código de máquina · Compilador: todo el programa, antes de ejecutarse, un ejecutable, todos los errores listados · Intérprete: una sentencia a la vez, ejecutada al instante, se detiene en el primer error, no produce ejecutable
- Compilador para velocidad, distribución y privacidad del código fuente; intérprete para un ciclo rápido de edición-ejecución, portabilidad y principiantes
- Java compila a bytecode portable que una JVM interpreta o compila JIT: parcialmente compilado, parcialmente interpretado
- Características del IDE en cuatro grupos: codificación (comandos contextuales), detección inicial de errores (verificaciones de sintaxis dinámicas), presentación (resaltado de sintaxis, expandir y contraer), depuración (puntos de interrupción, ejecución paso a paso, variables, ventana de informes)