En las computadoras, un punto de entrada es el punto en un programa, módulo o función donde comienza el código; específicamente, la dirección de memoria donde comienza. En un programa, es el primer módulo de código, o incluso la primera línea de código que se ejecuta. En un programa lineal, como BASIC o COBOL, el punto de entrada es literalmente la primera línea de código. Luego, el código sigue secuencialmente hasta que se ejecuta algún tipo de salto o llamada. En la programación modular, como todas las variantes del lenguaje de programación C, el punto de entrada es el módulo inicial. En C, esta es la función “Principal ()”.
En programas y sistemas operativos más antiguos, un programa podía tener varios puntos de entrada, según la función o el sistema que se estaba ejecutando. En la mayoría de los sistemas operativos modernos, incluidos Windows® y Unix, los programas están escritos en idiomas que admiten un único punto de entrada. Incluso en los primeros días de la informática moderna, lenguajes como BASIC, aunque tienen un único punto de entrada al programa, pueden admitir «saltos largos», donde el programa puede «saltar» de un módulo al punto de entrada de otro módulo indiscriminadamente. Esto alentado fue lo que se llamó «código espagueti», que era difícil de mantener o modificar.
Es posible que un punto de entrada ni siquiera se refiera al punto de entrada de un programa, pero puede ser el punto de entrada de una biblioteca de enlaces dinámicos (DLL), que son una especie de miniprogramas que se comparten con otros programas. Una DLL que controla la entrada del teclado es un ejemplo. Independientemente del tipo de programa, módulo o función, el punto de entrada es el único punto en el que se inicia el procesamiento en ese fragmento de código. La clave para comprender cualquier idioma o modificar y respaldar cualquier programa radica en comprender cómo se identifica el punto de entrada en ese programa o sistema operativo específico.
El concepto de puntos de entrada se implementó cuando la programación informática abandonó los métodos completamente lineales de los primeros días. En aquellos tiempos, un programa de computadora comenzaba en la primera línea de código y avanzaba una línea a la vez hasta el final del proceso. Pronto, las construcciones de programación como el bucle, la ramificación condicional, la recursividad y otras crearon programas que eran funcionalmente más eficientes, pero el procesamiento rebotaba por todas partes dentro del código. La naturaleza de estos programas significa que puede haber muchas líneas o secciones de código antes del punto donde realmente comienza el procesamiento. Por este motivo, se creó e identificó el punto de entrada.
En C, esta se convirtió en la función main (). Independientemente de dónde existiera esta función en el código, ahí es donde comenzó el procesamiento. En otros idiomas, los puntos de entrada no se identifican tanto por dónde están sino por dónde no están. El comienzo del programa puede contener secciones de declaraciones de variables y subrutinas. La primera línea de código que sigue a estas áreas o funciones, de forma predeterminada, se convierte en el punto de entrada.