Interview With Brian Kernighan of AWK/AMPL Fame
Reader oranghutan brings us another in Computerworld's series of interviews with icons of the programming world, this one with Brian Kernighan, who helped popularize C with his book (co-written with the creator Dennis Ritchie) The C Programming Language, and contributed to the development of AWK and AMPL. In the past we've chewed over a few other interviews in this series, including those with Martin Odersky on Scala and Larry Wall on perl. "In this interview, Brian Kernighan shares his tips for up-and-coming programmers and his thoughts on Ruby, Perl, and Java. He also discusses whether the classic book The Practice of Programming, co-written with Rob Pike, needs an update. He highlights Bill and Melinda Gates as two people doing great things for the world enabled through computer science. Some quotes: 'A typical programmer today spends a lot of time just trying to figure out what methods to call from some giant package and probably needs some kind of IDE like Eclipse or XCode to fill in the gaps. There are more languages in regular use and programs are often distributed combinations of multiple languages. All of these facts complicate life, though it's possible to build quite amazing systems quickly when everything goes right.' 'Every language teaches you something, so learning a language is never wasted, especially if it's different in more than just syntactic trivia.'"
There are a few books I recommend to kids just starting out in the industry.
Code Complete
Writing Solid Code
Programming Pearls
and The Practice of Programming
Even old stalwarts like Kernighan's The C Programming Language aren't as useful in the longterm as the 4 books above are.
Anyone who wants to make the jump from "code monkey" to professional should really take the time to read the books.
Not the Brian Kernighan of "The C Programming Language" fame, then?
I need an IDE to do my job. I could lay out graphical forms by hand, but it would take long enough as to not be profitable.
Go green: turn off your refrigerator.
This is frickin slashdot. Who here needs an introduction of Brian Kernighan?
In my very humble opinion, tools such as Emacs and vi are precursors to larger development environments, such as Eclipse or Delphi. In your case, and assuming my argument is true, we would all be going back to flipping switches and pressing buttons, since that's the only true way of understanding the code.
If you don't accept my argument, then why are syntax highlighting, :make macros and identifier matching part of every vi install nowadays? And don't even get me started about emacs, which design purposes was to help programmers write better code. So, if you don't accept my premise, where do you draw the line?
For me, this development can't go fast enough. I'm looking forward to languages that integrate completely with an IDE, and leave simple character representation (ASCII e.a.) behind.
This is a replacement signature.
I think you draw the line when a language "requires" an IDE so bloated that it runs slow on a Core 2 Duo machine, and makes you want to code in Notepad instead, except you can't because the language is too convoluted.
I'm looking forward to languages that integrate completely with an IDE, and leave simple character representation (ASCII e.a.) behind.
Oh, me too! I can't wait until diff and patch no longer work, and every version control system has to explicitly support every distinct language, and examples on Stack Overflow are files you have to download and open in an IDE before you can examine them, and Google has to learn each language's binary serialization so that it can search code snippets.
In a time when every other type of file is moving to standardized formats, I just love the idea of my industry balkanizing into a million crap representations. That is certain to make us all more productive.
Dewey, what part of this looks like authorities should be involved?
That platform arrived in the 70's and it was called Smalltalk. All current mouse-based GUI systems are an offshoot of the original Smalltalk system. Wiki link. In reference to your dream-system, things like this were pretty potent and ahead of their time:
This would obviously allow you to edit your IDE/OS in real-time/at runtime.
Make sure everyone's vote counts: Verified Voting
There may be a non-character-based program representation (useful for developing and maintaining non-trivial projects) in the future, but I fear we'll all be retired or expired by then
This has been tried numerous times. It just doesn't work, period.
More recently, I recall reading an interesting interview with Microsoft "project Oslo" guys. Oslo is supposed to be a DSL framework for .NET. Now, existing releases already have something called "DSL SDK", integrated into VS, but the "DSLs" that it lets you create are purely graphical, like flowcharts, and have to be "coded" using a visual designer.
That didn't exactly catch on, and Oslo guys explained that one of the most repeated customer feedbacks was that, while visual designers are occasionally useful, in the end it's still faster and easier to spend half an hour training, and then write DSL code as actual text in a text editor. Note: not for a programmer, but for a business analyst, or some other guy who haven't ever seen any code before!
So they ditched the visual designer idea in Oslo, and instead came up with the tried and proven approach of parser generators (going for LL(*) over LALR as it's simpler to use and less restrictive, even if slower), and coupled it with a text editor that can load a grammar for the parser generator, and automatically provide syntax highlighting and simple completion for it.
I'm looking forward to languages that ... leave simple character representation (ASCII e.a.) behind.
I worked on such a thing in 1983 at DEC (look up my MIT thesis to see). Structural editing.
Conclusion: it was an absolute disaster. Programmers cannot use this. Most of the work was in altering it to be as much like a plain text editor as possible.
Don't think you have an amazing new idea.
When the hell did laying out graphical forms become programming?
I still have more fans than freaks. WTF is wrong with you people?