Sam es un editor de texto multiarchivo basado en expresiones regulares estructurales . Fue diseñado originalmente a principios de la década de 1980 en Bell Labs por Rob Pike con la ayuda de Ken Thompson y otros desarrolladores de Unix para el terminal de ventanas Blit que se ejecutaba en Unix v9 ; [ 1 ] posteriormente fue adaptado a otros sistemas. Sam sigue una estética modular clásica de Unix . Es internamente simple, y su potencia se aprovecha mediante la capacidad de composición de un pequeño lenguaje de comandos y la extensibilidad a través de la integración con el shell.
Diseño y características
Sam está diseñado como dos programas síncronos: un intérprete de comandos y una interfaz de ventanas de mapa de bits orientada al ratón. El conjunto de comandos del intérprete se basa en el editor UNIX ` ed` y puede utilizarse para operar el editor desde una terminal de texto estándar. Sin embargo, por defecto, Sam presenta su propia ventana de interfaz gráfica de usuario (GUI), `samterm` , que además permite operaciones mediante clics a través de menús contextuales emergentes. Esta estructura de dos procesos permitió a Sam acceder a archivos en sistemas host en red mediante la ejecución remota del proceso de acceso a archivos mientras la interfaz de ventanas se ejecutaba localmente, evitando así la latencia en conexiones lentas.
Samterm muestra ventanas para los archivos que se están editando y una ventana de comandos permanente que acepta comandos sam. La mayoría de las operaciones de edición comunes se realizan de forma rápida y sencilla con la interfaz de apuntar y hacer clic, que también funciona dentro de la ventana de comandos. Esto último permite editar (y reenviar) los comandos como cualquier otro texto, una función heredada de la interfaz del terminal DMD 5620 .
Sintaxis de comandos
La sintaxis de comandos de Sam es formalmente similar a la de ed o ex , ya que contiene funciones condicionales y de bucle basadas en expresiones regulares (estructurales) y direccionamiento de ámbito, incluso compartiendo parte de la sintaxis de ed para dichas funciones. Pero mientras que los comandos de ed están orientados a líneas, los de sam están orientados a selecciones. Las selecciones son cadenas de texto contiguas (que pueden abarcar varias líneas) y se especifican con el ratón (deslizándolo sobre una región de texto) o mediante una coincidencia de patrones . Los comandos de Sam toman dichas selecciones como básicas, más o menos como otras herramientas de Unix tratan las líneas; por lo tanto, Sam maneja los patrones de varias líneas y sublíneas con la misma naturalidad con la que ed , vi , AWK , Perl , etc., manejan los patrones de línea completa. Esto se implementa a través de un modelo llamado expresiones regulares estructurales , [ 2 ] que puede aplicar recursivamente la coincidencia de expresiones regulares para obtener otras (sub)selecciones dentro de una selección dada. De esta forma, el conjunto de comandos de Sam se puede aplicar a subcadenas que se identifican mediante un contexto arbitrariamente complejo.
Sam amplía su conjunto básico de comandos de edición de texto para gestionar múltiples archivos, proporcionando comandos condicionales y de bucle similares basados en patrones para la especificación de nombres de archivo. Cualquier secuencia de comandos de edición de texto puede aplicarse como una unidad a cada especificación.
Deshacer infinito
Sam fue uno de los primeros editores de texto en admitir la función de deshacer "infinita" para revertir cualquier número de errores de edición. Esta característica, combinada con la facilidad de Sam para editar sus propios comandos y, fundamentalmente, su pequeño conjunto de comandos ortogonales (que contiene solo 33 comandos), representa la preferencia del programa por un bajo umbral de aprendizaje en comparación con otros "editores potentes" más expresivos.
Patrocinadores
Sam es el editor de texto preferido de varios programadores eminentes. Fue el primer editor de pantalla completa que le gustó a Ken Thompson . [ 3 ] Sam es el editor de texto utilizado por Bjarne Stroustrup , [ 4 ] Brian Kernighan , [ 5 ] [ 6 ] Douglas McIlroy y Tom Duff . Otros, como Dennis Ritchie , Rob Pike y Russ Cox, han migrado a acme , un editor con el mismo lenguaje de comandos que sam, pero con una variedad de características adicionales, incluyendo combinaciones de teclas del ratón y mosaico automático de archivos abiertos.
La última versión de sam se escribió como parte del sistema operativo Plan 9, pero hay versiones disponibles para Microsoft Windows , macOS y X Window System [ 7 ] .
Véase también
- acme (editor de texto) — El otro editor de texto popular de Rob Pike y sucesor de sam.
- ed (editor de texto) — El editor de texto original de Unix por Ken Thompson
- Plan 9 de Bell Labs
- Lista de comandos de Unix
Notas
- ↑ McIlroy, MD (1987). Un lector de Research Unix: extractos anotados del Manual del programador, 1971–1986 (PDF) (Informe técnico). CSTR. Bell Labs. 139.
- ↑ Pike, Rob. "Expresiones regulares estructurales" (PDF) . EUUG Primavera 1987. Consultado el 1 de noviembre de 2008 .
- ↑ Entrevista: Rob Pike responde , publicado por Roblimo el lunes 18 de octubre de 2004 en Slashdot.
- ↑ Rzeszótko, Jarosław (16 de octubre de 2006). "Stiff pregunta, los grandes programadores responden" . Stifflog (Entrevista). Archivado del original el 5 de octubre de 2011. Recuperado el 1 de noviembre de 2008 .
- ↑ Kernighan, Brian (julio de 2000). "Una entrevista con Brian Kernighan" (Entrevista). Entrevistado por Budiu, Mihai . Recuperado el 1 de noviembre de 2008 .
- ↑ Fridman, Lex (19 de julio de 2020). Configuración de programación de Brian Kernighan | Lex Fridman . YouTube. El evento ocurre a los 44 segundos. Archivado del original el 12 de diciembre de 2021. Recuperado el 3 de octubre de 2020 .
- ↑ "Deadpixi/Sam" . GitHub . 17 de mayo de 2022.
Referencias
Enlaces externos
- ssam(1): interfaz de flujo para sam
- Recursos de Sam
- sam(1): editor de pantalla con expresiones regulares estructurales
- Una nueva versión de Unix de sam como parte del Plan 9 de User Space
- Una tarjeta de referencia rápida de Sam
- Editores de texto gratuitos
- Plan 9 de Bell Labs
- Inferno (sistema operativo)
- Editores de texto Unix
- Editores de texto de macOS
- Editores de texto de Windows