| SWIG Propaganda |
| |
| <p><img src="images/propaganda.png" alt="Propaganda"> |
| |
| <p> |
| The following comments about SWIG were collected by a user survey conducted |
| in March, 1998. |
| |
| <ul> |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"Very quick first results." |
| |
| <li><p>"Easy to use, no need to worry about language internals. It is a boon for application developers, like me." |
| |
| <li><p>"I like the fact that it automates much of the tedious work |
| in building an interface C/C++ functions. This makes development easier." |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"SWIG makes linking |
| my application to a scripting language easy enough |
| that it is worthwhile." |
| |
| <li><p>"I came, I saw, I wrapped. And it ran. Woo hoo!" |
| |
| <li><p>"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)." |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"I like all the time I have saved by not writing the interfaces myself." |
| |
| <li><p>"SWIG saves a lot of my energy in interfacing with many free |
| C/C++ libraries in my project." |
| |
| <li><p>"SWIG handles the gory details and allows me to concentrate on the important things." |
| |
| <li><p>"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." |
| |
| <li><p>"Thanks again for SWIG... It's fun and allows great productivity while |
| avoiding much tedium." |
| |
| <li><p>"[I like] the ability to write extensions basically without having to think too |
| hard about what I'm doing." |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"Before I had to use C++ for my ``rapid'' prototyping. |
| Now I can script it!" |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"On the whole, SWIG is my most important development tool |
| after gcc!" |
| |
| <li><p>"SWIG has enabled our customers to interact with our toolkits in fundamentally |
| new ways." |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"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." |
| |
| <li><p>"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. " |
| </ul> |