Main Page: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
(logo vote ad)
m (Text replacement - "</source>" to "</syntaxhighlight>")
 
(6 intermediate revisions by the same user not shown)
Line 4: Line 4:
| style="background:#f9f9f9;border:1px solid #ddd;" colspan="2" |
| style="background:#f9f9f9;border:1px solid #ddd;" colspan="2" |
{| style="border-spacing: 1em;"
{| style="border-spacing: 1em;"
| colspan=2 | <h2 style="text-align:center;margin:0;background:#eeeeee; border:1px solid #ddd; color:#222; padding:0.2em 0.4em; font-size:120%; font-weight:bold; font-family:inherit;"><span style="display:inline-block">We're in the process of choosing</span> <span style="display:inline-block">a universal vendor-agnostic logo for APL.</span></span> <span style="display:inline-block"><span style="display:inline-block">Head to the [[APL logo]] article</span> <span style="display:inline-block">for instructions on how to vote!</span></h2>
|-
|-
| style="width:50%;text-align:center;" | <span style="font-size:xx-large">Welcome to [[APL Wiki]],</span></br>
| style="width:50%;text-align:center;" | <span style="font-size:xx-large">Welcome to [[APL Wiki]],</span><br>
[[Special:Statistics|{{NUMBEROFARTICLES}}]] articles about APL that anyone can edit
[[Special:Statistics|{{NUMBEROFARTICLES}}]] articles about APL that anyone can edit.<br>
||  
See the [[overview|navigational overview]] of content.
APL is an [[wikipedia:Array_programming|array-oriented programming language]]. Its natural, concise [[APL syntax|syntax]] lets you develop shorter programs while thinking more about the problem you're trying to solve than how to express it to a computer.  
| [[File:APL logo.png|48px|link=APL logo]]
| [[The name APL|'''APL''']] is an [[wikipedia:Array_programming|array-oriented programming language]]. Its natural, concise [[APL syntax|syntax]] lets you develop shorter programs while thinking more about the problem you're trying to solve than how to express it to a computer.  
|}
|}


Line 24: Line 24:
Taking up a new programming language can be a daunting task. While it can appear cryptic at first, you can learn to [[semantic density|read]], write and [[mnemonics|remember]] APL with little effort. There is plenty of material to help you in the process.
Taking up a new programming language can be a daunting task. While it can appear cryptic at first, you can learn to [[semantic density|read]], write and [[mnemonics|remember]] APL with little effort. There is plenty of material to help you in the process.


<p style="text-align:center">'''[[Introductions]] ∙ [[Learning resources]] ∙ [[Language overview]]'''</p>
<p style="text-align:center">'''[[Introductions]] ∙ [[Learning resources]]'''</p>
|- style="vertical-align:top"
|- style="vertical-align:top"
| style="background:#faf5ff;border:1px solid #e0cef2;padding:0 1em" |
| style="background:#faf5ff;border:1px solid #e0cef2;padding:0 1em" |
Line 30: Line 30:
APL is used by both hobbyists and application developers. There are active [[:Category:user groups|user groups]] all around the globe, many of these hold regular in-person meet-ups. There are also multiple online [[chat rooms and forums]].
APL is used by both hobbyists and application developers. There are active [[:Category:user groups|user groups]] all around the globe, many of these hold regular in-person meet-ups. There are also multiple online [[chat rooms and forums]].


<p style="text-align:center">'''[[Case studies]] ∙ [[Job listings]] ∙ [[Community|Community overview]]'''</p>
<p style="text-align:center">'''[[Case studies]] ∙ [[Job listings]] ∙ [[Conferences and activities]]'''</p>


| style="background:#fff5fa;border:1px solid #f2cee0;padding:0 1em" |
| style="background:#fff5fa;border:1px solid #f2cee0;padding:0 1em" |
Line 42: Line 42:
APL's terseness means that substantial programs are expressible in a small space, relative to many other programming languages. Below are just a taste. Many more, and fully explained, examples are in the [[simple examples]] article.
APL's terseness means that substantial programs are expressible in a small space, relative to many other programming languages. Below are just a taste. Many more, and fully explained, examples are in the [[simple examples]] article.
=== Split text by delimiter ===
=== Split text by delimiter ===
With the introduction of [[tacit programming]], many functions can be expressed in fewer characters than even the shortest fitting name. For example <source lang=apl inline>≠⊆⊢</source> is but three characters, while you would need five for the name <code>Split</code>:
With the introduction of [[tacit programming]], many functions can be expressed in fewer characters than even the shortest fitting name. For example <syntaxhighlight lang=apl inline>≠⊆⊢</syntaxhighlight> is but three characters, while you would need five for the name <code>Split</code>:


