Top 10 de los artículos

YouTube
Gmail
Goole
GayRomeo
Números chinos
Números romanos
Orkut
Costco
Sistema porta hepático
El mundo Factbook

News:

J (lenguaje de programación)

No ser confundido con J++ o J# lenguajes de programación.
J
Paradigma arsenal, funcional, función-nivel, tácito
Aparecido adentro 1990
Diseñado cerca Ken Iverson & Roger Hui
Revelador JSoftware
Disciplina que mecanografía fuerte
Puestas en práctica importantes J
Influenciado cerca APL, Punto de congelación, FL
Web site http://www.jsoftware.com/

Lenguaje de programación de J, convertido en los años 90 tempranos cerca Ken Iverson y Roger Hui, es una síntesis de APL (también por Iverson) y Punto de congelación y FL función-nivel idiomas creadas cerca Juan Backus.

Para evitar de repetir el problema del carácter especial del APL, J requiere solamente el básico ASCII juego de caracteres, recurriendo al uso de bigramas formado usando los caracteres del punto o de los dos puntos para ampliar el significado de los caracteres básicos disponibles. Además, guardar el análisis y la lengua simple, y ampliar el número de otra manera pequeño de símbolos convenientes en el ASCII, J trata muchos caracteres que aparezcan normalmente en pares por ejemplo [] {} "" ``o <>, no como símbolo individual, independiente, sino como bigramas, J los trata como símbolo del multi-carácter.

Siendo lenguaje de programación del arsenal, J es muy conciso y de gran alcance, y se satisface más a matemático y estadístico programación, especialmente al realizar operaciones encendido matrices. J es a MIMD lengua.

Como las idiomas originales de FP/FL, ayudas de J programación del función-nivel (también conocido como programación funcional higher-order), vía su programación tácita características (nota que la programación del función-nivel no es igual que la programación funcional).

Desemejante de la mayoría de las idiomas que apoyan programación orientada al objeto, Jerárquico flexible del j namespace esquema (donde cada nombre existe en un detalle locale) puede ser utilizado con eficacia como marco para ambos clase-basado y prototipo-basado programación orientada al objeto.

J no es a lenguaje de programación de von Neumann, sin embargo, es posible utilizar el estilo de programación de von Neumann.

Contenido

Ejemplos

Permisos de J estilo punto-libre y composición de la función. Así, sus programas pueden ser muy concisos, pero son también propensos cifre la ofuscación.

hola programa del mundo en J está

“Hola, mundo!”

Esta puesta en práctica hola del mundo refleja el uso tradicional de J -- los programas se incorporan en una sesión del intérprete de J, y los resultados de expresiones se exhiben. Es también posible arreglar para que las escrituras de J sean ejecutadas como programas independientes, pero los mecanismos para asociar una escritura al intérprete son dependiente del sistema. Aquí es cómo esto pudo mirar en un sistema de unix:

¡#! ¡eco
 de /bin/jc “hola, mundo! ”
 salga del ''

Pero muchos programadores realizados de J nunca recurren a tales mecanismos.

Históricamente, el APL utilizó/indicar doblez, así que +/1 2 3 eran equivalentes a 1+2+3. Mientras tanto, la división fue representada con el símbolo matemático clásico de la división, que fue puesto en ejecución imprimiendo un signo de menos y dos puntos en el mismo punto en un pedazo de papel. Porque el ASCII no apoya overstrikes, y no incluye un símbolo de la división, J utiliza % para representar la división -- esto casi parece ese símbolo de la división. (Esto ilustra algo del carácter mnemónico del símbolo del j, y algo de los dilemas impuestos por el uso del ASCII.)

Aquí está un programa de J para calcular el promedio de una lista de números:

avg=: + % del avg
 1 de # 2 3 4
 2.5

# cuenta el número de artículos en el arsenal. +/ suma los artículos del arsenal. % divide la suma por el número de artículos. Nota: el avg es un tren de los verbos conocidos como bifurcación. (V0 V1 V2) Ny es específicamente igual que (V0 Ny) V1 (V2 Ny) que demuestre algo de la energía del J. (Aquí V0, V1, V2 denotan verbos y Ny denota un sustantivo.)

Algunos ejemplos de usar avg :

