Here's a contrived example to demonstrate the value of sigils:
/* in version x of SFL (Sigil-Free Language) */
school = get_school("Saint Fred's School For Girls");
class = get_class(school, "Agricultural Studies", 12);
yield = get_agricultural_yield(class, "Turnips", 2011);
printf("The Year 12 Ag Studies class produced %d turnips in 2011", yield);
Now we try upgrading to version x+1 of SFL, which adds object-orientation and concurrency (it was a BIG upgrade!). Now three of the lines in that four-line program contain errors, because "class" and "yield" are no longer valid variable names, having been turned into keywords.
In a language with sigils, that's no problem. It also makes it easier (therefore faster) for syntax highlighting to spot where variables are used, without needing a full dictionary and an exact version number - that makes a difference for me as an Emacs user especially.
In a language with sigils, that's no problem. It also makes it easier (therefore faster) for syntax highlighting to spot where variables are used, without needing a full dictionary and an exact version number - that makes a difference for me as an Emacs user especially.