lew89
Especially interesting point I'd love to read more is that "Because QM is a (the?) generalization of probability theory to involve complex numbers, whose squared absolute values are probabilities. It includes probability as a special case."
I think that it's partialy right what @ctvo said "above average developer working at below average company" — that's why I'm looking for a new job more carefully. On the other hand, I think that it's not all in my case. I just happen to work as a programmer, it's just tiny part of my interests, so that most of the people seem very narrow minded (I don't judge them, it probably works for them, but not for me).
Maybe in more sophisticated company I would find better matches. On the other hand, as I don't care too much, my current situation has its advantages, because I can decouple self-development from work. This is good because I have some values I would like to implement and it seems they can't be achieved inside this system (because it's too specialized and my approach is too holistic), I need `f*k you money` so that I can act freely. For now, alienation at work is ok, as I'm quite introverted so I prefer to spend time alone in nature (that's why I work in countryside) and just from time to time I go to the city to party with my friends or play some games with my neighbour.
So along with "look for a new job", there is an "adapt" option. Just relax and think out of the box how to use this situation. You can reduce significance of your work and do stuff you please. It's ok to do this, because you are 10x dev so you need only 1/10 of your time to match your company. The only question is if you have what to do with remaining 9/10. :)
I don't write professionaly C code. I use it for my purposes so debugging is easy. I agree that such a problem in a bigger system whithout ability to reproduce environment and debug would be very nasty. However that is matter of context. In bigger system it's more reasonable to buy more safety for price of simplicity, because I doubt any of competitors in the benchmark is as simple as C.
C is dead simple in that respect. If you can't write right concise code no language can help you. However of course, as C is more verbose it is more challanging to structure code well. And to some extend other language can help you move the point where control flow becomes a problem.
The biggest problem in C programming for me is memory management, but maybe it's just a lack of experience. Certainly C++ is convenient with smart pointers and automaticall called destructors.
Anyway, i didn't consider big project a scope here. I wouldn't write realy big programs in wine. I would try to create as small independent parts as possible.
EDIT: Actually fopen would return NULL when file is not readable. My bad. Anyway, such problems are trivial to debug.
I didn't like that C itself was missing, because C is still my language of choice for some tasks and I still use it because I'm happy about it, I don't feel I would need any of its competitors. Maybe if this benchmark included C it would be some argument to give them a try. So I decided to do it for you.
It took me 30 minutes, only change is that I don't check if file is binary, I guess. I liked that I was doing it in C because I know it and I'm comfortable with it. Few checks in man and everything's clear. Only disadvantage of C is that it doesn't have standard API for directories, so my code is only for POSIX. Here's the code: https://github.com/BartekLew/dumbgrep
The other thing are sources you've done. They are almost the same (it'd be nice to see the more feeling of the language, idiomatic code, etc.) and I didn't like reading them at all, not a clean code and all are longer than my C code.
Another thing is that C has very narrow application nowadays. A benchmark should be focussed on them and not on generic algorithms.
Emacs seems the best choice for Lisp, since it is scripted in Lisp and it's best adapted to it probably. However when I started, I was already so used to vim that I kept going with it. Maybe not the best option, but it's ok, maybe just a little bit more effort to automatize some stuff.
If you choose Common Lisp, this is probably the best book for start: http://www.gigamonkeys.com/book/ . Anyway be prepared, Lisp is not easy to grasp at first, but as soon you do, you will probably love it and appreciate way it is. :)
I would also recommend The Structure of Science Revolutions (Thomas Kuhn), very important book to understand how science works, what are its limitations, how should we treat scientific facts. It also show very nature of learning about world (it's not lineary incremental like most people think). It also emphasize that there is always quite a lot of dogma in science (you need some assumptions that can't be really proved right, only wrong if you dwell on it and eventually fail). If you are interested in modern science belief system and what are stuff it can't explain (according to Kuhn, any science paradigm has smaller or bigger blind spot), it's quite well explained in The Science Delusion by Rupert Sheldrake.
If you are interested in nature of non-linearity of learning, what were steps in forming human's worldview, I think Oswald Spengler's The Decline of the West make a good point. I can't say for sure, because I have only started (it's very long, 1500 pages), but I definitely like the guy. :)
It's totally enough for everything I do: web, movies (OK, very high quality happens to be a problem), music, programming, photo/video editing and even games (Half Life 2, Civilization V and Oblivion are level expected to work very well on high details). I don't know how It would manage with full blown KDE/GNOME desktop though (I prefer terminal+tiling WM). If you don't mind small size (I love it) I recommend it. Really the only thing that doesn't work well is that for some reason shutdown works like reboot so you have to turn of using power button, but who cares If you usualy just swith to the sleep mode.
Except this I use Vim/shell because IDEs usually are so messy, I must look for stuff, use mouse and so much stuff happens implicitly. Probably it's convenient for someone who doesn't memorize well, but I do. :)