Some C Stuff
I never really appreciated C for what it was until now. It took me 5 years from my first programming course to appreciate it for what it was. C is a very pure programming language; it comes with no frills, bells, or whistles. I’m glad I had the opportunity to become exposed to C early on.
Not to say I dislike all other languages. Java was the second language I learned, ruby was the third and python followed after that. I throughly enjoyed learning all of them. But the influence I got from C followed the other languages; Java’s syntax (besides the object orientation), of course, is very C-like.
I just wanted to shared some of the recent thoughts I had regarding C.
C in Javascript?
More recently, however, I’ve enjoyed learning and working with Javascript. The community is large, and the functional programming features are still very novel (to me) and very interesting.
http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/ in particular were very interesting since I’d never gotten the chance to use callbacks outside of GUI functions. It took me a while to realize it, but callbacks can be implemented in C!
It might sound simple and trivial to some but this is a concept that takes some experience to understand. Some people get this experience early on, and some don’t. Callbacks are implemented in C by using function pointers! (http://stackoverflow.com/questions/142789/what-is-a-callback-in-c-and-how-are-they-implemented)
void populate_array(int *array, size_t arraySize, int (*getNextValue)(void))
{
for (size_t i=0; i<arraySize; i++)
array[i] = getNextValue();
}
int getNextRandomValue(void)
{
return rand();
}
int main(void)
{
int myarray[10];
populate_array(myarray, 10, getNextRandomValue);
}
So the concept has transferred over the Javascript and is now available as a high level construct instead of the low level implementation you see in C with pointers.
The Language of Implementation
There is a lot of opinion out there on the interwebs; opinions about what language to use, why you should use it and why it’s better to start off with this particular language. Granted, starting with C is hard.
It’s a very pure language because it’s the language of implementation. Other languages have libraries built in C; they’re using C as a low level construct to implement the details. Someone, somewhere needs to worry about this. It used to be that assembly programmers worried about the implementation details, now we have C for that.
Out of all the other languages I’ve tried out, none of them are quite pure implementation languages. Java attempts to be that, but lacks pointers and has a ton of libraries. You can consider Java to be a high level contruction language. You use it to piece together chunks of code and make something.
It is what it is
So if you consider C for what it is, it’s not a bad programming language to start with. It gives you a huge survey of what the guts of programming looks like. And just like other languages, it is what it is.