[https://tryapl.org/?a=%27%2C%27%28%u2260%u2286%u22A2%29%27comma%2Cdelimited%2Ctext%27&run Try it now!]
[https://tryapl.org/?a=%27%2C%27%28%u2260%u2286%u22A2%29%27comma%2Cdelimited%2Ctext%27&run Try it now!]
<source lang=apl>
<syntaxhighlight lang=apl>
       ','(≠⊆⊢)'comma,delimited,text'
       ','(≠⊆⊢)'comma,delimited,text'
┌─────┬─────────┬────┐
┌─────┬─────────┬────┐
│comma│delimited│text│
│comma│delimited│text│
└─────┴─────────┴────┘
└─────┴─────────┴────┘
</source>
</syntaxhighlight>
{{Works in|[[Dyalog APL]]}}
{{Works in|[[Dyalog APL]]}}
'''[[Simple examples#Split text by delimiter|Full explanation…]]'''
'''[[Simple examples#Split text by delimiter|Full explanation…]]'''
Line 58: Line 58:


[https://tryapl.org/?a=%u22A2world%u21902%202%202%202%u22A40%2012%205%202%204%201&run&a=%7B%u21911%20%u2375%u2228.%u22273%204%3D+/%2C%AF1%200%201%u2218.%u2296%AF1%200%201%u2218.%u233D%u2282%u2375%7D%20world&run Try it now!]
[https://tryapl.org/?a=%u22A2world%u21902%202%202%202%u22A40%2012%205%202%204%201&run&a=%7B%u21911%20%u2375%u2228.%u22273%204%3D+/%2C%AF1%200%201%u2218.%u2296%AF1%200%201%u2218.%u233D%u2282%u2375%7D%20world&run Try it now!]
<source lang=apl>
<syntaxhighlight lang=apl>
       ⎕←world←2 2 2 2⊤0 12 5 2 4 1
       ⎕←world←2 2 2 2⊤0 12 5 2 4 1
0 1 0 0 0 0
0 1 0 0 0 0
Line 69: Line 69:
0 1 0 1 1 0
0 1 0 1 1 0
0 0 1 0 0 0
0 0 1 0 0 0
</source>
</syntaxhighlight>
{{Works in|[[Dyalog APL]], [[ngn/apl]]}}
{{Works in|[[Dyalog APL]], [[ngn/apl]]}}
'''[[John Scholes' Conway's Game of Life|Full article…]]'''
'''[[John Scholes' Conway's Game of Life|Full article…]]'''

Latest revision as of 22:15, 10 September 2022


Welcome to APL Wiki,

447 articles about APL that anyone can edit.
See the navigational overview of content.

APL logo.png APL is an array-oriented programming language. Its natural, concise syntax lets you develop shorter programs while thinking more about the problem you're trying to solve than how to express it to a computer.

Running APL

Traditionally a commercial language, quite a few implementations are now free without feature limitations, several can be tried online, and many are open source.

Running APLTry APL online

Hello world

Taking up a new programming language can be a daunting task. While it can appear cryptic at first, you can learn to read, write and remember APL with little effort. There is plenty of material to help you in the process.

IntroductionsLearning resources

Who uses it?

APL is used by both hobbyists and application developers. There are active user groups all around the globe, many of these hold regular in-person meet-ups. There are also multiple online chat rooms and forums.

Case studiesJob listingsConferences and activities

Contributing

APL Wiki is an online open-content wiki; that is, a voluntary association of individuals and groups working to develop a common knowledge resource. The structure of the project allows anyone with an Internet connection to alter its content.

How to contributeNew pages Wanted pages

Examples

APL's terseness means that substantial programs are expressible in a small space, relative to many other programming languages. Below are just a taste. Many more, and fully explained, examples are in the simple examples article.

Split text by delimiter

With the introduction of tacit programming, many functions can be expressed in fewer characters than even the shortest fitting name. For example ≠⊆⊢ is but three characters, while you would need five for the name Split:

Try it now!

      ','(≠⊆⊢)'comma,delimited,text'
┌─────┬─────────┬────┐
│comma│delimited│text│
└─────┴─────────┴────┘
Works in: Dyalog APL

Full explanation…

Conway's "Game of Life"

John Scholes is famous for the following implementation of Conway's Game of Life:

Try it now!

      ⎕←world←2 2 2 2⊤0 12 5 2 4 1
0 1 0 0 0 0
0 1 1 0 1 0
0 0 0 1 0 0
0 0 1 0 0 1
      {↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵} world
1 1 0 1 0 0
0 1 1 1 0 0
0 1 0 1 1 0
0 0 1 0 0 0
Works in: Dyalog APL, ngn/apl

Full article…

Further simple examplesAdvanced examples