Linguaxe de programación J

A linguaxe de programación J, deseñada por Kenneth Iverson e Roger Hui nos '90, é unha síntese das linguaxes de programación APL (deseñado tamén por Iverson) e as linguaxes funcionais FP e FL creados por John Backus (famoso por FORTRAN, ALGOL e BNF).

Historia e características

Para eliminar o problema xerado polo uso dun xogo de caracteres especiais en APL, J só require o xogo de caracteres básicos ASCII. Úsanse tanto o punto como os dous puntos para estender o significado do xogo de caracteres dispoñible.

Dado que se trata dunha linguaxe de programación de array, J é moi conciso e potente, e é útil para crear programas nos campos das matemáticas e da estatística, especialmente cando involucran operacións con matrices.

Da mesma xeito que as linguaxes FP/FL, J soporta Programación a nivel de funcións (tamén coñecida como programación funcional de alta orde), grazas ás súas características de programación tácita (nótese que a programación a nivel de funcións non é o mesmo que programación funcional).

A diferenza de moitas linguaxes que soportan a programación orientada a obxectos, o flexible esquema de espazo de nomes xerárquico da linguaxe J (onde cada nome existe nun ámbito particular) pode ser usado con efectividade como un marco de traballo para realizar programación orientada a obxectos baseada tanto en clases, como en instancias.

J é unha linguaxe de programación non von Neumanniano, que con todo permite que o programador use o estilo de programación von Neumann a conveniencia.

Nótese que a linguaxe de programación J non está relacionado con J++, nin a súa nova versión J# (unha versión propietaria do Linguaxe de programación Java desenvolvida por Microsoft).

Exemplos

J é unha linguaxe de programación extremadamente potente, e os seus programas poden ser moi tersos, pero ata máis crípticos.

O programa 'Ola Mundo' en J é:

   'Ola Mundo'

Esta implementación de 'Ola Mundo' reflicte o uso tradicional de J -- os programas son introducidos durante unha sesión do intérprete J, e os resultados das expresións móstranse de modo interactivo. Tamén é posible facer que scripts en J póidanse executar como programas independentes, pero os mecanismos usados para asociar o script co intérprete son dependentes do sistema. Nun sistema Unix, poderíase facer como segue:

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

Con todo, estes mecanismos non son usados por moitos programadores expertos de J.

A continuación móstrase un programa J que calcula a media dunha lista de números:

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

'#' - conta o número de elementos na cadea. '+/' - suma todos os elementos da cadea. '%' - divide a suma dos elementos polo número de elementos.

Agora xeraremos algúns números aleatorios e calcularemos a súa media:

     a =. ?2000
     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
 

Segue unha implementación do algoritmo quicksort, sacada do dicionario de funcións de J:

sel=: adverb def 'x. # ['

quicksort=: verb define
 if. 1 >: #e. do. e.
 else.
  (quicksort e. <sel e),(e. =sel e),quicksort e. >sel e=.e.{?#e.
 end.
)

A seguinte expresión (Roger Hui) calcula os primeiros n díxitos de pi, e demostra a capacidade de J de usar precisión estendida:

 n=.50                                           NB. asigna a n o número de díxitos requirido.
 <.@\ou. 10x^*                                     NB. precisión estendida 10^* * pi
314159265358979323846264338327950288419716939937510

Pode atopar tamén unha implementación en J do Xogo da vida de Conway en http://ww2.lafayette.edu/reiterc/j/vector/vlife_index.html[Ligazón morta]

Estruturas e Tipos de Datos

J soporta tres tipos de datos simples:

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

O tipo numérico é o que máis variantes ten de todos éllos.

Un dos tipos numéricos de J é o bit. Existen dous valores neste tipo: 0 e 1. Ademais, varios bits poden formar unha lista. Por exemplo, 1 0 1 0 1 1 0 0 é unha lista de oito bits. Sintácticamente, o parser de J trátaos como unha única palabra (os caracteres espazo recoñécense como formadores de palabras cando están situados entre o que serían palabras numéricas de forma individual). J soporta listas de lonxitude arbitraria.

