2009-09-03

emacs 23.2 trying to support DOS!

perm url with updates http://xahlee.org/emacs/emacs_supporting_DOS.html

Problems of Emacs Supporting Obsolete Systems

Xah Lee, 2009-09-03

Emacs people are trying to make emacs still working on DOS, a technology that has been practically obsolete for about 10 or 15 years.

http://lists.gnu.org/archive/html/emacs-devel/2009-08/msg01214.html

What a idiocy.

The problem is that nothing you or me can do about it. If you join the dev list, even if you are recognized as having made major contributions to emacs, your opinion or suggestion on this will be debated in the list. (in emacs dev community, and probably many FSF dev communities, you are nobody, and can never be proven otherwise, unless you are Richard Stallman, who has been out of touch with coding for perhaps 15 years) Typically, at the end, nothing will be done, or some other compromised botched up shit will be taking place.

The support of obsolete technologies do harm. In this case, forcing file names to DOS's 8 chars plus “extension” makes them less readable, and also of course takes a lot time to re-code and debug CEDET. Short files names strains emacs lisp's many deficiencies of no name space, no lexical scope, and no qualified module/packaging support.

This is just one example. In emacs, and in general in unix communities, the mentality of backward compatibility is to a degree harmful, at the cost of harming any progress of the software. There are lots of other examples in emacs too. Quick examples off my head: in emacs manual, there are lots verbiage to obsolete systems that a average professional programer never heard of today. This harms the efficiency of the manual. Also, somewhere in elisp manual it suggest programers to use file names not longer than 32...

In practice, nobody uses those systems, maybe 0.0001% of those in computing industry. And if the world has say 10 people using such obsolete systems, and if one of them made a vocalization, then it'll be be supported. (due to the we-all-democratic Freedom and Equality mentality fuck commonly implicit in open sources.)

Any existing DOS users, for whatever reasons or history studying reasons or what not, emacs 22 is still there.

2009-08-31

Math Notations, Computer Languages, and the “Form” in Formalism

perm url with updates: http://xahlee.org/cmaci/notation/index.html

Math Notations, Computer Languages, and the “Form” in Formalism

This page is a collection of essays and expositions on the subjects of nomenclature and notations in math and computer languages, in the context of facilitating human communication and theorem proving systems.

Most of these essays here are originally from email, blogs, or rants. They are not of publication quality, and they are not a coherent exposition the subject. Here's a very brief summary of of these essays's central thesis:

• Traditional math notations are very inconsistent. Edsger Dijkstra is a leader in a movement of what's called Calculational Proofs. That is, using a notation that is consistent and facilitates the calculation aspects when doing math by humans.

• Today, especially since 1990s, tremendous advances are made in computer algebra systems and theorem proving systems. In these languages, a coherent syntax, grammar, are needed for math expressions.

• In computer algebra or theorem proving systems, they are intimately tied to the math philosophies of formalism and logicism. In a sense, formalism and logicism today are tied together as a single subject, and using computer languages as foundation.

• Math expressions/syntax in computer languages are intimately tied to math notations for human reading. (e.g. Mathematical, MathML are technologies that combine the two.)

• The syntax and grammar of today's computer languages, such as Java, C, Python, SQL, Lisp, are ad-hoc and their communities have little understanding of the knowledge gained in math related fields such as computer algebra or theorem proving languages. (This applies to functional langs such as Haskell as well, but to a lesser degree.) On the other hand, mathematicians in general are illiterate about programing or using computer languages.

All of the above considered together, computer language designers and mathematicians, should be made aware of these issues, so that when they design or use computer languages, may it be math oriented or not, the language's syntax and grammar can move towards a consistent syntax system with solid foundation (as opposed to ad-hoc), and such language should have build-in markup or simple mapping to 2-dimensional notations for human reading (such as done with Mathematica or Semantic MathML), and this computer language should be in fact as a basis of theorem prover or computer algebra system (as in OCaml, Haskell, Mathematica). The languages of computer algebra and theorem prover would in fact merge together into one single subject if it is not already slowly happening today.

Progress in the above issues are made in different fields but there are little unification going on.

For example, there's Edsger Dijkstra's Calculational Proofs movement. It improves math notations towards consistency and formalism. However, people in Calculational Proofs movement are mostly math pedagogy community i think. They are not programers interested in computer languages, nor logicians interested in math formalism, or industrial and commercial organizations interested in math notation representation systems.

There's the computer algebra community, such as Mathematica, Maple, Matlab, which requires a syntax and grammar for mathematical concepts. There's the theorem proving community, such as OCaml, Coq, HOL, which not only requires a syntax for math concepts, but also made major understanding about math as a system of forms, i.e. formal systems. Both computer algebra and theorem proving systems require math notations and computer language syntax that are consistent and can represent math concepts. However, the 2 camps are largely separate communities. For example, there is as far as i know no tool that is both a practical computer algebra system as well as a theorem proving language.

