Close Menu

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    What's Hot

    Visual Studio Pro 2026 is now only $49.99 (was $499.99)

    Motherboards frying Ryzen 9800X3D chips: Asus is on the case

    I hate PC monitor names so, so much

    Facebook X (Twitter) Instagram
    • Artificial Intelligence
    • Business Technology
    • Cryptocurrency
    • Gadgets
    • Gaming
    • Health
    • Software and Apps
    • Technology
    Facebook X (Twitter) Instagram Pinterest Vimeo
    Tech AI Verse
    • Home
    • Artificial Intelligence

      ChatGPT can embrace authoritarian ideas after just one prompt, researchers say

      January 24, 2026

      Ashley St. Clair, the mother of one of Elon Musk’s children, sues xAI over Grok sexual images

      January 17, 2026

      Anthropic joins OpenAI’s push into health care with new Claude tools

      January 12, 2026

      The mother of one of Elon Musk’s children says his AI bot won’t stop creating sexualized images of her

      January 7, 2026

      A new pope, political shake-ups and celebs in space: The 2025-in-review news quiz

      December 31, 2025
    • Business

      New VoidLink malware framework targets Linux cloud servers

      January 14, 2026

      Nvidia Rubin’s rack-scale encryption signals a turning point for enterprise AI security

      January 13, 2026

      How KPMG is redefining the future of SAP consulting on a global scale

      January 10, 2026

      Top 10 cloud computing stories of 2025

      December 22, 2025

      Saudia Arabia’s STC commits to five-year network upgrade programme with Ericsson

      December 18, 2025
    • Crypto

      Bitcoin Flat at $89,000, but Charts Warn Buyers Are Losing Ground

      January 24, 2026

      Spacecoin Launches with a 65% Rally Post-Airdrop, But Will the Hype Hold?

      January 24, 2026

      Solana’s New $500 Smartphone Token Skyrocketed After Launch

      January 24, 2026

      Ex-Olympian Turns Himself In Over Accusations of Running a Crypto Drug Network

      January 24, 2026

      Jeff Bezos Denies Polymarket Claim, Rekindling Debate Over Fake News on Betting Platforms

      January 24, 2026
    • Technology

      Visual Studio Pro 2026 is now only $49.99 (was $499.99)

      January 24, 2026

      Motherboards frying Ryzen 9800X3D chips: Asus is on the case

      January 24, 2026

      I hate PC monitor names so, so much

      January 24, 2026

      These Bluetooth trackers are $9 each and work with both iOS and Android

      January 24, 2026

      Mini PC with AMD Ryzen 9: Is the Geekom A7 Max Edition 2026 worth it?

      January 24, 2026
    • Others
      • Gadgets
      • Gaming
      • Health
      • Software and Apps
    Check BMI
    Tech AI Verse
    You are at:Home»Technology»In Praise of APL (1977)
    Technology

    In Praise of APL (1977)

    TechAiVerseBy TechAiVerseJanuary 22, 2026No Comments12 Mins Read3 Views
    Facebook Twitter Pinterest Telegram LinkedIn Tumblr Email Reddit
    Share
    Facebook Twitter LinkedIn Pinterest WhatsApp Email

    In Praise of APL (1977)

    In Praise of APL:
    A Language for Lyrical Programming

    Professor Alan J. Perlis
    Yale University


     

    Many reasons can be given for teaching
    one or more aspects of computer
    science (defined as the study of the set
    of phenomena arising around and because of
    the computer) to all university students.
    Probably every reader of this note supports
    some of these reasons. Let me list
    the few I find most important: (1) to
    understand and to be able to compose
    algorithms; (2) to understand how computers
    are organized and constructed; (3) to
    develop fluency in (at least) one programming
    language; (4) to appreciate the
    inevitability of controlling complexity
    through the design of systems; (5) to
    appreciate the devotion of computer
    scientists to their subject and the
    exterior consequences (to the student as
    citizen) of the science’s development.

    Even though computer science deals
    with symbolic objects whose nature we
    study mathematically, it cannot be taught
    as an orderly development arising from a
    few fundamental ideas whose existence the
    student has already observed intuitively
    during his maturation, such as gravitation
    and electricity.

    It is during this first computer
    course that the student awakes to the
    possibilities and consequences of computation.
    They arise most usefully and in
    greatest profusion during his writing of
    programs. He must program and program and
    program! He must learn how to state
    precisely in a programming language what
    he perceives about the nature of symbolic
    systems. I know of no better way to
    expedite this awakening than by programming.

    But what should the student program?
    and in what language? I do not place much
    emphasis on heavy use of other people’s
    programs, packages if you will, that
    perform real services such as statistical
    packages, data management systems, linear
    equations solvers, etc. While it is wise
    to use standard programs when they match
    one’s needs, it is more important to
    master self-expression during this initial
    contact.

    Available time is a limiting factor;
    a semester provides about 16 weeks of
    contact. During that interval the student
    must negotiate a set of tasks that sharpens
    his abilities and explodes his perceptions
    of the computer’s capabilities. He
    must be on the computer early and often
    during the semester and his approach to it
    must be smooth and easy. The computer
    system he uses should be time-sharing and
    interactive, if you will.

    Learning to program involves a
    sequence of acts of discovery punctuated
    by recovery from errors. As the semester
    progresses the causes and nature of errors
    will change. Certain kinds will diminish
    and even disappear, only to be replaced by
    errors of deeper significance, harder to
    isolate and more resistant to satisfactory
    removal — syntactic gaffes give way to
    semantic errors — incorrect perceptions
    of purpose, improper use of means, the use
    of hammers to swat flies and swatters to
    level mountains.

    To write correct and balanced programs
    a student may be forced to move
    between programs that are not related to
    each other by a few simple textual rearrangements.
    He must learn to write and
    test complicated programs quite rapidly.
    As he moves through the sequence of
    assigned tasks his ability to express
    himself fluently should not founder too
    soon because of language shortcomings.
    For all of the above reasons as well as a
    few others, I have come to believe that
    APL is the most rational first language
    for a first course in computer science.

    It is true that BASIC and FORTRAN are
    easier to learn than APL, for example, a
    week versus a month. However, once
    mastered, APL fits the above requirements
    much better than either BASIC or FORTRAN
    or their successors ALGOL 60, PL/I and
    Pascal. The syntax of APL is not a
    significant difficulty for the students.
    The large number of primitive functions,
    at first mind-numbing in their capabilities,
    quickly turn out to be easily
    mastered, soon almost all are used naturally
    in every program — the primitive
    functions form a harmonious and useful
    set. As a data organization, arrays turn
    out to be extraordinarily useful (though
    prolonged contact with APL makes one wish
    for the added presence of more heterogeneous
    structures).

    Style and Idiom

    The virtues of APL that strike the
    programmer most sharply are its terseness
    — complicated acts can be described
    briefly, its flexibility — there are a
    large number of ways to state even moderately
    complicated tasks (the language
    provides choices that match divergent
    views of algorithm construction), and its
    composability — there is the possibility
    to construct sentences — one-liners as
    they are commonly called — that approach
    in the flow of phrase organization,
    sequencing and imbedding, the artistic
    possibilities achievable in natural
    language prose.

    The sweep of the eye across a single
    sentence can expose an intricate, ingenious
    and beautiful interplay of operation
    and control that in other programming
    languages is observable only in several
    pages of text. One begins to appreciate
    the emergence and significance of style
    and to observe that reading and writing
    facility is tied to the development of an
    arsenal of idioms which soon become
    engraved in one’s skull as units.

    The combination of these three
    factors makes it possible to develop an
    excellent set of exercises in the first
    course. These exercises can be large in
    number, cover a wide range of topics and
    vary widely in complexity, and still be
    done during the 16 week period. The later
    exercises can be tied to the design and
    development of a system — a collection of
    procedures that, in varying combinations,
    perform a set of tasks.

    In Teaching Computer Organization

    To appreciate computer science one
    requires an understanding of the computer.
    Once the student understands the computer
    — its macroscopic components monitored by
    the fetch-execute cycle and its apparent
    complexity being controlled by gigantic
    replication of a few simple logical
    elements — he can become aware of the
    important equilibrium between hardware and
    software — the shifting of function
    between the two as determined by economic
    factors — and between algorithm and
    system as determined by traffic and
    variation. Using APL it is straightforward
    to model a computer and to illustrate
    any of its macroscopic or microscopic
    components at any level of detail. The
    programs to perform these functions at
    every level of description remain small
    and manageable — about 40 lines or so.

    The development of software, e.g., a
    machine language assembler, is a task of
    similar difficulty (about 40 lines) and
    hence possible within the confines of a
    first course.

    Word processing and graphics,
    increasingly important application areas
    of computers, can be explored with exercises
    of no great size, e.g., to do
    permuted-index of title lists (~12 lines),
    display, rotation and scaling of composites
    of polygons (~20 lines), graphing of
    functions (~5 lines), etc.

    With (or even without) the use of 2
    or 3 pre-built functions, file processing
    problems such as payroll, personnel
    search, etc. can be written in a relatively
    few lines.

    An important consequence of the
    attainable brevity of these compositions
    cannot be ignored: the student becomes
    aware that he need not be forced to depend
    upon external, pre-packaged and elaborate
    systems to do what are really simple
    programming tasks. Instead of learning a
    new coding etiquette to negotiate a
    complex external system, he writes his own
    programs, develops his own systems tailor-made
    to his own needs and understood at
    all levels of detail by him. If anything
    is meant by man-machine symbiosis, it is
    the existence of such abilities on the man
    side of the “membrane”, for there is no
    partnership here between man and machine,
    merely the existence of a growing, but
    never perfectly organized, inventory of
    tools that the competent can pick among,
    adapt and use to multiply his effective
    use of the computer.

    I cannot overemphasize the importance
    of terseness, flexibility and phrase
    growth to a beginning student. His
    horizons of performance are being set in
    this first course. If he sees a task as a
    mountain then its reduction to molehill
    proportions is itself a considerable
    algorithmic task. While this is true of
    very large tasks, even when using APL this
    conscious chaining of organized reductions
    can be postponed until the student has
    already collected a large number of useful
    data-processing functions, engraved in his
    skull, with which to level mountains.

    It is important to recognize that no
    matter how complicated the task, the APL
    functions will usually be anywhere from
    1/5 to 1/10 the number of statements or
    lines, or what have you, of a FBAPP
    (FORTRAN or BASIC or ALGOL or PL/I or
    Pascal) program. Since APL distributes,
    through its primitive functions, control
    that the other languages explicate via
    sequences of statements dominated by
    explicit control statements, errors in APL
    programs tend to be far fewer in number
    than in their correspondents in FBAPP.

    I can come now to the topics of
    structured programming and program verification.
    Both are important, but their
    content and importance depend strongly on
    the language in which programs are
    couched. A program is well-structured if
    it has a high degree of lexical continuity:
    small changes in program capability
    are acquired by making changes within
    lexically close text (modularization).

    Since APL has a greater density of
    function within a given lexical scope than
    FBAPP, one would expect that APL programs
    will support considerably more structure
    than equivalent size FBAPP programs. Put
    another way, since the APL programs are
    1/5 to 1/10 the size of FBAPP programs,
    the consequences to APL programs of weak
    structuring are less disastrous. Recovery
    from design mistakes is more rapid. Since
    we can only structure what we already
    understand, the delay in arriving at
    stable program organization should be
    considerably less with FBAPP!

    Please note that the emphasis here is
    on the control of propagation of relationships,
    not the nonsense of restricting goto
    or bathing programs in cascades of
    while loops.

    The verification, formal or informal,
    of programs is a natural and important
    activity. It is linked to specification:
    what we can’t specify we can’t verify. By
    specification we mean stating what is to
    be output for a given input. We immediately
    observe that, since specification in
    FBAPP is extremely tedious and unnatural,
    we must use some other language. APL
    turns out to be quite good and has often
    been suggested as a specification language.
    Assertions and verification
    conditions can be much more easily
    expressed as APL predicates than as FBAPP
    predicates. Because of the widespread
    distribution of control into the semantics
    of primitive functions, for which no proof
    steps need then be given, APL verifications
    tend to be, just as their counterpart
    APL programs, shorter and more
    analytic than equivalent FBAPP program
    verifications.

    APL and Architecture

    The form of the FBAPP languages
    follows closely the structure of the
    computers that prevailed during their
    inception. They have the nice property
    that one may often optimize machine
    performance of their compiled programs by
    transforming FBAPP programs to other FBAPP
    programs. Control of the computer is more
    easily exercised with programs in these
    languages than with APL, since the latter
    is more independent of current machines.
    For many programs this control over the
    target machine performance is quite vital,
    and APL couples more weakly to the standard
    computer than does FBAPP.

    However, new array processing computers
    are beginning to appear and, had they
    been standard 20 years ago, APL and not
    FORTRAN would have been the prototype of
    language development. I often wonder at
    what descriptive levels we would be
    programming today had that been the case!
    Since it was not the case, we should not
    throw out or limit APL. We must seek ways
    to match it to the common computer. We
    must design compilers as well as computers
    that fit APL better.

    More Cost-Effective than BASIC

    Cost is an important issue in the
    instructional process. An APL computer
    system currently costs about $10K per
    terminal, about twice the cost of a BASIC
    system. As APL system designs stabilize
    and integrated circuitry costs drop, the
    two figures will coincide at or near the
    cost of a contemporary terminal. However,
    even now the APL system is cheaper than
    BASIC systems for equivalent work loads
    because one can do more than twice as much
    with APL in a given period of time than
    with BASIC!

    Let me mention in closing two additional
    issues regarding the use of APL in
    an introductory computer science course.
    First, most university computer scientists
    don’t really know APL. They haven’t
    appreciated what it means to think in APL
    — to think about parallel operations in
    arrays and to distribute and submerge
    explicit looping among its primitive
    functions. I am reminded of the difficulties
    many math departments experience when
    they try to replace calculus by a fine
    math and combinatorics course as the first
    meat and potatoes offering by the department
    to the university. However at Yale
    we have found that faculty outside the
    software milieu — in theory, for example
    — pick up APL quite fast and prefer it to
    FBAPP. I am sure the same is true elsewhere.

    The second issue is of a different
    kind. I am firmly convinced that APL and
    LISP are related to each other along an
    important axis of language design and that
    acquiring simultaneous expertise in both
    languages is possible and desirable for
    the beginning student. Were they unified,
    the set of tasks that succumb to terse,
    flexible and expressive descriptions will
    enlarge enormously without overly increasing
    the intellectual burden on the student
    over his initial 16 week contact period.

    Above all, remember what we must
    provide is a pou sto to last the student
    for 40 years, not a handbook for tomorrow’s
    employment.



    First appeared in SIAM News, 1977-06.

    created:   2012-10-11 03:00
    updated: 2012-10-17 16:25
    Share. Facebook Twitter Pinterest LinkedIn Reddit WhatsApp Telegram Email
    Previous ArticleSatya Nadella: a masterclass in saying everything while promising nothing
    Next Article E& enterprise brings agentic AI to MENAT
    TechAiVerse
    • Website

    Jonathan is a tech enthusiast and the mind behind Tech AI Verse. With a passion for artificial intelligence, consumer tech, and emerging innovations, he deliver clear, insightful content to keep readers informed. From cutting-edge gadgets to AI advancements and cryptocurrency trends, Jonathan breaks down complex topics to make technology accessible to all.

    Related Posts

    Visual Studio Pro 2026 is now only $49.99 (was $499.99)

    January 24, 2026

    Motherboards frying Ryzen 9800X3D chips: Asus is on the case

    January 24, 2026

    I hate PC monitor names so, so much

    January 24, 2026
    Leave A Reply Cancel Reply

    Top Posts

    Ping, You’ve Got Whale: AI detection system alerts ships of whales in their path

    April 22, 2025636 Views

    Lumo vs. Duck AI: Which AI is Better for Your Privacy?

    July 31, 2025240 Views

    6.7 Cummins Lifter Failure: What Years Are Affected (And Possible Fixes)

    April 14, 2025140 Views

    6 Best MagSafe Phone Grips (2025), Tested and Reviewed

    April 6, 2025111 Views
    Don't Miss
    Technology January 24, 2026

    Visual Studio Pro 2026 is now only $49.99 (was $499.99)

    Visual Studio Pro 2026 is now only $49.99 (was $499.99) Image: StackCommerce TL;DR: Get Visual Studio Pro…

    Motherboards frying Ryzen 9800X3D chips: Asus is on the case

    I hate PC monitor names so, so much

    These Bluetooth trackers are $9 each and work with both iOS and Android

    Stay In Touch
    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • Vimeo

    Subscribe to Updates

    Get the latest creative news from SmartMag about art & design.

    About Us
    About Us

    Welcome to Tech AI Verse, your go-to destination for everything technology! We bring you the latest news, trends, and insights from the ever-evolving world of tech. Our coverage spans across global technology industry updates, artificial intelligence advancements, machine learning ethics, and automation innovations. Stay connected with us as we explore the limitless possibilities of technology!

    Facebook X (Twitter) Pinterest YouTube WhatsApp
    Our Picks

    Visual Studio Pro 2026 is now only $49.99 (was $499.99)

    January 24, 20260 Views

    Motherboards frying Ryzen 9800X3D chips: Asus is on the case

    January 24, 20260 Views

    I hate PC monitor names so, so much

    January 24, 20260 Views
    Most Popular

    A Team of Female Founders Is Launching Cloud Security Tech That Could Overhaul AI Protection

    March 12, 20250 Views

    7 Best Kids Bikes (2025): Mountain, Balance, Pedal, Coaster

    March 13, 20250 Views

    VTOMAN FlashSpeed 1500: Plenty Of Power For All Your Gear

    March 13, 20250 Views
    © 2026 TechAiVerse. Designed by Divya Tech.
    • Home
    • About Us
    • Contact Us
    • Privacy Policy
    • Terms & Conditions

    Type above and press Enter to search. Press Esc to cancel.