Mirando hacia adelante

Forth tiene un gran número de seguidores entre los desarrolladores integrados. Hay algunas razones para esto. Casi cualquier computadora puede ejecutar Forth, incluso CPU muy pequeñas que serían un mal candidato para lanzar programas escritos en C, y mucho menos albergar un entorno de desarrollo completo. En esencia, Forth es muy simple. Analice una palabra, busque la palabra en un diccionario. El diccionario muestra algún código de lenguaje de máquina o algunas otras palabras de Forth. Los argumentos y otras cosas generalmente se llevan en una pila. Forth puede expresar muchos edificios más avanzados de Forth, por lo que si su sistema Forth alcanza una cierta madurez, de repente puede volverse muy poderoso si tiene suficiente memoria para absorber esas definiciones.

Si desea experimentar con Forth, probablemente desee comenzar a aprenderlo con una computadora. Hay muchos que puede instalar, incluido gForth (la oferta de GNU). Pero a veces eso es una barrera para tener que instalar algún programa complejo solo para patear los neumáticos de un sistema.

Ahora tenemos todo tipo de otros programas en los navegadores, ¿por qué no Forth? En última instancia, el sistema es lo suficientemente simple como para que escribir Forth en JavaScript sea tan fácil como un pastel. [Brendanator] hizo precisamente eso e incluso mejoró Forth para permitir la interoperabilidad con JavaScript. El código está en GitHub, pero la parte realmente interesante es que puedes abrir un navegador web y usar Forth.

Si quieres aprender Forth, podrías hacer algo peor que empezar aquí. También puede usar el navegador web Forth para probar cosas mientras lee. Si desea crear su propio Forth, aún debe leer JONESFORTH. No solo es un sistema Forth en dos archivos (archivo en lenguaje ensamblador y archivo Forth), sino que es uno de los mejores ejemplos de programación culta que jamás hayamos visto.