Common computer languages, such as C, Java, Python, requires a good syntax, parsers, and compilers, but their community, including computer scientists and programers, are usually illiterate in typical topics of of mathematics proper. Functional languages, such as Scheme Lisp, APL, OCaml, Haskell, are more based on logic foundations (lambda calculus) but their syntax and grammar has little to do with the math notations as a logic or formal system. (these languages do not have a formal spec in the sense of Formlism, i.e. transformation of forms. In fact, almost no languages has a formal spec, formalism or not.)

There's math notation representation needs, such as TeX, MathCAD, MathML, Mathematica. These are typically commercial organizations in the computing industry. They can render math notations. In the case of MathML and Mathematica, the language also represent the semantic content of math notations. These two made major understanding about the relation of math notations and computer languages, but they in general have little to do with formalism or theorem proving. (with some exception of Mathematica)

Calculational proof notational system, Computer algebra systems, theorem prover languages, formalism and logicism as foundation of mathematics, functional languages, and computer languages in general, mathematics and its notations, all are in fact can be considered as a single subject with a unified goal. All the technologies and movements exist, but today they have mostly not come together. For example, Microsoft Equaton Editor, TeX, and various other tools does well with math notation rendering. MathML has both representational and semantic aspects (OpenMath is a new group that focus on semantic aspects), for the purpose of rendering as well semantic representation. Mathematica is a computer algebra system for solving arbitrary math equations, that is also able to represent math notation as a computer language, so that computation can be done with math notation directly. However, the system lacks a foundation as a theorem prover. Theorem provers such as OCaml (HOL, Coq), Mizar does math formalism as a foundation, also function as a generic computer language, but lacks abilities as a computer algebra system or math notation representation.

Notations

Jargons

Math

Harm Of Bad Terminologies In Computing Languages

Harm of Mixing Concept of Syntax and Formatting

Applications of Regular Syntax

References

2009-08-30

SubVersion Basics

perm url with updates: http://xahlee.org/UnixResource_dir/svn.html

SubVersion Tutorial

Xah Lee, 2009-08-28

This page is a quick start tutorial of using SubVersion (SVN), a version control system.

Basic Check Out, Commit

What commands are available?

Type “svn help”.

How to checkout a project?

cd to a directory where you want the files to be. Then do for example:

svn checkout svn://vmm.math.uci.edu/transvections
svn checkout svn://vmm.math.uci.edu/
svn checkout https://emacs2010.googlecode.com/svn/trunk/ ErgoEmacs --username xahlee

How to commit a change?

Once you checked out, made your modifications, then you can check back in (commit your changes). To commit, cd to the working dir, then do:

svn commit -m "some one-line message summary of what you changed"

How to Add or Remove a dir or file?

If you created new files in your working copy and committed it, that won't work. You will need to run a svn command first to add or remove a file or dir, then commit.

To add, use the add command:

svn add ‹file name›

To remove a file or dir, use the rm command first:

svn rm ‹file name›

Once you are done adding or removing, then you need to do a commit.

How to update your working dir?

Cd to your working dir and use the “svn update” command.

svn update

Creating Projects

How to create a project?

First, create the svn root dir using this command:

sudo svnadmin create /usr/local/svn_rooty

You need do the above. It is not merely creating a dir with “mkdir”.

The “/usr/local/svn_rooty” is the dir you want svn to hold the repository.

To import a project, do:

sudo svn import /Users/xahlee/proj_luv file:///usr/local/svn_rooty -m "Initial import of my lovely project"

the first arg is the path of your folder, the second argument is a url for the svn root path. The “-m” is a comment.

Then, modify the file

/usr/local/svn_rooty/conf/passwd

To contain for example these lines:

[users]
xahlee=xyz
dick=xyz
bob=xzy

The left side is user's login name, the right side is password. This is for running svn as a stand-alone server.

modify the file “/usr/local/svn_rooty/conf/svnserve.conf” to contain these lines:

[general]
anon-access = read
auth-access = write
password-db = passwd
realm = transvections

How to start the stand-alone server?

First, change to svn user.

sudo su svn

Then, run the following command to launch it, while you are “svn” user.

svnserve --daemon --listen-port=3091 --root=/usr/local/svn_rooty 

The “--daemon” is for stand-alone, the “--root=” specifies root, so that in the checkout command it doesn't need to specify the full path.

The default listening port is 3690

What should be the file permissions?

The following dir needs to be owned by “svn” user.

db/
db/revprops
db/revs
db/transactions
db/write-lock