A collection of notes on programming languages.
We use software because we have goals to achieve and things to do. The software we use is coded by programmers who have their own goals, sometimes these goals overlap with ours, over time these will diverge. The tools we depend on grow features we don't use or understand, introducing bugs that will prevent us from reaching our goals.
We have the choice of trying to understand the code and fix it, we have the choice of trying another program, and we have the choice of coding the software ourselves. All but the last path mean endless seeking, evaluating and further deviation from our goals.
code it yourself manifesto
- We implement it according to our own goals.
- We make mistakes and learn from them.
- We learn how the tools we depend on need to work.
- We gain a deep understanding of our problem domain.
- We still embrace sharing of ideas and code.
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.
The concept that programming is something that you need special education to do is not right. It is something that is promoted by the priesthood.
Chuck Moore, Color Forth
6502 Assembly is the language used to program the Famicom, BBC Micro and Commodore 64 computers.
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 Uxn virtual machine. To see a simple example of a complete 6502 assembly project, see Spacetime.
Forth is a programming language that uses two stacks and a dictionary of words.
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.
I use a custom version of the
lbforth.c REPL, modified to work on Plan9 ARM which can be downloaded here. To experiment with a subset of Forth in the terminal, have a look at Firth and Uxn, for a graphical exploration try Postscript which also follows the Reverse Polish Notation.
Lisp is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation.
Lisp follows the “Prefix Notation”, where operations use the format
(* 5 5) instead of
(5 * 5). For example, if we wanted to add a lot of numbers together, we conventionally do
2 + 3 + 4 + 6 + 11, in Scheme we would instead write
(+ 2 3 4 6 11), which is much more concise.
Pascal is an imperative and procedural programming language designed for teaching students structured programming.
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.
C is the native language of Unix. It has come to dominate systems programming in the computer industry.
Work on the first official C standard began in 1983. The major functional additions to the language were settled by the end of 1986, at which point it became common for programmers to distinguish between "K&R C" and ANSI C.
One good reason to learn C, even if your programming needs are satisfied by a higher-level language, is that it can help you learn to think at hardware-architecture level. For notes specific to the Plan9's C compiler, see Plan9 C.
Postscript is a programming language that was designed to specify the layout of the printed page.
The Postscript language uses a postfix syntax similar to Forth. The Dotgrid language was designed to be a subset of the Postscript toolkit.
Hypertalk is the programming language used in the mac software Hypercard.
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
Unix is a family of computer operating systems that derive from the original Unix from Bell Labs.
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.
incoming(2): language assembly
Last update on 14F06, edited 2 times. +4/9fh