Lenguajes formales y gramáticas. Software y software Ejemplos de lenguajes de programación formalizados

Lenguaje de programación- un lenguaje artificial (formal) diseñado para escribir programas para un ejecutor (por ejemplo, una computadora o una máquina controlada numéricamente). Un lenguaje de programación se define por su descripción. Una descripción del lenguaje de programación es un documento que especifica las capacidades de un lenguaje algorítmico. La descripción suele contener:

· el alfabeto de símbolos y palabras de servicio (clave) admisibles;

reglas sintácticas para construir construcciones lingüísticas admisibles a partir del alfabeto;

semántica que explica el significado y el propósito de las construcciones del lenguaje.

Los lenguajes de programación se utilizan para representar la solución de problemas de tal forma que puedan ejecutarse en una computadora.

El lenguaje de máquina, que consta de instrucciones del procesador de la computadora, también es un lenguaje de programación. Pero los algoritmos escritos en lenguaje de máquina son difíciles de leer incluso para un programador-desarrollador, además, trabajar con dicho lenguaje requiere conocimiento de la arquitectura de una computadora en particular, por lo tanto, en la programación, por regla general, lenguajes de un nivel superior. nivel se utilizan que los lenguajes de máquina. lenguaje de alto nivel es un lenguaje de programación, cuyos conceptos y estructura son convenientes para la percepción humana y no dependen de la computadora específica en la que se ejecutará el programa.

Para que un programa escrito en un lenguaje de programación de alto nivel se ejecute en una computadora, debe traducirse a lenguaje de máquina. La herramienta de software que realiza esta función se llama traductor.

Traductor es un programa que lee el texto de un programa escrito en un idioma y lo traduce (traduce) al texto equivalente en otro idioma (generalmente lenguaje de máquina). Hay dos tipos principales de traductores: compiladores y intérpretes.

Compilador convierte el texto del programa fuente en un conjunto de instrucciones para un tipo determinado de procesador (código de máquina) y luego lo escribe en un archivo ejecutable (archivo exe), que se puede ejecutar como un programa separado. En otras palabras, el compilador traduce el programa de un lenguaje de alto nivel a un lenguaje de bajo nivel.

Interprete como resultado de la traducción, realiza las operaciones especificadas en el programa fuente. En este caso, el programa permanece en el idioma de origen y no puede ejecutarse sin un intérprete.

La división en lenguajes compilados e interpretados es algo arbitraria. Entonces, para cualquier lenguaje compilado tradicionalmente, como Pascal, puede escribir un intérprete, y para cualquier lenguaje interpretado, puede crear un compilador; por ejemplo, BASIC, originalmente interpretado, puede compilarse sin restricciones.

Algunos lenguajes, como Java y C#, se encuentran entre compilados e interpretados. Es decir, el programa no se compila en lenguaje de máquina, sino en código de bajo nivel independiente de la máquina, código de bytes. A continuación, la máquina virtual ejecuta el código de bytes. Para ejecutar el código de bytes, generalmente se usa la interpretación. Este enfoque, en cierto sentido, le permite utilizar las ventajas tanto de los intérpretes como de los compiladores.

Desde la creación de las primeras máquinas programables, la humanidad ha ideado más de dos mil quinientos lenguajes de programación. El número de lenguajes de programación crece constantemente, aunque este proceso se ha ralentizado claramente. Algunos lenguajes son utilizados solo por una pequeña cantidad de programadores, otros son conocidos por millones de personas. Algunos de ellos son altamente especializados (diseñados para resolver cierta clase de problemas), y algunos son universales. Los programadores profesionales a veces usan más de una docena de lenguajes de programación diferentes en su trabajo.

Los lenguajes de programación se pueden clasificar según varios criterios: orientados a máquina (ensambladores) e independientes de máquina, especializados y universales.

Los lenguajes especializados incluyen el lenguaje ART ( A automáticamente PAGS programado T ools) es el primer lenguaje de programación especializado para máquinas herramienta con control numérico. El lenguaje fue desarrollado por un grupo de especialistas estadounidenses en 1956-1959. bajo la dirección del matemático Douglas T. Ross. lenguaje COBOL ( co mmón B negocios– O dirigido Lángulo), creada en EE. UU. bajo el liderazgo de Grace Murray Hopper en 1959, está enfocada al procesamiento de información económica. La matemática Grace Murray Hopper lideró el proyecto COBOL con el rango de capitana de segundo rango, más tarde se convirtió en contralmirante. G. M. Hopper se llama "madre y abuela" de COBOL.


(Grace Murray Hopper)

Los lenguajes de programación web modernos Perl y PHP también se pueden clasificar como lenguajes especializados. Los lenguajes Rapira, E-language (Rusia), SMR (Gran Bretaña), LOGO (EE. UU.) se pueden clasificar como lenguajes destinados a la enseñanza de la programación.

Los lenguajes de programación universales más comunes hoy en día son C++, Delphi, Java, Pascal, Visual Basic, Python.

Pero, considerando los lenguajes de programación como un objeto de estudio independiente, es posible clasificarlos según el concepto de construcción de un lenguaje.

Clasificación de los lenguajes de programación.

Los lenguajes de programación se pueden dividir en dos clases: procedimentales y no procedimentales. procesal (imperativo) los idiomas son idiomas de tipo operador. La descripción del algoritmo en este lenguaje tiene la forma de una secuencia de operadores. La característica de un lenguaje procedimental es la presencia de un operador de asignación (Basic, Pascal, C). Un programa escrito en lenguaje imperativo es muy similar a las órdenes expresadas en modo imperativo en los lenguajes naturales, es decir, es una secuencia de comandos que la computadora debe ejecutar. Al programar en un estilo imperativo, el programador debe explicarle a la computadora cómo el problema necesita ser resuelto.

no procesal (declarativo) los idiomas son idiomas, cuando se usan, el programa establece explícitamente qué propiedades debe tener el resultado, pero no dice cómo debe obtenerse. Los lenguajes no procedimentales se dividen en dos grupos: funcionales y lógicos.

Los lenguajes de programación declarativos son lenguajes de programación de alto nivel en los que los enunciados son declaraciones o enunciados en lógica simbólica. Un ejemplo típico de este tipo de lenguajes son los lenguajes de programación lógica (lenguajes basados ​​en un sistema de reglas y hechos). Un rasgo característico de los lenguajes declarativos es su semántica declarativa. El concepto básico de la semántica declarativa es que el significado de cada declaración es independiente de cómo se usa esa declaración en el programa. La semántica declarativa es mucho más simple que la de los lenguajes imperativos, lo que puede verse como una ventaja de los lenguajes declarativos sobre los imperativos.

Lenguajes lógicos

En programas en lenguajes de programación lógica, las acciones correspondientes se realizan solo si existe una condición permisiva necesaria para la derivación de nuevos hechos a partir de estos hechos de acuerdo con reglas lógicas dadas. La programación lógica se basa en la lógica matemática (ver “ operaciones lógicas. cuantificadores”, “expresiones booleanas”).

El primer lenguaje de programación lógico fue el lenguaje Planner, fue desarrollado por Carl Hewitt en el Laboratorio de Inteligencia Artificial del Instituto Tecnológico de Massachusetts en 1969. Este lenguaje se basó en la posibilidad de derivar (obtener) automáticamente un resultado a partir de los datos y dado reglas enumerando opciones (la totalidad de las cuales se denominó plan) . Pero el lenguaje de programación lógica más famoso es PROLOG (Prolog), que fue creado en Francia en la Universidad de Marsella en 1971 por Alain Colmerauer.

alain colmero
(Alain Colmerauer)

Un programa PRÓLOGO contiene dos componentes: hechos y reglas. Los hechos son los datos sobre los que opera el programa, y ​​la colección de hechos constituye la base de datos PROLOG, que es esencialmente una base de datos relacional. La principal operación que se realiza sobre los datos es la operación de coincidencia, también llamada operación de unificación o reconciliación. Las reglas constan de un encabezado y subobjetivos. La ejecución de un programa escrito en PROLOG comienza con una consulta y consiste en probar la verdad de algún enunciado lógico dentro de un conjunto dado de hechos y reglas. El algoritmo de esta prueba (algoritmo de inferencia lógica) determina los principios de ejecución de un programa escrito en PROLOGUE.

A diferencia de los programas escritos en lenguajes procedimentales, que prescriben una secuencia de pasos que una computadora debe realizar para resolver un problema, en PROLOG el programador describe hechos, reglas, relaciones entre ellos y consultas sobre un problema. Por ejemplo, digamos que tenemos los siguientes datos sobre quién es la madre de quién:

