fbpx
Wikipedia

J (lenguaje de programación)

El lenguaje de programación J, diseñado por Kenneth Iverson hyuiuiy Roger Hui en la década de 1990, es una síntesis de los lenguajes de programación APL (diseñado también por Iverson) y los lenguajes funcionales FP y FL creados por John Backus (famoso por FORTRAN, ALGOL AA).

Para eliminar el solo requiere el juego de caracteres básicos ASCII. Se usan tanto el punto como los dos puntos para extender el significado del juego de caracteres disponible.

Dado que se trata de un lenguaje de programación de array, J es muy conciso y potente, y es útil para crear programas en los campos de las matemáticas y de la estadística, especialmente cuando involucran operaciones con matrices.

De la misma manera que los lenguajes FP/FL, J soporta Programación a nivel de funciones (también conocida como programación funcional de alto orden), gracias a sus características de programación tácita (nótese que la programación a nivel de funciones no es lo mismo que programación funcional).

A diferencia de muchos lenguajes que soportan la programación orientada a objetos, el flexible esquema de espacio de nombres jerárquico del lenguaje J (donde cada nombre existe en un ámbito particular) puede ser usado con efectividad como un marco de trabajo para realizar programación orientada a objetos basada tanto en clases, como en instancias.

J es un lenguaje de programación no von Neumanniano, que sin embargo permite que el programador use el estilo de programación von Neumann a conveniencia.

Nótese que el lenguaje de programación J no está relacionado con J++, ni su nueva versión J# (una versión privativa del Lenguaje de programación Java desarrollada por Microsoft).

Ejemplos

J es un lenguaje de programación extremadamente potente, y sus programas pueden ser muy tersos, pero incluso más crípticos.

El programa 'Hola Mundo' en J es:

 'Hola Mundo' 

Esta implementación de 'Hola Mundo' refleja el uso tradicional de J -- los programas son introducidos durante una sesión del intérprete J, y los resultados de las expresiones se muestran de modo interactivo. También es posible hacer que scripts en J se puedan ejecutar como programas independientes, pero los mecanismos usados para asociar el script con el intérprete son dependientes del sistema. En un sistema Unix, se podría hacer como sigue:

 #!/bin/jc echo 'Hello, world!' exit '' 

Sin embargo, estos mecanismos no son usados por muchos programadores expertos de J.

A continuación se muestra un programa J que calcula la media de una lista de números:

 avg =. +/ % # avg 1 2 3 4 2.5 

'#' - cuenta el número de elementos en la cadena. '+/' - suma todos los elementos de la cadena. '%' - divide la suma de los elementos por el número de elementos.

Ahora generaremos algunos números aleatorios y calcularemos su media:

 a =. ?20$100 a 31 16 60 64 64 71 13 3 76 26 25 77 68 48 42 91 99 97 99 9 avg a 53.95 

Sigue una implementación del algoritmo quicksort, sacada del diccionario de funciones de J:

sel=: adverb def 'x. # ['  quicksort=: verb define if. 1 >: #y. do. y. else. (quicksort y. <sel e),(y. =sel e), quicksort y. >sel e=.y.{~?#y. end. ) 

La siguiente expresión (Roger Hui) calcula los primeros n dígitos de pi, y demuestra la capacidad de J de usar precisión extendida:

 n=.50    NB. asigna a n el número de dígitos requerido. <.@o. 10x^n    NB. precisión extendida 10^nth * pi 314159265358979323846264338327950288419716939937510 

Puede encontrar también una implementación en J del Juego de la vida de Conway en

Estructuras y Tipos de Datos

J soporta tres tipos de datos simples:

  • Numérico
  • Literal (Carácter)
  • Empotrado

El tipo numérico es el que más a tiene de todos ellos.

Uno de los tipos numéricos de J es el bit. Existen dos valores en este tipo: 0 y 1. Además, varios bits pueden formar una lista. Por ejemplo, 1 0 1 0 1 1 0 0 es una lista de ocho bits. Sintácticamente, el parser de J los trata como una única palabra (los caracteres espacio se reconocen como formadores de palabras cuando están situados entre lo que serían palabras numéricas de forma individual). J soporta listas de longitud arbitraria.

