[[Image:NonFreeImageRemoved.svg -->|thumb|Herbert Schildt ca. 1989]] Herbert Schildt is a prolific computer science author known both for his bestselling books which are read by beginners, and the controversy his informal and less than rigorous style has engendered among the computer science community.
Background
editHerbert "Herb" Schildt is a prolific computer science author who has attracted controversy in the computer science community, especially Usenet. He is a polarizing figure: Newbies to programming typically like his informal, friendly style; while experienced professional programmers are typically dismissive of him because of the demonstrated lack of rigor in his books.
He holds both graduate and undergraduate degrees from the University of Illinois, Urbana/Champaign (UIUC).
His earliest books were published in the 1985-1986 time frame. (The book "Advanced Modula-2" from 1987 says on the cover that it is his sixth book.)
His books are all published by Osborne, an early computer book publisher which concentrated on titles for the personal computer, and after the acquisition of Osborne by McGraw-Hill, the imprint continued publishing Schildt's work until the imprint was subsumed completely into the larger company.
His work can (roughly) be divided into two periods.
Early Schildt: From the middle 1980s until the early 1990s, Schildt carved out a niche as a Personal computer author who covered popular programming languages such as C and Modula-2, as well as popular software products for the PC such as MS-DOS, Turbo C, etc. He wrote an early book on C++ called "Teach Yourself C++" (Osborne, 1992).
Many of his early books, particularly "C: The Complete Reference", are advertised as a reference for the language in question, when they are often loaded with content relevant to MS-DOS systems programming. The titles can be misleading as to the book's contents. (The early books for products such as Turbo C are historically valuable for research, since used copies are easily purchased, while original manuals for the software are much harder to come by.)
Later Schildt: From 1995 onwards, Schildt reinvented himself as the author of computer science books for the programming languages C, C++, Java. His C and C++ books often contain platform-specific code that is not of general interest. He has a book "C# The Complete Reference" about Microsoft's own Java-like language, C Sharp (although there is the non-Microsoft Mono implementation for other platforms).
Little C
editOne of Schildt's most enduring projects is the Little C interpreter, which is a lengthy example of a classic (i.e. it does not use lex and yacc) recursive-descent parser which interprets a subset of the C language. The program was original published in Dr. Dobb's Journal in August, 1989 entitled "Building your own C interpreter". This example was included in the book "Born to Code In C" (Osborne, 1989) and in a later edition of "C: The Complete Reference".
The code for this interpreter can be found online in several places, including Internet archives of old DDJ disks and the McGraw-Hill web site for code downloads.
The original DDJ listing of the code can be found here in the archive DDJ8908.ZIP, in the file schildt.lst.
Code is in this zip archive. Note that the code is the raw chapter listings and is not ready to compile. To use this code, the individual source files will have to be extracted from the listings for chapter 29: parser.c, littlec.c, and libc.c. These files need to be compiled into a single executable (there are no header files). Some of the code is actually demo input for the C interpreter, not code that belongs to the interpreter itself.
Sample makefile:
CC=gcc CFLAGS= -Wall -g -c OBJ=libc.o parser.o littlec.o all: littlec littlec: $(OBJ) $(CC) -o littlec $(OBJ) libc.o: $(CC) $(CFLAGS) libc.c parser.o: $(CC) $(CFLAGS) parser.c littlec.o: $(CC) $(CFLAGS) littlec.c clean: rm -f littlec $(OBJ)
Criticisms
editAs the reviews of his books indicate, Schildt sacrifices rigor and preciseness to appeal to the general reader. Critics in reviews point out that those to whom Schildt's style appeals do not actually know enough to know when they are being misled by his explanations.
His name was used to coin a new word, bullschildt in the Jargon File. Schildt's name has become a byword for: "A confident, but incorrect, statement about a programming language."
Casual users and beginners rarely criticize Schildt, who is, after all, a bestselling author. His books provide an easy, conversational approach to the topics he addresses for people who do not need or want the level of rigor provided by college-level textbooks and professional books. Most negative criticism comes from professionals who are intimately familiar with the dark corners of the computer languages they use and implement. (For example, most reviews of Schildt's books are by professional, experienced programmers.) It is for this reason that Schildt is such a polarizing figure.
Schildt's early books showed a decided slant towards the MS-DOS operating system and the PC architecture, making them useless to those who program on other platforms. Often, these books would appear to be about a language such as C, but were really MS-DOS systems programming tutorials. (It is difficult to cite this, because most of these books are out of print. Topics include writing MS-DOS code for TSR programs, understanding memory models, etc. Interested readers will have to track down early works.)
Schildt is reluctant to remove outdated material from his books. "C: The Complete Reference" still contains information about efficiency and porting in chapter 28 which was true of MS-DOS systems, but is significantly dated on modern computers. (Some of this advice is probably harmful on modern computers, such as the use of the register
keyword, when modern compilers can do a better job than programmers of assigning registers.) This chapter dates back to the mid-1980s and appears in his C and Modula-2 books. Schildt frequently takes the same chapters and rearranges them for new books (cf. the Little C interpreter citation above).
His later (post-1995) books also show a considerable PC slant, including chapters in general C and C++ books about Microsoft Windows ("C: The Complete Reference", starting with the fourth edition, had a chapter on building a Windows 95 skeleton, essentially a bare-bones framework written in the raw Windows API a la the Petzold book.)
Schildt is known in C circles for "void main(void)", an affectation which predates ANSI C. Schildt was slow to update his books to conform to the ANSI standard declaration of main(). His later books change this to "int main()", but the stigma of his use of the earlier declaration has become attached to his name.
Schildt is an observing member of the ANSI C and C++ committees. Frequently, the distinction between an observing and contributing member is not made in various advertising and blurbs, inaccurately portraying Schildt as an actual voting member who had something to do with the standard. (Schildt also has a book on the ANSI C standard, furthering the confusion.)
Starcastle
editBefore his involvement in computer science, Schildt was part of the 1970s progressive rock band Starcastle. He played keyboards (piano, organ, synthesizer). He has not been involved with music since.
Bibliography
editSchildt is a prolific author, so a complete bibliography is difficult to compile. Many of his early books are now out of print. Most books are available in multiple editions, and not all editions are listed.
The most notable book Schildt ever authored was "The Annotated ANSI C Standard". What made the book notable is that it included the text of the then-new ANSI standard, for a significantly lower price than a copy of the standard document itself. Schildt's annotations, aimed at beginners, were non-technical, and were criticized by people who purchased the book to get a copy of the standard. (It is unclear who the book's audience actually was. Beginners who are helped by Schildt's books would not need to read the standard document; those who needed to read the standard document would not need Schildt's annotations.) A link to a review of Schildt's annotations is provided below.
These books are listed in chronological order.
- Advanced Modula-2 (Osborne, 1987)
- Advanced C (Osborne, 1988)
- Born to Code In C (Osborne, 1989)
- C: The Complete Reference, 2nd. Ed (Osborne, 1990)
- Teach Yourself C, 2nd Ed. (Osborne, 1990) - updated for ANSI C.
- Teach Yourself C++ (Osborne, 1992)
(Additional titles: Teach Yourself DOS. Beginning Modula-2. Schildt also authored books on Turbo Pascal.)
External Links
edit- Annotated C Standard Review Canonical critical review of one of Schildt's books.
- C: The Complete Nonsense Critical review of C: The Complete Reference. (Unfortunately not dated, and which edition of the book is not specified; ANSI C is mentioned, so it must be at least the second edition.)