madre ("Dasha", "Masha").

madre ("Natasha", "Dasha").

Además, hay una regla que introduce la relación de abuela:

abuela(X,Y):-

Ahora podemos realizar consultas sobre quién es la abuela de tal o cual persona, o quién es la nieta (nieto) de determinada mujer:

abuela("Natasha",X).

La respuesta a esta solicitud la dará el sistema PROLOG de la siguiente manera:

Las posibilidades de uso del lenguaje PROLOG son muy amplias. Entre las más famosas se encuentran aplicaciones en matemáticas simbólicas, planificación, diseño asistido por computadora, construcción de compiladores, bases de datos, procesamiento de textos en lenguajes naturales. Pero quizás la aplicación más característica de PROLOG son los sistemas expertos.

Hoy existe toda una clase de lenguajes lógicos; así, los lenguajes de programación lógica QA-4, Popler, Conniver y QLISP también se originaron a partir del lenguaje Planner. Los lenguajes de programación Mercury, Visual Prolog, Oz y Fril descienden de Prolog.

lenguajes funcionales

El primer lenguaje de tipo funcional es el lenguaje LISP creado en el Instituto de Tecnología de Massachusetts en 1956–1959. John McCarthy, quien en 1956 en la Conferencia de Dartmouth (EEUU) propuso por primera vez el término “inteligencia artificial”.

Juan McCarthy

Y aunque las disputas en torno a este término y la dirección científica desarrollada en su marco aún no amainan, los investigadores son unánimes en el uso de lenguajes funcionales y lógicos para esta área. Un número significativo de trabajos sobre inteligencia artificial se han implementado en LISP.

Después de su aparición, a LISP se le asignaron muchos epítetos que reflejaban sus características: lenguaje funcional, lenguaje simbólico, lenguaje de procesamiento de listas, lenguaje recursivo. Desde el punto de vista de la clasificación actual, LISP se define como un lenguaje de programación de tipo funcional, que se basa en el método -calculus (el método -calculus fue desarrollado en los años 30 del siglo pasado por A. Church como un riguroso modelo matemático para funciones computables, ver. “Teoría de Algoritmos”).

Un programa escrito en un lenguaje funcional consiste en un conjunto desordenado de ecuaciones que definen funciones y valores que se dan como funciones de otros valores. Los programas y datos LISP existen en forma de expresiones simbólicas, que se almacenan como estructuras de lista. LISP trata con dos tipos de objetos: átomos y liza. Los átomos son símbolos utilizados para identificar objetos, que pueden ser numéricos o simbólicos (conceptos, materiales, personas, etc.). Una lista es una secuencia de cero o más elementos entre paréntesis, cada uno de los cuales es un átomo o una lista. En las listas se realizan tres operaciones primitivas: extraer el primer elemento de la lista; obtener el resto de la lista después de eliminar el primer elemento; la unión del primer elemento de la lista L y el resto de la lista Q.

Textos de programa solo en lenguajes de programación funcionales describir forma de resolver el problema, pero no prescribe una secuencia de acciones para resolverlo.

Las siguientes son generalmente consideradas como las principales propiedades de los lenguajes de programación funcionales: brevedad y simplicidad; tipeo fuerte; modularidad; funciones - objetos de cálculo; pureza (sin efectos secundarios); evaluación tardía (perezosa).

Además de LISP, los lenguajes funcionales incluyen REFAL (desarrollado a mediados de los 60 por V.F. Turchin en la Universidad Estatal Lomonosov de Moscú), Haskell, Clean, ML, OCaml, F#.

Demos un ejemplo de la descripción del conocido algoritmo. ordenación rápida lista en Haskell:

qclasificar (x:xs) = qclasificar elts_lt_x ++ [x]

Qsort elts_greq_x donde

elts_lt_x =

elts_greq_x =

Aquí dice que la lista vacía ya está ordenada. Y ordenar una lista no vacía consiste en dividir la lista en tres: una lista de elementos menores que la cabeza de la lista original, la cabeza de la lista original ([x]) y una lista de elementos de la cola de la lista. lista original mayor o igual que x.

Lenguajes orientados a objetos

Lenguajes orientados a objetos son lenguajes en los que los conceptos de procedimiento y datos utilizados en los sistemas de programación convencionales son reemplazados por el concepto de “objeto” (ver el artículo “ Programación orientada a objetos”). SmallTalk se considera el lenguaje de la programación orientada a objetos en su forma pura, las posibilidades de la programación orientada a objetos también se establecen en Java, C ++, Delphi.

El mayor desarrollo de la programación moderna está relacionado con la llamada "programación paralela". Para implementar esta tecnología se están desarrollando lenguajes especializados orientados a objetos. Este tipo de lenguaje incluye, por ejemplo, MC# ( mcsharp) es un lenguaje de programación orientado a objetos de alto nivel para la plataforma .NET que admite la creación de programas que funcionan en un entorno distribuido con llamadas asíncronas.

Estructura del lenguaje de programación

Existen diferencias fundamentales entre los lenguajes de programación existentes en el concepto de lenguajes de construcción, esto es especialmente cierto para los lenguajes anteriores, pero todos estos lenguajes se llaman lenguajes de programación porque tienen la misma estructura formal desde el punto de vista del sistema constructivo interno.

Cualquier lenguaje de programación consta de oraciones (operadores). Las oraciones (como las palabras) se definen sobre algún alfabeto C. La sintaxis del lenguaje describe un conjunto de oraciones sobre el alfabeto C que externamente representan programas bien formados.

Sintaxis de un idioma son las reglas para obtener palabras y oraciones de ese idioma. La sintaxis se describe esquemáticamente usando ciertas reglas gramaticales.

Conocimiento del lenguaje formal (alfabeto + sintaxis), aunque suficiente para establecer corrección sintáctica programa, pero no lo suficiente para entender su propósito y modo de acción. El significado y el modo de acción de un programa en un lenguaje de programación se especifican especificando la semántica.

La semántica de una lengua son las reglas para interpretar las palabras de una lengua formal, es decir establecer el significado de los elementos individuales del lenguaje.

Para definir lenguajes formales, incluidos los lenguajes de programación, se utilizan BNF (formas Backus-Naur) y diagramas de sintaxis. Estas son dos formas intercambiables de describir.

Al describir un lenguaje de programación en términos de BNF, se utiliza la siguiente notación:

1) <..>- palabra definida;

2) R - una regla de la sintaxis para la formación de palabras;

3) ::= - Regla BNF.

Cada R consiste en palabras terminales o fichas idioma y posiblemente los siguientes caracteres:

· [..] - este elemento está presente en el BNF;

· (..) - esta aparición se puede utilizar en BNF;

· (..)* - esta aparición se puede utilizar en BNF un número finito de veces.

Ejemplo 1 Demos un ejemplo de una regla BNF que define un número entero.

Esta regla se lee de la siguiente manera: “Un número entero es el carácter 0 o una secuencia de caracteres que puede comenzar con el carácter “–”, seguido de un dígito distinto de cero, seguido de cualquier secuencia finita de dígitos”.

Una forma especial, similar a BNF, de descripción de lenguajes formales son los diagramas sintácticos. Se utilizan tres tipos de elementos en los diagramas de sintaxis: óvalo/círculo, rectángulo, flechas. Las palabras terminales o lexemas se colocan en óvalos, las palabras definidas se colocan en rectángulos. La representación gráfica del lenguaje a través de diagramas de sintaxis hace que la descripción del lenguaje sea visual.

Ejemplo 2. Describir un número entero usando un diagrama de sintaxis.

De acuerdo con el Programa Ejemplar, es necesario que los estudiantes presenten la clasificación moderna de los lenguajes de programación, así como se orienten en las áreas de aplicación de cada uno de ellos. La forma más fácil de presentar este tema es después de que ya se haya familiarizado detalladamente con uno de los lenguajes de programación.

Debe explicarse por qué surgen nuevos lenguajes y se mejoran los antiguos: en primer lugar, esto sucede cuando se busca un medio para escribir rápidamente programas complejos que tampoco contengan errores. Un ejemplo se conoce cuando la creación del lenguaje ADA (llamado así por la primera mujer programadora Ada Lovelace, hija de Byron) se inició en 1974 en el Departamento de Defensa de los Estados Unidos. El ejército de los EE. UU. se ha dado cuenta de que están perdiendo mucho tiempo, esfuerzo y dinero desarrollando y manteniendo sistemas informáticos integrados (como los sistemas de guía de misiles), y los errores sutiles en los lenguajes de programación conducen a verdaderos desastres.

