SWIG Propaganda
The following comments about SWIG were collected by a user survey conducted in March, 1998.
"SWIG has helped us minimize the hassle of writing manual wrappers. Since SWIG has proven to be rather easy to use, I find I can carry out the types of wrapping activities which would otherwise have been the responsibility of a computer scientist."
"I really love the fact that the learning curve is short and flat. I don't need to use this facility very often, but when I absolutely have to link in external C routines, or when I have to get the last drop of speed from something previously written in Perl, I can count on SWIG to be there. When I do use SWIG, I don't need to spend hours learning and debugging the system. This is the closest thing to cut-and-paste I've ever seen in inter-language library creation."
"We are a research group that develops medical imaging software. We are interested in image processing/visualization research, and for our software, we want a simple and portable tool to generate user interfaces. For this, we currently use Tcl/Tk, and SWIG which provides a nice way to connect our software (in C++) to the tcl-scripts."
"Very quick first results."
"Easy to use, no need to worry about language internals. It is a boon for application developers, like me."
"I like the fact that it automates much of the tedious work in building an interface C/C++ functions. This makes development easier."
"SWIG is by far the easiest way I have found to generate scripting interfaces for scientific software. SWIG makes it practical to use a single, powerful scripting language for all projects rather than writing a custom interface to each. It also encourages a consistent and modular form for a program, and makes it easier to add contributions to my programs from other users/programmers."
"I like the ease with which scripting languages can be extended. The fact that we could so easily interface with Lotus Notes on NT using Python was just amazing."
"SWIG makes linking my application to a scripting language easy enough that it is worthwhile."
"I came, I saw, I wrapped. And it ran. Woo hoo!"
"Without SWIG it would have taken much, much longer for our group to use Python as an extension language. Our whole application was written mostly in C++. We wanted to look into using Python for portions of it in order to make it easier to extend. Python has a fairly nice interface for doing this sort of thing. The trouble was that we needed to make hundreds of C++ classes available to Python. This would have taken a very long time (to write the wrapper code). SWIG allowed us to spend a minimal amount of time with the wrapper code and most of our time moving stuff to Python (which was the big point in the first place)."
"SWIG is a huge time-saver. I have approximately 30,000 lines of C and Python code that have been generated by SWIG that I didn't have to write by hand, don't have to fix syntax and fumble-finger errors in, and don't have to aggressively test."
"SWIG helps us in taking away part of the error-prone task of making the C routines accessible from Python and has considerably improved our efficiency."
"I like all the time I have saved by not writing the interfaces myself."
"SWIG saves a lot of my energy in interfacing with many free C/C++ libraries in my project."
"SWIG handles the gory details and allows me to concentrate on the important things."
"Using SWIG is really fun, because it saves you from a lot of mechanical work and it takes care of all the details you don't want to bother with letting you concentrate on the real problem."
"Thanks again for SWIG... It's fun and allows great productivity while avoiding much tedium."
"[I like] the ability to write extensions basically without having to think too hard about what I'm doing."
"SWIG allows me to get on with scripting and writing C++ code without having to worry about the (usually considerable) issues involved in extending the scripting language with my custom components."
"Using a scripting language as glue between C++ components is a powerful paradigm for combining flexibility with robustness and efficiency. SWIG enables this model by providing a solid bridge between the C++ component and the scripting language."
"The ability to ``follow'' the development of the core application without constantly rebuilding the interface is very effective. The developments of the kernel and its interface are mutually protected to a large degree."
"SWIG allows us to recycle a lot of ugly old C code and put it into a reasonable module structure and snazzy new user interfaces."
"It allows us to leverage the advantages of the scripting language, especially when so many other scripts are already being written to glue programs together and some of our other tools have their own scripting language interface. Using SWIG will allow us to properly integrate each of the parts directly into the language instead of a collection of system() calls."
"Before I had to use C++ for my ``rapid'' prototyping. Now I can script it!"
"My code is cleaner and more compact which makes it easier to read and understand. SWIG also encourages modularize code--allowing one to test/debug modules independently. This makes connecting everything together a breeze."
"The very idea of scripting programming on the one hand and systems programming on the other is quite nice, the most important feature of SWIG is to make this approach practical on a day-by-day basis."
"On the whole, SWIG is my most important development tool after gcc!"
"SWIG has enabled our customers to interact with our toolkits in fundamentally new ways."
"We are using Tcl scripts as the data files driving our simulations. Once the data is defined using a program (which is pretty cool in itself), we can actually run the simulation from script commands. In our experimental environment, that saves rewriting a lot of "main" programs that exercise the same basic objects. This isn't exactly computational steering, but it does give our engineers a lot of flexibility."
"All (well most) of my C++ code (MC simulations of proteins and sequence analysis) is now driven by a Python interface thanks to SWIG. Once I have decided on an interface, the process of building it is usually trivial."
"SWIG is an integral part of a user environment I am creating for a Molecular Dynamics company. They have FORTRAN modules that require a steering language (Python) to enable flexible computational research."
"SWIG plays a critical role to automate the generation of Perl client interfaces from the OMG IDLs for a CORBA ORB. The Perl client interface is essential in script driven testing."
"I am enjoying rapidly developing complex projects using OO and Python, but coming from a numerical background, I like that I can get fast number crunching performance when I need it from C modules wrapped up by SWIG. "