World-Renowned 20-year Development Expert in C, Unix, Shell
Programming, and Authority on ColdFusion...
This week, Stephen
Ibaraki, I.S.P., has an exclusive interview with Stephen Kochan, the
world-renowned 20-year development expert in C, Unix, Shell
Programming, Cold Fusion, and Web technologies; authority in
printing technologies; and expert in major operating environments.
Stephen Kochan is the
best-selling author or co-author of eight classic books on C
programming and Unix, a former senior software consultant to the
famous Bell Laboratories, co-inventor of the software patent for
printing in reduced memory environments (PowerBand technology),
former co-founder and president of Pipeline Associates Inc., and
currently president and founder of TechFitness.
His book credits include
the widely known and classic titles: “Topics in C Programming,
Programming in C”, “Programming in ANSI C, Programming C for the
Mac”, “UNIX Shell Programming”, “Exploring the UNIX System”, and
“UNIX System Security”. He has been the consulting or technical
editor for more than nine additional books on Unix, C programming,
His most recent offering
is the widely regarded, “Programming in
Q: Stephen with your
remarkable history, we are very fortunate to have you with us. Thank
A: Thanks, Stephen. I’m
happy to be here!
Q: Detail your work with
AT&T Bell Laboratories.
A: I worked at Bell Labs
before divestiture. Bell Labs at that time was a very exciting
place, where a lot of research work was going on. It was actually
close to working in an academic environment. I worked in a support
group at Bell Labs that was responsible for capacity planning and
monitoring for the computer labs throughout all the Bell Labs’
facilities. Needless to say, my work was done under Unix. I did a
lot of shell programming while I was there. I also started teaching
classes internally at Bell Labs on subjects like C, emacs, shell
programming, and Unix.
Q: What prompted you to
start writing at that time?
A: Before working at Bell
Labs, I worked for a company that was an early adopter of C in the
commercial world. At the time, the Kernighan and Ritchie book was
the only book on C programming. Even as an experienced programmer,
it was not so easy for me to learn how to program in C from that
book. While the book was an excellent reference, it was not written
as a tutorial. So I felt there was a real void that needed to be
filled and I decided to write an introductory C programming text.
That was “Programming in C,” which was published in 1983. The book
ended up selling over 1,000,000 copies and is still in print in it
revised form (and under the name Programming in ANSI C). In fact, I
am currently revising it again!
Q: Please share your most
valuable writing tips.
A: I think my approach of
teaching by example has proven to be very effective. I like to
introduce new concepts to the reader in a graduated, logical manner.
I also don’t like to overwhelm the reader with too many terms and
technical details that are not needed to learn a particular concept.
I have no problems “holding back” from the reader and clarifying a
concept later. Sometimes you can get criticized for taking that
approach, but I have found it is the best way for a reader to learn.
I also don’t believe in writing tomes. Many of the best programming
books have been fewer than 300 pages or so. My books tend to be a
little larger than that, but I can’t see myself ever writing one of
those 1,000 page books that you see out there.
Q: Provide the background
behind Pipeline Associates Inc.
A: Pipeline evolved from
my teaching experience at Bell Labs and the writing experience from
my C and Unix books. Pat Wood, who was an associate of mine at Bell
Labs, and I decided to start a company so that we could continue to
write and train full-time. Since we typeset our own books for our
publisher at the time, the Apple LaserWriter, which had just been
released, got our attention immediately. This printer used a new
language called PostScript, so we ended up writing some software to
talk to the printer from our Unix systems. One thing led to another,
and we ended up developing our own PostScript clone interpreter
called PowerPage that we licensed to companies like Sharp, Konica,
Kodak, Hitachi, and Fujitsu. Pipeline also specialized in color
printing technology. One of our customers was a company called
Electronics for Imaging, Inc. (EFI) and they acquired Pipeline in
Q: What prompted you to
A: TechFitness came from
my desire to combine my passion with health and fitness with my
technology experience. It was something for me to do after leaving
Q: Throughout your very
successful career, profile the major challenges you faced, and the
important lessons you learned.
A: The most important
lesson I learned, which also presented a great challenge, was the
principle of running my business without compromising my ethics.
Many of my competitors would promise unrealistic delivery dates for
their software, for example. By being honest with my customers, I
was able to gain their trust. I think that was particularly
important when dealing with my Japanese customers. I was also able
to leave my company feeling proud of what I had accomplished and how
I had done it.
Q: Describe your current
role and projects?
A: Right now I have
returned to writing full time. I have always been a big fan of the
Macintosh. Now that it runs Unix (and does such a good job at it); I
would like to stay on this platform and write books that would be
helpful to Mac programmers.
I am also pursuing the
idea of marketing some of my older texts online in Pdf format.
Q: Where do you see
yourself and your company in five years?
A: Hmm, over the last
five years I’ve learned not to try to predict that far ahead!
Q: What are your thoughts
on the Open Source movement?
A: I think it’s great.
The fact that Apple has embraced Open Source for their operating
system has enabled them to deliver a solid operating system that is
malleable. With all the developers making contributions, Apple can
remain on the forefront of operating system technology and quickly
deliver new releases to the consumer.
Q: Who are the big
winners and losers?
A: I’m not sure if there
are any losers here. Maybe some companies that made versions of
software that are now available for free will be hurt, but there’s
always a way to offer a distinguishing product.
The winners are the
companies that can embrace the technology and still figure out a way
to make money! The consumers are also big winners, because they
don’t have to absorb the large costs associated with development of
large software systems.
Q: Can you share your
thoughts on Unix and C?
A: These are two very
mature environments. Unix has proven to be a robust operating system
that has lived up to its reputation. Apple now has the largest
installed Unix base in the world. The C language still remains the
most efficient language for systems development. There are still
many applications (such as in embedded environments) where C is
still the language of choice because of its efficiency and control
over its environment (such as with memory allocation).
Q: Describe the
relationship between C and Objective-C?
A: Hmm, Objective-C is
layered on top of C, so they will always remain intimately related!
Q: What’s in the future
A: Good question. The
language was dead for all intents and purposes before Mac OS X.
Right now, it remains the language of choice for application
development on that platform. The Mac OS X installed base continues
to grow at a very fast pace. So I see a steady growth in the
language over the next several years.
Q: And the response from
the Mac community to Objective-C?
A: I think the response
has been mixed. Programmers with C++ or Java experience are not
always thrilled about the idea of learning Objective-C for doing Mac
OS X development work. Apple has tried to make that bridge a little
easier to cross.
Q: What makes your book,
“Programming in Objective-C”, particularly compelling?
A: There’s not much out
there on Objective-C right now. And my book is the only tutorial.
Apple publishes an excellent reference book that is available at no
charge. With Programming in Objective-C, I took the radical approach
of teaching the language to programmers who don’t already know how
to program in C. That was the premise of all previous books (or
chapters from books) on the language. But it’s a mistake to have to
learn how to program in a procedural language (C) before learning an
objected-oriented one (Objective-C). A novice programmer can pick up
bad programming habits by taking that path. So my book teaches the
language as an entity unto its own; that is, without teaching the
underlying C language first. The language that is taught is
Objective-C, not C followed by Objective-C.
Many of the existing
books that have some information on Objective-C are Cocoa
programming books. These books are often very comprehensive in
nature and cover user interfaces, the Mac development tools, etc.
This is a tremendous amount of information to cover, which is one
reason why the Objective-C language typically gets minimal coverage
in these books.
Since Objective C
compilers are available for all major OS platforms (you can get gcc
with Objective-C support for Windows and Linux, for example), the
book does not assume you are learning the language exclusively for
programming on the Mac. Half of the book is devoted to learning how
to use the Foundation framework, which a set of classes that have
become fairly standardized across all Objective-C platforms. That
allows you to write portable Objective-C programs.
Q: Provide your
predictions about the evolution of hardware and software? Are there
any areas we should be watching?
A: Certainly wireless and
personal networks are the hot areas in technology.
Q: Share your top study
tips for learning programming?
A: 1) Make sure you set
yourself up in an environment where you can test out your program
examples. Programming is a pro-active experience. You can’t learn
how to program just by sitting and reading a book.
2) Get a good recommended
tutorial on the language. Many prefer a book that teaches by example
rather than just having terminology and syntax pounded into them.
3) Don’t get bogged down
with terminology or minutiae in the beginning; you can always pick
that up once you feel more comfortable with the language.
4) Make sure you actually
type in and try program examples from the book.
5) Make changes to the
program examples and see their effect on the output. Make sure you
understand the cause and effect relationship.
6) Find some good online
resources that you can turn to with problems or get answers to
7) Challenge yourself
with a problem or do the exercises at the end of the chapters.
Q: What are the most
compelling issues facing technology professionals today and in the
future? How can they be resolved?
A: Certainly the loss of
programming jobs to overseas programmers is a crisis that is facing
the programming community today. There have been many jobs filled by
programmers in countries like India, where the cost of hiring a
programmer can be as little as 1/10th the cost of a programmer with
similar experience in the US. I don’t know the resolution to this
problem. You just have to always strive to keep your skill set
current and marketable.
Q: What future books can
we expect from you?
A: As noted earlier,
there will be a revised edition of my ANSI C book forthcoming. There
will likely be a Mac OS X Programming book and perhaps an
AppleScript book as well.
Q: What kind of computer
setup do you have?
A: I have many computers!
For Windows, I’m using a Toshiba notebook running Windows XP. For my
Mac system, I’m using a 15” PowerBook running Panther. Perhaps a Mac
G5 will be next?
Q: What drives you to do
what you do?
A: I think learning is
what keeps me motivated and is what makes me feel like I’m alive. I
also always like to challenge myself. Writing is particularly
rewarding if you find you’ve helped someone. Getting positive
feedback to one of my books is very gratifying.
Q: How do you keep up
with all the changes?
A: I gain a lot of
information from the Internet. When I have the time I like to read
periodicals in my field as well.
Q: Stephen, thank you
again for your time, and consideration in doing this interview.
A: You’re very welcome!