Puede parecer que esta pregunta se responde sola, pero le insto a que considere las posibilidades y el impacto que esto podría tener en la sociedad.
Como ingeniero de sistemas, la programación es más común para mí que mi idioma "nativo": el inglés.
Tengo entendido que su idioma nativo es con el que se siente más cómodo, incluso si la sociedad que lo rodea no lo habla. ¿Significa esto que debo poner ensamblador en los documentos cuando pido mi idioma principal y luego el inglés como idioma secundario?
En los países que tienen derechos a los intérpretes en los procedimientos judiciales, ¿cómo cree que afectaría esto?
Esta es más una pregunta "divertida", pero tiene algunas posibilidades que pueden alterar la vida. ¿Es hora de que consideremos los lenguajes digitales como lenguajes reales?
Idioma
el método de comunicación humana, ya sea hablado o escrito, que consiste en el uso de palabras de forma estructurada y convencional.
"un estudio de la forma en que los niños aprenden el lenguaje"
el sistema de comunicación utilizado por una comunidad o país en particular.
"el libro fue traducido a veinticinco idiomas"
Compara tu pregunta:
Tengo entendido que su idioma nativo es con el que se siente más cómodo, incluso si la sociedad que lo rodea no lo habla.
y http://en.wikipedia.org/wiki/Language :
El lenguaje es la habilidad de adquirir y usar sistemas complejos de comunicación, particularmente la habilidad humana para hacerlo, y un lenguaje es cualquier ejemplo específico de tal sistema.
Un punto clave en la noción generalmente aceptada de 'lenguaje' es la comunicación. Así que realmente no puedes decir que no importa si la sociedad que te rodea habla el mismo idioma o no.
La familia de lenguajes que usó como ejemplo, Assembly, es un lenguaje imperativo: da instrucciones a un procesador. No es capaz de contener información, incluso en la forma muy simple de lógica proposicional. Es cierto que puede establecer o borrar bits dependiendo de la veracidad de una declaración, pero el lenguaje aún no transmite información: se necesita interpretación.
En los lenguajes naturales, la información es muy importante. El intercambio de información es una de las principales funciones del lenguaje.
Otros lenguajes de programación como prolog o lenguajes funcionales pueden ser más adecuados para transmitir información, sin embargo, es complicado trabajar con incertidumbre en estos lenguajes (por ejemplo, "Puede estar lloviendo").
Está diciendo que también puede poner Asamblea como su idioma nativo. Considere por un momento escribir su pregunta anterior en Asamblea. Entonces reconsidere afirmar que Asamblea podría haber sido su lengua materna.
10010011
". Para el primero, necesitamos saber el significado de las palabras solo. El segundo puede tener diferentes significados en diferentes lugares de la memoria, bajo diferentes programas. También estoy muy interesado en ver una traducción de "El rey vive" en asamblea.1001
no tiene un significado. Por eso podemos hacer diccionarios para inglés, pero no para cadenas de bits.Creo que es la diferencia pedante entre "lenguaje humano" y "lenguaje de computadora". En este momento, probablemente no haya una distinción en la mayoría de las definiciones legales relacionadas con los derechos de traducción, pero sería una solución rápida si alguien quisiera cuestionarla. Las leyes suelen contener una sección de "definiciones" donde definen las palabras que utilizan. Las definiciones que usan no tienen que ser de uso común, es solo el uso que pretenden en esa ley. Rápidamente modificarían la definición para que signifique "lenguaje humano" (cuidadosamente elaborado para ser preciso y cerrar el problema).
Sin embargo, si tuviera que conseguir una colonia de ingenieros de sistemas con ideas afines para usar un lenguaje informático como su comunicación diaria, entonces es posible que deba comenzar a capacitar a un traductor :)
El término "idioma nativo" no tiene una definición legal estándar. En los EE. UU., tiene una definición legal para fines educativos federales (relacionados con la financiación), como "el idioma que normalmente usa dicha persona; o en el caso de un niño o joven, el idioma que normalmente usan los padres del niño o juventud". La comodidad es irrelevante. Dado que no habla ensamblador (ningún dialecto), no es su idioma nativo y ningún humano habla ningún lenguaje de programación, el resto de sus preguntas son discutibles.
Suponiendo que alguien inventa computadoras sensibles que se consideran legalmente equivalentes a los humanos, entonces es posible que los códigos de operación binarios (no los lenguajes de programación de nivel superior, que son dispositivos de interfaz humana) puedan considerarse legalmente "el idioma nativo" de tales objetos. . O bien, podría considerarse que todas las computadoras deben estar programadas para entender inglés. Dado que las computadoras no usan lenguaje de todos modos, no se puede predecir cuál sería el resultado legal.
Diría que lo es en el sentido de que contiene una forma explícita de comunicarse. Sin embargo, para que realmente hable utilizando un lenguaje de programación, su mensaje (a falta de un término mejor) debería poder interpretarse sin el uso de ningún otro lenguaje existente.
Echa un vistazo a este comentario que hiciste a otra respuesta:
lista privada _Idiomas = nueva lista ();
Idiomas de la lista pública { get { return _Languages; } establecer { _Idiomas = valor; } };
Idiomas.Add("C#");
Idiomas.Add("ASM");
Idiomas.Add("Inglés");
Usando esto como ejemplo, diría que realmente no se está comunicando a través de un lenguaje de programación. Lo que estás haciendo es comunicarte en una forma ofuscada de inglés usando un lenguaje de programación. La razón por la que digo esto es por el uso de cadenas como "English". La única razón por la que esto funciona para la comunicación es porque ya está definido en otro lenguaje implícito.
Aunque no estoy seguro de cómo está utilizando el ensamblado para comunicarse con sus compañeros, mi intuición es que lo está utilizando esencialmente para cifrar un mensaje en inglés que luego puede ser descifrado por otra persona que entienda el ensamblado.
También tenga en cuenta que su ejemplo no es sintácticamente correcto en C#. Incluso suponiendo que las variables se declaran fuera de un método que contiene las otras tres declaraciones, el punto y coma después de la declaración get/set aún generaría un error.
Considere que un lenguaje de programación, como se usa hoy en día, es un lenguaje que tiene una semántica operativa, y que un lenguaje natural es un lenguaje con el que, digamos, podría configurar la prueba de Turing. Ya ves a dónde va esto: la posibilidad de usarlos indistintamente sería una refutación concreta de la prueba de Turing.
Dicho esto, el argumento de Pierre Lévy es que es posible crear un lenguaje con el que se pueda expresar tanto el significado como la computación (que es algo diferente a usarlo para esos dos propósitos indistintamente o simultáneamente). Si tiene éxito, podría ser un cambio de juego, y en realidad está destinado de esa manera.
Una preocupación más fundamental es que el término "lenguaje" en "lenguaje de programación" tiene una connotación muy estricta que casi no tiene relación con el fenómeno que estudian los lingüistas. Además, el término "natural" en "lenguaje natural" es filosóficamente problemático, lejos de ser consensuado. Se puede defender fácilmente que el lenguaje humano, en su manifestación, es enteramente artificial.
Los lingüistas están capacitados profesionalmente para manejar idiomas; ninguno de ellos, que yo sepa, trata con ensamblador o incluso con un lenguaje informático como C++ o Java; todos los idiomas que estudian se hablan o se han hablado; puede haber tenido una forma escrita; puede ser una lengua cortesana sofisticada o un criollo o un pidgin.
Un lenguaje informático tiene que ser exacto y preciso para que funcione; puede hacer frente a la ambigüedad, es decir, la sobrecarga o el cambio contextual por alcance; pero estos son reinterpretados para hacerlos precisos.
Los lenguajes humanos tienen un alto nivel de ambigüedad, que cuando se contrasta con los lenguajes informáticos se considera problemático; y es siempre y cuando quieras programar en lenguaje natural o si fetichizas la precisión; pero rápidamente se comprendió que un lenguaje muy truncado y modificado era más efectivo; en el nivel básico el idioma de Turing; a nivel de chip, código de máquina; luego lenguajes de alto nivel como COBOL, Smalltalk o Java; esto podría llamarse una pila de lenguaje.
La ambigüedad es importante en los lenguajes humanos porque el mundo es: ¿qué es una silla? Algo para sentarse; tanto un tronco como un sillón o un banco; y tal vez también el suelo si uno se siente cómodo sentado con las piernas cruzadas; ¿y no sería insoportablemente engorroso nombrar cada tono de rojo con un nombre diferente , porque era un tono diferente ? ¿Y podría funcionar una metáfora como 'su rostro de granito' si el granito solo pudiera pertenecer a un cierto tipo de roca ígnea? ¿Y se enfrenta sólo a los humanos, o incluso a los mamíferos?
Así que no; Los lenguajes informáticos están más cerca de cosas como los planos arquitectónicos de casas o edificios (simplemente están escritos de manera serial, y curiosamente uno oye hablar de 'arquitectura de hardware y arquitectos de software') que los lenguajes reales, vivos o muertos, criollo o estatal.
Voy a decir que no, con una salvedad.
Al igual que los lenguajes naturales, los lenguajes de programación se describen mediante gramáticas. Sin embargo, en el caso de un lenguaje de programación, la gramática debe estar restringida de manera que permita que una máquina lea cualquier programa arbitrario y determine (de una manera completamente práctica y determinista) 1) que no es un programa válido declaración en el idioma, o 2) que es válida y tiene un significado claro e inequívoco en el idioma.
Esto significa que, en la práctica, los lenguajes de programación son menos expresivos que los lenguajes naturales y, por diseño , no permiten el tipo de significados matizados que los lenguajes naturales aprovechan para comunicar humor, ironía o doble sentido (entre otros). Hay conceptos que se pueden comunicar utilizando lenguajes naturales que no se pueden asignar a un programa/declaración equivalente en los lenguajes de programación actuales .
Entonces, sobre esa base, diría que no, un lenguaje de programación no es equivalente a un lenguaje natural, porque no es lo suficientemente expresivo o flexible para comunicar todo lo que puede comunicar un lenguaje natural.
Sin embargo, la advertencia es que si tiene un lenguaje de programación cuya gramática es equivalente a (o un superconjunto de) la gramática asociada con un lenguaje natural como el inglés, entonces ese lenguaje de programación también podría contar como un lenguaje natural. Lo mismo se aplica si alguien crea un lenguaje de programación cuya sintaxis es un lenguaje natural (es decir, poder ingresar programas como prosa en inglés de forma libre). Sin embargo, de manera realista, no creo que ninguno de los dos pueda suceder pronto.
Editar
Y aquí hay una buena discusión de cómo califica la gramática asociada con un lenguaje natural, en el sentido formal/programático:
https://stackoverflow.com/questions/4197751/is-there-a-formal-grammar-for-english-language
Las palabras "ambiguo" y "enorme" se lanzan, con razón.
Diría que no: si me acercara a alguien que entendiera Java (o Python o algún otro idioma) y comenzara a hablarle, entonces podría entenderlo, pero solo después de ponerlo en contexto.
Depende de su definición de "lenguaje". Usted citó las definiciones. Empecemos con el primero:
el método de comunicación humana, ya sea hablado o escrito, que consiste en el uso de palabras de forma estructurada y convencional.
El lenguaje de programación tiene estructura y convenciones, y tiene palabras que tienen significados. Si bien los lenguajes de programación generalmente se escriben, no es inconcebible hablar un lenguaje de programación. El concepto principal en esta definición es que el lenguaje de programación es un "método de comunicación", y un lenguaje de programación ciertamente es un método de comunicación, aunque el objetivo principal suelen ser las computadoras. El lenguaje de programación también se usa para comunicarse con otros programadores sobre los pasos que se deben realizar para realizar las tareas.
La segunda definición:
"un estudio de la forma en que los niños aprenden el lenguaje"
es incoherente en este contexto. No existe una definición coherente de lo que significa "niños" en términos de lenguaje de programación.
Por último,
el sistema de comunicación utilizado por una comunidad o país en particular.
Esta definición ciertamente se ajusta al lenguaje de programación, que es utilizado por una comunidad de programadores para comunicarse con las máquinas y entre sí.
Creo que estas son definiciones poco interesantes, realmente no resaltan la diferencia y similitud entre el lenguaje natural y el de programación. Probemos otra cosa.
Definición A:
El lenguaje es un sistema de comunicación.
¿Qué significa "comunicación"? Para las computadoras, la comunicación gira en torno a dar instrucciones, hacer preguntas y dar respuestas. En realidad, estas funciones las cumplen diferentes lenguajes informáticos, los lenguajes de programación sobresalen en la primera, un lenguaje de consulta de datos como SQL o Google Cards para la segunda, y la entrada a la computadora se realiza a través de lenguajes de datos como XML.
La definición A es insatisfactoria porque necesariamente incluye muchas cosas que tradicionalmente no podríamos definir como lenguajes, como lenguajes corporales, expresiones faciales o feromonas.
Definición B:
El lenguaje es un sistema estructurado utilizado para la comunicación.
¿Qué significa "estructurado"? Para esto, definiremos "estructurado" como la propiedad de que el sistema tiene reglas consistentes para combinar elementos en el lenguaje para construir compuestos más grandes para expresar conceptos arbitrariamente complicados.
¿Qué estructuras tiene un lenguaje ensamblador? El lenguaje ensamblador consiste únicamente en declaraciones imperativas con un conjunto fijo de registros y direcciones de memoria. Una instrucción como mov %eax, %edx
o int 21h
indica al procesador que realice ciertas operaciones.
¿Dónde se queda corto el lenguaje imperativo? La asamblea tiene un conjunto fijo de verbos, que generalmente se cuentan por cientos. No es posible definir nuevas instrucciones en lenguaje máquina puro (dejemos de lado las instrucciones sintéticas creadas por macros).
¿Qué tipo de lenguajes de programación pueden definir y expresar verbos arbitrarios? Los lenguajes procedimentales son lenguajes en los que puede definir nuevos verbos combinando verbos existentes. Sin embargo, los lenguajes procesales siguen siendo inherentemente imperativos, ya que todavía solo tienen verbos.
¿Dónde se queda corto el lenguaje procesal? Los lenguajes de procedimiento, como C, no pueden expresar sustantivos de forma nativa (ignoremos el uso de struct con convenciones de nomenclatura de prefijos).
¿Qué tipo de lenguajes de programación pueden definir y usar sustantivos para expresar un concepto coherente? Los lenguajes orientados a objetos tienen sustantivos. Y los objetos se pueden usar como sujeto y como objeto. En lenguaje orientado a objetos, puedes expresar conceptos como:
Sustantivos comunes/de clase: "Un humano"
class Human {}
Relación es-A: "Una realeza es un humano":
class Royalty : Human {}
Propiedades simples: "Un humano puede o no estar vivo"
class Human {
Boolean alive;
}
Propiedades complejas: "Un humano tiene color de piel"
class Human {
Color skin;
}
Propiedades conductuales: "Un humano puede hablar con otro humano sobre algún tema"
class Human {
void talkTo(Human another, Topic topic);
}
Cuando se combina con características del lenguaje imperativo y procedimental, también puede expresar conceptos como:
Sustantivo propio/específico: "Que el rey sea una realeza"
king = new Royalty();
Propiedades Específicas: "Que el Príncipe Heredero sea una realeza con piel oscura"
crown_prince = new Royalty(skin=dark);
Actores y verbos imperativos: "¡Príncipe heredero, habla con la reina sobre el clima!"
crown_prince.talkTo(queen, weather);
¿Qué le falta a un lenguaje orientado a objetos? Una gran omisión es la declaración de los hechos. Un lenguaje orientado a objetos tiene que usar soluciones alternativas como las cláusulas "Let..be" para establecer un hecho, y esto no es satisfactorio.
¿Qué tipo de lenguajes tienen una declaración de hecho? Un lenguaje de programación lógica como Prolog o los DSL utilizados para programar un sistema experto tienen una forma nativa de exponer hechos, sin los circunloquios necesarios en lenguajes menos expresivos.
Por ejemplo, podemos expresar en un lenguaje de programación lógica:
Declaración de hecho: "El león tiene glándula mamaria"
has_mammary_gland(lion).
has_mammary_gland(human).
mammal(X) :- has_mammary_gland(X).
Y estas declaraciones y reglas pueden ser utilizadas por un solucionador de consultas para inferir soluciones a las preguntas:
Sí/No Pregunta: "¿Es un león un mamífero?"
?- mammal(lion).
true
WH Pregunta: "¿Qué mamíferos conoces?"
?- mammal(Animal).
Animal = lion
Animal = human
James Kingsbery
Kraang primer
Thijser
Nicolai Grosherr
el_loto
dave
usuario9166
Quentin Ruyant
usuario13955
usuario13955
ronnie royston
usuario13955
Nicolai Grosherr
Kraang primer
Kraang primer
Kraang primer
Kraang primer
Kraang primer
James Kingsbery
Kraang primer
Kraang primer