Los lenguajes declarativos fueron muy populares a finales de los 80 y principios de los 90 del siglo pasado, se les llamó lenguajes de programación de inteligencia artificial para computadoras de quinta generación. Sin embargo, las esperanzas de su amplia distribución aún no se han materializado. Quizás porque los sistemas existentes de programación funcional y lógica no le permiten crear programas rápidos para tareas significativas. Es posible que su tiempo simplemente aún no haya llegado.

Al elegir una estrategia para enseñar el tema "Algoritmización y Programación", se debe tener en cuenta que la tarea de un curso de educación general es en gran medida el desarrollo de un cierto estilo de pensamiento, la formación de las habilidades más generales, habilidades e ideas, más que el desarrollo de ciertos lenguajes específicos y herramientas técnicas de programación. Al mismo tiempo, dicho curso debe servir como base para el posterior estudio profesional de programación en la educación superior o en la escuela secundaria superior (como parte de la formación profesional).

Actualmente, existen dos enfoques más comunes para la enseñanza de la programación:

1) enseñanza sobre la base de un lenguaje especialmente desarrollado de un lenguaje educativo centrado en la enseñanza de habilidades básicas de programación;

2) el estudio de uno o más lenguajes de programación ampliamente utilizados en la práctica para resolver problemas científicos y económicos (dichos lenguajes pueden denominarse estándar).

El primer enfoque se usa a menudo cuando se enseñan los conceptos básicos de programación en las escuelas secundarias inferiores utilizando lenguajes especializados como Rapier, E-language, LOGO. Estos lenguajes tienen en cuenta las posibilidades de los alumnos de primaria. Este enfoque es bueno para el estudio en profundidad de las ciencias de la computación en los grados 5 y 6.

Con respecto al segundo enfoque, podemos decir que la mayoría de las implementaciones modernas de lenguajes estándar están cargadas de muchos detalles técnicos y son difíciles de aprender. Sin embargo, lo más aceptable para una escuela de educación general, donde el curso de informática se imparte en los grados 8 a 11, es enseñar los fundamentos teóricos de la programación basada en un lenguaje estándar. En este caso, no es necesario profundizar en el lenguaje. Los estudiantes que estén interesados ​​pueden hacerlo ellos mismos. Se debe prestar la mayor atención a la transición de las estructuras algorítmicas a su implementación de software en un lenguaje de programación.

Vale la pena señalar aquí que Pascal se creó originalmente como un lenguaje educativo, pero con el tiempo se generalizó como lenguaje estándar y se desarrolló como un lenguaje orientado a objetos con la tecnología de programación visual de Delphi. Pascal o Basic se puede tomar como la base del curso en los grados 8 y 9, y como un curso extendido (opcional) en los grados 10 y 11, presente a los estudiantes sus extensiones orientadas a objetos (Delphi y Visual Basic). Cada idioma tiene sus partidarios y sus opositores, y la elección final depende del profesor.

Hay dos enfoques principales para aprender un lenguaje de programación: formal y “Programación de patrones”. El primero se basa en una descripción formal (estricta) de las construcciones del lenguaje de programación ( sintaxis lengua y su semántica) de una forma u otra (con la ayuda de diagramas sintácticos, metalenguaje o descripción verbal formal, en particular, la semántica) y utilizando únicamente elementos del lenguaje estudiados y, por lo tanto, comprensibles en la resolución de problemas. En el segundo enfoque, a los estudiantes primero se les dan programas listos para usar, se les dice qué están haciendo exactamente y se les pide que escriban un programa similar o cambien el existente, sin explicar completamente una serie de "técnicos" o insignificantes, desde el punto de vista del profesor, detalles para la solución del problema. Al mismo tiempo, se dice que aprenderás el significado exacto de las construcciones correspondientes más adelante, pero por ahora, haz lo mismo. El segundo enfoque permite el llamado "inicio rápido", pero crea el peligro de que los usuarios del entorno de programación sean semianalfabetos, es decir, personas que usan estructuras bastante complejas en su práctica, pero no pueden explicar claramente por qué en este o aquel caso es necesario usarlas y cómo funcionan. Como resultado, tarde o temprano, estos "programadores" encuentran errores, que simplemente no pueden corregir, carecen de conocimiento.

Una de las tareas de la informática escolar es enseñar exactamente el enfoque formal, en particular, al aplicar varias definiciones. Y el estudio formal de un lenguaje de programación contribuye mucho a esto. Pero incluso sin buenos ejemplos (muestras) al enseñar programación a escolares, uno no puede hacerlo. Y cuanto más jóvenes sean los estudiantes, más ejemplos se deben dar al describir el idioma (a veces incluso reemplazando una definición estricta con ellos). Otra cosa es que es necesario asegurarse de que, como resultado de la discusión del ejemplo, todos sus detalles sean claros para los escolares (es necesario explicar cómo y por qué funciona, incluso apoyándose en el material formal ya estudiado). En este caso, los estudiantes fuertes tendrán la oportunidad de comprender todo a fondo y podrán utilizar los conocimientos adquiridos en el futuro, mientras que el resto adquirirá habilidades específicas y dejará la oportunidad de volver a las definiciones formales más adelante si es necesario.

Sobre el lenguaje ferroviario "El tren pasará la plataforma Krasnye Zori sin detenerse". Tenga en cuenta que el conductor usó el sustantivo "stop" y no el verbo "stop". La parada es un concepto muy importante para los trabajadores ferroviarios. Un tren puede "pararse", pero no "tener paradas". Turchin [Turchin 2000], dando un ejemplo similar, apunta a la formalización del lenguaje utilizado para fines profesionales estrechos.

Un lenguaje formalizado se puede definir de la siguiente manera [Turchin 2000]. Considere un modelo de lenguaje de dos pisos de la realidad (Fig. 4.4). La situación si está codificada por el objeto de lenguaje Li. El objeto L1 es el nombre de si. Algún tiempo después, la situación S1 es reemplazada por la situación S2. Al realizar alguna actividad de lenguaje, transformamos L1 en otro objeto: L2. Si nuestro modelo es correcto, entonces L2 es el nombre de S2. Como resultado, sin conocer la situación real S2, podemos hacernos una idea de ella decodificando el objeto de lenguaje L2. Realizar la transformación L1->L2 determina si el idioma se formalizará.

    Para un lenguaje formalizado, la transformación L1->L2 está determinada exclusivamente por los objetos de lenguaje Li que participan en ella y no dependen de las representaciones del lenguaje si que les corresponden en la semántica del lenguaje.

    Para un lenguaje no formalizado, el resultado de la transformación del objeto de lenguaje Li depende no sólo del tipo de representación Li en sí mismo, sino también de la representación si que genera en la cabeza humana, de las asociaciones en las que entra.

Una persona es capaz de percibir los lenguajes más informales. Y la computadora no entiende, más precisamente, no puede ejecutar el programa en un lenguaje informal. Es por ello que un lugar importante en el estudio de la programación siempre lo ocupan los lenguajes de programación algorítmicos formales,

Sobre la formalización de lo informal La formalización de lo informal es un proceso informalizable. Aunque los lógicos y los militares están tratando de combatir esto.

Sobre la fórmula del amor La fórmula del amor no se presta a la formalización. En el mejor de los casos, solo puede representarse como un modelo muy tosco.

lenguajes de modelado

Lenguaje de modelado: un conjunto de reglas que determinan la construcción de modelos (una representación simplificada de la realidad), incluida su visualización y la definición de estructura y comportamiento. El lenguaje de modelado incluye:

    elementos del modelo: conceptos fundamentales del modelado y su semántica;

    notación - representación visual de elementos de modelado;

    guía de uso: reglas para el uso de elementos en el marco de la construcción de modelos de dominio.