Además de muchas computadoras más antiguas y, por supuesto, la computadora, puede encontrar Forth para muchos procesadores modernos. Por ejemplo, hemos visto sistemas para chips LPC ARM. Incluso hay una versión para el ESP8266 y el Arduino (vea el video sobre eso Forth a continuación).

  • Ostraco dice:

    http://powermops.org/

    PowerMOPS para quienes usan una Mac.

    • TheRegnirps dice:

      ¿Alguien lo apoya? ¿Existe una versión x86? Las fregonas son increíbles.

      • Ostraco dice:

        http://powermops.org/

        Parece que iMops es la versión x86-64.

        • Comedias dice:

          HEX FF Constante LOVE Decimal

          : Antes AMAR SI TOCAR LA BOCINA ENTONCES;

          Me encanta

          • Comedias dice:

            Doh!

            HEX FF CONSTANTE VERDADERO DECIMAL

            : AMO VERA =;

            : CUARTO AMOR SI TOCA LA BOCINA ENTONCES;

            MUY FUERTE

  • Mike Bradley dice:

    Pregunta honesta, no trolling ... No sé por adelantado, pero sé montar en múltiples controladores y computadoras, y prefiero c para mi micro-trabajo (saber que el montaje ayuda a optimizar mi c) así que mi pregunta es que no Entienda la afirmación: "incluso las CPU muy pequeñas que serían un mal candidato para lanzar programas escritos en C" seguidos de cosas se llevan a la pila, donde exactamente eso hace un buen micro c. Debido a que los productos locales están en el espacio de la pila, y cuando la función regresa, la pila se vacía. ¿Alguien puede darme más información?

    • Squonk42 dice:

      Lea JONESFORTH citado anteriormente.

      • Mike Bradley dice:

        Lo he leído y entiendo las partes que explica, pero no veo cómo uno puede ser mejor que el otro, simplemente los veo como diferentes. Veo la sintaxis del lenguaje como una ventaja. Es decir, habrá una suma de trabajo realizado, partes del compilador / cpu y partes del usuario final. Escribí un pequeño intérprete para un chip de 8 bits donde partes del lenguaje eran más fáciles de analizar e interpretar para el intérprete, pero creé un código que no era tan legible por humanos. cuanto más humano pueda leer, más palabras formará con la CPU. Entonces 4 3+, es más simple para la CPU / intérprete, no veo qué tan fácil es para el programador. Al igual que en el montaje, MOV AX, 0x10 es fácil y rápidamente descifrable, incluso interpretado, pero un nuevo desarrollador entendería AX = 0x10 más fácilmente. en caso de que alguien quiera jugar con el intérprete: http://www.mculabs.com/projects/fplCore.html

        • Al Williams dice:

          Bueno, no estoy de acuerdo, pero puedes leer por qué en algunas de mis otras respuestas. La mayoría de las implementaciones de Forth en realidad no producen llamadas a funciones, pero sí interpretan el código del hilo, lo cual, por supuesto, como todo, eventualmente resulta en llamadas a funciones, pero no son explícitas. Por eso la gente se confunde con la interpretación de Forth. Como ha demostrado otro comentarista, generalmente se compila, pero no en código nativo. En su lugar, se compila en caracteres que identifican código nativo o más caracteres Forth. Esto, combinado con un bucle interactivo de evaluación / impresión, hace que la gente piense que está interpretado. Si cuelga su computadora con Forth, probablemente lo esté colgando con cualquier otro lenguaje que no tenga ruedas de entrenamiento (por ejemplo, C o set, pero no Java).

    • ian dice:

      Estoy de acuerdo, ¿por qué no usar C ya que el Monstruo de Espagueti Volador siempre nos ha apuntado? Estoy de acuerdo en que no soy un experto, pero hasta ahora no he encontrado un microcontrolador sobre el que no puedas escribir C; claro, a veces puede ser un subconjunto y una compilación cruzada de otra plataforma, ponlo todavía en sintaxis que entendemos tan fácilmente como nuestro principal idioma hablado.

      Y no, no soy sarcástico.

      • remydyer dice:

        Forth es tanto un intérprete como un compilador.

        En el momento en que separa una palabra del flujo de entrada (encontrando el espacio en blanco), la busca y la ejecuta, inmediatamente y allí. De ahí la necesidad de datos implícitos y pilas de retorno, y la notación posterior a la reparación.

        Esto hace que Forth sea invencible para la codificación de investigación en sistemas integrados, especialmente en laboratorios, donde los requisitos para los sistemas de control pueden cambiar repentinamente: el nicho original de Forth.

        El diccionario de Forth es una lista enlazada: es trivial agregarle algo, y también se puede alargar trivialmente el compilador en sí, con nuevas palabras de definición y nuevas palabras compiladas. OO (si lo desea) está a unas líneas de distancia.

        Las palabras compiladas solo se buscan si las crea; de lo contrario, solo usan llamadas, usando la pila de retorno. Puede comprobar si una palabra recién definida es visible para sí misma en su propia definición. Puede redefinir una palabra llamando a la antigua definición en cualquier lugar de la nueva.

        También existen estándares bien documentados.

    • Preferir Linux dice:

      Piensan en analizar e interpretar realmente la fuente en el propio dispositivo (es decir, trabajar con un intérprete). Solo mire el contexto donde aparece esa declaración: se compara con Forth no solo con C, sino también con un entorno de desarrollo completo (¡apenas un lenguaje de programación!), Luego habla sobre su interpretación.

      En otras palabras, la comparación con C es completamente inválida. Básicamente, comparan el lenguaje interpretado con ejecutar un compilador con un microcontrolador, y luego dicen que debido a que el compilador no funcionará allí, ¡el lenguaje tampoco funciona!

      • BFox dice:

        Hasta que te tomes el tiempo de ver qué es Forth, todo sonará extraño, pero aquí está.
        En un pequeño microcontrolador con Forth en 8K ROM y 8K de RAM, puedo 1. Interpretar el código Forth 2. Compilar Forth como nuevas funciones en la máquina (compilador de subprocesos) y luego usarlas en otras funciones compiladas 3. Cargar un ensamblador pequeño ( NO es SOLO un intérprete.

        Por eso es tan útil para nuevas placas de silicio o nuevas cuando necesita experimentar y depurar hardware antes de que un compilador C esté disponible para la máquina. También puede pensar en Forth como una máquina virtual de 2 pilas cuando se ejecuta en una computadora normal. Pero también se implementó en Silicon como una CPU y está en el espacio en la nave espacial Galileo de esa forma. Para esas cosas, un compilador de C puede emitir un código binario Forth si desea escribirlo en C.

        Los sistemas Forth originales compilados en código enhebrado, los compiladores comerciales modernos crean código nativo como lo haría un compilador de C.

        Forth es una forma alternativa de pensar acerca de la programación y, por lo tanto, como LISP, APL Prologue y muchos otros, vale la pena que un co-médico lo estudie, incluso si nunca obtiene ningún beneficio por ello. Finalmente, en manos ágiles es ideal para programar en recursos con recursos limitados, pero también hay millones de aplicaciones line + que también funcionan con grandes sistemas.

        Para muchos, Forth facilita la programación con fines de ingeniería, ya que usted programa extendiendo el lenguaje e incluso el propio compilador. En última instancia, programe en un lenguaje pequeño que creó solo para el problema que se está manejando. La libertad es genial.

        • Andrew Korsak KR6DD dice:

          Gran descripción del Forth! En algunas reuniones de la FIG a las que comencé a asistir en 1977, escuché que algunos lo llamaban “amplificador de programa”.

    • Michael Black dice:

      El cuarto es muy simple, el kernel es fácil de escribir y funciona con pocos recursos. C al menos probablemente necesitaría ejecutarse en otra computadora, la salida se ejecuta en la computadora limitada.

      Forth es un intérprete, por lo que da recursos en la computadora final. En los viejos tiempos, una computadora vendría con una pantalla, con suerte en una ROM, que le permite hacer un sinfín de cosas como insertar bytes en la memoria, un programa de un solo paso, mostrar resultados. El monitor Apple II incluso incluyó un mini-montaje y desmontaje.

      Luego, la mayor parte de eso se borró, BASIC estaba en ROM y proporcionaba algo que hacer cuando llevabas la computadora a casa.

      FORTH es un idioma intermedio, más avanzado, pero también puede hacer lo básico. Es extensible, por lo que puede escribir esas funciones de supervisión en él. No escuchamos mucho sobre FORTH hasta alrededor de 1980, y recuerdo que pensé lo genial que sería tener FORTH en ROM. El Jupiter ACE del Reino Unido era como un Sinclair zx-81, pero corría ADELANTE.
      Para un tiempo posterior, algunas computadoras tenían un cargador de arranque en FORTH.

      Podría agregar un compilador si el intérprete no fuera lo suficientemente rápido. O escriba un ensamblador en FORTH para obtener las piezas de código de máquina que necesita.

      Nunca corrí FORTH, nunca lo evité y luego las computadoras fueron mucho mejores, poco necesitadas. Necesitaría algún ajuste, no solo porque es un RPN, sino que parece un concepto extraño. Me tomó un tiempo comprenderlo, creo que ahora lo entiendo mejor, pero no porque haya investigado mucho.

      Miguel

      • Alex Rossie dice:

        Sí, adelante, no se trata de competir con c en sistemas básicos, sino de escribir un lenguaje para realizar la tarea, similar a lisp.

        • Ostraco dice:

          Ayudó a hacer crecer la idea del código compacto.

      • Michael Simonds dice:

        Recuerdo que engañé a Jupiter Ace en los años 80, lo que ciertamente no fue intuitivo. También estaba White Lightning, que era una mezcla de Forth y su propio idioma. De hecho, creo que solo nos darían un ensamblador integrado y un editor en estas máquinas o en las máquinas de memoria más grande (más de 1k) siguientes.

        • Michael Simonds dice:

          White Lightning: quise decir que era para el Spectrum y un poco más avanzado, no estoy seguro de si alguien hizo un juego de negocios con él o no.

      • Andrew Korsak KR6DD dice:

        Michael, realmente intentas usar Forth. Por cierto, el nombre FORTH es una marca comercial de Forth, Inc; todas las demás versiones de la implementación del lenguaje Forth no usan esas mayúsculas.

        Acerca de “Forth es un intérprete”, esto es solo parcialmente cierto; en la mayoría de los casos de implementación de Forth, en realidad hay dos intérpretes, los llamados intérpretes internos y externos.

        El intérprete externo generalmente existe solo en una computadora host utilizada para escribir y editar código Forth, aunque algunas implementaciones integradas incluyen un intérprete externo para control interactivo, compilación de código fuente, visualización de resultados, etc., usando una terminal o computadora a través de un puerto serie o otras E / S como BlueTooth, HDMI, etc.

        El intérprete interno en realidad "ejecuta" un programa en ejecución Forth. Sigue una lista como una línea de comando en DOS, por ejemplo. Ver p. Ej. Https://en.wikipedia.org/wiki/Threaded_code#Direct_threading

        En "subproceso indirecto" Forth, antes de que se "ejecute" cada acción en esa lista, el intérprete interno empuja una dirección física a una pila llamada "pila de retorno" y le dice a la CPU que realice la acción en esa ubicación en la lista. Cuando finaliza una acción de lista, el intérprete interno rompe la pila de retorno y avanza su puntero al siguiente elemento de la lista.

        En "subproceso directo", "subproceso" y otros tipos, como "subproceso de token", el procesamiento de la lista es diferente. Ver p. Ej. Https://github.com/mikaelpatel/Arduino-FVM

        Sin embargo, tenga en cuenta que es posible que la acción completada recientemente haya modificado el puntero de la lista. Por ejemplo, si la última acción fue una "palabra de ramificación" como DUM, UNTIL, IF o REPEAT, CASEIF, OF, entonces el intérprete externo podría haber saltado el puntero a un lugar en la lista correspondiente a donde ENDIF, ELSE, ELSEIF , ENDOF o BEGIN estaban en el código fuente. Además, la acción puede haber sido hacer algo con una cadena de caracteres o insertar un número en la llamada "pila de datos", de modo que los bytes de una cadena o número debían omitirse en la lista para pasar a la siguiente acción. de la lista.

        Entonces, ejecutar un programa de Forth simplemente pasa por una lista de nivel superior, realizando sus acciones, que en sí mismas son listas que se deben hacer cuando son "palabras" de Forth, pero obviamente este tipo de procesamiento de listas debe seguir algunas instrucciones de la máquina de la CPU. . Esto sucede en las llamadas "hojas" del árbol de listas, que son las llamadas "palabras de código" de Forth; es decir, su "acción" es saltar a una dirección donde el intérprete externo "compiló" el código ensamblador, usualmente usando un ensamblado basado en Forth (escrito en Forth), aunque primero tenía que ser "gallina frente al huevo" que involucra a un " Compilador normal "compuesto o C-, por ejemplo. Por otro lado, había muchos intercompiladores, también llamados compiladores meta y de destino, escritos completamente solo en Forth!

        Para el intérprete externo, la "lista" de cosas que hacer con "compilado" o el llamado "alto nivel" Antes de "palabra" obtiene un nombre en el código fuente y parece una oración que comienza con dos puntos seguidos del nombre de una palabra, luego una lista de "palabras" previamente definidas y posiblemente datos numéricos o texto ASCII para ser compilados en la lista de tiempo de ejecución relevante, y finalmente un punto y coma para detener la definición de cosas que hacer para esa "palabra".

        Para las "palabras de código" en el código fuente de Forth, una tradición era comenzar una línea con CODE y luego enumerar las "palabras" de ensamblado de Forth que imitan operadores de ensamblaje "normales" como MOV, intercaladas con imitaciones de operandos y nombres de datos, y luego terminar con CÓDIGO FINA (o; CÓDIGO). Ver p. Ej. Https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Code-and-_003bcode.html#Code-and-_003bcode

        En los primeros ensamblajes de estilo RPN escritos en Forth, un operando que representaba símbolos y datos precedía a los símbolos del operando, pero parece que todos actualmente escriben ensamblajes basados ​​en Forth utilizando la ubicación operativa previa como con los ensamblajes "normales".

        Entonces, Forth ciertamente NO es solo un intérprete, puede ser cualquier cosa que puedas imaginar. De hecho, hay objetos Forth, paquetes de IA, ¡lo que sea!

    • Alex Rossie dice:

      Estoy de acuerdo, suficiente pila y memoria = buena para c.

      También estaba confundido por esa línea.

    • Al Williams dice:

      Si alguna vez ha llevado un compilador de C (lo tengo, y admito que no he podido llevar suficiente gcc a ningún lado a pesar de algunos inicios falsos) verá esto arquitectónicamente, necesita mucho más que una pila para apoyar bien C. Primero necesita una pila desde la que pueda indexar. Si no puede escribir algo como "MOV A,[SP+32]"En una reunión te arrepentirás. No digo que no puedas hacerlo, pero tu código generado será terrible. También necesita una cierta cantidad de registros que no tengan muchas limitaciones en sus funciones entre sí y una forma de administrar el montón (especialmente antes de la llegada de las bibliotecas integradas y una mejor selección del código de la biblioteca en los pasos de vinculación). También necesitas suficiente memoria para tener mucho. Eche un vistazo al rango bajo de PIC de 8 bits. Durante años no hubo compilador de C para ellos y, aunque es posible que ahora pueda obtener un compilador cruzado para algunos de los más grandes, existen limitaciones y el código es muy malo en comparación con lo que haría en ensamblador. No hay mucha memoria. Todo debe pasar por el registro D (el acumulador). Realmente no tiene tantos registros como ubicaciones de memoria reservadas en la RAM muy limitada. FSR realmente no se ajusta a un puntero de pila, por lo que hacer cosas como indexar en la pila es miserable.

      Este último puede ser el verdadero asesino. En esos PIC, acceder a la parte superior de la pila es simple. Cada vez que accedes a la parte inferior de la pila, hay una gran penalización por hacer matemáticas con FSR, lo que destruye la base de tu pila, lo que te obliga a restablecer la pila para obtener la dirección correcta, y así sucesivamente. Tampoco puede hacer esto en una variable estática debido a llamadas a subrutinas anidadas. Así que lo haremos en la pila ... oh ... espera ... no ... tampoco puedo hacer eso. 🙂

      También es el entorno de desarrollo. Puede omitir el desarrollo de C para casi cualquier propósito asumiendo que no le importa el aumento de código generado (como con los PIC bajos). Pero no se depura in situ sin gdb stumps y JTAG y similares.

      Cualquiera que sugiera que no soy fanático de C no ha leído mucho de mis escritos. Me encanta C. Pero también reconozco que cuantas más herramientas tengo, más problemas puedo resolver. Me gusta un martillo y tal vez podría clavar tornillos en la madera con él. Pero sería una tontería no estar contento si alguien me dijera que buscara un destornillador para la tarea de insertar tornillos.

      No estoy buscando un renacimiento de Forth para borrar la plaga C de la faz de la Tierra. Pero para los trabajos adecuados, es increíble. Por ejemplo: Mi única instrucción CPU de 32 bits. Podría lidiar con C e hice algunos intentos para incorporar gcc. Sin embargo, esa es una tarea enorme y nunca lo logré. Miré otros compiladores de C como clang y pcc, pero todos eran tareas bastante grandes y nunca me motivaron. Sin embargo, se necesitaron algunas horas para hacer una recopilación cruzada de Forth. Y si quisiera alojar Forth, me podría llevar otros 30 minutos hacerlo; solo hay almacenamiento constante en esa máquina, por lo que el valor para eso es bajo.

      En ese caso, no es que C no sea adecuado para la máquina. De hecho lo es. Es el esfuerzo que implica llevar el compilador de C enorme, pero puedo soportar un sistema Forth funcionando después de unas pocas horas. Forth es una herramienta elegante y sencilla sorprendentemente poderosa debido a su tamaño y complejidad.

    • TheRegnirps dice:

      La mayor parte de Forth está escrito en Forth. Además del intérprete interno, que pueden ser 2 instrucciones en ARM, el intérprete "externo" también es pequeño. Un núcleo de palabras (funciones o rutinas) se escribe juntas y se pueden escribir en un espacio muy pequeño, después de lo cual las nuevas palabras Forth son solo una cadena de direcciones de palabras más primitivas, por lo que son básicamente 16 bits de caracteres. A medida que codifica, los punteros de 16 bits llaman a funciones muy complejas. El intérprete recorre esta lista, como una lista de ensamblaje de subrutinas. Todo es muy compacto y eficiente, y el control de flujo es parte de las palabras Forth y es fácil de entender o ampliar, como agregar una instrucción CASE o comandos guardados.

      El Rockwell AIM-65 tenía 1K de RAM y una Forth ROM. La gente ha hecho mucho con él. La expansión 4K permitió grandes programas por el momento. El controlador de disco y el sistema de archivos de bloque coinciden con 1K o el código fuente Compilado, era diminuto.

      Recuerdo un espectrómetro de fluorescencia criogénico automatizado completo y un instrumento de vida útil fosforescente a principios de la década de 1980 con 6502 y 24K de RAM que alimentaban el instrumento, recopilaban los datos y demolían varios exponentes fosforescentes. Los datos (4096 puntos de datos de 12 bits) y todo el software coinciden con los de 24K. También una biblioteca deslizante que usaba AMD9511 FPU. Ah, y el par obligatorio de disquetes de 8 ″ 🙂

  • tienda dice:

    "Starting FORTH" de Leo Brodie es un gran libro. Es muy fácil de leer y escribir de forma divertida. Tenerlo disponible en línea es una buena ayuda. FORTH es bastante poderoso. Hace años (1994) creamos un sistema de imágenes en tiempo real para clasificar frutas en una fábrica de conservas. El cerebro era un motor RTX2000 FORTH y podía clasificar por color, tamaño y defecto a unos 20 melocotones o incluso mitades por segundo. Nada mal para una CPU que funciona a 10MHz. Aquí hay algo de información sobre el RTX2000 ...
    http://soton.mpeforth.com/flag/jfar/vol6/no1/article1.pdf
    Todavía tengo un tubo o dos de estos chips nuevos, de poco más de 20 años 🙂

    • La Vera BrianPiercy (@brianpiercy) dice:

      Hace muchos años formé parte del equipo de desarrollo de RTX2000 en Harris Semiconductor. (Desarrollo de código y marketing). Me alegra saber que esta arquitectura todavía tiene algunos seguidores.

      • Ostraco dice:

        Como paso por encima del habitual “yo también” fue un soplo de aire fresco al ver a alguien arriesgando una nueva arquitectura.

    • JD dice:

      "Comenzando hacia adelante" está disponible en línea: https://www.forth.com/starting-forth/0-starting-forth/ (el enlace "Aprenda aquí" de jsforth también lo lleva a él).

      No importa en qué idioma programe con regularidad, leer el libro y practicar los ejercicios puede convertirlo en un mejor programador.

    • George Hodge dice:

      Hola tienda

      ¿Le gustaría vender RTX2000 o dos?

      Gracias

      Jorge

  • uxorious4ever dice:

    Puede operar Tachyon Forth usando Parallax Helix:
    http://forums.parallax.com/discussion/141061/tachyon-os-v3-0-juno-furiously-fast-forth-fat32-lan-vga-rs485-obex-roms-fp-lmm

  • JWhitten dice:

    Solía ​​jugar con STOIC (variante FORTH) en mis sistemas CP / M. Fue muy divertido. Y tenía un cartucho FORTH para el C64 con el que también jugaba, pero no era tan interesante. Hice más reuniones sobre ese sistema. Esa computadora ha desaparecido hace mucho tiempo, pero extrañamente, todavía tengo el manual de FORTH flotando aquí en alguna parte.

  • Absolutamente automático dice:

    Controlador de automatización programable industrial (PAC) Programado en FORTH! http://www.absolutelyautomation.com/articles/2016/05/02/may-forth-be-opto22-pac-and-linux

    http://www.absolutelyautomation.com/sites/default/files/styles/article_image_full_node/public/field/image/160502_MAY_THE_FORTH_BE_WITH_OPTO22_PAC_AND_LINUX_1280x720.jpg?itok=acG2izva

    • Absolutamente automático dice:

      Aquí está el video: https://www.youtube.com/watch?v=WvSQramo6Cw

  • Ricardo dice:

    Tenía FORTH en el espectro. Muy genial.

  • yo dice:

    Mmm.

    Nunca antes le había prestado atención a Forth. Esto me inspiró a leer un poco al respecto. Tengo un pequeño robot que construí para que juegue mi hija pequeña. El hardware fue fácil, pero cómo programarlo para hacerlo interesante ... eso es difícil. ¡Creo que podría poner a Forth en eso y enseñarle!

  • Reg dice:

    Anteriormente en MSP430 y ARM, mire Mecrisp de Matthias Koch:

    http://mecrisp.sourceforge.net/

    Es realmente increíble. Las tablas son baratas y tienen algo similar a STM32F4, enganche rápido.

    La gran ventaja es que es interactivo. Puede desarrollar un controlador de dispositivo y probarlo al mismo tiempo que lo escribe. Esa fue la motivación de Chuck Moore. Él programó el radiotelescopio Kitt Peak, las placas en los vagones, usando una minicomputadora seleccionada de 1968. Hardware propio, escasa documentación y una máquina con sólo 4-8k de memoria.

    Forth no necesita un depurador, porque siempre puede interactuar con el intérprete. El firmware de las placas de Sun Microsystems era anteriormente un código que comenzaba a funcionar cuando se iniciaba y se encargaba de la configuración. De ahí la "buena" motivación.

    • TheRegnirps dice:

      Él programó telares para Monsanto, creo. Los telescopios más tarde se convirtieron en IIRC.

      Sí, SUN y más tarde también Apple, entre otras cosas, usaron Openboot y openfirmware, que es Forth y le permite ingresar un intérprete externo durante el arranque. El nuevo árbol de hardware de Linux recopila información de hardware casi de la misma manera.

  • Hidrógeno oxidado dice:

    La herramienta adecuada para el trabajo adecuado. Tenía la intención de poner FORTH en el antiguo software ATMEGA103 para uso general en mi laboratorio. Un entorno interactivo para piratear rápidamente una herramienta H / W va más allá de empujar una C compilada al tablero por una gran ventaja. Además, el uso eficiente de los recursos no estornuda en los sistemas pequeños.

  • fabien Tuizat dice:

    desarrollar una lengua viva con un diccionario y una mente hermosa
    pouilly sur loire francujo

  • Tim dice:

    Un par de comentaristas parecen afirmar que los sistemas anteriores son intérpretes. Puede que los lea mal, pero para las personas que no conocen los sistemas anteriores, creo que es importante ser claro: si bien los sistemas anteriores son ciertamente interactivos y tienen un intérprete, las definiciones de palabras (procedimientos) anteriores casi siempre se compilan a medida que se leen. . los programas se ejecutan cerca de la velocidad del código de máquina. (Por lo general, un factor de ~ 2 más lento debido al uso de código enhebrado, pero esto se puede compensar de manera diferente). Forth está muy cerca del metal.

    En realidad, es más complicado que esto (¡por supuesto!) Porque las palabras anteriores (procedimientos) pueden autocontrolar el proceso de análisis y compilación de formas que te harán girar la cabeza. Esto es parte de lo que lo hace increíblemente divertido y poderoso. Lea Read Forth e implementación como JONESFORTH para obtener más información.

  • Peffrey dice:

    Llamaré y admitiré libremente que uso FORTH profesionalmente en el trabajo con una versión comercial y que ha valido la pena muchas veces por sí mismo ... Lo encuentro agradablemente interactivo y productivo, especialmente en el nivel integrado. No soy un programador "gurú" en absoluto, sino que estoy en una posición que necesita proyectar HW y FW confiables de acuerdo con los plazos para productos reales. Tuve la suerte de crecer en la era de los 8 bits, con mi primera computadora ZX81 y aprender cuánto se puede hacer con recursos limitados ...

    FORTH me permite mostrar y validar HW extremadamente rápido: veo a mi colega atascado en este ciclo de descarga de enlace de compilación de código a LPC1115 con las herramientas C mientras me siento allí e inserto registros, mirando mis resultados en tiempo real en el misma parte en la consola o en el osciloscopio. FORTH me permitió finalmente agarrarme de los brazos y apreciar las cosas geniales que pueden hacer. Por encima del nivel del controlador, FORTH le permite desarrollar programas de una manera interactiva similar y puede ser tan estructurado como desee, si viene del mundo C - FORTH le permite hacerlo de la manera que desee. Aprender FORTH te hará un mejor C o cualquier programador porque te empuja a pensar de una manera estructurada lógica. Es cierto que la pila era un poco extrañamente digerible, pero una vez que entiendes lo que hace, no hay problema. lea “Partiendo hacia adelante” y “Pensando hacia adelante” para al menos un tratado claro sobre programación.

    FORTH también puede brindarle acceso a nivel de reunión si lo desea, o tener una capa de leche tan gruesa o delgada a su capa de HW como desee, pero si la coloca en un sistema más pequeño, se quedará preguntándose por qué realmente necesita esa CPU de 1.2 GHz en su Raspberry Pi 3 y emocionado de ver lo que puede obtener de forma interactiva, ¡qué hace que M0 o AVR!

    También puedo programar en C y no lo odio, acabo de descubrir una mejor solución para MÍ: su kilometraje puede variar, pero si no intenta saber de dónde viene FORTH y de qué se trata realmente, realmente le falta una aventura única y culta, que cambiará a cualquier idioma si lo desea, a menos que decida quedarse en FORTH.

    ... Y solo me gusta ver que una buena motivación me significa interactuar, así como cálidos recuerdos de la "K" en la ZX81 ...

  • AltMarcxs dice:

    Me gusta FORTH realizado en C, no quiero reescribir todas las librerías. Mientras tanto, mis puertos (feos) para el ESP32:
    - Basado en Arduino, YAFFA-esp8266: https://github.com/marcos69/ESP8266 Anteriormente solo serial, solo espera ...
    - Espressif-idf, ESP32FICL (Forth Inspired Command Line): https://github.com/marcos69/ESP32Ficl también con soporte telnet,
    Por cierto, si quieres ayudar, eres bienvenido.

  • Westfw dice:

    Grr. Cuando intenta portar Z80, figforth encontrado en la red a Z80 incrustado, y descubre que las ideas repugnantes de Forth sobre el sistema de archivos están profundamente dispersas por todo el código. (¡no se puede hacer un arranque en frío sin iniciar DENSTY!)

  • pbj dice:

    Escribí Forth para micrófonos de 6502, 65816, Z80, MSP430, ARM (LPC2148 con VGA), muchos otros, y en los últimos años para el chip Parallax Propeller, donde realmente se destaca. Hice la mía completamente interactiva, para que puedas hacer lo mismo en una línea interactiva que puedes realizar Forth, es decir, HACER BUCLE, REINICIAR, SI ES ASÍ, y así sucesivamente. Pero la cosa es que puedes ejecutarlo con múltiplos. núcleos y es muy rápido. Como broma, el otro día escribí un controlador WS2812 RGB en una línea de código, completo con el tiempo de sub-microsegundos, todo en avanzado Forth, sin montaje. Debido a que es tan productivo, es muy divertido.
    : WS2812 (pin ggrrbb -) DUP PIN L MASK SWAP 8 REV 24 PARA H SHROUT L NEXT 2DROP;

    Debido a que los uso en proyectos comerciales pesados, estos son un sistema Forths completo, es decir, tienen los controladores necesarios para servidores Ethernet, redes RS485, puertos serie, memoria virtual FAT32 y la lista sigue y sigue.

  • Glenn dice:

    En los 90 trabajé en la construcción de consolas de audio para la industria de la televisión. Estos fueron construidos para permitir la automatización de arreglos y recordar los anteriores. Al igual que muchos otros que trabajaban en la industria integrada, FORTH era la elección lógica porque tenía procesadores pequeños y funciones altamente especializadas para preformar. Al ser un lenguaje extensible, FORT era el natural, ya que las operaciones y funciones estaban definidas en un estado nativo. Esto significó una codificación muy rápida y minimalista. Funcionaron muy bien y requirieron muy poco apoyo. Las nuevas habilidades fueron muy fáciles de desarrollar.

  • MvK dice:

    La primera vez que traté de aprender FORTH, tuve la impresión de que se trataba de RPN y la pila de evaluaciones. Los primeros capítulos de mi libro trataban sobre las docenas de formas de hacer malabares con la pila para que los argumentos estuvieran en el lugar correcto para la siguiente operación. No me gustó y lo dejé caer (juego de palabras).

    Lo volví a estudiar décadas después y me di cuenta de que apilar malabares es solo una señal de palabras mal diseñadas. La mayor parte se puede evitar una vez que se da cuenta de ello. El énfasis en el libro de texto no debería estar ahí en absoluto. La esencia y la brillantez de FORTH es realmente la interacción entre compilación e interpretación. Es mucho más similar a LISP en este aspecto que a un tipo de lenguaje tradicional Pascal / C / Java.

    • Andrew Korsak KR6DD dice:

      MvK, al usar RPN para establecer parámetros, ahorra el tiempo de compilación perdido al procesar las reglas de prioridad y lo convierte en un mejor programador al considerar los pasos y tal vez incluso encontrar trucos para mejorar los cálculos. Los buenos programadores no hacen malabares con las entradas de la pila.

Miguel Vidal
Miguel Vidal

Deja una respuesta

Tu dirección de correo electrónico no será publicada.