Ademais, J soporta todas as operacións habituais sobre estas listas, talles como e, ou, ou exclusivo, rotación, translación, non etc. Por exemplo,

   1 0 0 1 0 0 1 0 +. 0 1 0 1 1 0 1 0     NB. ó
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 tamén soporta arrays de bits de orde maior—é dicir, pódense formar arrays bidimensionales, tridimensionales etc. As operacións descritas arriba execútanse de igual xeito sobre estes arrays.

Outros tipos numéricos inclúen enteiro (3, 42), punto flotante (3.14, 8.8e22), complexo (0j1, 2.5j3e88), enteiro de precisión estendida (12345678901234567890x), e fracción racional (de precisión estendida) (1r2, 3r4). De igual forma que pasaba cos bits, poden formarse tanto listas como arrays dun número arbitrario de dimensións. Tamén de forma similar, as operacións sobre o array execútanse sobre todos os números contidos no array.

As listas de bits poden ser convertidas en enteiros usando o verbo #. Os enteiros poden ser convertidos en listas de bits usando o verbo #:. (Durante a análise sintáctico, J interpreta . e : como caracteres que forman palabras. Nunca os considera elementos por si mesmos salvo que estean precedidos por un espazo branco).

J tamén soporta o tipo literal (caracter). Os literais encérranse entre comiñas simples, por exemplo 'a' ó 'b'. J soporta tamén listas de literais usando a convención habitual de pór unha secuencia de caracteres entre comiñas simples, por exemplo 'abcdefg'. Tipicamente, os literais individuais teñen 8 bits (ASCII), pero J tamén soporta outros tipos de literais (Unicode). Os operadores numéricos e booleanos non están soportados sobre os literais, pero as operacións sobre coleccións (talles como a rotación) si que o están.

Para rematar, existe o tipo encaixado. Tipicamente, os datos encáixanse usando a operación < (sen ningún argumento á esquerda—se hai un argumento á esquerda, este carácter interprétase como a operación 'menor que'). É análogo á operación & do C (sen argumento á esquerda). Con todo, os resultados do operador de C & teñen semántica de referencia, minetras que o resultado da operación < de J teñen semántica de copia. Dito doutro xeito, < é unha función e produce un resultado. O resultado ten 0 dimensións, a pesar da estrutura dos datos que contén. Desde o punto de vista dun programador en J, < 'pon os datos nunha caixa' e permite ao programador traballar con arrays de caixas (que poden ensamblarse con outras caixas, e/ou se poden facer copias adicionais da caixa). O intérprete de J mostra os datos encaixados de forma similar á que un intérprete de SQL podería decorar os resultados dun comando select.

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

O único tipo colección ofrecido por J é o array arbitrariamente dimensionado. A maior parte dos algoritmos poden expresarse de forma moi concisa usando operacións sobre estes arrays.

Os arrays en J están homogéneamente tipados, por exemplo a lista 1 2 3 considérase unha lista de enteiros, a pesar de que 1 é un bit. Normalmente estes asuntos son transparentes para o programados. Só certas operacións especializadas revelan as diferenzas no tipo. Por exemplo, a maior parte das operacións tratarían de igual forma as listas 1.0 0.0 1.0 0.0 e 1 0 1 0.

J tamén soporta arrays numéricos dispersos, onde os valores non nulos son almacenados cos seus índices. Este mecanismo é eficiente cando relativamente poucos valores son non nulos.

J tamén soporta obxectos e clases, pero son artefactos na forma en que se nomean as cousas, e non son tipos de datos por si mesmos. Adóitanse usar literais encaixados para referirse a objectos (e a clases). Os datos en J teñen semántica de copia, pero os obxectos e clases necesitan que a linguaxe soporte semántica de referencia.

Outro pseudo-tipo—asociado con nome, en lugar de con valor—é o ficheiro mapeado a memoria.

Dicionario

A documentación de J está organizada como un dicionario, con palabras en J identificadas como substantivos, verbos, adverbios, conxuncións etc. As diversas partes dun programa indícanse usando markup: nomes[Ligazón morta] verbos, e varios adverbios, e conxuncións. Nótese que os verbos teñen dúas formas—unarios (con argumentos só á dereita), e binarios (con argumentos á esquerda e á dereita). Por exemplo, en '-1' o operador - é unario, e en '3-2' o operador - é binario. A definición dun operador unario é case independente da definición do operador binario, sen importar se o verbo é primitivo ó derivado.