Lenguajes de programación y entornos integrados

    Según el creador del primer entorno integrado FRAMEWORK, un entorno integrado es un programa de aplicación que el usuario, habiéndolo iniciado al comienzo de la jornada laboral, encuentra todos los recursos necesarios para trabajar en él y, por lo tanto, no sale del integrado. ambiente hasta el final de la jornada laboral. Por supuesto, esta definición no es muy correcta y de alguna manera idealiza la situación, pero su significado general es bastante claro. La principal característica de los entornos integrados es un alto grado de interactividad. Se logra integrando varios recursos de software en un solo todo, de ahí el nombre. Así, el entorno integrado de un compilador de lenguaje de programación (un programa que crea un programa ejecutable a partir del texto de este lenguaje de programación) suele contener un editor de texto y el propio compilador con un sistema de diagnóstico de errores de compilación. Además, por lo general también tiene un depurador, un intérprete de este lenguaje, que ejecuta el programa línea por línea y tiene una serie de otras características especiales. Una de las áreas en desarrollo activo, el diseño visual, se basa completamente en el uso de las capacidades de un entorno integrado. El usuario selecciona de forma interactiva los objetos del lenguaje de programación necesarios para su programa y establece vínculos entre ellos. La popularidad de lenguajes como Visual BASIC (Microsoft), así como Object PASCAL (Delphi y Kylix, entornos Borland) no es accidental. Incluso un programador inexperto que no conozca otros lenguajes de programación además de BASIC y nunca haya programado bajo Windows puede crear un programa de aplicación que se ejecute bajo Windows usando Visual BASIC en dos o tres días. Pero un programador de alto nivel que no haya programado antes en Windows, usando C ++, a menudo tiene que pasar semanas o incluso meses para crear el mismo programa. Cierto, Visual BASIC tiene una serie de limitaciones significativas. Con la ayuda de entornos de diseño visual, puede crear programas muy complejos sin escribir una sola línea de código en el teclado. Sin embargo, todos los programas basados ​​en lenguajes de programación procedimentales tradicionales adolecen del mismo inconveniente. Para ellos, el código ejecutable es una cosa y los datos procesados ​​por el programa es otra muy distinta. De hecho, el código del programa está contenido en un archivo con la extensión EXE, y los datos están en archivos de datos especiales (generalmente en formato de texto o binario en la representación interna de la computadora), o se ingresan desde el teclado o desde algún otro dispositivo externo. Y ahora hagámonos la pregunta: ¿qué sucede si el usuario debe proporcionar al programa ejecutable información que pueda considerarse como una "adición" al texto del programa? Por ejemplo, queremos que se construya un gráfico de función en la pantalla, y en dicho programa proporcionamos todas las capacidades de servicio necesarias. Sin embargo, la fórmula de la función debe establecerla el propio usuario, y no se sabe de antemano cuál será. Es bastante obvio que tales tareas solo se pueden resolver con la ayuda de un sistema de interpretación. Pero “hay que pagar por todo”. El compilador traduce el texto del programa en un código ejecutable que puede funcionar sin un programa compilador. Los programas creados sobre la base de la interpretación de lenguajes tipo solo pueden ejecutarse bajo el control de un programa intérprete. También son más lentos que los compilados porque su interpretación requiere más tiempo. Sin embargo, en muchos casos esto no es significativo.

Fecha de creación: 1963 Influenciado: BENEFICIO Mecanografía: sin escribir Dialectos:

    Applesoft BÁSICO

    Comodoro BÁSICO

    Microsoft BÁSICO

Implementaciones y versiones:

  • Intérprete Applesoft BASIC en Javascript

    Atari Microsoft BÁSICO I/II

  • Comodoro BÁSICO

    Galaxia BÁSICO

    microsoft visual basic

  • Visual Basic para Aplicaciones

