Sigo viendo "bootstrapping" mencionado en discusiones sobre desarrollo de aplicaciones. Parece generalizado e importante, pero aún no he encontrado una explicación pobre de lo que es realmente el bootstrapping; más bien, parece que se supone que todo el mundo sabe lo que significa. Yo no, sin embargo. Por lo que puedo imaginar, tiene algo que ver con las tareas de inicialización requeridas de una aplicación en el lanzamiento, pero podría estar completamente equivocado al respecto. ¿Alguien puede ayudarme a entender esta idea?
bootstrapping
Alex Basson
fuente
fuente
Respuestas:
"Bootstrapping" viene del término "tirarte de tus propios bootstraps". Eso se puede obtener de Wikipedia .
En informática, un cargador de arranque es la primera pieza de código que se ejecuta cuando se inicia una máquina, y es responsable de cargar el resto del sistema operativo. En las computadoras modernas está almacenado en la ROM, pero recuerdo el proceso de arranque en el PDP-11, donde se introducían bits a través de los interruptores del panel frontal para cargar un segmento de disco en particular en la memoria y luego ejecutarlo. No hace falta decir que el cargador de arranque suele ser bastante pequeño.
"Bootstrapping" también se usa como un término para construir un sistema que se utiliza a sí mismo, o más correctamente, una versión predecesora. Por ejemplo, ANTLR versión 3 se escribe utilizando un analizador desarrollado en ANTLR versión 2.
fuente
Un ejemplo de bootstrapping se encuentra en algunos marcos web. Se llama index.php (el programa de arranque), y luego carga los marcos auxiliares, modelos, configuración, y luego carga el controlador y le pasa el control.
Como puede ver, es un archivo simple que inicia un proceso grande.
fuente
Ver en el artículo de Wikipedia sobre bootstrapping .
Hay una sección y enlaces que explican lo que significa en Computación . Tiene cuatro usos diferentes en el campo.
Aquí hay algunas citas, pero para una explicación más profunda y significados alternativos, consulte los enlaces de arriba.
fuente
El término "bootstrapping" generalmente se aplica a una situación en la que un sistema depende de sí mismo para comenzar, una especie de problema de huevo y gallina.
Por ejemplo:
En ese caso, bootstrapping se refiere a una forma de romper la dependencia circular, generalmente con la ayuda de una entidad externa, p. Ej.
etc.
fuente
En el contexto del desarrollo de aplicaciones, el "arranque" generalmente aparece cuando se habla de software modular y / o auto-actualizable.
En lugar de que el usuario descargue la aplicación completa, incluidas las funciones que no necesita, y la descargue y actualice manualmente cada vez que haya una actualización, el usuario solo descarga e inicia un pequeño ejecutable "bootstrap", que a su vez descarga e instala esos partes de la aplicación que el usuario necesita. Además, el componente bootstrap puede buscar actualizaciones e instalarlas cada vez que se inicia.
fuente
Alex, es más o menos lo que hace tu computadora cuando se inicia. ('Arrancar' una computadora en realidad proviene de la palabra bootstrapping)
Inicialmente, se ejecuta el pequeño programa en su BIOS. Contiene suficiente código de máquina para cargar y ejecutar un programa más grande y complejo.
Ese segundo programa es probablemente algo como NTLDR (en Windows) o LILO (en Linux), que luego se ejecuta y puede cargar, luego ejecutar, el resto del sistema operativo.
fuente
Para completar, también es un método bastante importante (y relativamente nuevo) en estadística que utiliza remuestreo / simulación para inferir propiedades de población de una muestra. Tiene su propio artículo extenso de Wikipedia sobre bootstrapping (estadísticas) .
fuente
Arrancar el significado del diccionario es comenzar con recursos mínimos. En el contexto de un sistema operativo, el sistema operativo debería poder cargarse rápidamente una vez que la prueba de encendido automático (POST) determina que es seguro reactivar la CPU. El código de la correa de arranque se ejecutará desde el BIOS. BIOS es una ROM de pequeño tamaño. En general, es una instrucción de salto al conjunto de instrucciones que cargará el sistema operativo en la RAM. El destino del Jump es el sector de arranque en el disco duro. Una vez que el programa bios lo verifica, es un sector de arranque válido que contiene la dirección de inicio del sistema operativo almacenado, es decir, si es un MBR (registro de arranque maestro) válido o no. Si se trata de un MBR válido, el sistema operativo se copiará en la memoria (RAM) desde allí en el sistema operativo se encarga de la gestión de la memoria y el proceso.
fuente
En mi humilde opinión, no hay una mejor explicación que el hecho de cómo se escribió el primer compilador?
En estos días, la carga del sistema operativo es el proceso más común denominado Bootstrapping
fuente
Bootstrapping tiene otro significado en el contexto del aprendizaje por refuerzo que puede ser útil para los desarrolladores, además de su uso en el desarrollo de software (la mayoría de las respuestas aquí, por ejemplo, por kdgregory ) y su uso en estadísticas como lo discutió Dirk Eddelbuettel .
De Sutton y Barto :
El libro describe varios algoritmos de refuerzo donde el valor objetivo se basa en una aproximación previa como métodos de arranque:
Tenga en cuenta que esto difiere de la agregación de bootstrap y la explosión de inteligencia que se menciona en la página de wikipedia sobre bootstrapping.
fuente
En lo que respecta al uso del popular Bootstrap de Twitter, siento que este tipo de bootstrapping es la acción de integrar un componente modular en una aplicación web sin que la aplicación web tenga que reconocer que el componente modular existe hasta que lo necesite o lo haga referencia .
El desarrollador puede integrar sin problemas una copia predeterminada del tema CSS Twitter Bootstrap simplemente cargándola (haciendo referencia) en la aplicación web. Vuola! Entonces es posible que deba anular algunos de estos cambios, pero puede hacerlo de tal manera que el recurso / componente esté intacto y sea completamente reutilizable.
Este mismo concepto es cómo los desarrolladores web implementan las API jQuery, etc., pero los desarrolladores no lo expresan realmente como bootstrapping per se. Lo que hace es mejorar la flexibilidad y la reutilización al tiempo que permite el aislamiento de diferentes componentes / recursos de una aplicación para residir libremente, ya sea en el mismo servidor / s o posiblemente en un CDN.
NOTA: En el cómputo de las operaciones de arranque con el MBR y en UNIX requiere un gestor de arranque o administrador especial que es un pequeño programa en ROM que carga el sistema operativo en la RAM. Si lo piensa, el mismo concepto tiene lugar en la acción del cargador de arranque que comprueba el MBR y carga el sistema operativo en función de esta tabla, lo que ocurre sin que el sistema operativo tenga ninguna idea de que esto ocurre.
fuente
Pertenezco a la generación que activó los interruptores para ingresar a un programa de arranque. A principios de la década de 1980, trabajé en un microordenador llamado Micro-78, desarrollado por Electronics Corporation of India Ltd (ECIL). Era una especie de clon de Altair 8800. Recuerdo claramente lo que sucede cuando se ingresó un pequeño programa de arranque usando los interruptores de palanca y se ejecutó presionando un botón. El programa lee un segundo programa de inicio contenido en la primera pista del disquete y lo sobrescribe de tal manera que el segundo programa de inicio comienza a ejecutarse para cargar un sistema operativo de disco. Creo que el término "bootstrap" se refiere a este proceso de la primera lectura del programa de arranque y sobrescribir el segundo programa de arranque en sí mismo, de una manera "empujando hacia arriba" con la funcionalidad adicional del segundo programa de arranque.
fuente
Como un humilde principiante en el mundo de la programación, y hojeando todas las respuestas aquí después de ver que esta palabra se usaba mucho de maneras aparentemente ligeramente diferentes en diferentes lugares, encontré leyendo la página de Wikipedia sobre Bootstrapping (¡duh! No pensé en tampoco al principio) es muy informativo para comprender las diferencias en el uso de esta palabra. ¿Podría ser ...... en ocasiones extremadamente raras ...... Wikipedia podría incluso tener mejores explicaciones de ciertos términos que ... (redactado)? Sin embargo, ¿traerán puntos de representante en Wikipedia?
Para mí, parece que todos los significados tienen algo que ver: comenzar con algo lo más simple posible Cosa1, hacer algo un poco más complejo con esa Cosa2, y ahora puede usar Cosa2 para hacer algún tipo de tareas de manera más eficiente y rápida de lo que podría originalmente con Thing1. Luego repita de Thing2 a Thing 3 ad infinitum ...
Lo veo muy relacionado tanto con la evolución biológica como con 'Layers of Abstraction' (novatos como yo, ejem, Wikipedia, tos): la evolución de las computadoras de 1940 con interruptores, código de máquina, ensamblaje, C, Python, IAs que puedes dar todo tipo de instrucciones complejas para que les guste "hacer la cena% 4 ^% a mis requisitos predeterminados & ^ $% y limpiar el piso% $ £" @: ~ "en argot borracho inglés o dialecto tribal amazónico sin que ellos planteen una excepción '(para los novatos otra vez ... lo adivinaste): perdí muchos enlaces allí debido a la simple ignorancia.
Luego, en ciertos significados de software específicos: Significado1: Thing1 se usa para cargar la última versión de Thing2 (porque, por supuesto, Thing2 será más grande que Thing1, al igual que Thing3 será más grande que Thing2).
Significado2: Thing1 es un lenguaje de nivel inferior (más cercano a 1001011100 .... 011001 que print ("Hello", user.name)) usado para escribir un poco del idioma superior de Thing2, entonces este bit de Thing2 es solía expandir Thing2 en sí desde el nivel de vocabulario para bebés hacia el nivel de vocabulario para adultos (Thing2 comienza a ser procesado, o para usar el término técnico correcto 'compilado', por la versión para bebés de sí mismo (¡es un bebé inteligente!), mientras que la versión para bebés de Thing2 por supuesto, solo puede ser compilado por Thing1, porque no puede existir antes de que exista, ¡claro!), luego la versión secundaria de Thing2 compila la versión Surly Teenager de Thing2, en cuyo momento la comunidad de programación decide si los 'problemas' de Surly Teenager ( ¡Vale la pena dedicar suficiente tiempo a resolver el término de software y el término de metáfora!) para ser aceptado a largo plazo,o abandonarlos (no estoy seguro de dónde tomar la analogía aquí).
En caso afirmativo, Thing2 tiene 'Bootstrapped' (posiblemente algunas veces) desde la infancia hasta la edad adulta: "el niño es el padre del hombre" (Wordsworth, sugiera que no intente buscar la cita o el autor en Stack Overflow) .
fuente