v=: ?. 20 $ 100     NOTA. un vector al azar
 v
 46 55 79 52 54 39 60 57 60 94 46 78 13 18 51 92 78 60 90 62
 avg v
 59.2

 4 avg \ v            NOTA. promedio móvil el períodos del tamaño 4
 m= 58 60 56 51.25 52.5 54 67.75 64.25 69.5 57.75 38.75 40 43.5 59.75 70.25 80

 72.5: ?. 4 5 $ 50     NOTA. una matriz al azar
 m
 46 avg 5 29 2
 4 39 10 7 10
 44 46 28 13 18
 1 42 28 10 40
 12 " 1 m             NOTA. aplique el avg a cada fila 1 subarray (cada fila) de m
 17.2 22 21.2 26.4

Aquí está una puesta en práctica de quicksort, del diccionario de J:

sel=: def “u # [” quicksort=

 del adverbio: el verbo define
 si. 1 >: #y. y
.
¿(sel e <del quicksort y), (=sel e de y), sel e=.y >{~ del quicksort y? extremo
 #y.
)

Lo que sigue es una puesta en práctica de demostrar del quicksort programación tácita. La programación tácita implica el componer de funciones juntas y el no referirse explícitamente a cualquier variable. Ayuda del j para bifurcaciones y ganchos dicta reglas en cómo las discusiones aplicadas a esta función serán aplicadas a sus funciones componentes.