Vocabulario

Constantes
Controis
Foreigns
Partes dun programa
= Self-Classify • Equal =. Is (Local) =: Is (Global)
< Box • Less Than <. Floor • Lesser Of (Min) <: Decrement • Less Or Equal
> Open • Larger Than >. Ceiling • Larger of (Max) >: 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
 
<tt Exponential • Power <tt. Natural Log • Logarithm <tt: Power
$ Shape Of • Shape $. Sparse $: Self-Reference
ReflexPassive / EVOKE . Nub • : Nub Sieve • Not-Equal
| Magnitude • Residue |. Reverse • Rotate (Shift) |: Transpose
 
. DeterminantDot Product .. Even .: Odd
: 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
/ InsertTable /. ObliqueKey /: Grade Up • Sort
\ PrefixInfix \. SuffixOutfix \: 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
: Evoke Gerund
@\ Atop @\. Axenda @\: At
& Bond / Compose &. Under (Dual) &: Appose
&.: Under
? Roll • Deal ?. Roll • Deal (fixed seed)
 
a. Alphabet a: Ace (Boxed Empty) A. Anagram Index • Anagram
b. Boolean / Basic c. Characteristic Values C. Cycle-Direct • Permute
d. Derivative D. Derivative D: Secant Slope
e. Raze In • Member (In) E. • Member of Interval f. Fix
 
H. Hypergeometric i. Integers • Index Of i: Integers • Index Of Last
j. Imaginary • Complex L. Level Of L: Level At
m. n. Explicit Noun Args NB. Comment ou. Pi Times • Circle Function
p. Polynomial p.. Poly. Deriv. • Poly. Integral p: Primes •
 
q: Prime Factors • Prime Exponents r. Angle • Polar s: Symbol
S: Spread t. Taylor Coefficient t: Weighted Taylor
T. Taylor Approximation ou. v. Explicit Verb Args ou: Unicode
x. e. Explicit Arguments x: Estendede Precision _9: to 9: Constant Functions

Véxase tamén

Outros artigos

Ligazóns externas

Read other articles:

本條目存在以下問題,請協助改善本條目或在討論頁針對議題發表看法。 此條目需要补充更多来源。 (2018年3月17日)请协助補充多方面可靠来源以改善这篇条目,无法查证的内容可能會因為异议提出而被移除。致使用者:请搜索一下条目的标题(来源搜索:羅生門 (電影) — 网页、新闻、书籍、学术、图像),以检查网络上是否存在该主题的更多可靠来源(判定指引)。 �...

 

 

Bola rugbi Bola rugbi adalah bola elipsoid memanjang yang digunakan dalam sepak bola rugbi. Pengukuran dan beratnya ditentukan oleh Rugbi Dunia dan Federasi Liga Rugbi Internasional, badan pengatur untuk kedua kode, uni rugbi dan liga rugbi. Bola rugbi memiliki bentuk lonjong, empat panel dan berat sekitar 400 gr. Hal ini sering dikacaukan dengan beberapa bola dengan dimensi yang sama yang digunakan dalam sepak bola Amerika, Kanada, dan Australia. William Gilbert, dan Richard Lindon mulai mem...

 

 

Silent horror film by Paul Leni The Cat and the CanaryTheatrical release posterDirected byPaul LeniScreenplay by Alfred A. Cohn Walter Anthony Story by Alfred A. Cohn Robert F. Hill Based onThe Cat and the Canaryby John WillardProduced byPaul KohnerStarring Laura La Plante Forrest Stanley Creighton Hale Flora Finch CinematographyGilbert WarrentonEdited byMartin G. CohnMusic byHugo RiesenfeldDistributed byUniversal PicturesRelease date September 9, 1927 (1927-09-09) Running time...

