Why Cy Tag Isnt My Favourite Programming Language

See SelecticaCxLanguage? for a description of the tagging language to which this page is most certainly not a veiled reference...

DeletionCandidate? yes The above-mentioned language page apparently was deleted long ago. Page SelecticaInc questions whether this page is related to Selectica or not. References below argue about or are ambiguous about whether this is about Selectica, and if so, why the reference is veiled rather than direct. Searching Selectica's site (and indeed, the entire web) for tags like CyElse? or CxElse? from below fail. So what on earth are we talking about here?

If it is impossible for anyone to explain, then as it stands this page is just the remnant of a WalledGarden (see note on SelecticaInc), so then this page should either be deleted, or conceivably edited (and renamed) to be a complaint about the many XML-based languages that blow up simple expressions like (a+b)*c into 10 lines and a thousand characters.

Actually the latter option. I belatedly note that this page was created 3 years ago by someone who moved its contents from XmlProponent.


... from XmlProponent

I suppose that a proponent advocates xml when it seems suitable, and a fanatic invents stupid languages like this:

 <CyIf cond="some condition">
  <CyThen>
output some stuff <CyMoreLogic>...</CyMoreLogic>
  </CyThen>
  <CyElse>
output different stuff <CyMoreLogic>different logic...</CyMoreLogic>
  </CyElse>

</CyIf>

Not to mention that expression evaluation was done like this:
 <CyPlugin function="Expression" Op="+" LHS="my_variable_accumulator" RHS="-1"/>

(You guessed it, there was no "-" operator,... you just have to add negatives. )

[In C, C++, Perl, Python, Java and Visual Basic, you could just write (a+b)*c. In cy tags, you'll need at least 4 lines of fluff to say this. I bet most assembly language programmers can do (a+b)*c in two lines - and that it will be more understandable in assembler than using a pair of nested plugin expressions in cy tag.]

I discovered the same bug in 41 different places in a single file... Then I found the same bug a few times in another file... (Ever heard of OnceAndOnlyOnce?)

I tried to shorten the code - then I realised just how long the expression for calling a "subroutine" would be. (You have to include a separate element for every parameter...) Then I found the subtle scoping problems with variables, introduced by element nesting.

Business logic, textual content and presentation were never supposed to be woven together with this sort of rubbish - you knew that, but you'd expect even those most resistant to commonsense to twig something was wrong when a number of these files topped 200k.

Finally, proof of the shallowness of the design came when I noticed that we had to buy a custom-written plugin to output symbols like "&" properly. (This tool was originally conceived to write interactive web pages for e-commerce sites.)

I'd like to meet the person who thought this up and lock them in a pair of stocks. Then I'd sell tomatoes and rotten cabbage to incandescent programmers fresh from maintaining the verbose, underpowered crap that this person has foisted on the world.

Oh, you've seen XSL, have you?

At least XSL is well-formed XML. We're generating XML in this brain-dead scripting language. It has the verbosity of XML, but the actual scripts you write can't be valid... e.g.:

<MyOutputTag id="<CyOutputVar name="my_id"/>" />

The best bit comes when you're required to use this language to inject JavaScript into HTML output from this... That's a good way to spend four days testing a build. (Funny how all the test cases would take at least two weeks to run by hand...) HttpUnit, nor CanooWebTest are going to save you when you have business logic in client-side JavaScript.

Options - so what's a PragmaticProgrammer to do?


-- old muppet show joke (Zoot (the saxophone player) said it)


Gruesome isn't it? I wish we could just be honest and admit we need a real programming language and a separate templating language... maybe we could use J2EE taglibs.

If "pragmatic programmers" care about their work then some of us will have to practice "professional detachment" like doctors and nurses, so that we can survive.

-- HarassedHacker

Who invented this mutated-LISP monstrosity anyway?

Disclaimer: This page describes the cy tag language, and not the cxtags used by Selectica (http://www.selectica.com "don't delay, buy today!!!") in their toolset. Any similarity to their tagging technology is purely coincidental.

Disclaimer on the disclaimer: There isn't any sarcasm or irony on this page. Any perceived use of sarcasm or irony on this page is in the mind of the beholder. Especially if you are a lawyer acting for Selectica.

This page would be more useful to readers if it were named after the actual programming language or after the actual vendor. Concern about lawsuits for saying "XXX sucks" is probably unnecessary; if it were, Microsoft would've bankrupted WardCunningham years ago.

Also, this page would be more useful if the name weren't so bloody cumbersome. Perhaps SelecticaCxLanguage??

(This page is named after BrianKernighan's hilarious WhyPascalIsNotMyFavoriteProgrammingLanguage.)

Is Pascal really the name of the language, or is it actually "Pascab", and Kernighan was just worried about getting sued?

I think Kernighan could take Wirth in a bar fight.


CategoryStory


EditText of this page (last edited August 31, 2005) or FindPage with title or text search