bootstrapping - link - title html attribute
¿Qué es bootstrapping? (13)
Sigo viendo "bootstrapping" mencionado en las discusiones sobre el desarrollo de aplicaciones. Parece a la vez generalizado e importante, pero aún no he encontrado una explicación pobre de lo que realmente es el bootstrapping; más bien, parece que todo el mundo se supone que debe saber lo que significa. Aunque no lo hago. Como 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" viene del término "arrastrándote por tus propios bootstraps". Eso es lo que puedes 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 pueden meter bits a través de los interruptores del panel frontal para cargar un segmento de disco 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 usa a sí mismo, o más correctamente, una versión predecesora. Por ejemplo, la versión 3 de ANTLR se escribe usando un analizador desarrollado en la versión 2 de ANTLR.
Alex, es más o menos lo que tu computadora hace cuando arranca. (''Arrancar'' una computadora viene 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, y luego ejecutar, el resto del sistema operativo.
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 autoprueba de encendido (POST) determine 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 salto es el sector de arranque en el disco duro. Una vez que el programa de BIOS comprueba, es un sector de inicio válido que contiene la dirección de inicio del sistema operativo almacenado, es decir, si es un MBR (Registro de inicio maestro) válido o no. Si es un MBR válido, el sistema operativo se copiará a la memoria (RAM) desde allí, el sistema operativo se encarga de la administración de la memoria y los procesos.
Bootstrapping tiene otro significado en el contexto del aprendizaje por refuerzo que puede ser útil saber 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 explica Dirk Eddelbuettel .
Desde Sutton y Barto :
Widrow, Gupta y Maitra (1973) modificaron el algoritmo de mínimos cuadrados medios (LMS) de Widrow y Hoff (1960) para producir una regla de aprendizaje de refuerzo que podría aprender de las señales de éxito y fracaso en lugar de ejemplos de entrenamiento. Llamaron a esta forma de aprendizaje " adaptación selectiva " y la describieron como "aprender con un crítico" en lugar de "aprender con un maestro". Analizaron esta regla y mostraron cómo podría aprender a jugar blackjack. Esta fue una incursión aislada en el aprendizaje por refuerzo de Widrow, cuyas contribuciones al aprendizaje supervisado fueron mucho más influyentes.
El libro describe varios algoritmos de refuerzo donde el valor objetivo se basa en una aproximación previa como métodos de arranque:
Finalmente, notamos una última propiedad especial de los métodos DP [Programación Dinámica]. Todos ellos actualizan las estimaciones de los valores de los estados en base a las estimaciones de los valores de los estados sucesores. Es decir, actualizan las estimaciones sobre la base de otras estimaciones. A esta idea general la llamamos bootstrapping . Muchos métodos de aprendizaje de refuerzo realizan un arranque, incluso aquellos que no requieren, como DP requiere, un modelo completo y preciso del entorno.
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 en bootstrapping.
Como un humilde principiante en el mundo de la programación, y repasando todas las respuestas aquí después de ver que esta palabra se usaba mucho en formas diferentes en diferentes lugares, encontré la lectura de la página de Wikipedia en Bootstrapping (¡no! al principio) es muy informativo para comprender las diferencias en el uso de esta palabra. ¿Podría ser ...... en muy raras ocasiones ...... Wikipedia podría incluso tener mejores explicaciones de ciertos términos que ... (redactado)? Sin embargo, ¿traerán puntos de representación en Wikipedia?
Para mí, parece que todos los significados tienen algo que ver con: comenzar con algo lo más simple posible Thing1, hacer algo un poco más complejo con Thing2, y ahora puedes usar Thing2 para realizar algún tipo de tareas de manera más eficiente y rápida de lo que podrías originalmente con Thing1. Luego repita de Thing2 a Thing 3 ad infinitum ...
Lo veo estrechamente conectado tanto con la evolución biológica como con las "Capas de abstracción" (los novatos como yo ven, ejem, Wikipedia, tos) - la evolución de las computadoras de 1940 con interruptores, código de máquina, ensamblaje, C, Python, AIs que puedes dar todo tipo de instrucciones complejas para "hacer que la cena% 4 ^% cumpla con mis requisitos predeterminados & ^ $% y limpiar el piso que% $ £" @: ~ "en jerga borracho Inglés o dialecto tribal de Amazon sin que ellos ''generen una excepción ''(para los novatos otra vez ... lo has adivinado) - perdí muchos enlaces allí debido a la simple ignorancia.
Luego, en ciertos significados de software específicos: Meaning1: 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).
Meaning2: Thing1 es un lenguaje de nivel inferior (más cercano a 1001011100 .... 011001 que print ("Hello,", user.name)) usado para escribir un poco del lenguaje superior de Thing2, entonces este poco de Thing2 es utilizado para ampliar Thing2 desde el nivel de vocabulario del bebé hasta el nivel de vocabulario adulto (Thing2 comienza a ser procesado, o para usar el término técnico correcto ''compilado'', por la versión baby de sí mismo (¡es un bebé inteligente!), mientras que la versión baby de Thing2 por supuesto, Thing1 solo puede compilarlo, porque no puede existir antes de que exista, ¿verdad?), luego la versión secundaria de Thing2 compila la versión de Thing2 de Surly Teenager, en cuyo punto la comunidad de programación decide si los "problemas" de Surly Teenager ( el término del software y el término de la metáfora!) vale la pena dedicar el tiempo suficiente a ser aceptado a largo plazo, o abandonarlos (no estoy seguro de dónde llevar la analogía aquí).
Si es así, entonces Thing2 tiene ''Bootstrapped'' (posiblemente algunas veces) desde la infancia hasta la edad adulta: "el niño es el padre del hombre" (Wordsworth, sugiere que no intentes buscar la cita o el autor en ) .
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:
- ¿Cómo compilas un compilador de C escrito en C?
- ¿Cómo iniciar un proceso de inicialización del sistema operativo si aún no tiene el sistema operativo en ejecución?
- ¿Cómo se inicia un sistema distribuido (peer-to-peer) en el que los clientes dependen de sus pares conocidos actualmente para obtener información sobre los nuevos pares en el sistema?
En ese caso, bootstrapping se refiere a una forma de romper la dependencia circular, generalmente con la ayuda de una entidad externa, por ejemplo
- Puede usar otro compilador de C para compilar (bootstrap) su propio compilador, y luego puede usarlo para recompilarse a sí mismo
- Utiliza una pieza de código separada que configura el proceso inicial sin depender de ninguna de las funciones proporcionadas por el sistema operativo
- Utiliza una lista codificada de pares iniciales o una URL de rastreador codificada que proporciona la lista de pares
etc.
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 que vuelva a descargarla y la actualice manualmente cada vez que haya una actualización, el usuario solo descarga e inicia un pequeño archivo ejecutable "bootstrap", que a su vez descarga e instala. Partes de la aplicación que el usuario necesita. Además, el componente bootstrap puede buscar actualizaciones e instalarlas cada vez que se inicia.
En lo que respecta a la utilización 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 tenga que reconocer que el componente modular existe hasta que lo necesite o lo refiera. .
El desarrollador puede integrar sin problemas una copia predeterminada del tema CSS Twitter Bootstrap simplemente cargándolo (referenciando) 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 quede intacto y sea completamente reutilizable.
Este mismo concepto es cómo Web Devs implementan las API de jQuery y así sucesivamente, pero Devs no lo expresa realmente como bootstrapping per se. Lo que hace es mejorar la flexibilidad y la capacidad de reutilización al tiempo que permite que el aislamiento de diferentes componentes / recursos de una aplicación resida libremente en el mismo servidor o posiblemente en una CDN.
NOTA: En la computación, las operaciones de arranque con MBR y en UNIX requieren un gestor de arranque o administrador especial, que es un pequeño programa en la 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 basado en esta tabla, lo que ocurre sin que el sistema operativo tenga idea de que esto ocurre.
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.
Olvídate de los enlaces: aquí está la sección de Wikipedia: D
Informática Artículo principal: Arranque.
El término informático bootstrap comenzó como una metáfora en los años cincuenta. En las computadoras, presionar un botón de arranque provocó que un programa cableado leyera un programa de arranque desde una unidad de entrada y luego ejecutara el programa de arranque que leyó más instrucciones del programa y se convirtió en un proceso autosuficiente que se desarrolló sin ayuda externa de las instrucciones ingresadas manualmente. Como término informático, bootstrap se ha utilizado desde al menos 1958. [5]
El concepto bootstrap se usó en la computadora IBM 701 (1952-1956) que tenía un "botón de carga" que inició la lectura de la primera palabra de 36 bits de una tarjeta perforada en un lector de tarjetas, o de una unidad de cinta magnética o tambor unidad (predecesora de la unidad de disco duro). La media palabra de la izquierda de 18 bits se ejecutó como una instrucción que lee palabras adicionales en la memoria. [6]
- Vea Bootstrapping (compiladores), escribiendo un compilador para un lenguaje de computadora usando el lenguaje de computadora para codificar el compilador.
- Vea Bootstrapping (informática), un resumen del proceso de un sistema informático simple que activa un sistema informático más complicado.
- Vea Instalación (programas de computadora), para el proceso de arranque como parte del proceso de instalación del software
- Consulte el nodo Bootstrapping, un nodo de red que ayuda a los nodos recién unidos a unirse con éxito a una red P2P.
Para completar, también es un método bastante importante (y relativamente nuevo) en las estadísticas que utiliza el remuestreo / simulación para inferir las propiedades de la población de una muestra. Tiene su propio artículo largo de Wikipedia sobre bootstrapping (estadísticas) .
Un ejemplo de bootstrapping es en algunos frameworks web. Llama a index.php (el bootstrapper), y luego carga los ayudantes, los modelos, la configuración de los marcos, y luego carga el controlador y le pasa el control.
Como puede ver, es un archivo simple que inicia un gran proceso.
Ver en el artículo de Wikipedia sobre bootstrapping .
Hay una sección y enlaces que explican lo que significa en en.wikipedia.org/wiki/Bootstrapping#Computing . Tiene cuatro usos diferentes en el campo.
Aquí hay algunas citas, pero para una explicación más detallada y significados alternativos, consulte los enlaces anteriores.
"... es una técnica mediante la cual un programa de computadora simple activa un sistema de programas más complicado".
"Un uso diferente del término bootstrapping es usar un compilador para compilarse, escribiendo primero una pequeña parte de un compilador de un nuevo lenguaje de programación en un lenguaje existente para compilar más programas del nuevo compilador escrito en el nuevo lenguaje".