Foto sebuah kelompok yang diambil di Shimoga pada 1944 ketika Vinayak Damodar Savarkar (sedang duduk di bagian keempat dari kanan, kedua dari bawah) datang untuk menghadiri konferensi Hindu Mahasabha tingkat negara bagian. Bhoopalam Chandrashekariah, presiden unit negara bagian Hindu Mahasabha, duduk di sebelah kiri Savarkar. Bagian dari sebuah serial tentangPolitik Hindu Konsep Nasionalisme Hindu Hindutva Pribumi Arya Humanisme integral Neo-Vedanta Teori Luar India Pseudo-sekulerisme Swadesh...

 

 

For the defunct baseball venue in Washington, D.C., see American League Park. Former baseball venue in New York City Hilltop ParkHilltop ParkFormer namesAmerican League Park (official)LocationBroadway between 165th and 168th StNew York CityCoordinates40°50′26″N 73°56′32″W / 40.84056°N 73.94222°W / 40.84056; -73.94222OwnerFrank J. FarrellCapacity16,000 seated with 10,000 standingField sizeLeft Field – 365 ft (111 m)Left-Center – 378 ft (115 m)Center Fiel...

 

 

يفتقر محتوى هذه المقالة إلى الاستشهاد بمصادر. فضلاً، ساهم في تطوير هذه المقالة من خلال إضافة مصادر موثوق بها. أي معلومات غير موثقة يمكن التشكيك بها وإزالتها. (مارس 2016)تسرد هذه الصفحة قوائم اللغات المنشورة. القوائم المنشورة وفقا لمنظمة إس أي إل إنترنيشنل إثنولوج: لغات العالم...

Voce principale: Alma Juventus Fano 1906. Associazione Calcio Fano Alma JuventusStagione 1978-1979Sport calcio Squadra Fano Allenatore Osvaldo Bagnoli Presidente Giovanni Gentili Serie C21º posto nel girone C. Promosso in Serie C1. Maggiori presenzeCampionato: Cazzola (34) Miglior marcatoreCampionato: Trevisan (18) 1977-1978 1979-1980 Si invita a seguire il modello di voce Questa pagina raccoglie le informazioni riguardanti l'Associazione Calcio Fano Alma Juventus nelle competizioni uf...

 

 

† Человек прямоходящий Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:Синапсиды�...

 

 