Además, J soporta todas las operaciones habituales sobre estas listas, tales como y, o, o exclusivo, rotación, traslación, no, etc. Por ejemplo,

 1 0 0 1 0 0 1 0 +. 0 1 0 1 1 0 1 0 NB. o 1 1 0 1 1 0 1 0 3 |. 1 0 1 1 0 0 1 1 1 1 1  NB. rotación 1 0 0 1 1 1 1 1 1 0 1 

Nótese que J también soporta arrays de bits de orden mayor -- es decir, se pueden formar arrays bidimensionales, tridimensionales, etc. Las operaciones descritas arriba se ejecutan de igual manera sobre estos arrays.

Otros tipos numéricos incluyen entero (3, 42), punto flotante (3.14, 8.8e22), complejo (0j1, 2.5j3e88), entero de precisión extendida (12345678901234567890x), y fracción racional (de precisión extendida) (1r2, 3r4). De igual forma que pasaba con los bits, pueden formarse tanto listas como arrays de un número arbitrario de dimensiones. También de forma similar, las operaciones sobre el array se ejecutan sobre todos los números contenidos en el array.

Las listas de bits pueden ser convertidas en enteros usando el verbo #. Los enteros pueden ser convertidos en listas de bits usando el verbo #:. (Durante el análisis sintáctico, J interpreta . y : como caracteres que forman palabras. Nunca los considera elementos por sí mismos salvo que estén precedidos por un espacio blanco).

J también soporta el tipo literal (carácter). Los literales se encierran entre comillas simples, por ejemplo 'a' o 'b'. J soporta también listas de literales usando la convención habitual de poner una secuencia de caracteres entre comillas simples, por ejemplo 'abcdefg'. Típicamente, los literales individuales tienen 8 bits (ASCII), pero J también soporta otros tipos de literales (Unicode). Los operadores numéricos y booleanos no están soportados sobre los literales, pero las operaciones sobre colecciones (tales como la rotación) sí que lo están.

Por último, existe el tipo empotrado. Típicamente, los datos se empotran usando la operación < (sin ningún argumento a la izquierda -- si hay un argumento a la izquierda, este carácter se interpreta como la operación 'menor que'). Es análogo a la operación & del C (sin argumento a la izquierda). Sin embargo, los resultados del operador de C & tienen semántica de referencia, mientras que el resultado de la operación < de J tienen semántica de copia. Dicho de otro modo, < es una función y produce un resultado. El resultado tiene 0 dimensiones, a pesar de la estructura de los datos que contiene. Desde el punto de vista de un programador en J, < 'pone los datos en una caja' y permite al programador trabajar con arrays de cajas (que pueden ensamblarse con otras cajas, y/o se pueden hacer copias adicionales de la caja). El intérprete de J muestra los datos empotrados de forma similar a la que un intérprete de SQL podría decorar los resultados de un comando select.

 <1 0 0 1 0 +---------+ |1 0 0 1 0| +---------+ 

El único tipo colección ofrecido por J es el array arbitrariamente dimensionado. La mayor parte de los algoritmos pueden expresarse de forma muy concisa usando operaciones sobre estos arrays.

Los arrays en J están homogéneamente tipados, por ejemplo la lista 1 2 3 se considera una lista de enteros, a pesar de que 1 es un bit. Normalmente estos asuntos son transparentes para el programados. Solo ciertas operaciones especializadas revelan las diferencias en el tipo. Por ejemplo, la mayor parte de las operaciones tratarían de igual forma las listas 1.0 0.0 1.0 0.0 y 1 0 1 0.

J también soporta arrays numéricos dispersos, donde los valores no nulos son almacenados con sus índices. Este mecanismo es eficiente cuando relativamente pocos valores son no nulos.

J también , pero son artefactos en la forma en que se nombran las cosas, y no son tipos de datos por sí mismos. Se suelen usar literales empotrados para referirse a objetos (y a clases). Los datos en J tienen semántica de copia, pero los objetos y clases necesitan que el lenguaje soporte semántica de referencia.

Otro pseudo-tipo -- asociado con nombre, en lugar de con valor -- es el fichero mapeado a memoria.

Diccionario


La documentación de J está organizada como un diccionario, con palabras en J identificadas como sustantivos, verbos, adverbios, conjunciones, etc. Las diversas partes de un programa se indican usando markup: . Nótese que los verbos tienen dos formas -- unarios (con argumentos solo a la derecha), y binarios (con argumentos a la izquierda y a la derecha). Por ejemplo, en '-1' el operador - es unario, y en '3-2' el operador - es binario. La definición de un operador unario es casi independiente de la definición del operador binario, sin importar si el verbo es primitivo o derivado.

