A collection of notes on programming languages.
Software freedom is the freedom to run the program as you wish, for any purpose, to study how the program works, and change it, to redistribute copies and your modified versions so you can help others.
Improvement means deterioration.
- Prototype before polishing. Get it working before optimizing it.
- Separate policy from mechanism, separate interfaces from engines.
- Write simple modular parts connected by clean interfaces.
- Design programs to be connected to other programs.
- Write programs to write programs when you can.
- Design for the future, because it will be here sooner than you think.
- In interface design, always do the least surprising thing.
- When a program has nothing surprising to say, it should say nothing.
- When a program must fail, it should fail noisily and as soon as possible.
- Write big programs only when it is clear by demonstration that nothing else will do.
- Consider how you would solve your immediate problem without adding anything new.
- Richard Miller
- Rob Pike
- UNIX translation
- The Humble Programmer
- Lisp Eval
- The History Of T
- Build Your Own Lisp
- Interesting Programming Languages
- Pascal and Simplicity
- The 6809 Emulator
A binary number is a number expressed in the base-2 numeral system, which uses only two symbols: 0 and 1. Each digit is referred to as a bit. Because of its straightforward implementation in digital electronic circuitry using logic gates, the binary system is used by almost all modern computers and computer-based devices.
Assembly is any low-level programming language in which there is a very strong correspondence between the instructions in the language and the architecture's machine code instructions. An assembler translates the assembly language syntax into their numerical equivalents.
This page focuses on the assembly language for the 6502 processor, targetting the Famicom. Prior to learning assembly, I would recommend learning the basics of binary numbers. To explore a system with minimal instructions set, try the Gyo virtual machine. To see a simple example of a complete 6502 assembly project, see Spacetime.
A Forth environment combines the compiler with an interactive shell, where the user defines and runs subroutines called words. Words can be tested, redefined, and debugged as the source is entered without recompiling or restarting the whole program.
Forth programmers enjoy the immediacy of an interpreter while at the same time the performance and efficiency of a compiler. Forth is used in space applications such as the Philae spacecraft.
I use a custom version of the
lbforth.c REPL, modified to work on Plan9 ARM which can be downloaded here. A graphical way of learning Forth is to play with Postscript which also follows the Reverse Polish Notation.
My main interest in the language is building little macintosh applications such as graf3dscene, and exploring the THINK Pascal 4.0.2 environment. I have saved many example files in the Macintosh Cookbook repository.
THINK Pascal is a development system for the Macintosh, released by Think Technologies in 1986 as Lightspeed Pascal. Think Technologies was bought by Symantec, and the name was changed to Think Pascal. The last official update came 1992, and the product was officially discontinued in 1997.
Hypertalk can be emulated easily using a Macintosh emulator, the default Hypercard canvas size is 512x342.
For most basic operations including mathematical computations, HyperTalk favored natural-language ordering of predicates over the ordering used in mathematical notation. For example, in HyperTalk's put assignment command, the variable was placed at the end of the statement:
put 5 * 4 into theResult
This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.
Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input.
- NIH Syndrome: Or Not Invented Here, to avoid using already existing products, research, standards, or knowledge because of their external origins or costs.
- Anti-Pattern: A common response to a recurring problem that is usually ineffective and risks being highly counterproductive.
- Worse Is Better: The idea that quality does not necessarily increase with functionality. Software that is limited, but simple to use, may be more appealing to the user and market than the reverse.
- Dogfood: A way for an organization to demonstrate confidence in its own products, by using the product itself. A way to test it in real-world usage, acting as quality control and a kind of testimonial advertising.
- Stovepipe: A system that has the potential to share data or functionality with other systems but which does not.
- The Cathedral model: The source code is available with each software release, but code developed between releases is restricted to an exclusive group of developers.
- The Bazaar model: The source code is developed over the Internet in view of the public.
- XY Problem: You want to do X, and you think Y is the best way of doing so. Instead of asking about X, you ask about Y.
- Second System Effect: The tendency of small, elegant, and successful systems, to be succeeded by over-engineered, bloated systems, due to inflated expectations and overconfidence.
- Benevolent Dictator For Life: A open-source software development practice where project founders retain the final say in disputes or arguments within the community.
- Yak Shaving: Refers to a task, that leads you to perform another related task and so on, and so on — all distracting you from your original goal.
The Postscript language uses a postfix syntax similar to Forth. The Dotgrid language was designed to be a subset of the Postscript toolkit.
incoming(2): language assembly
Last update on 20B05, edited 26 times. +68/153fh