GithubHelp home page GithubHelp logo

egor7 / buddy Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tavmem/buddy

1.0 0.0 0.0 127 KB

early A interpreter with buddy system space management.

License: GNU General Public License v2.0

C 99.49% Makefile 0.51%

buddy's Introduction

The focus of this repository is the version of the interpreter portion of the A+ system distributed by Morgan Stanley that existed when Arthur Whitney left MS (to cofound Kx Systems). In particular, it shows the buddy space management system that was eliminated in later versions, and shows more of Arthur's unique coding style.

Note that this version is 32-bit, and dates from 4/30/1993. An open source 64-bit version was not released til 3/27/2008.

Why is this relevant?

  1. "Notation as a tool of thought" (Ken Iverson). Arthur Whitney is a talented implementor of computer languages, eg., a version of Scheme, a port of IPSA APL to limited hardware, A+, k, KSQL, q, KDB+, and shakti. The notation he uses is significant.

  2. The study of Domain Specific Languages: Ostensibly Arthur uses C. Actually, he uses the C preprocessor to create a terse language of his own. The style is referred to as the "ATW_VERSION" in the file a/b.c.

  3. A study of ATW-C directly carries over to k, q/KDB+, or shakti. The style of using very short functions is helpful. Supposedly, Arthur never bothered to learn GDB (or other debugging tools normally used with C). You would not use such tools with q/KDB+ either. Comments are sparse (or nonexistent).

  4. Code as Poetry. Read, study, and enjoy. An extreme example of contrasting styles is contained in file a/b.c. There are 2 versions of the buddy memory allocation system. The "ATW_VERSION" has 11 lines. The second is in well documented traditional C (almost 750 lines).

Why does the code compile on a 32-bit Linux, but not work? (See issues)

Again, it may have to do with file a/b.c. The traditional C version in a/b.c has a comment stating that "these procedures depend critically on the memory configuration of the computer performing these procedures". The code in a/b.c is tuned for Solaris on Sun workstattions. It undoubtedly needs modification to work with Linux or Windows or macOS on Intel processors. Another strong possibility is that there are typos that remain (see partial fix to issue 3). This entire repository was keyed in from source documents.


A+ and the A+ Reference Manual are Copyright Morgan Stanley Dean Witter & Co. They are distributed under the GNU General Public License and the GNU Free Documentation License and available from http://www.aplusdev.org/. See the file LICENSE and the appendix titled GNU Free Documentation License of the reference manual regarding the terms under which A+ software and documentation is being made available.

buddy's People

Contributors

engr110 avatar tavmem avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.