Vocabulario

 
= =. =:
< <. <:
> >. >:
_ _. _:
 
+ +. +:
* *. *:
- -. -:
% %. %:
 
^ ^. ^:
$ $. $:
~ ~. ~:
| |. |:
 
. .. .:
: :. ::
, ,. ,:
; ;. ;:
 
# #. #:
! !. !:
/ /. /:
\ \. \:
 
[   [:
]    
{ {. {:   {::
} }. }:
 
" Rank ". ":
`   `:
@ @. @:
& &. &:
&.:
? ?.
 
a. a: A.
b. c. C.
d. D. D:
e. E. f.
 
H. i. i:
j. L. L:
m. n. NB. o.
p. p.. p:
 
q: r. s:
S: t. t:
T. u. v. u:
x. y. x: _9: to 9:

Véase también

  • Programación a nivel de funciones
  • Lenguajes de programación relacionados:  APL, FP, FL, K

Enlaces externos

  • Foros de Lenguajes de Programación
  • - Creadores de J (libre para todos los usos)
  • - Caos, fractales y simetrías matemáticas ... en J
  • Ewart Shaw- Inferencia bayesiana, estadísticas médicas, y métodos numéricos, usando J
  • Keith Smillie- Aplicaciones estadísticas de los lenguajes de programación de arrays, especialmente J
  • John Howland- Investigación en la paralelización de los lenguajes de programación de arrays, especialmente J
  • - Discusión del lenguaje
  •   Datos: Q383994

lenguaje, programación, lenguaje, programación, diseñado, kenneth, iverson, hyuiuiy, roger, década, 1990, síntesis, lenguajes, programación, diseñado, también, iverson, lenguajes, funcionales, creados, john, backus, famoso, fortran, algol, para, eliminar, solo. El lenguaje de programacion J disenado por Kenneth Iverson hyuiuiy Roger Hui en la decada de 1990 es una sintesis de los lenguajes de programacion APL disenado tambien por Iverson y los lenguajes funcionales FP y FL creados por John Backus famoso por FORTRAN ALGOL AA Para eliminar el solo requiere el juego de caracteres basicos ASCII Se usan tanto el punto como los dos puntos para extender el significado del juego de caracteres disponible Dado que se trata de un lenguaje de programacion de array J es muy conciso y potente y es util para crear programas en los campos de las matematicas y de la estadistica especialmente cuando involucran operaciones con matrices De la misma manera que los lenguajes FP FL J soporta Programacion a nivel de funciones tambien conocida como programacion funcional de alto orden gracias a sus caracteristicas de programacion tacita notese que la programacion a nivel de funciones no es lo mismo que programacion funcional A diferencia de muchos lenguajes que soportan la programacion orientada a objetos el flexible esquema de espacio de nombres jerarquico del lenguaje J donde cada nombre existe en un ambito particular puede ser usado con efectividad como un marco de trabajo para realizar programacion orientada a objetos basada tanto en clases como en instancias J es un lenguaje de programacion no von Neumanniano que sin embargo permite que el programador use el estilo de programacion von Neumann a conveniencia Notese que el lenguaje de programacion J no esta relacionado con J ni su nueva version J una version privativa del Lenguaje de programacion Java desarrollada por Microsoft Indice 1 Ejemplos 2 Estructuras y Tipos de Datos 3 Diccionario 3 1 Vocabulario 4 Vease tambien 5 Enlaces externosEjemplos EditarJ es un lenguaje de programacion extremadamente potente y sus programas pueden ser muy tersos pero incluso mas cripticos El programa Hola Mundo en J es Hola Mundo Esta implementacion de Hola Mundo refleja el uso tradicional de J los programas son introducidos durante una sesion del interprete J y los resultados de las expresiones se muestran de modo interactivo Tambien es posible hacer que scripts en J se puedan ejecutar como programas independientes pero los mecanismos usados para asociar el script con el interprete son dependientes del sistema En un sistema Unix se podria hacer como sigue bin jc echo Hello world exit Sin embargo estos mecanismos no son usados por muchos programadores expertos de J A continuacion se muestra un programa J que calcula la media de una lista de numeros avg avg 1 2 3 4 2 5 cuenta el numero de elementos en la cadena suma todos los elementos de la cadena divide la suma de los elementos por el numero de elementos Ahora generaremos algunos numeros aleatorios y calcularemos su media a 20 100 a 31 16 60 64 64 71 13 3 76 26 25 77 68 48 42 91 99 97 99 9 avg a 53 95 Sigue una implementacion del algoritmo quicksort sacada del diccionario de funciones de J sel adverb def x quicksort verb define if 1 gt y do y else quicksort y lt sel e y sel e quicksort y gt sel e y y end La siguiente expresion Roger Hui calcula los primeros n digitos de pi y demuestra la capacidad de J de usar precision extendida n 50 NB asigna a n el numero de digitos requerido lt o 10x n NB precision extendida 10 nth pi 314159265358979323846264338327950288419716939937510 Puede encontrar tambien una implementacion en J del Juego de la vida de Conway en https web archive org web 20060818162652 http ww2 lafayette edu 7Ereiterc j vector vlife index htmlEstructuras y Tipos de Datos EditarJ soporta tres tipos de datos simples Numerico Literal Caracter EmpotradoEl tipo numerico es el que mas a tiene de todos ellos Uno de los tipos numericos de J es el bit Existen dos valores en este tipo 0 y 1 Ademas varios bits pueden formar una lista Por ejemplo 1 0 1 0 1 1 0 0 es una lista de ocho bits Sintacticamente el parser de J los trata como una unica palabra los caracteres espacio se reconocen como formadores de palabras cuando estan situados entre lo que serian palabras numericas de forma individual J soporta listas de longitud arbitraria Ademas J soporta todas las operaciones habituales sobre estas listas tales como y o o exclusivo rotacion traslacion no etc Por ejemplo 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 NB o 1 1 0 1 1 0 1 0 3 1 0 1 1 0 0 1 1 1 1 1 NB rotacion 1 0 0 1 1 1 1 1 1 0 1 Notese que J tambien soporta arrays de bits de orden mayor es decir se pueden formar arrays bidimensionales tridimensionales etc Las operaciones descritas arriba se ejecutan de igual manera sobre estos arrays Otros tipos numericos incluyen entero 3 42 punto flotante 3 14 8 8e22 complejo 0j1 2 5j3e88 entero de precision extendida 12345678901234567890x y fraccion racional de precision extendida 1r2 3r4 De igual forma que pasaba con los bits pueden formarse tanto listas como arrays de un numero arbitrario de dimensiones Tambien de forma similar las operaciones sobre el array se ejecutan sobre todos los numeros contenidos en el array Las listas de bits pueden ser convertidas en enteros usando el verbo Los enteros pueden ser convertidos en listas de bits usando el verbo Durante el analisis sintactico J interpreta y como caracteres que forman palabras Nunca los considera elementos por si mismos salvo que esten precedidos por un espacio blanco J tambien soporta el tipo literal caracter Los literales se encierran entre comillas simples por ejemplo a o b J soporta tambien listas de literales usando la convencion habitual de poner una secuencia de caracteres entre comillas simples por ejemplo abcdefg Tipicamente los literales individuales tienen 8 bits ASCII pero J tambien soporta otros tipos de literales Unicode Los operadores numericos y booleanos no estan soportados sobre los literales pero las operaciones sobre colecciones tales como la rotacion si que lo estan Por ultimo existe el tipo empotrado Tipicamente los datos se empotran usando la operacion lt sin ningun argumento a la izquierda si hay un argumento a la izquierda este caracter se interpreta como la operacion menor que Es analogo a la operacion amp del C sin argumento a la izquierda Sin embargo los resultados del operador de C amp tienen semantica de referencia mientras que el resultado de la operacion lt de J tienen semantica de copia Dicho de otro modo lt es una funcion y produce un resultado El resultado tiene 0 dimensiones a pesar de la estructura de los datos que contiene Desde el punto de vista de un programador en J lt pone los datos en una caja y permite al programador trabajar con arrays de cajas que pueden ensamblarse con otras cajas y o se pueden hacer copias adicionales de la caja El interprete de J muestra los datos empotrados de forma similar a la que un interprete de SQL podria decorar los resultados de un comando select lt 1 0 0 1 0 1 0 0 1 0 El unico tipo coleccion ofrecido por J es el array arbitrariamente dimensionado La mayor parte de los algoritmos pueden expresarse de forma muy concisa usando operaciones sobre estos arrays Los arrays en J estan homogeneamente tipados por ejemplo la lista 1 2 3 se considera una lista de enteros a pesar de que 1 es un bit Normalmente estos asuntos son transparentes para el programados Solo ciertas operaciones especializadas revelan las diferencias en el tipo Por ejemplo la mayor parte de las operaciones tratarian de igual forma las listas 1 0 0 0 1 0 0 0 y 1 0 1 0 J tambien soporta arrays numericos dispersos donde los valores no nulos son almacenados con sus indices Este mecanismo es eficiente cuando relativamente pocos valores son no nulos J tambien soporta objetos y clases pero son artefactos en la forma en que se nombran las cosas y no son tipos de datos por si mismos Se suelen usar literales empotrados para referirse a objetos y a clases Los datos en J tienen semantica de copia pero los objetos y clases necesitan que el lenguaje soporte semantica de referencia Otro pseudo tipo asociado con nombre en lugar de con valor es el fichero mapeado a memoria Diccionario EditarLa documentacion de J esta organizada como un diccionario con palabras en J identificadas como sustantivos verbos adverbios conjunciones etc Las diversas partes de un programa se indican usando markup nombres verbos y varios adverbios y conjunciones Notese que los verbos tienen dos formas unarios con argumentos solo a la derecha y binarios con argumentos a la izquierda y a la derecha Por ejemplo en 1 el operador es unario y en 3 2 el operador es binario La definicion de un operador unario es casi independiente de la definicion del operador binario sin importar si el verbo es primitivo o derivado Vocabulario Editar Constantes Controles Foreigns Partes de un programa Self Classify Equal Is Local lt Box Less Than lt Floor Lesser Of Min lt Decrement Less Or Equal gt Open Larger Than gt Ceiling Larger of Max gt Increment Larger Or Equal Negative Sign Infinity Indeterminate Infinity Conjugate Plus Real Imaginary GCD Or Double Not Or Signum Times Length Angle LCM And Square Not And Negate Minus Not Less Halve Match Reciprocal Divide Matrix Inverse Matrix Divide Square Root Root Exponential Power Natural Log Logarithm Power Shape Of Shape Sparse Self Reference Reflex Passive EVOKE Nub Nub Sieve Not Equal Magnitude Residue Reverse Rotate Shift Transpose Determinant Dot Product Even Explicit Monad Dyad Obverse Adverse Ravel Append Ravel Items Stitch Itemize Laminate Raze Link Cut Word Formation Tally Copy Base 2 Base Antibase 2 Antibase Factorial Out Of Fit Customize Foreign Insert Table Oblique Key Grade Up Sort Prefix Infix Suffix Outfix Grade Down Sort Same Left Cap Same Right Catalogue From Head Take Tail Map Fetch Item Amend Amend Behead Drop Curtail Rank Do Numbers Default Format Format Tie Gerund Evoke Gerund Atop Agenda At amp Bond Compose amp Under Dual amp Appose amp Under Roll Deal a Alphabet a A Anagram Index Anagramb Boolean Basic c Characteristic Values C Cycle Direct Permuted Derivative D Derivative D Secant Slopee Raze In Member In E Member of Interval f Fix H Hypergeometric i Integers Index Of i Integers Index Of Lastj Imaginary Complex L Level Of L Level Atm n Explicit Noun Args NB Comment o Pi Times Circle Functionp Polynomial p Poly Deriv Poly Integral p Primes q Prime Factors Prime Exponents r Angle Polar s SymbolS Spread t Taylor Coefficient t Weighted TaylorT Taylor Approximation u v Explicit Verb Args u Unicodex y Explicit Arguments x Extended Precision 9 to 9 Constant FunctionsVease tambien EditarProgramacion a nivel de funciones Lenguajes de programacion relacionados APL FP FL KEnlaces externos EditarForos de Lenguajes de Programacion JSoftware Creadores de J libre para todos los usos Cliff Reiter Caos fractales y simetrias matematicas en J Ewart Shaw Inferencia bayesiana estadisticas medicas y metodos numericos usando J Keith Smillie Aplicaciones estadisticas de los lenguajes de programacion de arrays especialmente J John Howland Investigacion en la paralelizacion de los lenguajes de programacion de arrays especialmente J Archivos del foro J Discusion del lenguaje Datos Q383994Obtenido de https es wikipedia org w index php title J lenguaje de programacion amp oldid 136619030, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos