Build Release
Web Site
__Cadence SKILL
 IDA Pro

Cadence SKILL

home » developer » cadence-skill

Although it may seem a bit confusing at first, there are actually two separate languages available on the Cadence platform; the first and older of the two is commonly called Cadence SKILL (or just "SKILL") while the second, commonly called "SKILL++" is newer. Both SKILL and SKILL++ are LISP variants, or better said, they are both parts of the LISP family of languages. Though the two languages work well together and are remarkably similar, they do have subtle and important differences.

Cadence SKILL is a "LISP-2" language which is a overly technical way to say it has two separate name spaces which makes it very similar to CommonLisp (the "CommonLisp" programming language is just one of the many members of the LISP family of languages).

Cadence SKILL++ is a "LISP-1" language which, again, is an overly technical way to say it has a single name space which makes it very similar to Scheme (the "Scheme" programming langage is, as you would expect, just another member of the LISP family of languages).

The primary syntactical difference between Cadence SKILL/SKILL++ and other LISP variants is SKILL and SKILL++ mistakenly have some degree of support for infix notation. This means those who only have experience in C-style languages can often still make sense of SKILL and SKILL++ code if it is written with the infix notation. Nearly all of the Cadence documentation is written using infix notation in the examples but to be honest, the reasoning behind doing so is entirely flawed.

There is only one reason why infix notation exists within SKILL++ and SKILL; it was a decision made by the Cadence marketing department to make these languages look more familiar to linguistically impaired programmers. Infix notation is nothing more than a crutch for the lame. All decent programmers with an understanding of the power available in LISP variants would never intentionally use infix notation for anything.

If you come from a background of other types of C-Style programming and are just starting to learn Cadence SKILL/SKILL++ coding, do yourself a favor and always use prefix notation. Yes, I expect you to spend a few years hating me for this advice but in the long run you will eventually learn and understand why. LISP variant languages are not new, fashionable or favored, instead they are simply formidable. There are many solid technical reasons why LISP variants are used for solving the most difficult and demanding programming problems and believe it or not, a good deal of thier power is tied to the use of prefix notation.

Copyright © 2006 DesignTools.org