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/cug
Subscriptions 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.com
C/C++ Sources: Reader Requests
[email protected] writes:
How about a C-to-C++ tutorial, for people who started in C, but want to learn C++. :)
[email protected] 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.html
Coronado C tutorial:
http://www.simtel.net/pub/simtelnet/msdos/c/gencsrc.zip http://www.simtel.net/pub/simtelnet/msdos/c/genctxt.zip
Coronado C++ tutorial:
ftp://www.simtel.net/pub/simtelnet/msdos/cpluspls/cptuts22.zip ftp://www.simtel.net/pub/simtelnet/msdos/cpluspls/cptutt22.zip
I 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
[email protected] 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.html
Javier Medina <[email protected]> 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
[email protected] writes:
[I would like to see] graphical algorithms, CAD related (fourier transforms)
Dorisvaldo B Paiva <[email protected]> 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/contents
Scot Nielsen <[email protected]> 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 [email protected].
ftp://prep.ai.mit.edu/pub/gnu/ed-0.2.tar.gz
The 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
[email protected] 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.gz
or
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.html
A distribution is also available on C/C++ Users Group CD-ROM:
(CUG 381) JPEG: Highly portable graphics compression
Hamid Montazeri <[email protected]> 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.gz
A commerical version is also available at
http://www.RibbitSoft.com
Grail, 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) [email protected] 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.html
The 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.gz
There 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/book
[email protected] 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.html
The "Genetic Algorithm Research Group Online Resources" page:
http://www-personal.engin.umich.edu/~streak/online.html
The "CMU Artificial Intelligence Repository" page:
http://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/areas/genetic/ga/systems/genlib/0.html
The 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
[email protected] 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.com
For more information, see my review of their toolkit in Windows Developer's Journal, December 1996 issue
http://www.wdj.com
Arne Morken <[email protected]>
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 <[email protected]> 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.z
Thanks 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 [email protected].