BÁSICO (BASIC - abreviatura de Beginner's All-purpose Symbolic Instruction Code - un código universal para instrucciones simbólicas para principiantes; English basic - basic, basic) - una familia de lenguajes de programación de alto nivel.

BASIC fue concebido en 1963 por los profesores de Dartmouth College John Kemeny y Thomas Kurtz e implementado bajo su dirección por un equipo de estudiantes universitarios. Con el tiempo, a medida que comenzaron a aparecer otros dialectos, este dialecto "original" se conoció como Dartmouth BASIC.

BASIC fue diseñado para que los estudiantes pudieran escribir programas utilizando terminales de tiempo compartido. Fue creado como una solución a los problemas asociados con la complejidad de los lenguajes más antiguos, destinado a usuarios más "simples", no tanto interesados ​​en la velocidad de los programas, sino simplemente en la capacidad de usar una computadora para resolver sus problemas.

Los siguientes ocho principios se utilizaron en el diseño del lenguaje:

    ser fácil de usar para principiantes;

    ser un lenguaje de programación de propósito general;

    proporcionar la capacidad de ampliar la funcionalidad disponible para programadores experimentados;

    ser interactivo;

    proporcionar mensajes de error claros;

    trabajar rápidamente en programas pequeños;

    no requieren comprensión del funcionamiento del hardware;

    ser un intermediario entre el usuario y el sistema operativo.

El lenguaje se basó en parte en Fortran II y en parte en Algol-60, con adiciones para hacerlo adecuado para tiempo compartido, procesamiento de texto y aritmética matricial. BASIC se implementó originalmente en el GE-265 con soporte para múltiples terminales. Contrariamente a la creencia popular, en el momento de su creación era un lenguaje compilado. El lenguaje ganó popularidad general desde su aparición en la microcomputadora Altair 8800. Muchos lenguajes de programación eran demasiado engorrosos para caber en una memoria pequeña. Para máquinas con medios lentos como cintas de papel, casetes de audio y sin un editor de texto adecuado, un lenguaje pequeño como BASIC fue una bendición. En 1975, Microsoft (entonces solo eran dos: Bill Gates y Paul Allen, con la participación de Monte Davidov) lanzó Altair BASIC. Para el sistema operativo CP/M se creó el dialecto BASIC-80, que determinó el desarrollo del lenguaje durante mucho tiempo. Durante este período se crearon varias versiones nuevas de BASIC. Microsoft vendió varias versiones de BASIC para MS-DOS/PC-DOS, incluyendo BASICA, GWBASIC y Quick BASIC (QBASIC). Borland lanzó Turbo BASIC 1.0 en 1985 (sus sucesores fueron vendidos posteriormente por otra compañía bajo el nombre de PowerBASIC). Aparecieron varias extensiones BASIC en las computadoras domésticas, que generalmente incluyen herramientas para trabajar con gráficos, sonido, ejecutar comandos DOS, así como herramientas para programación estructurada. Algunos otros lenguajes utilizaron la conocida sintaxis BASIC como base sobre la cual se construyó un sistema completamente diferente (ver, por ejemplo, GRASS). Sin embargo, a partir de finales de los años 80, las nuevas computadoras se volvieron mucho más complejas y proporcionaron características (como una interfaz gráfica de usuario) que hicieron que BASIC ya no fuera tan conveniente para la programación. BASIC comenzó a perder terreno, a pesar de que una gran cantidad de sus versiones todavía se usaban y vendían. BASIC recibió una segunda vida con la llegada de Visual Basic de Microsoft. Se ha convertido en uno de los lenguajes más utilizados en la plataforma Microsoft Windows. Más tarde, se creó una variante llamada WordBasic, que se usó en MS Word hasta la llegada de Word 97. La variante de Visual Basic para aplicaciones (VBA) se incorporó a Excel 5.0 en 1993, luego a Access 95 en 1995 y, después de todas las demás herramientas, incluido en el paquete Office - en 1997. Internet Explorer 3.0 y superior, así como Microsoft Outlook, incluían un intérprete de lenguaje VBScript. La versión completa del paquete OpenOffice.org también incluye un intérprete BASIC.

¡Hola, mundo!: Ejemplo para QBasic 1.1, QuickBasic 4.50

IMPRESIÓN " Hola , Mundo !"

Factorial: Ejemplo para QBasic 1.1, QuickBasic 4.50

Se utiliza una definición iterativa del factorial. Al calcular 13! se produce un desbordamiento aritmético y aquí difiere el comportamiento de las diferentes implementaciones: QBasic informa de un desbordamiento, mientras que QuickBasic simplemente imprime valores negativos. Además, el comando IMPRIMIR imprime un espacio antes y después de un número de manera predeterminada.

DIM f COMO LARGO f = 1 PRINT "0 !="; f PARA i = 1 A 16:

f = f*i:

IMPRIMIR; "!="; F

LENGUA FORMALIZADA- un sistema de signos artificial diseñado para representar alguna teoría. Un idioma formalizado difiere de los idiomas naturales (nacionales) de la comunicación y el pensamiento humanos, de los idiomas artificiales como el esperanto, de los idiomas "técnicos" de la ciencia, que combinan los medios de una cierta parte del natural. lenguaje con los símbolos científicos correspondientes (el lenguaje de la química, el lenguaje de las matemáticas ordinarias, etc.), de lenguaje algorítmico tipo de programación genérico, etc. en primer lugar, por el hecho de que su cometido es servir de medio para fijar (formalizar) cierto contenido lógico, lo que permite introducir la relación de consecuencia lógica y el concepto de demostrabilidad (o sus análogos). Históricamente, el primer lenguaje formalizado fue silogístico Aristóteles, implementado utilizando un fragmento de lenguaje natural (griego) estandarizado. La idea general de un lenguaje formalizado fue formulada por Leibniz (characteristica universalis), quien previó su extensión al "cálculo de inferencias" - calculus ratiocinator. En la época moderna se desarrollaron diversas variantes de lenguajes formalizados sobre la base de la analogía entre la lógica y el álgebra. El hito aquí fue el trabajo morgana , Boole y sus seguidores, especialmente Schroeder y Poretsky . Los lenguajes formalizados modernos, en sus formas más comunes, se remontan al trabajo. Frege "Begriffsschrift" - "Registro en conceptos" (1879), de donde proviene la línea principal de desarrollo del lenguaje de la lógica proposicional y (abarcándola) la lógica de los predicados (de muchos lugares), así como la aplicación de estos predicados lógicos medios lingüísticos a los problemas de fundamentación matemática.

La estructura característica de tales lenguajes formalizados: la asignación del alfabeto de signos iniciales, la definición inductiva de una fórmula (bien formada) del lenguaje, el llamado. estableciendo las reglas de formación, estableciendo las reglas de inferencia, las llamadas. reglas de transformación que conservan la característica lógica seleccionada de las fórmulas (verdad, demostrabilidad, etc.). La adición de reglas de transformación convierte el lenguaje formalizado en un cálculo lógico. Hay muchos tipos de lenguajes formalizados: estos son, en primer lugar, lenguajes de construcciones deductivas-axiomáticas, sistemas de inferencia natural ("natural") y construcciones secuenciales, tablas analíticas, sistemas de "lógica argumentativa" y muchos otros.

Las lenguas formalizadas se diferencian en su fuerza lógica, de las lenguas "clásicas" (en las que están en plena vigencia las leyes aristotélicas de identidad, contradicción y tercero excluido, así como el principio de ambigüedad lógica) y acabando con numerosas lenguas de lógicas no clásicas que permiten debilitar ciertos principios, introducir polisemias de valoraciones de fórmulas o de sus modalidades. Se han desarrollado lenguajes en los que se minimizan los medios lógicos en un sentido u otro. Tales son los lenguajes de la lógica mínima y positiva o el lenguaje de la lógica proposicional, que utiliza una sola operación lógica, por ejemplo. accidente cerebrovascular de Schaeffer (ver Conectores lógicos ).

Los lenguajes formalizados suelen caracterizarse en términos sintácticos y semánticos. Pero lo más esencial es esa característica lógica de sus fórmulas, que es preservada por las reglas de inferencia (verdad, demostrabilidad, verificabilidad, probabilidad, etc.). Para cualquier lenguaje formalizado, los problemas fundamentales son la completitud de la lógica expresada en él, su decidibilidad y consistencia; por ejemplo, el lenguaje del clásico Lógica proposicional completo, resoluble y consistente, y clásico lógica de predicados (múltiple) aunque completo, pero irresoluble; el lenguaje del cálculo de predicados extendidos -con cuantificadores por predicados y aplicación ilimitada del principio de abstracción- es contradictorio (tal era el sistema lógico-aritmético de Frege, en el que Russell descubrió la antinomia que lleva su nombre).

Un lenguaje formalizado puede ser una "forma pura", es decir no llevar ninguna información extralógica; si lo lleva, entonces se convierte en un lenguaje formalizado aplicado, cuya especificidad es la presencia de predicados y términos constantes (descripciones), por ejemplo. aritmética - que refleja las propiedades del área de aplicación. Para formalizar teorías de un alto nivel de abstracción, un lenguaje formalizado puede modificarse, ampliarse o "construirse" de varias maneras; ejemplo: formalización del cálculo clásico como aritmética de segundo orden (es decir, con cuantificadores sobre variables predicadas). En varios casos, un lenguaje formalizado contiene estructuras lógicas de muchos, incluso infinitos, órdenes (como, por ejemplo, la "torre de los lenguajes" de AA Markov, que sirve para formalizar matemáticas constructivas, o la interpretación de modalidades en la forma de una jerarquía de “mundos posibles”). La base semántica de un lenguaje de lógica formalizado puede ser de teoría de conjuntos, algebraica, probabilística, de teoría de juegos, etc. surge un lenguaje formalizado de “lógica vaga” (en el sentido de Zade). Entonces la lengua adquiere una pragmática específica, teniendo en cuenta el factor del hablante nativo (dando una valoración de la “función de pertenencia” del sujeto al ámbito de este concepto). Es aquí donde se manifiesta la tendencia ahora creciente a tener en cuenta el “factor humano” en los lenguajes formalizados, de una u otra forma, lo que se manifiesta claramente en algunos lenguajes formalizados de la lógica de la mecánica cuántica. En otra dirección, está el desarrollo de lenguajes formalizados, cuya semántica implica el rechazo de supuestos existenciales o ciertos prerrequisitos ontológicos: la admisibilidad de reglas con un número infinito de premisas, el "multitipo" de áreas temáticas, incluso contradictorias. unos, etc

Una característica indispensable de un lenguaje formalizado es la interpretación de "posibilidad" de las reglas de inferencia; por ejemplo, en un determinado paso somos libres de usar o no usar, digamos, la regla del modus ponens. Esta característica está privada de lenguajes algorítmicos, que tienen un carácter "prescriptivo". Pero con el desarrollo de la lógica informática y el desarrollo de programas del tipo "descriptivo", esta diferencia comienza a suavizarse. En la misma dirección opera también el desarrollo de lenguajes formalizados enfocados a la resolución de problemas heurísticos.

Literatura:

1. iglesia a Introducción a la lógica matemática, volumen 1. M., 1960;

2. Cleene S.K. Introducción a las metamatemáticas. M., 1957;

3. curry h. Fundamentos de la lógica matemática. M., 1969;

4. Freudenthal H. El lenguaje de la lógica. M., 1969;

5. Smirnova E.D. Lenguajes formalizados y problemas de semántica lógica. M, 1982.

LENGUAS FORMALIZADAS (FORTAL)

COMPRENDER

El lenguaje formalizado (formal) es un lenguaje artificial caracterizado por reglas precisas para construir expresiones y comprenderlas.

El lenguaje formal se construye de acuerdo con reglas claras, proporcionando una visualización consistente, precisa y compacta de las propiedades y relaciones del área temática estudiada (objetos modelados).

A diferencia de los lenguajes naturales, los lenguajes formales tienen reglas claramente definidas para la interpretación semántica y la transformación sintáctica de los signos utilizados, así como el hecho de que el significado y significado de los signos no cambia según ninguna circunstancia pragmática (por ejemplo, en el contexto).

Los lenguajes formales suelen construirse sobre la base del lenguaje de las matemáticas.

A lo largo de la historia del desarrollo de las matemáticas, se han utilizado ampliamente designaciones simbólicas para varios objetos y conceptos. Sin embargo, junto con las designaciones simbólicas, los matemáticos también utilizaron libremente el lenguaje natural. Pero en algún momento del desarrollo de la ciencia (siglo XVII), surgió la necesidad de un análisis lógico estricto de los juicios matemáticos, así como de aclarar el concepto de "prueba", que es importante para las matemáticas. Resultó que es imposible resolver estos problemas sin una formalización estricta de las teorías matemáticas. Era necesario presentar estas teorías en un lenguaje formal. El siglo XX puede considerarse un siglo de rápido desarrollo de varios lenguajes formales.

Desde el punto de vista de la informática, los lenguajes formales juegan el papel más importante entre los lenguajes formales. lenguaje de la logica (el lenguaje del álgebra de la lógica) y lenguajes de programación . También son de gran importancia práctica.

Todos los lenguajes formales son construcciones creadas por alguien. La mayoría de ellos están construidos de acuerdo con el siguiente esquema.

En primer lugar, elige alfabeto , o un conjunto de caracteres fuente a partir del cual se construirán todas las expresiones del idioma. Luego se describe sintaxis lenguaje, es decir, las reglas para construir expresiones significativas.

Dado que el concepto de "símbolo" tiene una carga semántica de múltiples valores para los signos del alfabeto, el término "letra" se usa con más frecuencia. Pero conviene recordar que las letras del alfabeto de una lengua formal pueden ser letras de los alfabetos de las lenguas naturales, y corchetes, y caracteres especiales, etc.

A partir de letras, de acuerdo con ciertas reglas, puedes hacer palabras y expresiones .

La regla más simple es que cualquier secuencia finita de letras puede considerarse una palabra. Realmente la palabra es el modelo de información más simple(y es, por supuesto, un objeto constructivo).

EJEMPLO 1

Uno de los más importantes desde el punto de vista de la informática es el alfabeto, que consta de dos letras “0”, “1”. Cualquier secuencia finita de ceros y unos es una palabra en este alfabeto.

En los lenguajes lógico-matemáticos, entre las expresiones se encuentran condiciones y fórmulas .

Termas son un análogo de los nombres de objetos, su propósito principal es designar algún objeto.

Los términos incluyen principalmente variables y constantes de sujeto, expresiones que sirven para designar objetos específicos.

Los términos más complejos se construyen a partir de variables y constantes sujetas de acuerdo con ciertas reglas. Por lo general, las funciones permitidas en el idioma se utilizan para esto.

EJEMPLO 2

En lógica, tales funciones son inversión (), conjunción (), disyunción (), implicación (), etc.

Ejemplos de términos en álgebra lógica:

A; AB A; (AC).

En lenguajes de programación, operaciones aritméticas, operaciones relacionales (,

Ejemplos de términos en el lenguaje de programación Pascal:

A; prog_1; ((A1+25)3*B) y (B0)); 2+raíz cuadrada(z*sin(b)).

fórmulas

EJEMPLO 3

Ejemplos de fórmulas lógicas:

(АС)  АС = 1; x((x)(x))

Las instrucciones del programa se pueden llamar fórmulas en un lenguaje de programación.

Ejemplos de "fórmulas" del lenguaje de programación Pascal:

A:= 2+raíz cuadrada(Z*sin(B)); si F3 escribe(R) sino R:=sqr(F);

Las expresiones significativas se obtienen en un lenguaje formal sólo si ciertas regulaciones formación, transformación y “comprensión” de términos y fórmulas. Estas reglas incluyen:

    reglas de construcción términos y fórmulas;

    reglas de interpretación términos y fórmulas (aspecto semántico del lenguaje);

    reglas de inferencia

Para cada idioma formal, el conjunto de estas reglas debe estar estrictamente definido, y la modificación de cualquiera de ellas conduce con mayor frecuencia a la aparición de una nueva variedad (dialecto) de este idioma.

EJEMPLO 4

operador pascual

si F3 escribe(R) sino R:=sqr(F);

interpretado de acuerdo con las siguientes reglas:

    la variable F solo puede ser de tipo entero o real, y la variable R solo puede ser de tipo real. Si este no es el caso, entonces la instrucción se considera sintácticamente incorrecta y no se ejecutará (se emitirá un mensaje de error de sintaxis);

    Las variables (los términos más simples) F y R deben estar previamente definidas, es decir, las celdas con estos nombres deben contener algunos valores del tipo correspondiente (para algunas versiones de Pascal, esta regla no está incluida en la sintaxis del lenguaje. En este caso, se selecciona aquella secuencia de ceros y unos, que está contenida en celdas con direcciones dadas y se interpreta como un número decimal);

    si el valor de la expresión (término complejo “F3”) que sigue a la palabra clave (reservada) if es “verdadero”, entonces se ejecuta la declaración que sigue a la palabra clave then (el valor de la variable F se muestra en la pantalla); si su valor es “falso”, entonces se ejecuta la declaración después de la palabra clave else (se calcula el cuadrado del valor de la variable F y el resultado se coloca en una celda llamada R).

La presencia en la sintaxis del lenguaje formal de las reglas para derivar términos y fórmulas le permite realizar transformaciones isomórficas modelos construidos sobre la base de este lenguaje. Así, los lenguajes formales no sólo reflejan (representan) uno u otro conjunto de conocimientos ya existentes, sino que son medios de formalización estos conocimiento, permitiendo a través de transformaciones formales obtener nuevos conocimientos. Además, dado que las transformaciones sólo pueden tener lugar de acuerdo con reglas formales estrictas, la construcción de modelos isomorfos al dado, pero que proporcionen nuevos conocimientos, bien puede ser automatizado. Esta posibilidad es muy utilizada en bases de conocimiento informáticas, en sistemas expertos, en sistemas de apoyo a la decisión.

Los lenguajes formales son muy utilizados en ciencia y tecnología. En el proceso de investigación y práctica científica, los lenguajes formales suelen utilizarse en estrecha relación con el lenguaje natural, ya que este último tiene capacidades expresivas mucho mayores. Al mismo tiempo, un lenguaje formal es un medio de representación más precisa del conocimiento que un lenguaje natural y, en consecuencia, un medio de intercambio de información más preciso y objetivo entre las personas.

SABER

El lenguaje formalizado (formal) es un lenguaje artificial caracterizado por reglas precisas para construir expresiones y su interpretación (comprensión).

Al construir un lenguaje formal, se elige alfabeto , y se describe sintaxis idioma.

Alfabeto- un conjunto de caracteres iniciales a partir de los cuales se construirán todas las expresiones del idioma.

Expresiones lenguaje formal son términos y fórmulas.

Propósito principal terma - designar algún objeto.

Los términos más simples son sujeto variables y constantes - expresiones que sirven para designar objetos específicos.

Los términos compuestos se construyen de acuerdo con ciertas reglas aplicando las funciones permitidas en el lenguaje a los términos simples.

fórmulas se forman a partir de términos a los que se aplican los operadores permitidos en la lengua.

Sintaxis lenguaje - un conjunto de reglas para construir expresiones significativas - incluye:

    reglas de construcción términos y fórmulas;

    reglas de interpretación términos y fórmulas;

    reglas de inferencia algunas fórmulas y términos de otras fórmulas y términos.

Lenguajes formales como lenguaje de la logica y lenguajes de programación .

Los lenguajes formales son muy utilizados en ciencia y tecnología. Son un medio de intercambio de información entre personas más preciso y objetivo que el lenguaje natural.

Los lenguajes formales no solo reflejan (representan) uno u otro conjunto de conocimientos ya existentes, sino que son un medio de formalizar estos conocimientos, lo que hace posible obtener nuevos conocimientos a través de transformaciones formales. Esta posibilidad es muy utilizada en bases de conocimiento informáticas, en sistemas expertos, en sistemas de apoyo a la decisión.

SER CAPAZ DE

EJERCICIO 1

Enumera en qué letras consiste el alfabeto del lenguaje de programación que conoces y qué reglas existen para la formación de términos simples en este lenguaje.

Si hay palabras reservadas en este lenguaje de programación? En caso afirmativo, proporcione ejemplos de palabras reservadas y no reservadas.

¿Qué en los lenguajes de programación se pueden considerar como términos y fórmulas?

RESPUESTA. El alfabeto de un lenguaje de programación incluye todos los símbolos que se pueden usar al escribir programas.

Los términos del lenguaje de programación son identificadores, así como expresiones construidas a partir de identificadores, constantes, signos de operaciones aritméticas y lógicas, funciones matemáticas y otras (definidas en el lenguaje), corchetes.

Las fórmulas de un lenguaje de programación son los operadores permitidos en el mismo: entrada, salida, asignación, condicional, bucle, etc.

TAREA 2

Si estudiaste los conceptos básicos de la lógica formal, entonces:

    dar ejemplos cuando la transformación formal de fórmulas lógicas le permita obtener nuevos conocimientos sobre los objetos en estudio;

    interpreta la fórmula: x ((x)  (x)) o  (A  A) = 1

RESPUESTA. 2) es la ley de no contradicción, cuya esencia es: ningún enunciado puede ser verdadero y falso al mismo tiempo.

