Thursday, March 18, 2010

Cloud Computing!

Cloud computing is another hot topic these days in the computer science world. Many companies such as VM Ware and Microsoft are investing heavily in this field. Cloud computing is an additional layer of abstraction that has many important functions. Many are calling it the next greatest advancement in the field and the phrase, "clouds are everywhere" is appearing all over the internet.

Cloud computing allows companies to purchase their software and information as they do electricity. Many companies, such as amazon, receive heavy traffic during certain times of the year, sales, or perhaps during popular item releases. Under the traditional paradigm, they would have to be prepared to handle this traffic load during all times. This is wasteful and rather expensive. With cloud computing they are able to use less and pay less during these slower times, but still be able to handle the surplus during the other periods.

Hot stock tip alert: BUY VMW (VM Ware) it is skys the limit for cloud computing. Sources report that the market has only begun to grow. Most companies that are currently using these products are only using them for a small portion of their software needs. It is possible for this company and its competitors to increase their income substantially without signing a single additional customer. However, the great thing is that these companies are gaining more clients! This is an exciting field that will surely continue to grow.

Monday, March 1, 2010

Quines!

So, this past week I was reviewing various computer science interview prep pages. Many of them had simple coding or logical questions, as well as various conceptual questions. However, one such site had a section of questions that might be asked, but are simply unfair. This is where I came across the term Quine.

A quine is a program thats only output is its exact source code. As useless as this may seem, several programmers seemed to be almost obsessed with the concept.

If anyone is interested here is a sample Quine from wikipedia. I tested it out myself, and it does in fact work.

/* A simple quine (self-printing program), in standard C. */
/* Note: in designing this quine, we have tried to make the code clear
* and readable, not concise and obscure as many quines are, so that
* the general principle can be made clear at the expense of length.
* In a nutshell: use the same data structure (called "progdata"
* below) to output the program code (which it represents) and its own
* textual representation. */
#include
void quote(const char *s)
/* This function takes a character string s and prints the
* textual representation of s as it might appear formatted
* in C code. */
{
int i;
printf(" \"");
for (i=0; s[i]; ++i) {
/* Certain characters are quoted. */
if (s[i] == '\\')
printf("\\\\");
else if (s[i] == '"')
printf("\\\"");
else if (s[i] == '\n')
printf("\\n");
/* Others are just printed as such. */
else
printf("%c", s[i]);
/* Also insert occasional line breaks. */
if (i % 48 == 47)
printf("\"\n \"");
}
printf("\"");
}
/* What follows is a string representation of the program code,
* from beginning to end (formatted as per the quote() function
* above), except that the string _itself_ is coded as two
* consecutive '@' characters. */
const char progdata[] =
"/* A simple quine (self-printing program), in st"
"andard C. */\n\n/* Note: in designing this quine, "
"we have tried to make the code clear\n * and read"
"able, not concise and obscure as many quines are"
", so that\n * the general principle can be made c"
"lear at the expense of length.\n * In a nutshell:"
" use the same data structure (called \"progdata\"\n"
" * below) to output the program code (which it r"
"epresents) and its own\n * textual representation"
". */\n\n#include \n\nvoid quote(const char "
"*s)\n /* This function takes a character stri"
"ng s and prints the\n * textual representati"
"on of s as it might appear formatted\n * in "
"C code. */\n{\n int i;\n\n printf(\" \\\"\");\n "
" for (i=0; s[i]; ++i) {\n /* Certain cha"
"racters are quoted. */\n if (s[i] == '\\\\')"
"\n printf(\"\\\\\\\\\");\n else if (s["
"i] == '\"')\n printf(\"\\\\\\\"\");\n e"
"lse if (s[i] == '\\n')\n printf(\"\\\\n\");"
"\n /* Others are just printed as such. */\n"
" else\n printf(\"%c\", s[i]);\n "
" /* Also insert occasional line breaks. */\n "
" if (i % 48 == 47)\n printf(\"\\\"\\"
"n \\\"\");\n }\n printf(\"\\\"\");\n}\n\n/* What fo"
"llows is a string representation of the program "
"code,\n * from beginning to end (formatted as per"
" the quote() function\n * above), except that the"
" string _itself_ is coded as two\n * consecutive "
"'@' characters. */\nconst char progdata[] =\n@@;\n\n"
"int main(void)\n /* The program itself... */\n"
"{\n int i;\n\n /* Print the program code, cha"
"racter by character. */\n for (i=0; progdata[i"
"]; ++i) {\n if (progdata[i] == '@' && prog"
"data[i+1] == '@')\n /* We encounter tw"
"o '@' signs, so we must print the quoted\n "
" * form of the program code. */\n {\n "
" quote(progdata); /* Quote all. */\n"
" i++; /* Skip second '"
"@'. */\n } else\n printf(\"%c\", p"
"rogdata[i]); /* Print character. */\n }\n r"
"eturn 0;\n}\n";
int main(void)
/* The program itself... */
{
int i;
/* Print the program code, character by character. */
for (i=0; progdata[i]; ++i) {
if (progdata[i] == '@' && progdata[i+1] == '@')
/* We encounter two '@' signs, so we must print the quoted
* form of the program code. */
{
quote(progdata); /* Quote all. */
i++; /* Skip second '@'. */
} else
printf("%c", progdata[i]); /* Print character. */
}

return 0;
}