{"id":39827,"date":"2026-10-17T05:05:18","date_gmt":"2026-10-17T08:05:18","guid":{"rendered":"https:\/\/statanalytica.com\/blog\/?p=39827"},"modified":"2026-10-17T05:05:20","modified_gmt":"2026-10-17T08:05:20","slug":"apl-programming-language","status":"publish","type":"post","link":"https:\/\/statanalytica.com\/blog\/apl-programming-language\/","title":{"rendered":"APL Programming Language: A Complete Guide for Beginners"},"content":{"rendered":"\n<p>Open any APL program for the first time, and it&#8217;s as if someone poured a box of math symbols on the screen. Fine, it&#8217;s fair enough, that&#8217;s what it is. But, APL still lives, and it&#8217;s quietly executing in banks, insurance companies and data departments that want to process vast amounts of numbers in a hurry.<\/p>\n\n\n\n<p>Then where did it come from? It began in the late 1950s as a way to clearly communicate math ideas to the blackboard, and was developed by Kenneth Iverson, a Harvard mathematician. The original idea wasn&#8217;t that it would be a programming language. Later, IBM converted his notation into actual working code, and the rest is history!<\/p>\n\n\n\n<p>In this guide, you&#8217;ll learn what APL is, how the symbols function, a few simple examples, and where people use APL. At the end, you&#8217;ll know whether or not it&#8217;s worth your time.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"what-is-apl-programming-language\"><\/span><strong>What Is APL Programming Language?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-light-blue ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-6ad345e116139\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #ff5104;color:#ff5104\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #ff5104;color:#ff5104\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-6ad345e116139\" checked aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#what-is-apl-programming-language\" >What Is APL Programming Language?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#apl-programming-language-overview\" >APL Programming Language Overview<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#key-features-of-apl-programming-language\" >Key Features of APL Programming Language<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#apl-programming-language-symbols-explained\" >APL Programming Language Symbols Explained<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#how-to-type-apl-symbols\" >How to type APL symbols<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#apl-programming-language-examples\" >APL Programming Language Examples<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#example-1-making-a-sequence\" >Example 1: Making a sequence<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#example-2-sum-and-average\" >Example 2: Sum and average<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#example-3-turning-a-list-into-a-table\" >Example 3: Turning a list into a table<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#example-4-multiplication-table\" >Example 4: Multiplication table<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#example-5-sorting-data\" >Example 5: Sorting data<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#what-is-apl-programming-language-used-for\" >What Is APL Programming Language Used For?<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#real-world-use\" >Real-world use<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#advantages-and-limitations-of-apl-programming-language\" >Advantages and Limitations of APL Programming Language<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#advantages\" >Advantages<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#limitations\" >Limitations<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#how-to-get-started-with-apl-programming-language\" >How to Get Started with APL Programming Language<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#step-1-try-it-in-your-browser-first\" >Step 1: Try it in your browser first<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#step-2-play-with-the-basics\" >Step 2: Play with the basics<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#step-3-install-a-proper-version\" >Step 3: Install a proper version<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#step-4-learn-from-good-resources\" >Step 4: Learn from good resources<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#step-5-build-a-few-tiny-projects\" >Step 5: Build a few tiny projects<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#step-6-stick-with-it-for-a-few-weeks\" >Step 6: Stick with it for a few weeks<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#final-thoughts\" >Final Thoughts<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#faqs\" >FAQs<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#1-is-apl-still-used-today\" >1. Is APL still used today?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#2-is-apl-hard-to-learn\" >2. Is APL hard to learn?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/statanalytica.com\/blog\/apl-programming-language\/#3-how-is-apl-different-from-python\" >3. How is APL different from Python?<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n\n<p>APL&#8217;s name is quite modest given the weirdness: \u201cA Programming Language\u201d. It is fundamentally an array based language. Just that it&#8217;s constructed to operate on whole lists and grids of numbers at once, rather than poking individual values from them, like most languages.=<\/p>\n\n\n\n<p>It&#8217;s a short and interesting history. The notation was invented by Kenneth Iverson in the 1960s and implemented as a working system by IBM. Modern versions such as Dyalog APL or GNU APL can be executed on a conventional computer today.<\/p>\n\n\n\n<p>What is so special about it? Primarily in your mind. In the Python programming language, the sum of a list is obtained by writing a loop. There are two symbols that do all of the work in APL. Very bizarre at first, but satisfying once you get it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"apl-programming-language-overview\"><\/span><strong>APL Programming Language Overview<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Big idea: Think in arrays for APL. With a whole list or table, you consider it as a unit and operate on it en masse. After getting used to this, a lot of code that you would normally write in 10 lines becomes 1 line.<\/p>\n\n\n\n<p>The difference will be apparent to anyone who has used Python, R or C before. Those languages have a heavy dependence on loops and a lot of words typed out. APL avoids most of it. You write expressions based on short symbols, and the language takes care of the looping part. Rather than telling the computer every step, it&#8217;s about telling it what you want.<\/p>\n\n\n\n<p>APL is also an interpreted and interactive language. You enter a statement, press Enter and immediately view the outcome. That is perfect for exploring, experimenting, or playing around with data. It&#8217;s sort of like operating a very advanced calculator.<br><br><strong>Where it can be run, there are a few options:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Dyalog APL:<\/strong> the most popular modern version, with a free edition for learning<\/li>\n\n\n\n<li><strong>GNU APL:<\/strong> Open Source and suited for tinkerers.<\/li>\n\n\n\n<li><strong>TryAPL:<\/strong> no install necessary, you can try programming in a browser.<\/li>\n<\/ul>\n\n\n\n<p>For those who are just inquisitive, begin with TryAPL. It should take about a minute to get going.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-background has-fixed-layout\" style=\"background:linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 100%,rgb(51,167,181) 100%)\"><tbody><tr><td><strong>Also Read:<\/strong> <em>If you\u2019re still deciding which language to learn first, check out our guide on the<\/em><a href=\"https:\/\/statanalytica.com\/blog\/programming-languages-for-data-science\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em> best programming languages for data science<\/em><\/a><em> to compare your options.<\/em>\u00a0<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"key-features-of-apl-programming-language\"><\/span><strong>Key Features of APL Programming Language<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>There are a few things about APL that are truly unique from what you&#8217;ve come across. Let&#8217;s take them, one at a time.<\/p>\n\n\n\n<p><strong>1. Array-oriented processing:<\/strong> In APL, all objects are arrays. Whether it&#8217;s a single number, a list, a table, or even a very complex block of data with lots of layers, they&#8217;re all the same. So if you add 5 to something, it&#8217;s just added to each value contained in it. No loop needed.<\/p>\n\n\n\n<p><strong>2. Short, symbolic syntax:<\/strong> Unlike languages such as FORTRAN or SUM, APL&#8217;s symbols are short words. In other languages one character can be used for what takes a full line of characters. At first it looks frightening, but once you have grown accustomed to it you don&#8217;t mind anymore.<\/p>\n\n\n\n<p><strong>3. Built-in math functions:<\/strong> Some of the things included are sorting, reversing, finding sums, etc., and matrix work. No need to import a library or to write them yourself.<\/p>\n\n\n\n<p><strong>4. Interactive environment.<\/strong> You enter text, click enter and receive an answer immediately. Perfect for experimentation and learning along the way.<\/p>\n\n\n\n<p><strong>5. Implicit looping (rank and scalar extension):<\/strong> APL is technical in that respect, but simply means that APL will loop over your data for you. What you say, it does.What you say, it does it without saying anything.<\/p>\n\n\n\n<p><strong>6. Tacit programming:<\/strong> This is a slightly more complicated one. Functions can be written without ever naming the data that they act upon, thus maintaining a very compact code. It can be omitted at this stage for beginners.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"apl-programming-language-symbols-explained\"><\/span><strong>APL Programming Language Symbols Explained<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>To be honest, the first thing that everyone notices about APL are the symbols. They&#8217;re also the one reason why people fall in love or run away. However, there&#8217;s a reason to have them. Iverson intended APL to be a notation for mathematics, and each of its symbols represents a single clear concept. After becoming familiar with the meaning of a symbol you can read it quicker than a long string of words.<\/p>\n\n\n\n<p>These are some of the most frequently used ones:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Symbol&nbsp;<\/td><td>Name&nbsp;<\/td><td>What it does&nbsp;<\/td><\/tr><tr><td>\u2373&nbsp;<\/td><td>Iota&nbsp;<\/td><td>Makes a list of numbers. \u23735 gives you 1 2 3 4 5&nbsp;<\/td><\/tr><tr><td>\u2374&nbsp;<\/td><td>Rho&nbsp;<\/td><td>Reshapes data or tells you its shape. 2 3\u2374\u23736 makes a 2 by 3 table&nbsp;<\/td><\/tr><tr><td>+\/&nbsp;<\/td><td>Reduce (sum)&nbsp;<\/td><td>Adds up everything in a list. +\/1 2 3 gives 6&nbsp;<\/td><\/tr><tr><td>\u233d&nbsp;<\/td><td>Reverse&nbsp;<\/td><td>Flips a list backwards&nbsp;<\/td><\/tr><tr><td>\u234b&nbsp;<\/td><td>Grade up&nbsp;<\/td><td>Gives the order you\u2019d need to sort a list from smallest to largest&nbsp;<\/td><\/tr><tr><td>\u2218.\u00d7&nbsp;<\/td><td>Outer product&nbsp;<\/td><td>Multiplies every item in one list by every item in another, like a times table&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>What can be confusing to the beginning programmer is the fact that the same symbol may be used for two purposes. It depends on whether or not there is something on its left. If a function has a single argument (right-hand side), then it is monadic. It is dyadic in its form when it takes two (one on each side).<\/p>\n\n\n\n<p>A shape can be described by a word by itself, like \u2374, which will tell you the shape of something. However, add a number to its left, and it will change the structure of your data to become that number. Two meanings, one symbol. It may sound crazy, but that&#8217;s how subtracting with &#8211; works too: 8-5 subtracts and -5 flips the sign.<\/p>\n\n\n\n<p>Yet another quirk: APL is reading from right to left, not left to right. So 2\u00d73+4 means \u201cadd 3 and 4 first, then multiply by 2.\u201d It&#8217;ll stump almost anyone when they start with it, so don&#8217;t worry if it seems like it&#8217;s backwards.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"how-to-type-apl-symbols\"><\/span><strong>How to type APL symbols<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>This is the one that everyone is afraid of, but it&#8217;s not so hard to do:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TryAPL:<\/strong> Can use a touch screen as a keyboard (no memory required)<\/li>\n\n\n\n<li><strong>Dyalog IDE:<\/strong> allows you to type symbols with the prefix key, and displays a keyboard layout.<\/li>\n\n\n\n<li><strong>Keyboard layouts:<\/strong> you can get an APL layout for your computer and switch to it when required<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"apl-programming-language-examples\"><\/span><strong>APL Programming Language Examples<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Words and phrases can only take you so far with regard to reading. The kicker is when you&#8217;re running something. Here are five small examples you can use in TryAPL to play with: I&#8217;ve included a brief python version next to each one, for comparison.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"example-1-making-a-sequence\"><\/span><strong>Example 1: Making a sequence<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>\u237310<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Result:<\/strong> 1 2 3 4 5 6 7 8 9 10<\/p>\n\n\n\n<p>That\u2019s it. One symbol and one number. You would write a line like this in Python: list(range(1,11)). APL is not hard, its shorter.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"example-2-sum-and-average\"><\/span><strong>Example 2: Sum and average<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>data \u2190 4 8 15 16 23 42<br>+\/data<br>(+\/data)\u00f7\u2374data<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Result:<\/strong> 108 for the sum, and 18 for the average.<\/p>\n\n\n\n<p>The +\/ is used to add all together. The average is the total divided by the number of items. Quick note: just note that the length of a list is given by \u2374data but the results is a list containing one element, but this is okay here. This would be written as sum(data) \/ len(data) in Python.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"example-3-turning-a-list-into-a-table\"><\/span><strong>Example 3: Turning a list into a table<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>3 4\u2374\u237312<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Result:&nbsp;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>1\u00a0 2\u00a0 3\u00a0 4<br>5\u00a0 6\u00a0 7\u00a0 8<br>9 10 11 12<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>In this case, \u237312 is the numbers 1 through 12, and 3 4\u2374 is the 3 rows and 4 columns. In Python, it would require a nested loop or using NumPy.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"example-4-multiplication-table\"><\/span><strong>Example 4: Multiplication table<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>(\u23735)\u2218.\u00d7\u23735<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Result:<\/strong>&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>1\u00a0 2\u00a0 3\u00a0 4\u00a0 5<br>2\u00a0 4\u00a0 6\u00a0 8 10<br>3\u00a0 6\u00a0 9 12 15<br>4\u00a0 8 12 16 20<br>5 10 15 20 25<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>The one that always elicits the &#8220;wait, really?&#8221; from novices. The outer product is the product of each element of the first list times each element of the second list. That&#8217;s two loops in Python and it takes a bit of code.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"example-5-sorting-data\"><\/span><strong>Example 5: Sorting data<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>scores \u2190 72 95 60 88<br>scores[\u234bscores]<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Result:<\/strong> 60 72 88 95<\/p>\n\n\n\n<p>Remember \u234b from earlier? It returns an order to sort the list. Then we select items from scores in that order. In Python, it&#8217;s just sorted(scores); it&#8217;s actually a little cleaner. Not all tasks are shorter in APL.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"what-is-apl-programming-language-used-for\"><\/span><strong>What Is APL Programming Language Used For?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>APL is not really a language that you would use to develop a website or mobile app. It is best suited for any situation where there are a lot of numbers, complex mathematics, and a need for a quick response. These are the top locations of occurrence.<\/p>\n\n\n\n<p><strong>1. Finance and insurance:<\/strong> It&#8217;s here that APL has remained steadfast. It is applied by banks, trading companies and insurance companies in the fields of risk modelling, pricing and actuarial analysis. These positions include massive tables of data and formulas which are frequently modified, and APL allows analysts to quickly write and modify these tables.&nbsp;<\/p>\n\n\n\n<p><strong>2. Data analysis and statistics:<\/strong> The default for APL data is an array, so data-related operations, such as finding averages, sorting, grouping, matrix work, seem natural. You&#8217;ll appreciate it if you&#8217;ve ever had to deal with a long list of loops or a messy spreadsheet.<\/p>\n\n\n\n<p><strong>3. Scientific and mathematical computing:<\/strong> APL was originally created for math, and so is appropriate for simulations, modelling, and research. Scientists can type an idea nearly as they&#8217;d type it on paper.<\/p>\n\n\n\n<p><strong>4. Machine learning prototyping:<\/strong> Neural networks are basically array math, so they can be written in a surprisingly few lines of APL. Not a typical production ML, but some people draw with it to quickly jot down ideas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"real-world-use\"><\/span><strong>Real-world use<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The most popular modern version is by a company called Dyalog whose customers include finance, insurance and research groups, it says. Some of these companies have been operating APL systems for years and years, and they still continue to operate them because the code is still working and they can change it very quickly.<\/p>\n\n\n\n<p>So no, it&#8217;s not an attempt to compete with Python. It&#8217;s more of a specialised tool. The APL programming language can still write a few lines that other languages need to write a page.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"advantages-and-limitations-of-apl-programming-language\"><\/span><strong>Advantages and Limitations of APL Programming Language<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>APL is like any tool\u2014it&#8217;s wonderful for some things, and it&#8217;s aggravating for others. Let&#8217;s see both sides before entering into something.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"advantages\"><\/span><strong>Advantages<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p><strong>1. You write less code:<\/strong> This is the mega one. An APL expression can often be a single line of code in another language.In other languages, a loop and a few lines of code may be one short APL expression. The fewer lines of code, the fewer spots for bugs.<\/p>\n\n\n\n<p><strong>2. Fast to build and test ideas:<\/strong> It&#8217;s interactive so you can experiment, watch the outcome and adjust it immediately. It&#8217;s a time-saver for analysts who need to dive into the data without delay.<\/p>\n\n\n\n<p><strong>3. Powerful array operations:<\/strong> They have all the tools of the trade\u2014sums, sorting, reshaping, matrix math\u2014right there. To perform simple numerical calculations, no additional libraries are required.<\/p>\n\n\n\n<p><strong>4. It changes how you think:<\/strong> If you don&#8217;t use APL at work, it will help you think more about data as a whole chunk than one item at a time. Many claim that it also enhanced their Python or R writing skills.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"limitations\"><\/span><strong>Limitations<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p><strong>1. The learning curve is real:<\/strong> It takes a bit of a while to get back to being normal with the symbols, with reading from right to left, with the whole array mindset. You will experience some ups and downs for a few weeks.<\/p>\n\n\n\n<p><strong>2. Symbols can be hard to read: <\/strong>Once you know them, short code is lovely. However, after returning to your own code after a month or even other peoples&#8217; after a month is over, it can feel like a puzzle. Detailed feedback is very much appreciated.<\/p>\n\n\n\n<p><strong>3. Smaller community:<\/strong> There are many less tutorials, forum answers and pre-made libraries than there are for Python. There is support for those who are stuck, but it may require digging.<\/p>\n\n\n\n<p><strong>4. Fewer job openings:<\/strong> Yes, there are real jobs that call for APL usage, primarily in finance, but not quite as many as Python or Java or SQL.<\/p>\n\n\n\n<p><em>You can try APL right in your browser on <\/em><a href=\"https:\/\/tryapl.org\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>TryAPL<\/em><\/a><em>, a free site with a clickable keyboard for the symbols.\u00a0<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"how-to-get-started-with-apl-programming-language\"><\/span><strong>How to Get Started with APL Programming Language<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The first time you start out in APL, it&#8217;s a little daunting, mostly due to the symbols. But the actual setup is easy, and in a few minutes you should be running code. Here\u2019s a simple way to go about it, step by step.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"step-1-try-it-in-your-browser-first\"><\/span><strong>Step 1: Try it in your browser first<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Wait until you have the correct specs before installing anything. Go to free site TryAPL and type and run APL code immediately. The keyboard is displayed on the screen and is clickable, so you won&#8217;t need to memorize the symbol positions. Simply press and play and watch what happens.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"step-2-play-with-the-basics\"><\/span><strong>Step 2: Play with the basics<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Begin with the small things we&#8217;ve previously discussed. Type \u237310, try +\/1 2 3 4, and mess around with \u233d to flip a list. Don&#8217;t be overwhelmed with information. You&#8217;re only feeling out its behavior right now.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"step-3-install-a-proper-version\"><\/span><strong>Step 3: Install a proper version<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>When you have fun with it, establish something on your own computer. The most popular is Dyalog APL, which also has a free version for learning. For those who prefer open source tools, GNU APL is another possibility. One provides you with a more fully featured environment than the browser.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"step-4-learn-from-good-resources\"><\/span><strong>Step 4: Learn from good resources<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>There aren\u2019t as many APL tutorials as there are for Python, but the good ones are really good. The following are some places to check:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Dyalog\u2019s own learning pages:<\/strong> they have tutorials and videos made for beginners<\/li>\n\n\n\n<li><strong>APL Wiki:<\/strong> a handy reference for symbols and ideas<\/li>\n\n\n\n<li><strong>Books and online courses:<\/strong> look for courses and books that are accessible for beginners, and read reviews before making a purchase.<\/li>\n\n\n\n<li><strong>Community forums and chat groups:<\/strong> the APL crowd is small but friendly and are fond of assisting newbies<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"step-5-build-a-few-tiny-projects\"><\/span><strong>Step 5: Build a few tiny projects<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>You can read all you want; reading doesn&#8217;t make you smart. You will learn faster by creating things, preferably silly ones. A few ideas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A grade calculator which calculates highest and average grades<\/li>\n\n\n\n<li>Multiplication Table &#8211; Any size you choose<\/li>\n\n\n\n<li>A simple loan or saving calculator.<\/li>\n\n\n\n<li>A script designed to sort and summarise a data set that is small<\/li>\n<\/ul>\n\n\n\n<p>Keep them small. If it is more than an hour it is probably too large for now.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"step-6-stick-with-it-for-a-few-weeks\"><\/span><strong>Step 6: Stick with it for a few weeks<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The first week is typically the most difficult. All this will sound like gibberish, and you&#8217;ll likely mess up with the correct order from left to right a lot. That\u2019s normal. Practice 20 or 30 minutes a day and most people will begin to feel comfortable in a few weeks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"final-thoughts\"><\/span><strong>Final Thoughts<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Hence, here&#8217;s the APL programming language in a nutshell. It is unusual, it is compact and it asks you to consider data in a newly and completely different way. It won&#8217;t be your sole solution, but it&#8217;s okay. However, for tasks with more numbers, like in finance and data analysis, it still manages to hold its own after all these years.<\/p>\n\n\n\n<p>Is there any relevance to it now? Yes, but in a more niche fashion. Even if you don&#8217;t write APL at your job, understanding some APL can help you think about arrays and data in other languages!<\/p>\n\n\n\n<p>If you&#8217;re curious, take 10 minutes to play with TryAPL, if you haven&#8217;t yet done so. If you ever find yourself in a jam while solving a programming or statistics problem, Statanalytica&#8217;s team is here to help! Try the APL programming language, you may be surprised!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"faqs\"><\/span><strong>FAQs<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1792224168726\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><span class=\"ez-toc-section\" id=\"1-is-apl-still-used-today\"><\/span><strong>1. Is APL still used today?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes, it is. The Business Process Management (BPM) applications used in finance and insurance are still in use, and Dyalog continues to release updates of its version. It&#8217;s a pastiche language in the present, but not one that has ceased to be.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1792224180644\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><span class=\"ez-toc-section\" id=\"2-is-apl-hard-to-learn\"><\/span><strong>2. Is APL hard to learn?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>At the beginning it can be challenging due to the symbols and the right to left reading direction. However, most people tend to get comfortable after a couple of weeks of practice.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1792224186884\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><span class=\"ez-toc-section\" id=\"3-how-is-apl-different-from-python\"><\/span><strong>3. How is APL different from Python?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Python is word-based and iterates over loops, APL is short symbol-based and works with whole arrays. APL code is more compact, Python is easier to read.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Open any APL program for the first time, and it&#8217;s as if someone poured a box of math symbols on the screen. Fine, it&#8217;s fair enough, that&#8217;s what it is. But, APL still lives, and it&#8217;s quietly executing in banks, insurance companies and data departments that want to process vast amounts of numbers in a [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":39829,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[138],"tags":[6622,6623,6619,6621,6620,6624],"class_list":["post-39827","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","tag-apl-programming-language-examples","tag-apl-programming-language-features","tag-apl-programming-language-overview","tag-apl-programming-language-symbols","tag-what-is-apl-programming-language","tag-what-is-apl-programming-language-used-for"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/posts\/39827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/comments?post=39827"}],"version-history":[{"count":1,"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/posts\/39827\/revisions"}],"predecessor-version":[{"id":39830,"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/posts\/39827\/revisions\/39830"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/media\/39829"}],"wp:attachment":[{"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/media?parent=39827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/categories?post=39827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/statanalytica.com\/blog\/wp-json\/wp\/v2\/tags?post=39827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}