TAREA 3

¿Cuál es el alfabeto del sistema numérico decimal?

¿Cuál es la regla básica para la formación (registro) de números en este sistema numérico posicional?

RESPUESTA. Alfabeto: dígitos decimales, punto decimal (o coma) y signos más y menos. Regla: el peso de un dígito en un número depende de su posición en la notación del número.

TAREA 4

¿Cómo se puede interpretar la palabra del alfabeto binario “0100 1001 0100 0110” en un sistema de programación que usted conoce (los espacios se insertan para facilitar la lectura)?

RESPUESTA. En Pascal, estos dos bytes se pueden interpretar como una cadena de caracteres "IF", como dos números de tipo byte: 73 y 70, como un número de tipo entero: 20758 (18758 ???).

TAREA 5

La interfaz gráfica del sistema Windows contiene elementos como pictogramas o iconos. ¿Podemos suponer que están incluidos en el alfabeto del idioma de la interfaz de usuario de este sistema? Justifica la respuesta.

AMPLÍA TU PERSPECTIVA

En los lenguajes formales, como en ningún otro, el papel del signo, entendido en el sentido amplio de la palabra, es grande. Anteriormente consideramos algunos aspectos del uso de signos, pero tiene sentido hablar de esto con más detalle.

La razón de la aparición de signos es bastante obvia: la mayoría de los objetos de cognición y actividad no están disponibles para la percepción directa en el proceso de cognición y presentación en el proceso de comunicación.