岸信介佐藤信介 日本第56、57任內閣總理大臣任期1957年2月25日—1960年7月19日君主昭和天皇副首相石井光次郎益谷秀次前任石橋湛山继任池田勇人 日本內閣總理大臣(臨時代理)任期1957年1月31日—1957年2月25日总理石橋湛山前任石橋湛山继任岸信介 日本防衛廳長官(臨時代理)任期1957年1月31日—1957年2月2日总理岸信介(代,兼)前任石橋湛山(代)继任小瀧彬(�...

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Bad Buchau – news · newspapers · books · scholar · JSTOR (August 2018) (Learn how and when to remove this message) Town in Baden-Württemberg, GermanyBad Buchau Town Coat of armsLocation of Bad Buchau within Biberach district Bad Buchau Show map of GermanyBad B...

 

 

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Maret 2016. MAS Plus Al-Ulum MedanInformasiJumlah kelasX, XI, XIIAlamatLokasi, Medan, Sumatera Utara, IndonesiaMoto MAS Plus Al-Ulum Medan merupakan salah satu madrasah aliyah swasta yang ada di provinsi Sumatera Utara, Indonesia. Sama dengan MA pada umumnya di...

 

 

Tournoi Apertura2017 Généralités Sport Football Organisateur(s) FENAFUTH Édition 40e Lieu(x) Honduras Date du 30 juillet 2017 au 30 décembre 2017 Participants 10 équipes Matchs joués 100 Hiérarchie Hiérarchie 1er échelon Niveau inférieur Liga Nacional de Ascenso Palmarès Tenant du titre CD Motagua Vainqueur Real España Deuxième CD Motagua Navigation Saison précédente Saison suivante modifier Le Tournoi Apertura 2017 est le quarantième tournoi saisonnier disputé au Hond...

4Minute WorldAlbum mini karya 4MinuteDirilis17 Maret 2014GenreK-pop, electropop, dance-popDurasi17:00LabelCube Entertainment (recording) Universal Music Group (distribution) Kronologi 4Minute Name Is 4Minute(2013)Name Is 4Minute2013 4Minute World(2014) Crazy(2015)Crazy2015 Singel dalam album 4Minute World Whatcha Doin' TodayDirilis: 17 Maret 2014 4Minute World adalah album mini kelima dari grup vokal wanita asal Korea Selatan 4Minute, dirilis pada tanggal 17 Maret 2014. Album ini terdiri ...

 

 

Sub-field of economics Not to be confused with Ecological economics. Growth, Development and Environmental Economics in Asia discussion at Chatham House, London Part of a series aboutEnvironmental economics Carbon price Carbon credit Carbon emission trading Carbon fee and dividend Carbon finance Carbon offset Carbon tax Emissions trading Environmental tax Personal carbon trading Pigovian tax Social cost of carbon Climate change Carbon footprint Climate change mitigation Food miles Concepts Br...

 

 

Pour un article plus général, voir 2012 en sport. 2012 en sport : Janv. - Févr. - Mars - Avr. - Mai - Juin Juil. - Août - Sept. - Oct. - Nov. - Déc. Chronologie du sport : 2010 - 2011 - 2012 - 2013 - 2014 Chronologie par sport : Athlétisme - Baseball - Basket-ball - CyclismeFootball - Football américain - GymnastiqueHockey sur glace - Natation - Rugby à XIIIRugby à XV - Ski - Sport automobile - Tennis Décès : 1er octobre : Abdelkader Fréha[1] (football) 3...

Cinema ofFrance 1892–1909 1910s 1910 1911 1912 1913 19141915 1916 1917 1918 1919 1920s 1920 1921 1922 1923 19241925 1926 1927 1928 1929 1930s 1930 1931 1932 1933 19341935 1936 1937 1938 1939 1940s 1940 1941 1942 1943 19441945 1946 1947 1948 1949 1950s 1950 1951 1952 1953 19541955 1956 1957 1958 1959 1960s 1960 1961 1962 1963 19641965 1966 1967 1968 1969 1970s 1970 1971 1972 1973 19741975 1976 1977 1978 1979 1980s 1980 1981 1982 1983 19841985 1986 1987 1988 1989 1990s 1990 1991 1992 1993 19...

 

 

Liga 1 Liga 1 2024 Datos generalesDeporte FútbolSede Perú PerúNivel de competencia NacionalConfederación ConmebolNombre oficial Liga 1Nombre comercial Liga 1 Te ApuestoLema «El ADN del hincha»Organizador Federación Peruana de FútbolEquipos participantes 18 (17 en 2025)Datos históricosFundación 13 de febrero de 2019Primera temporada 2019Primer campeón Deportivo BinacionalGoleador histórico Bernardo Cuesta (67)Datos estadísticosCampeón actual UniversitarioSubcampeón actual Alianz...

 

 

Town in Peine district, Lower Saxony, Germany Town in Lower Saxony, GermanyPeine TownTown hall of Peine FlagCoat of armsLocation of Peine within Peine district Peine Show map of GermanyPeine Show map of Lower SaxonyCoordinates: 52°19′13″N 10°14′01″E / 52.32028°N 10.23361°E / 52.32028; 10.23361CountryGermanyStateLower SaxonyDistrictPeine Government • Mayor (2021–26) Klaus Saemann[1] (SPD)Area • Total119.51 km2 (46.1...

Jan Timman Jan Timman (Amsterdam, 14 dicembre 1951) è uno scacchista olandese, Grande maestro. È stato uno dei più forti giocatori occidentali del ventennio 1970-1990, raggiungendo nel 1982 la seconda posizione nella graduatoria mondiale dopo Anatolij Karpov. Ha vinto nove volte il campionato olandese ed è stato numerose volte candidato al titolo mondiale. Si mise in luce come una sicura promessa a 15 anni nel Campionato del mondo juniores (under-20) di Gerusalemme, dove si classificò te...

 

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (أبريل 2019) ألبرت هاموند (بالإنجليزية: Albert Hammond)‏    معلومات شخصية اسم الولادة (بالإنجليزية: Albert Louis Hammond)‏  الميلاد 18 مايو 1944 (80 سنة)[1]  لندن  مواطنة المملك...