quicksort=: (($: @ (<# [), (=# [), $: @ (># [)) ¿({~? @#)) ^: (1< #)

Los objetos expuestos siguientes de la expresión pi con los dígitos de n y demuestra las capacidades extendidas de la precisión de J:

n=: 50                      NOTA. fije n como el número de dígitos requirió
<. @o. 10x^n                 NOTA. precisión extendida 10 al nth * pi
 314159265358979323846264338327950288419716939937510

También tenga una mirada en la puesta en práctica de Reiter del acantilado de Juego de Conway de la vida en http://ww2.lafayette.edu/~reiterc/j/vector/vlife_index.html

Tipos y estructuras de datos

J apoya tres tipos simples:

  • Numérico
  • Literal (carácter)
  • Encajonado

De éstos, numérico tiene la mayoría de las variantes.

Uno de los tipos numéricos del j es pedacito. Hay dos valores del pedacito: 0, y 1. Además, los pedacitos se pueden formar en listas. Por ejemplo, 1 0 1 0 1 1 0 0 es una lista de ocho pedacitos. Y, sintácticamente, los convites del programa de análisis de J que como sola palabra (los caracteres de espacio se reconocen como palabra que forma el carácter cuando están entre cuál sería de otra manera palabras numéricas). Las listas de la longitud arbitraria se apoyan.

Además, J apoya todas las operaciones binarias generalmente en estas listas, por ejemplo y, o, la exclusiva o, rota, cambia de puesto, no, el etc. Por ejemplo,

1 0 0 1 0 0 1 0 +. 0 1 0 1 1 0 1 0     NOTA. o
 1 1 0 1 1 0 1 0
 3 |. 1 0 1 1 0 0 1 1 1 1 1             NOTA. rote
 1 0 0 1 1 1 1 1 1 0 1

Observe que J también apoya órdenes de una orden más alta de pedacitos -- pueden ser formados en de dos dimensiones, tridimensional, el etc. órdenes. Las operaciones antedichas se realizan igualmente bien en estos órdenes.

Otros tipos numéricos incluyen número entero (3, 42), coma flotante (3.14, 8.8e22), complejo (0j1, 2.5j3e88), número entero extendido de la precisión (12345678901234567890x), y (precisión extendida) fracción racional (1r2, 3r4). Como con los pedacitos, éstos se pueden formar en listas o órdenes arbitrariamente dimensionados. Como con los pedacitos, las operaciones se realizan en todos los números en un arsenal.

Las listas de pedacitos se pueden convertir a usar del número entero #. verbo. Los números enteros se pueden convertir a las listas de pedacitos usando #: verbo. (Y, al analizar J. y: es la palabra que forma caracteres. Nunca son el símbolo por sí mismos a menos que sea precedido por un espacio.)

J también apoya el tipo literal (del carácter). Los literales se incluyen en cotizaciones, por ejemplo, “a” o “b”. Las listas de literales también se apoyan usando la convención generalmente de poner caracteres múltiples en cotizaciones, tales como “abcdefg”. Típicamente, los literales individuales son 8 pedacitos de par en par (ASCII), pero J también apoya otros literales (unicode). Las operaciones numéricas y boleanas no se apoyan en literales, pero se apoya la colección orientó operaciones (por ejemplo rote).

Finalmente, hay el tipo de datos encajonado. Típicamente, los datos se ponen al usar de la caja < operación (sin cualquier discusión izquierda -- si hay una discusión izquierda, éste sería “menos que” la operación). Esto es análogo a C's & operación (sin cualquier discusión izquierda). Sin embargo, donde el resultado de las c y tiene semántica de la referencia, el resultado de los j < tiene semántica del valor. Es decir < es una función y produce un resultado. El resultado tiene dimensiones 0, sin importar la estructura de los datos contenidos. Del punto de vista de un programador de J, < “pone los datos en una caja” y deja el programador trabajar con un arsenal de las cajas (puede ser montado con otras cajas, y/o las copias adicionales se pueden hacer de la caja). Los datos encajonados son exhibidos por J, algo después de la manera algunos SQL los intérpretes adornan resultados de la tabla de declaraciones selectas.

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

El único tipo de la colección ofrecido por J es el arsenal arbitrariamente dimensionado. La mayoría de los algoritmos se pueden expresar muy sucinto usando operaciones en estos órdenes.

Los órdenes del j homogenously se mecanografían, por ejemplo la lista 1 2 3 es una lista de números enteros a pesar de que 1 es un pedacito. Para la mayor parte, estas clases de tipo ediciones son transparentes al programador. Solamente ciertas operaciones especializadas revelan diferencias en tipo. Por ejemplo, la lista 1.0 0.0 1.0 0.0 sea tratado exactamente iguales, por la mayoría de las operaciones, como la lista 1 0 1 0.

J también apoya los órdenes numéricos escasos donde los valores diferentes a cero se almacenan con sus índices. Esto es un mecanismo eficiente donde están diferentes a cero relativamente pocos valores.

J también objetos y clases de las ayudas, solamente éstos son un artefacto de la manera que se nombran las cosas, y no son datos mecanografían adentro y de sí mismos. En lugar, los literales encajonados se utilizan para referir a objetos (y a clases). Los datos de J tienen semántica del valor, pero los objetos y las clases necesitan la semántica de la referencia.

Otro pseudo-tipo -- asociado a nombre, más bien que a valor -- es el archivo traz memoria.

Diccionario

La documentación del j se organiza como diccionario, con palabras en J identificado como sustantivos, verbos, adverbios, conjunciones, y así sucesivamente. Aquí está una descripción (con acoplamientos externos en las definiciones correspondientes,). Se indican las partes del discurso usando margen de beneficio: sustantivos, verbos, y adverbios, y conjunciones. Observe que los verbos tienen dos formas -- mónadas (discusiones solamente a la derecha) y dyads (discusiones a la izquierda y a la derecha). Por ejemplo, en “- 1” el guión es un mónada, y en “3-2” el guión es un dyad. La definición del mónada es sobre todo independiente de la definición del dyad, sin importar si el verbo es un verbo primitivo o un verbo derivado.

Vocabulario J6.02

Constantes
Controles
Foreigns
Partes del discurso
= Uno mismo-Clasifique • Igual =. Es (Local) =: Es (global)
< Caja • Menos que <. Piso • Menos de (minutos) <: Decremento • Menos o igual
> Abierto • Más grande que >. Techo • Más grande de (máximo) >: Incremento • Más grande o igual
_ Muestra negativa/ Infinito _. Indeterminado _: Infinito
 
+ Conjugación • Más +. Verdadero/imaginario • GCD (o) +: Doble • Not-Or
* Signum • Épocas *. Longitud/ángulo • LCM (y) *: Cuadrado • No-Y
- Niegue • Menos -. No • Menos -: Parta en dos • Fósforo
% Recíproco • Divídase %. Lo contrario de la matriz • La matriz se divide %: Raíz cuadrada • Raíz
 
^ Exponencial • Energía ^. Registro natural • Logaritmo ^: Energía
$ Forma de • Forma $. Escaso $: Self-Reference
~ ReflejoPasivo / EVOQUE ~. Pedazo • ~: Tamiz del pedazo • No-Igual
| Magnitud • Residuo |. Revés • Rote (cambio) |: Transporte
 
. DeterminanteProducto de punto .. Uniforme .: Impar
: Explícito / Mónada-Dyad :. Obverse :: Adverso
, Enmarañamiento • Añada ,. Artículos del enmarañamiento • Puntada ,: Detalle • Laminado
; Raze • Acoplamiento ;. Corte ;: Formación de la palabra •
 
# Cuenta • Copy #. Base 2 • Base #: Antibase 2 • Antibase
! Factorial • Fuera de !. Ajuste (modifique para requisitos particulares) !: Extranjero
/ RellenoTabla /. OblicuoLlave /: Grado para arriba • Clase
\ PrefijoInfix \. SufijoOutfix \: Grado abajo • Clase
 
[ Iguales • Izquierdo   [: Casquillo
] Iguales • La derecha    
{ Catálogo • De {. Cabeza • Toma {: Cola •   {:: Mapa • Traiga
} El artículo enmienda • Enmiende ( m} u} ) }. Decapite • Gota }: Acorte •
 
" Fila (m " n u " n m " v u " v ) ". • Números ": Formato del defecto • Formato
` Lazo (gerundio)   `: Evoque el gerundio
@ Encima de @. Agenda @: En
& Enlace/ Componga &. Debajo (dual) &: Appose
&.: Debajo
? Rodillo • Reparto ?. Rodillo • Reparto (semilla fija)
 
a. Alfabeto a: As (Vacío encajonada) A. Índice del Anagram • Anagram
b. Boleano/ Básico C. Ciclo-Dirija • Permute d. Derivado
D. Derivado D: Cuesta secante e. Raze adentro • Miembro (adentro)
E. • Miembro del intervalo f. Arreglo H. Hipergeométrico
 
i. Números enteros • Índice de i: Números enteros • Índice del último I. Índices • Índice del intervalo
j. Imaginario • Complejo L. Nivel de L: Nivel en
M. Nota NOTA. Comentario o. Tiempos del pi • Función del círculo
p. Polinómico p. Poly. Deriv. • Poly. Integral p: Prepara
 
q: Factores primeros • Exponentes primeros r. Ángulo • Polar s: Símbolo
S: Extensión t. Coeficiente de Taylor (m T. u T. ) t: Taylor cargado
T. Aproximación de Taylor u: Unicode x: Precisión extendida
_9: a 9: Funciones constantes

Controle las estructuras

J proporciona las estructuras del control (detalles aquí) similar a otras idiomas procesales. Los controles son:

  • afirme. T
  • rotura.
  • continúe.
  • para. T. Extremo de B.
  • for_xyz. T. Extremo de B.
  • goto_name.
  • label_name.
  • si. T. Extremo de B.
  • si. T. B. Extremo B1.
  • si. T. B
  • elseif. El T1. B1
  • elseif. El T2. B2
  • extremo.
  • vuelta.
  • selecto. T
  • caso. T0. B0
  • fcase. El T1. B1
  • caso. El T2. B2
  • extremo.
  • tiro.
  • intento. Retén de B. Catchd B1. Catcht B2. Extremo B3.
  • mientras que. T. Extremo de B.
  • mientras que. T. Extremo de B.

Vea también

Acoplamientos externos

  • JSoftware - Creador de J (libere actualmente para todas las aplicaciones)
  • J Wiki - Escaparate, documentación, artículos, etc.
  • J Archivos del foro - Discusión de la lengua
  • Acantilado Reiter - Caos, fractals y simetrías matemáticas… en J
  • Ewart Shaw - Inferencia Bayesian, estadística médica, y métodos numéricos, usando J
  • Keith Smillie - Usos estadísticos de los lenguajes de programación del arsenal, especialmente J
  • Juan Howland - Investigación sobre el parallelization de los lenguajes de programación del arsenal, especialmente J
The original article is from Wikipedia. To view the original article please click here.
Creative Commons Licence