Firmar(del gr.  - signo, transcripción lat. - semeion) es un objeto material que actúa como representante de algún otro objeto, propiedad o relación y se utiliza para adquirir, almacenar, procesar y transmitir mensajes (información , conocimiento ).

NOTA 1. En lugar de la palabra “signo”, se utilizan otros conceptos en un sentido similar: “nombre”, “término”, “designación”.

Según la definición de uno de los creadores de la teoría de los signos (semiótica) C.P. Pierce, firmar- este es un elemento x, que reemplaza al sujeto algún elemento y (denotación) de acuerdo con algún atributo.

Respectivamente, denotación- esto es lo que significa este signo en una situación particular.

Denotación alguna unidad abstracta lingüística (del latín denoto - designo) - un conjunto de objetos que pueden ser llamados por un signo dado.

NOTA 2. En lugar de la palabra "denotación" en lógica, se usan otros nombres (idénticos, sinónimos): con mayor frecuencia "significado", "denotado".

A su vez, cada signo define algunas propiedades del objeto que denota. La información que lleva un signo sobre lo que denota se llama concepto signo (del lat. conceptus - concepto).

NOTA 3. El término “concepto” tiene sinónimos: “significado”, “significado significado”.

POR EJEMPLO, en la palabra "animal" encontramos el significado antiguo de la palabra "estómago": vida. Los animales no difieren en la presencia de un estómago, sino en el hecho de que están vivos, tienen una vida estomacal. Así, el concepto del signo “animal” es el concepto de ser vivo, la detonación es cualquier ser vivo específico que se signifique en una determinada situación de signo.

Según Peirce, todos los signos se dividen en índice , icónico y simbólico la naturaleza de la relación entre el significante y el significado.

Relación de índice entre el significante y el significado en el signo se basa en su similitud actual existente. Esta clase incluye, por ejemplo, palabras onomatopéyicas o fórmulas estructurales de compuestos químicos. Los signos de índice están asociados con la relación causal designada (por ejemplo, la presencia de techos mojados es una señal de que ha llovido).

Actitud icónica entre el significante y el significado es, según C. Pierce, “una simple generalidad en términos de alguna propiedad”. Copiar signos (signos icónicos): reproducciones, reproducciones similares a las designadas (por ejemplo, fotografías, huellas dactilares).

V signo simbólico significante y significado se relacionan “sin tener en cuenta ninguna conexión real” (por ejemplo, se asigna a algún objeto cierta combinación de sonidos, letras, figuras, colores, movimientos, etc.).

Para la construcción de lenguajes formales, es este tipo de signos el que es importante (ver el párrafo del primer capítulo sobre la tesis principal de la formalización).

NOTA 4 Los caracteres simbólicos a veces se denominan simbolos . Según la idea del destacado filósofo ruso P.A. Florensky, un símbolo es “un ser que es más grande que sí mismo. Símbolo- esto es algo que es algo que no es él mismo, más grande que él, y sin embargo se manifiesta esencialmente a sí mismo a través de él. Por ejemplo, la mítica criatura grifo, que combina un león y un águila, es uno de los símbolos de Jesucristo.

A menudo sucede que un signo que apareció primero como un signo icónico, luego se convierte en un signo-símbolo.

POR EJEMPLO, la letra  en el alfabeto fenicio se llamaba "aleph" - un toro (se parece a la cabeza de un toro). Entonces ella era un signo icónico. En el idioma griego, esta letra no está asociada con un toro y se convierte en un signo-símbolo.

A medida que se desarrolla el simbolismo matemático, los signos icónicos también son reemplazados por símbolos. Por ejemplo, el número romano V se parecía a una mano abierta (cinco dedos), mientras que el 5 moderno es un símbolo.

Los signos denotan respectivamente el planeta Venus y Marte en astronomía y en biología - femenino y masculino. Estos signos son de origen icónico. El primero de ellos es una imagen estilizada de un espejo antiguo, el segundo es un escudo con una lanza.

Las denotaciones no son siempre objetos de la vida real y colecciones de tales objetos. Muchos ejemplos de denotaciones que no son objetos de la realidad están contenidos en el conocido cuento de hadas de L. Carol "Alicia en el país de las maravillas". También formula figurativamente el principio de la aparición de tales denotaciones:

"Vivió para vivir (March Hare - nota del autor), pero para ser algo que no era". En este sentido, el proverbio ruso "él vivió y fue" no parece ser una tautología en absoluto.

La estructura del signo está descrita por el llamado "triángulo de Frege" (por el nombre del destacado lógico alemán, que hizo mucho por el desarrollo de la teoría de los lenguajes formales). En otra terminología, se llama el “triángulo semántico” o el triángulo de Ogden y Richards. Establece una conexión entre el signo, la denotación del signo y el concepto del signo.

Arroz. 4.3.1. triangulo de frege

Con la ayuda de este triángulo, se pueden aclarar una serie de efectos de lenguaje bien conocidos (situaciones de signos).

1) Sinonimia- una situación consistente en la coincidencia total o parcial de los significados de diferentes signos:

Arroz. 4.3.2. esquema de sinónimos

2) los signos pueden tener la misma denotación, pero tener diferentes significados (identidad denotativa). Por ejemplo, los signos “sin 30°” y “1/2” tienen la misma denotación, es decir, nombran el mismo número real, pero el significado de estos signos es diferente:

Arroz. 4.3.3. Esquema de identidad denotativa

3) Polisemia(polisemia) - el signo tiene más de un significado:

Arroz. 4.3.4. Diagrama de polisemia

DATO INTERESANTE

referencia histórica

Los primeros pasos hacia la creación de un lenguaje formal de la lógica se dieron en la antigüedad. Aristóteles (384-322 a. C.) introdujo variables de letras para los sujetos y predicados de declaraciones categóricas simples, y el jefe de la escuela estoica Crisipo (c. 281-208 a. C.) y sus estudiantes - variables para declaraciones en general. En el siglo XVI, R. Descartes (1596-1659) creó la base del lenguaje formal moderno de las matemáticas: el álgebra de letras, y G. W. Leibniz (1646-1716) transfirió el simbolismo de Descartes a la lógica. El lenguaje principal de la lógica en ese momento era el lenguaje natural. Al darse cuenta de las importantes deficiencias sintácticas y semánticas de un lenguaje natural (incomodidad, ambigüedad e inexactitud de las expresiones, reglas sintácticas confusas, etc.), Leibniz formuló la tesis de que sin la creación de un lenguaje artificial especial - "cálculo universal" - el desarrollo posterior de la lógica es imposible. Pero solo a fines del siglo XIX, la idea de Leibniz se desarrolló en los estudios de J. Boole (1815-1864), S. Jevons (1835-1882), E. Schroeder (1841-1902) y otros. - Apareció el álgebra de la lógica.

Un mayor desarrollo del lenguaje de la lógica está asociado con los nombres de J. Peano (1858-1932) y G. Frege (1848-1925). Peano introdujo una serie de símbolos aceptados en las matemáticas modernas, en particular “”, “”, “”, para denotar, respectivamente, las relaciones de pertenencia, unión e intersección de conjuntos. Frege construyó un cálculo axiomático de proposiciones y predicados, que contenía todos los elementos básicos del cálculo lógico moderno.

Con base en los resultados obtenidos por Frege, y utilizando el simbolismo de Peano modificado, B. Russell (1872-1970) y AN Whitehead (1861-1947) en su obra conjunta “Principles of Mathematics” (1913) formularon las principales disposiciones del sistema formal lenguaje de la lógica.

En la actualidad, el lenguaje de la lógica encuentra una aplicación importante en la informática, en el desarrollo de lenguajes de programación, software informático y diversos sistemas técnicos.

El surgimiento de los lenguajes de programación cae a principios de los años 50 del siglo XX. Inicialmente, los programas se crearon en el lenguaje de instrucciones de máquina y eran secuencias de códigos binarios que se ingresaban desde la consola a una computadora para su ejecución.

