language agnostic - ¿Qué es un predicado?
language-agnostic (11)
De C ++ Primer 5th (§10.3.1):
Un predicado es una expresión que se puede invocar y que devuelve un valor que se puede usar como condición.
También del capítulo Sección de Términos definidos :
predicado : Función que devuelve un tipo que se puede convertir a
bool
.
Siendo un codificador aficionado, me falta algo de conocimiento fundamental. Durante los últimos días he estado leyendo algunas cosas y la palabra "predicado" sigue reapareciendo. Agradecería mucho una explicación sobre el tema.
En términos no programáticos; una pregunta . Por lo general, una pregunta general con los titulares de lugar (como él y ellos ) que se puede pedir de muchas cosas.
- ¿ Es rojo?
- ¿ Es un perro?
- ¿ Es propiedad de ellos ?
La definición de un predicado, que se puede encontrar en línea en varias fuentes, como here , es:
Una expresión lógica que evalúa como VERDADERO o FALSO, normalmente para dirigir la ruta de ejecución en el código.
Referenciando: Pruebas de software. Por Mathew Hayden
No sé si hablo en el contexto correcto, pero hay una clase Predicate
en C # que es esencialmente un delegado que, dado un elemento, determina si el objeto cumple o no un conjunto de criterios.
Por ejemplo, el siguiente método, que es de tipo Predicate<int>
, podría usarse para seleccionar todos los enteros mayores que 5:
public bool MyPredicate(int x)
{
return x > 5;
}
No estoy seguro de cómo esto se traduce en el caso más general, pero es un comienzo. Para obtener más información, haga clic aquí .
Primero echemos un vistazo a un diccionario normal y veamos qué dice acerca de qué es un predicado:
Diccionario Oxford American (1980):
norte. una parte de una oración que dice algo sobre el tema gramatical, ya que "es corto" en "la vida es corta"
Aquí hay otra oración: "John es alto". el predicado es "es alto". Como puede ver, modifica o describe el tema, otro término que es similar al predicate
es adjective
. En esencia, es un modificador.
El glossary tecnología de IBM proporciona varias definiciones pero, la que mejor se ajusta es esta:
Una expresión utilizada como parte de un filtro, que consiste en un elemento de datos, un operador y un valor
Aquí hay un ejemplo usando SQL:
SELECT name
FROM tableA
WHERE name = "john";
El predicado en este código sería name = "john"
. Tiene todos los componentes de la definición de IBM y también se ajusta a la definición regular de predicado. El sujeto es el name
y el predicado es name = "john"
.
Probablemente sea útil considerar el significado gramatical del concepto para extrapolar el concepto de programación.
En la gramática tradicional, un predicado es una de las dos partes principales de una oración (el otro es el sujeto, que el predicado modifica). Para la oración simple "Juan [es amarillo]", Juan actúa como el sujeto, y el amarillo actúa como el predicado, una descripción posterior del sujeto encabezado por un verbo.
En la semántica lingüística actual, un predicado es una expresión que puede ser cierta para algo. Por lo tanto, las expresiones "es amarillo" o "es como el brócoli" son ciertas para las cosas que son amarillas o como el brócoli, respectivamente. Esta noción está estrechamente relacionada con la noción de un predicado en la lógica formal, que incluye más expresiones que la anterior, como, por ejemplo, sustantivos y algunos tipos de adjetivos.
En términos lógicos:
Un operador en lógica que devuelve verdadero o falso.
de MathWorld
También algo relacionado, hay predicados relacionados con la base de datos:
Un predicado no es simplemente una expresión que se evalúa como verdadera o falsa, hay más en ella. El término "predicado" se usa para referirse a una expresión que determina si algo es verdadero o falso. O en otras palabras, hace una afirmación y devuelve verdadero o falso en función de eso.
Por ejemplo (en C #):
/*this is a predicate, as it''s sole purpose is to make some
assertion about something.*/
bool IsNameBob(string name)
{
return name == "Bob";
}
/*Whereas this is not a predicate, as it''s performing an action
then evaluating to true if it succeeds. */
bool DoSomethingCool() {
try
{
ImDoingSomethingCool();
}
catch
{
return false;
}
return true;
}
Entiendo que lo que he puesto aquí es puramente una diferencia en semántica, pero de eso se trataba esta pregunta ¿no? ¿Semántica?
Una declaración que es verdadera o falsa. En la programación, típicamente es una función que devuelve un valor booleano para alguna entrada.
Más comúnmente (supongo) usado en el contexto de la función de orden superior. Por ejemplo, el filter
es una función en muchos idiomas que toma un predicado y una lista como argumentos, y devuelve los elementos en la lista para los cuales el predicado es verdadero.
Ejemplo en javascript:
lessThanTen = function(x) { return x < 10; }
[1,7,15,22].filter(lessThanTen) --> [1,7]
la función lessThanTen
es el predicado aquí, que se aplica a cada elemento de la lista. Por supuesto, una expresión booleana podría usarse como predicado en lugar de una función, por ejemplo, filter(true)
devolverá la lista completa, filter(false)
una lista vacía.
Una evaluación básica que resulta en un valor booleano 1 . A menudo se refiere a una función u objeto que representa una evaluación de este tipo.
1: booleano utilizado sin apretar, no necesariamente refiriéndose a las variables declaradas bool
o boolean
.
Una función que devuelve un booleano. Los predicados se usan mucho en la programación funcional y OO para seleccionar subconjuntos de valores de estructuras de datos , especialmente listas y otras colecciones. Encontrará muchos ejemplos en las bibliotecas estándar para Haskell y Smalltalk.