As is noted by the comic, the use of sigils to indicate types of variables varies between programming languages, from strict enforcement in languages like Perl, to their complete absence in languages like C++ (but see Hungarian Notation). The comic notes that the use of sigils seems to be cyclic, especially if you count things like hashtags as extensions of the pattern.
The title text describes the two competing influences responsible for the cycle: The first impulse finds sigils useful to elucidate the type of the variable, especially when variable names are not very descriptive, while the latter impulse notes that descriptive variable names are much more useful for that purpose, especially in extensible languages where the built-in types form only a small part of the type system.
Shouldn't it be QBASIC$ (or QBASIC%), since in Basic the sigil is attached to the end of variable names? --18.104.22.168 13:19, 20 December 2013 (UTC)
Could not find where categories can be added, here's a list of suitable categories: Charts, Computers, Comics presenting a compromise Internet, Programming 22.214.171.124 13:32, 20 December 2013 (UTC)
This comic de-emphasizes the value of sigils. It's very ironic that Randall chose C++, a language with symbols, to exemplify plain words. And C is a reason for not naming technologies after letters. Same with X. You have to search for "C programming language" or "X window system." It's very helpful to distinguish things with unique sigils, especially in this current age where we depend on full-text search. Just look at my login ID, tbc. I have been tbc on the Internet since 1981. But I eventually had to go by tbc0 (e.g. on Twitter) because tbc isn't unique enough. Google was named after 10^100 (an incomprehensibly large number reflecting their ambition). But that number is spelled googol. They own their spelling. Brilliant. Consider examples: iMac, iPhone iPad, Yahoo (a little weak), Facebook (they own that word). It's all about branding. Google Kleenex or Xerox and you'll see that they're excellent sigils. The problem is, those terms have become generic. Their brand is a little weaker for it. Finally, on Twitter, @ and # unleash powerful features. — tbc (talk) 15:01, 20 December 2013 (UTC)
- C++ uses symbols, but it doesn't use one to denote that an identifier is a variable (like PHP) or the type of an identifier (like early BASIC, Perl, and arguably Twitter). And when I search for X, it's either X11 (the protocol) or Xorg (the widely used server implementation). And Barney Google had it first. --Tepples (talk) 15:55, 20 December 2013 (UTC)
Any way we can expand on the history of programming (if applicable)? Did these languages become popular in a certain order, or were they developed as a response to one another? Or is this comic simply Randall's journey through programming, not specifically tied to the popularity (or development) of certain coding languages? -- 126.96.36.199
- They pretty much appeared in the order listed. I don't think they represent Randall's experience (or really anything else); the differences in how they handle variable names/types is mostly a function of their different purpose, and Randall picked those specific examples simply to fit the timeline (e.g. sh and ksh have the same syntax as bash, but since they came before QBasic they would break the pattern). 188.8.131.52 (talk) (please sign your comments with ~~~~)
The google mentioning isn't explained well enough imo. Instead if just saying "they have a service called google plus", it should be told how the + sign is used throughout the service, like every other instance in the article. I may do the edit myself, but it's not likely. 184.108.40.206 15:26, 20 December 2013 (UTC)
"Ironically, it is the name if the language itself that includes symbols."
It's not very ironic. Variable names don't include symbols, but commands do. This statement should be rewritten.
int c = 0;
c += 1;
c = c + 1; 220.127.116.11 (talk) (please sign your comments with ~~~~)
- I find it ironic that "C++" in a statement would be interpretted as "C" and only post-incremented (i.e. only incremented when next referenced). Meaning "C++" is effectively the same as "C", in its own context. They should have named it "++C", if they wanted to indicate that it was itself improved upon the original value of C. ;) 18.104.22.168 16:37, 20 December 2013 (UTC)
- This is an incorrect interpretation of the statement c++. c++ as a standalone statement, on a line by itself, will result in c being exactly one greater than before the statement (the value stored in that memory location will indeed be one greater); using prefix or postfix ++ in this context is functionally equivalent and most people just prefer using the postfix version. Where the distinction between the prefix and postfix versions come into play is in more complex statements where the operator's return value is not ignored. For example,
- int c = 1;
- int x = c++;
- x will be initialized to 1 because the postfix ++ operator returns the value of c before it was incremented, but the value stored in c will be 2 regardless of further reference. If, instead you initialized x using the prefix version, ++c, x would be 2 because the prefix version of ++ returns the incremented result. (Side note: it's often considered bad practice to rely on the return value of the increment and decrement operators.) 22.214.171.124 20:58, 20 December 2013 (UTC)
- When not specifically using the post or pre incrementing nature of c++/++c, and just using it as shorthand for c = c + 1, then ++c is demonstrably superior to c++ as there are 2 fewer machine code operations involved 126.96.36.199 (talk) (please sign your comments with ~~~~)
- No, I stand by what I say. I actually agree with your code, but freely parsing "I will use C++ for this project", as a phrase (at least the first time you utter it) might so easily be a statement that gives a direct result equal to "I will use C for this project". (It helps to have just the right geeky sense of humour, of course.) 188.8.131.52 21:56, 20 December 2013 (UTC)
- Oh, I assure you, I am quite geeky. I could, for instance, argue that you're mixing the grammars of English and C++, a natural language and context sensitive language. 184.108.40.206 22:21, 20 December 2013 (UTC)
- Personally, I see no problem. When you start programming in C++, you are writing code which is effectively C. Only when you program in C++ longer time, the code will improve. -- Hkmaly (talk) 12:13, 21 December 2013 (UTC)
- Wrong, as "I will use C++" actually does mean "I will use C++", because the moment you finished uttering it (command break), C indeed becomes one point greater ;) 220.127.116.11 06:29, 24 December 2013 (UTC)
- Regarding the name of the language, Bjarne Stroustrup himself has said, "Connoisseurs of C semantics find C++ inferior to ++C." Elsbree (talk) 07:03, 26 December 2013 (UTC)
- It's still not ironic that the name includes symbols. I removed the word 'ironically', it doesn't make sense. 18.104.22.168 (talk) (please sign your comments with ~~~~)
Extending the first comment above: Since the strip is known for being rather technically strict, it's odd that it says "word ... will START with", yet QBASIC variables END with symbols, and Google+ ENDS with a symbol.22.214.171.124 18:11, 20 December 2013 (UTC)
- That's not a problem with Google, because the sigil comes at the beginning there. But it's a problem with QBASIC, all right. —TobyBartels (talk) 05:01, 21 December 2013 (UTC)
Although C++ doesn't force you to use sigils, by convention programmers would still use sigils. Conventionally, variable names were named nCount, or fCost. The first character in the variable name indicated the data type. This convention was extended by Visual C++, and it started naming interfaces starting with I. Eventually, this convention fell by the wayside because IDEs started getting smarter and you would get code complete and some sort of information via a tooltip that eliminated the need for the Sigil --126.96.36.199 18:16, 20 December 2013 (UTC)
- Hungarian Notation (and similar schemes) aren't "sigils" (according to wiktionary, a sigil in this context is non-alphanumeric, and the comic would seem to imply this also). --188.8.131.52 22:45, 20 December 2013 (UTC).
I think this explanation could do with some better explanation of the programming concepts it describes. Not every xkcd reader will be familiar with programming languages. --Mynotoar (talk) 21:20, 20 December 2013 (UTC)
- I've expanded the introduction for now to more fully explain programming languages and variables - it wasn't very clear to non-programmers - but I think the rest could use some work too. --Mynotoar (talk) 18:29, 21 December 2013 (UTC)
If "C++" "started" with a symbol, then I would agree that it is ironic that it appears in the graph in the position that it does. Since it does not, however, I must dispute your use of the word "ironic". 184.108.40.206 03:14, 21 December 2013 (UTC)
How could 'see plus plus' be pronounced any other way? 220.127.116.11 11:15, 23 December 2013 (UTC)
- 'see add add'? --Mynotoar (talk) 22:33, 26 December 2013 (UTC)
- 'sea-cross squared'? 18.104.22.168 (talk) (please sign your comments with ~~~~)
- Dispute about the explanation
The explanation is very misleading. Why on earth does the explanation begin with a big chunk of talk about variables?
The comic strip is entirely about probability that a word you encounter will begin with some sigil. Therefore, the explanation should be about WHY the chart is plotted the way it is -- why does QBASIC have such a high probability, and why C++ does not. Everything else will just confuse anyone who comes to this page.--22.214.171.124 15:36, 8 January 2014 (UTC)
- I did move this discussion to the bottom where it belongs to; new statements should not be posted at the top. And back to your comment: Sigil (computer programming) is very well explained at the beginning, read the Wiki article. --Dgbrt (talk) 21:21, 8 January 2014 (UTC)
- Technically, the strip is about the probability that a word you type will begin with some sigil. Since there's a change you'll be programming as you'll type, there's sense in explaining the programming context. I'll make it clearer by exposing my unbiased explanation of the strip:Early on, Randall programmed in QBASIC, so the words he typed then had a higher chance of containing sigils. Later on, he programmed in C++, so the chances decreased (in my opinion, did not reached zero due to directives). Later on, he programmed in Perl and wrote Bash scripts, so the chances increased. Later on, he programmed in Python, so the chances decreased again. Later on, he used Google+, Twitter and hashtags in general, so the chances increased again. 126.96.36.199 03:10, 9 February 2015 (UTC)