What is CrossWise?
The explosion of the internet, and the outlandish power of today's CPUs has brought a variety of interpreted languages, all with similar high-level features, to an industry that used to laugh at interpreters as being hopelessly inefficient.
I wrote this site because I found myself learning several programming languages needed in my career, and I was constantly having to shift gears between one job and another. It was annoying, but I could do it as long as I stayed in one job and the number of languages I used was kept to a minimum.
I needed a way to compare these languages side-by-side and fix in my mind how each one worked, then I could memorize them all.
A New Kind of Documentation
CrossWise is a database of language details, organized by concept.
Traditional tutorials are organized by difficulty and task; each one is a somewhat random walk through the features. They are good for beginners, because the goal is to make the reader immediately successful by spelling out exact actions the user can replicate. Unfortunately, each tutorial is handcrafted, and has no relation to any analogous tutorial in a different language, so it's hard to see language differences in detail if you're trying to quickly get up to speed in a different language.
Traditional references organize the facts of a language by chapter and verse. Unfortunately, the chapters chosen and the verses recited are cut by the author, and influenced by the language. Most authors are faithful to their language and rarely write documentation for a potential replacement language. Analogy references just don't exist.
And, often, the language itself dictates a different organization and terminology. To make a hashtable in Ruby, for instance, you make an object of class Hash. In PHP, they are called 'associative arrays', because you can use an array like a hashtable. As such, you look in the Arrays chapter to learn about hashtables in PHP. In JavaScript, however, you can attach hash entries to any object, so you would read the Objects chapter to learn about those hashtables. And in Python, hashtables are called 'Dictionaries'.
CrossWise is an attempt to deal with this madness. We have a chapter (called a Requirement) named Hashes. That chapter discusses JavaScript Objects used as hashes, PHP Arrays used as hashes, and Ruby Hashes and Python Dictionaries. The individual details of each language are organized into rows, compared side-by-side, so you can see how to loop over each entry in a hash, in PHP and Ruby and JavaScript, all side-by-side.
What it is Not
This work does not replace a reference for the language and its libraries. Only that reference gives you all of the details of the language (or at least it should). Unusual features that only exist in one language or another, are described there.
This work does not replace a tutorial. If you are new to programming, you should look elsewhere, as this site is devoted to experienced programmers who already know at least one of the languages we support.
This work does not describe how to install the language, or detail the venues under which you can use it; these change over the months and years and you should go to the language developers themselves for such information.
This work is light on philosophy, language design and critique. If you want to see which language is 'better', look elsewhere because there are plenty of resource on the net to read about that. If you want to read a philosophical essay on the right to inherit from multiple classes, and the brave men who died to give you that right, I'm sure a language manual or academic paper can fill that need.
![[Main Page]](/cw/skins/common/images/CrossWiseLogo.jpg)