El primer paso en el desarrollo de los lenguajes de programación fue la introducción de designaciones mnemotécnicas (mnemotécnicas - memoria) para comandos y datos y la creación de un programa de máquina que traduce estas designaciones mnemotécnicas en códigos de máquina. Tal programa, y ​​con él el sistema de notación, se denominó ensamblador .

Cada tipo de máquina tenía su propio ensamblador, y transferir programas de máquina a máquina era un procedimiento muy laborioso. Por lo tanto, surgió la idea de crear un lenguaje independiente de la máquina. Dichos lenguajes comenzaron a aparecer a mediados de la década de 1950, y el programa que traducía las oraciones de este lenguaje a lenguaje de máquina se conoció como traductor .

Hay varios miles de lenguajes de programación y sus dialectos (variedades). Se pueden clasificar de diferentes maneras. Algunos autores dividen toda la variedad de lenguajes de programación en procedimentales y declarativos. En los lenguajes procedimentales, la transformación de datos se especifica describiendo la secuencia de acciones sobre ellos. En los lenguajes declarativos, la transformación de datos se especifica principalmente describiendo la relación entre los datos mismos. Según otra clasificación, los lenguajes de programación se pueden dividir en procedimentales, funcionales, lógicos, orientados a objetos. Sin embargo, cualquier clasificación es algo arbitraria, ya que, por regla general, la mayoría de los lenguajes de programación incluyen características de lenguajes de diferentes tipos.

Un lugar especial entre los lenguajes de programación lo ocupan los lenguajes que aseguran el funcionamiento de los sistemas de gestión de bases de datos (DBMS). A menudo, en ellos se distinguen dos subsistemas: un lenguaje de descripción de datos y un lenguaje de manipulación de datos (otro nombre es el lenguaje de consulta).

El siglo XXI es una época en la que la posesión de información es la ventaja competitiva más importante en cualquier campo. Sin embargo, no traerá ningún beneficio si no se expresa en un idioma comprensible para aquellos a quienes se destina o si no hay un traductor capaz de transmitir su significado al destinatario.

En este momento, alrededor de 2000 personas viven en la tierra. Su característica distintiva, en primer lugar, es el idioma.

Junto con la humanidad coloquial (natural) ha creado muchos lenguajes artificiales. Cada uno de ellos está diseñado para resolver problemas específicos.

Dichos sistemas de signos incluyen lenguajes formales, cuyos ejemplos se presentan a continuación.

Definiciones

En primer lugar, definamos qué es un lenguaje. Esta palabra se entiende comúnmente como un sistema de signos que se utiliza para establecer comunicaciones entre las personas y el conocimiento.

La base de la mayoría de los lenguajes tanto artificiales como naturales es el alfabeto.

Es un conjunto de caracteres utilizados para formar palabras y frases.

El lenguaje se caracteriza por:

  • el conjunto de caracteres utilizados;
  • reglas para componer "palabras", "frases" y "textos" a partir de ellos;
  • un conjunto de reglas (sintácticas, pragmáticas y semánticas) para el uso de construcciones construidas.

Características de los lenguajes naturales

Como ya se mencionó, todos los idiomas se dividen condicionalmente en artificiales y naturales. Hay muchas diferencias entre ellos.

Los idiomas hablados son naturales. Sus características incluyen, entre otras:

  • ambigüedad de la mayoría de las palabras;
  • la existencia de sinónimos y homónimos;
  • la presencia de varios nombres para el mismo tema;
  • la existencia de excepciones a casi todas las reglas.

Todas estas características son las principales diferencias entre los sistemas de signos naturales y las lenguas formales. Todos conocen ejemplos de palabras y declaraciones ambiguas. Entonces, la palabra "éter", según el contexto, puede significar tanto sustancia como transmisión de radio o televisión.

Las principales funciones de las lenguas habladas son:

  • comunicación;
  • actividad cognitiva;
  • expresión de emociones;
  • impacto en el interlocutor (corresponsal, si hablamos de correspondencia).

Características de los lenguajes artificiales

Los lenguajes artificiales son creados por personas para propósitos especiales o para grupos específicos de personas.

Una de las principales características de los lenguajes artificiales es la definición inequívoca de su vocabulario, así como las reglas para darles significados y formar expresiones.

Lenguajes y gramáticas formales

Un lenguaje, ya sea natural o artificial, solo puede existir si hay un conjunto de reglas específicas. Al mismo tiempo, se debe proporcionar una visualización consistente, compacta y precisa de las relaciones y propiedades del área temática en estudio. Si están estrictamente formulados, entonces dicen que el lenguaje. Los lenguajes de programación son ejemplos de tales sistemas de signos, aunque, estrictamente hablando, ocupan una posición intermedia (ver más abajo).

El esquema para construir sistemas formales de signos es el siguiente:

  • se selecciona un alfabeto (un conjunto de símbolos iniciales);
  • se especifican las reglas para la construcción de expresiones (sintaxis) del lenguaje.

Ámbito de aplicación

Lógicas formales, programación, etc.) se utilizan en el proceso de investigación científica. Son mejores que los naturales para representar el conocimiento y son un medio de intercambio de información más objetivo y preciso.

Los lenguajes formales incluyen todos los sistemas conocidos de símbolos matemáticos y químicos, código Morse, notación musical, etc.

Además, los lenguajes de programación formales son muy utilizados. Su rápido desarrollo comenzó a mediados del siglo XX, en relación con el advenimiento de la tecnología informática.

Lenguaje lógico formal

En el corazón de cualquier lenguaje de programación están las matemáticas. A su vez, se basa en el sistema de signos de la lógica formal.

Como ciencia, la lógica fue creada por Aristóteles. También desarrolló reglas para transformar declaraciones que conservan su valor de verdad independientemente del contenido de los conceptos incluidos en estas declaraciones.

La lógica formal lucha con las "deficiencias" de los lenguajes naturales asociadas con la ambigüedad de algunas declaraciones, etc. Para este propósito, las operaciones con pensamientos se reemplazan por acciones con signos de un lenguaje formal. Esto elimina cualquier incertidumbre y le permite establecer con precisión la verdad de la afirmación.

Características de los lenguajes de programación.

Como ya se mencionó, con algunas reservas pueden clasificarse como formales.

Están unidos a estos últimos por muchas reglas sintácticas, ya los naturales por algunas palabras clave y construcciones.

Para crear un lenguaje de programación, es necesario determinar el conjunto de símbolos válidos y los programas correctos del lenguaje y el significado de cada programa correcto. Si la primera tarea puede abordarse mediante la formalización, en el caso de la segunda, estos enfoques no funcionan.

El conjunto de caracteres válidos en los lenguajes de programación son caracteres que se pueden teclear desde el teclado. Son la primera parte de la tabla de codificación ASCII.

gramáticas

Los lenguajes de programación, como cualquier otro, tienen una gramática. Este término se entiende como una descripción del método de recopilación de propuestas. Las gramáticas se describen de varias maneras. En el caso de los lenguajes de programación, son reglas que se especifican mediante pares ordenados de cadenas de caracteres de dos tipos: construcciones sintácticas definitorias y restricciones semánticas. Al establecer gramáticas, primero establecen formalmente las reglas para construir construcciones sintácticas, y luego establecen las semánticas en una de las lenguas naturales.

Las reglas están escritas en forma gráfica por medio de diagramas especiales. Inicialmente, este enfoque se aplicó al crear el lenguaje Pascal. Sin embargo, luego comenzó a ser muy utilizado en otros.

Clasificación de los lenguajes de programación.

Por el momento, hay varios miles de ellos, junto con "dialectos". Se clasifican en procesales y declarativos. En los lenguajes del primer tipo, la transformación de datos se especifica describiendo la secuencia de acciones realizadas en ellos, el segundo, por relaciones. Hay otras clasificaciones también. Por ejemplo, los lenguajes de programación se dividen en funcional, procedimental, orientado a objetos y lógico. Si abordamos el tema estrictamente, entonces ninguna clasificación puede ser objetiva. Después de todo, una parte importante de los lenguajes de programación tiene capacidades de sistemas formales de varios tipos a la vez. Con el tiempo, es probable que los bordes se desdibujen aún más.

Ahora podrás responder a la pregunta: “¿Qué lenguajes formales conoces?”. Los científicos continúan perfeccionándolos para que sea posible resolver varios problemas prácticos y teóricos que actualmente se consideran irresolubles.

¿Tiene preguntas?

Reportar un error tipográfico

Texto a enviar a nuestros editores: