The only thing more important than useful information is information on where to find it.
Focus On Reader Requests
During the past 18 months that I've been producing this column, interacting with readers has been the most exciting part of the job. Helping people find the everyday tools they need is much more fulfilling than trying to guess what people "might" like to see. From Italy to Japan, readers of this column and participants in the C/C++ Users Group have written to me in desperate need of a library or tool. Most of them are sure that the tool in question is "out there" somewhere on the Internet, but they have failed in frustration to find it themselves. I don't claim to be more clever than these folks, I just have a little more experience in knowing where to start looking.
Of course, I've replied to everyone by e-mail prior to publication. But if you've got a better link or tool to offer than what I've come up with, then by all means send a brief e-mail. I anticipate that reader-originated requests will become a growing segment of this column. Read on; odds are you'll find something you've been looking for or maybe gave up looking for.
About the C/C++ Users Group
The C/C++ Users Group has been a major influence in promoting user-supported software since 1981. The CUG produces CD-ROM updates twice yearly which are announced right here in the C/C++ Users Journal. Several of this month's recommendations point to the CUG CD-ROM as well as the Internet. I'll only mention once where to learn more about it or find where to order it:
http://www HAL9K.com/cugSubscriptions are now available from Walnut Creek CD-ROM. A subscription saves you 50% off buying CDs individually and also guarantees that you always have the newest edition.
http://www.cdrom.comC/C++ Sources: Reader Requests
timg@climax.polaristel.net writes:
How about a C-to-C++ tutorial, for people who started in C, but want to learn C++. :)
spatel2@eecs.uic.edu writes:
[I would like to see] a Tutorial on C/C++
C++ Answer Man:
Here's some URLs for C++ tutorials:
http://www.desy.de/ftp/pub/userwww/projects/C++/learning.html http://www.up.ac.za/information/c-c++-learn.htmlCoronado C tutorial:
http://www.simtel.net/pub/simtelnet/msdos/c/gencsrc.zip http://www.simtel.net/pub/simtelnet/msdos/c/genctxt.zipCoronado C++ tutorial:
ftp://www.simtel.net/pub/simtelnet/msdos/cpluspls/cptuts22.zip ftp://www.simtel.net/pub/simtelnet/msdos/cpluspls/cptutt22.zipI highly recommend the Coronado C++ tutorial to all my colleagues.
On the C/C++ Users Group CD-ROM, there are several tutorials, including these:
- (CUG 252) C Tutor Doc
- (CUG 253) C Tutor Source
- (CUG 353) C++ Tutor: a self-paced course
- (CUG 442) C Pointer and Array Tutorial
chimo@gauss.cp.ua.es writes:
[I would like to see] OpenGL 3D interface programming utilities.
C/C++Answer Man:
There's only one URL to know to get all the information you need about OpenGL, including where to find libraries that provide a higher level interface:
http://reality.sgi.com/mjk_asd/opengl-links.htmlJavier Medina <medina1@sprynet.com> writes:
Do you know where i can get a cheap/free compiler for C/C++: I am a broke student. Thanks.
C/C++ Answer Man writes:
You didn't say what platform, so I assume you have a 386 or better PC. In that case, you want the GNU C/C++ Compiler, its free. Plan on using about 15 MB of disk space:
http://www.delorie.com/djgpp/If you have less space or require only C (as opposed to C++) and are working on small educational size programs, I recommend the Miracle C Compiler. Miracle C requires a small shareware payment for continued use:
http://www.ncf.carleton.ca/~bg283/Miracle C will also appear on the July 1997 edition of the C/C++ Users Group CD-ROM:
(CUG 464) Miracle C Compiler for MS-DOS
atrebbi@esalab.it writes:
[I would like to see] graphical algorithms, CAD related (fourier transforms)
Dorisvaldo B Paiva <paiva@copene.com.br> writes:
Hi Mr Volkman,
Excuse my taking your time, but I'm looking for a piece of code to do Fast Fourier, or better, DFT for a homemade EECG. I need to analyze brain waves in the range 4 to 30 Hz, 64/s, 10 bits ADC. I have seen some code in the net, But I don't have large experience in C++. I'm learning yet and most of them are missing some parts. Any help will be welcome, thanks very much.
C/C++ Answer Man:
Here are some places to look:
http://www.xraylith.wisc.edu/~khan/software/fftpack/fftpakc.html http://www.lh.com/oleg/ftp/packages/fft.tar.gz ftp://ftp.usc.edu/pub/C-numanal/fft-stuff.tar.gz http://www.spektracom.de/~arndt/fxt/fxtpage.html#fxt http://monet.uwaterloo.ca/blitz/Also, there are many FFT-related algorithms on the ACM Collected Algorithms (CALGO) page. CALGO is new to the web and has many sophisticated algorithms for you to peruse.
http://www.acm.org/calgo/contentsScot Nielsen <qakec@westminster.ac.uk> writes:
Any ideas where I can find the source to ed or any other line editor? I've been looking for days. Any help would be much appreciated.
C/C++Answer Man:
I recommend GNU ed to solve your problem. GNU ed is an 8-bit clean, POSIX-compliant line editor written in C. For a description of the ed algorithm, see Kernighan and Plauger's book Software Tools in Pascal, Addison-Wesley, 1981.
Bugs reports/suggestions for GNU ed are welcomed and may be sent to bug-gnu-utils@prep.ai.mit.edu.
ftp://prep.ai.mit.edu/pub/gnu/ed-0.2.tar.gzThe C/C++ Users Group CD-ROM also has a bevy of full-screen editors for your consideration:
- (CUG 373) MicroEMACS for Windows
- (CUG 386) Thomson-Davis Editor
- (CUG 399) MINED: Multi-Platform Editor
- (CUG 411) Vi Improved (VIM) Editor
- (CUG 414) THE: Highly Portable Text Editor
- (CUG 424) ED Editor: highly portable windowing editor
- (CUG 428) PICTOR: Text-Mode Video Library
hwebs32611@aol.com writes:
[I would like to see] libraries for GIF and/or JPG graphical manipulation.
C/C++Answer Man:
You can't do better than the Independent JPEG Group (IJG) for JPEG implementations. I've personally used it in commercial projects. Also, technical support via their mailing list is quite good. IJG provides C code for JPEG compression that is both free and highly portable. IJG JPEG also includes documentation and test files.
ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6a.tar.gzor
ftp://ftp.simtel.net/pub/simtelnet/msdos/graphics/jpegsr6a.zip(or at any Simtel mirror site).
For more information, see also
http://www.cis.ohio-state.edu/hypertext/faq/usenet/jpeg-faq/part2/faq-doc-14.htmlA distribution is also available on C/C++ Users Group CD-ROM:
(CUG 381) JPEG: Highly portable graphics compression
Hamid Montazeri <emldpine@best.com> writes:
I am in the process of investigating available quality tools/libraries for finite state machine type problems. My project is in need of state machines for proper behavior and I am wondering if you are aware of some tools/libraries in this area. Many thanks for your e-mail.
C/C++Answer Man:
FIRE Lite, by Bruce Watson, is a finite automata toolkit written in C++. It provides production quality implementations of finite automata and regular expression algorithms. FIRE Lite implements several finite automata minimization algorithms, including Hopcroft's O(n lg n) algorithm. FIRE Lite supports both deterministic and non-deterministic automata, and it has been used for compiler construction, hardware modeling, and computational biology applications.
ftp://ftp.win.tue.nl/pub/techreports/pi/automata/toolkit/v1.1/fire.tar.gzA commerical version is also available at
http://www.RibbitSoft.comGrail, by Darrell Raymond and Derick Wood, is a symbolic computation environment for finite-state machines, regular expressions, and other formal language theory objects. Grail converts readily between input machines and expressions. It can minimize, make deterministic, complement, and perform many other operations. Grail is written in C++ and can be accessed either through a process library or through a C++ class library. It handles machines with up to 100,000 states and dictionaries of up to 20,000 words.
http://www.csd.uwo.ca/research/grail(Lee Gernes) leeg@dd.comm.mot.com writes:
Have you ever come across the C source for either lint or prettyC?
C/C++ Answer Man:
There is a freely available program called 'lclint' that does much the same thing as traditional lint. The announcement and source code are available at
ftp://larch.lcs.mit.edu/pub/Larch/lclint http://larch-www.lcs.mit.edu:8001/larch/lclint.htmlThe best prettyprinter with source is of course GNU Indent. GNU Indent, from Joseph Arceneaux (San Francisco, CA), becomes the newest installment of high quality tools from the GNU project. The Indent program changes the appearance of a C program by inserting or deleting whitespace.
The Indent program can be used to make code easier to read or to convert from one style of writing C to another. Indent understands a substantial amount about the syntax of C, but it also attempts to cope with incomplete and malformed syntax. Indent can replace the original source .C file and retain a backup copy or else write its output to a new .C file. See
ftp://prep.ai.mit.edu/pub/gnu/indent-1.9.1.tar.gzThere is also a copy on the CUG CD-ROM
(CUG 392) GNU Indent: beautifies your C code
Lee Gernes again:
Thanks very much for your speedy reply! One other request: How about a pclint program that checks Microsoft Windows 3.11 code?
C/C++Answer Man (again):
You can use TracePlus/Win32 to follow all of your Windows API calls.
http://www.sstinc.com/sstinc/TracePlus and many other great programming tools are featured in my book entitled Windows Programming with Shareware Tools.
http://www.HAL9K.com/bookbabin@horizon.nl writes:
I'm interested in standard public code, genetic programming, and number theory.
C/C++Answer Man:
For a list of interesting C/C++ source code links on the WWW related to genetic programming, see
The comp.ai.genetic FAQ
http://www.cis.ohio-state.edu/hypertext/faq/usenet/ai-faq/genetic/top.htmlThe "Genetic Algorithm Research Group Online Resources" page:
http://www-personal.engin.umich.edu/~streak/online.htmlThe "CMU Artificial Intelligence Repository" page:
http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/areas/genetic/ga/systems/genlib/0.htmlThe C/C++ Users Group CD-ROM has the following tools:
- (CUG 369) Genitor: Genetic Algorithm tool
- (CUG 370) GATool: Genetic Algorithm Tool
- (CUG 401) SGPC: Simple Genetic Programming in C
y_siman@netvision.net.il writes:
By visiting your site we would appreciate receiving your recommendation for sound, .WAV controls:
- 1. Speed control real time
- 2. Volume control real time
- 3. Pan L/R
C/C++ Answer Man:
There is no better product for your needs than DiamondWare's Sound Toolkit. They can meet these requirements and many others, such as polyphonic sound and dynamic pitch adjustment. Currently, their product is a DLL, but very easy to call from VB, C, or C++. Get a shareware evaluation version at:
http://www.dw.comFor more information, see my review of their toolkit in Windows Developer's Journal, December 1996 issue
http://www.wdj.comArne Morken <Arne.Morken@ii.uib.no>
I just read your article about cross-platform development tools. You have not mentioned the Amulet toolkit, so you might be interested in checking out the Amulet homepage:
http://www.cs.cmu.edu/~amulet/I have used both Amulet and wxWindows (for some "toy" projects), and find Amulet to be more user friendly and "abstract." A new version has just been released, with interesting new features.
C/C++Answer Man:
Thanks for the info, I'll pass it along to CUJ readers.
Richard Holford <rholford@freenet.hamilton.on.ca> writes
What has happened to the MetalBase program you described in your column? I found an equivalent description and address in "free-databases," but ftp to ftp.uu.net etc. comes up empty.
C/C++Answr Man:
Good question! Fortunately, it seems to have reappeared on several other sites, such as
http://ftp.uni-paderborn.de/pub/sunsite/apps/databases/mbase.tar.z ftp://sunsite.kth.se/pub/Linux/apps/databases/mbase.tar.zThanks for bringing this to my attention! o
Victor R. Volkman received a BS in Computer Science from Michigan Technological University. He has been a frequent contributor to the C/C++ Users Journal since 1987. He is the author of the book Windows Programming with Shareware Tools. He can be reached at http://www.HAL9K.com/home.htm, or email to sysop@hal9k.com.