Being a lower level polyglot in terms of languages and tools, I generally keep a 'pallet' associated with each of my main languages, keeping things quite simple to work with:
- Build Tools:
- Some viable form of Make is required, generally I'll use local brew if an extension is needed. I prefer GNU Make over BSD PMake, as I find it more reliably cross-platofrom.
- CMake, while often little more than a poorly strung together bother, many projects now use CMake based build systems. It is actually a good tool but I don't favour it for use outside of a single OS family.
- SCons: powerful and effective, but often irksome to get a portable build. It's usually worth having available.
- Ant: you never know when you're gonna need it.
- Local brew of IDE and their background stuff, for example Visiual Studio for the vcbuild/msbuild modules and/or Code::Blocks. If I had a Mac, I'd likely have XCode handy.
- Documentation Tools
- Unix: troff/nroff and the usual macro packages. I actually like it.
- DocBook and XML/XSLT processing utilities. LibXSLT comes in handy.
- ReSTructured text and company
- Any local language related tools (e.g. for Java, Perl, Python, and C#)
- Doxygen: a multi-lingual documentation generator.
- Exuberant CTags: improved and vastly multi-lingual upgrade over ctags.
- TeX and LaTeX setups. I like TeXLive.
- Source Code Management / Version Control Systems
- Git -- must have!
- Anything I need to be handy with:
- CVS
- Subversion/SVN
- Bazaar/BZR
- Mercurial/HG
- C/C++
- I generally setup and maintain several compilers, multiple versions being welcomed. Generally I try to hang onto a member of the GCC 3 and 4 branches, and a fairly recent version of Microsoft Visual C++. Under unix-like and Windows systems respectively, I also tend to carry about a copy of PCC and Watcom.
- Java
- A suitable JDK, or a complete software development kit where appropriate.
- The GNU Compiler for Java can be useful.
- C#
- Mono and preferably the full stack of technology.
- Under Windows: several versions of the .NET framework and at least a workable version of Microsoft Visual C#.
- Python
- A copy of CPython, preferably both modern versions of 2.x and 3.x releases.
- The usual parts of CPython that some distrios strip out, like SQLite3 or Tk bindings.
- Another implementation for testing (e.g. IronPython) is appreciable.
- Perl
- A standard perl distribution, preferably the current major version or the one before it.
- Common perl modules one is actually likely to use someday.
- Lisp
- CLISP for general use, i.e. common lisp
- Armed Bear Common Lisp (ABCL) in case it eases deployment issues
- GNU Guile: my normal way to use scheme.
- Bigloo: a scheme compiler that's worth poking around
- Some other readily available Scheme implementation available, preferably one that is at least moderately R5RS compliant
- PHP
- Fairly recent version of PHP setup with
- Command line interp.
- Suitable Apache modules
- The CGI/FastCGI friendly thingy
- Ruby
- Current local-main line version.
- Rake build tool.
- A collection of handy modules
- UNIX shell scripting
- Something fairly portable, ash/dash based is nice.
- GNU BASH.
- Real and public domain versions of the Korn Shell.
- ZSH, my favourite.
- Go
- Standard distribution compiled from source.
GUI and Console versions of Vi IMproved being a very obvious requirement ;). I also tend to keep versions of Emacs, some flavour of MicroEMACS, and SciTE available in a pinch. I like having ed available.
Generally some form of webserver, be it a quick tester (ala Python) or dedicated (I like nginx and Apache), is usually required: plus a decent web browser with javascript support.
Profiling, code generation, analysis, and debugging tools are almost universally welcome. I in particular like to keep Valgrind and GDB handy for a rainy day.
Like wise I prefer having certain libraries fully integrated into that stack, i.e. where appropriate having interfaces the common GNU/Gnome libraries (GTK+/cie), Qt3 and Qt4 libraries, bindings for SQLite3 and a major player (MySQL, MSSQL, etc), OpenGL, and so on and so forth. I tend to leverage both languages and tools whenever possible.
Someday I'll likely incorporate Lua, and dialects of Forth and ML into the mixture. Like wise I prefer a reasonably NAWK friendly version of AWK to be available. I also have interests in picking up Prolog, Haskell, Erlang, Ada, and a few lesser known languages, but just don't have the time to screw with such things a lot these days :'(.
Simply put, where I go, a whole freaking lot of development tools go with me!
No comments:
Post a Comment