5 ms·
I disagree with Aaron. I would reserve the title of the greatest programmer in the world to Fabrice Bellard. He single-handedly wrote QEMU, FFMPEG, an LTE base
by gitemacs 12y ago
I disagree with Aaron. I would reserve the title of the greatest programmer in the world to Fabrice Bellard. He single-handedly wrote QEMU, FFMPEG, an LTE base station, a PC emulator in javascript, and countless other projects. Alone.
http://bellard.org/ http://bellard.org/
- sanxiyn 12y agodjb aims to write bug-free programs and actively works on improving the process to do so. While Bellard is a great programmer, I don't think Bellard aims to write bug-free programs. See section 8 of http://cr.yp.to/cv/activities-20050107.pdf http://cr.yp.to/cv/activities-20050107.pdf There are more people who aims to write bug-free programs, but most of them seem to use formal verification. djb seems pretty unique in aiming bug-free programs in normal programming and getting close. Re: Bellard software quality. Fuzzing found 1120 bugs in FFmpeg. While Bellard's code is only small part of entire FFmpeg, FFmpeg is very far from being bug-free. http://googleonlinesecurity.blogspot.com/2014/01/ffmpeg-and-thousand-fixes.html http://googleonlinesecurity.blogspot.com/2014/01/ffmpeg-and-...
- schoen 12y agoI was shocked (and impressed) when I looked at some of djb's code and saw that he put his "the return value of every syscall must be checked" view into practice so consistently that every single printf() (not only fprintf()!) was inside an if block that checked whether it succeeded in writing to stdout or not. Of course, printf() does have a return value ("Upon successful return, these functions return the number of characters printed"), and it can fail... but it takes a considerable consistency of purpose to decide to deal with that possibility explicitly every single time.
- riffraff 12y agoout of curiosity, what do you (does he) do if printf fails?
- svckr 12y agoFrom qmail/qmail-pw2u.c (linked somewhere above): void die_write() { substdio_putsflush(subfderr,"qmail-pw2u: fatal: unable to write output\n"); _exit(111); } /* ... */ if (substdio_puts(subfdout,uugh) == -1) die_write(); if (substdio_puts(subfdout,dashcolon) == -1) die_write(); if (substdio_put(subfdout,x,i) == -1) die_write(); /* ... */
- mercurial 12y agoI think this says as much about djb's abilities as about C's limitations.
- Tomte 12y ago> See section 8 of http://cr.yp.to/cv/activities-20050107.pdf http://cr.yp.to/cv/activities-20050107.pdf Last sentence in the paper: "I won't be satisfied until I've put the entire security industry out of work." That's nothing short of amazing.
- drinchev 12y agoAnother one from Section 8 > Bug-elimination research, like other user-interface research, is highly nonmathematical. The goal is to have users, in this case programmers, make as few mistakes as possible in achieving their desired effects. We don’t have any way to model this—to model human psychology—except by experiment. We can’t even recognize mistakes without a human’s help. (If you can write a program to recognize a class of mistakes, great—we’ll incorporate your program into the user interface, eliminating those mistakes—but we still won’t be able to recognize the remaining mistakes.) I’ve seen many mathematicians bothered by this lack of formalization; they ask nonsensical questions like “How can you prove that you don’t have any bugs?” So I sneak out of the department, take off my mathematician’s hat, and continue making progress towards the goal.
- deleted 12y ago[deleted]
- koverstreet 12y agoI've spent quite a bit of time trying to do things with tcc, and - ugh, no.
- david-given 12y agotcc did start life as an Obfuscated C Contest entrant. It shows. (It won, of course. http://bellard.org/otcc/ http://bellard.org/otcc/)
- masklinn 12y agoIt's really quite different. Bellard is inspiration, he creates paths to new and interesting things. DJB's avowed goal is to put the security industry out of work by not having bugs through rigorous practices. Bellard is what you use on your laptop to have fun, DJB is what you run in your bank to make the world go round.
- oblio 12y agoWhile DJB may be more "bank" oriented, plenty of people have been making the world go round using Qemu and FFMPeg. I'd argue that Youtube (if I recall correctly it was and possibly is one of the major users of FFMPeg) has had just a big of an impact as online banking.
- wglb 12y agoWell, FFMPeg makes the world go round, including for hackers: http://thenextweb.com/google/2014/01/10/google-says-helped-fix-1000-bugs-ffmpeg-via-two-years-fuzzing/ http://thenextweb.com/google/2014/01/10/google-says-helped-f...
- kokey 12y agoI always had the feeling the djb's software is going to be interesting but never going to be widely adopted long term. I think this feeling turned out to be right, since I rarely come across environments running anything from djb, especially lately, and it's hard to spend a day without touching a few things involving code from Bellard.
- andrewchambers 12y agoNot single handed, look at how many contributors most of those projects have... Fabrice Bellard is smart, though his code is hard to read imo.
- dmacvicar 12y agoI admire Fabrice Bellard. I find amazing the amount of software that he has produced. Some of his creations are remarkable being one-man efforts eg. a compiler, an emacs clone, an emulator, etc. I spent quite some months learning about editors and one of my evening distractions was to write a new UI backend for qemacs. I found the design clever, quite flexible, etc, but in no-way easy to read or elegant. (To be fair, it did not help that he added a video player and a WYSIWYG html editor to it). Later I came to a Vim clone called vis (https://github.com/martanne/vis https://github.com/martanne/vis) and I found the source code more close to those programs where you think "It can't be made simpler". I wish future programmers read more code before writing just like literature writers do. It should be part of the education system and I regret not having read "classics" before starting writing.