60+ Free Programming Tools
Posted on February 2nd, 2009 in Blog | No Comments »
No single programmer/ web developer is going to need all of the following tools. Instead, we put together this list to cover as wide a range of programming and development needs as possible.
Free and Open Source Programming Tools
This is by no means a comprehensive list, but it does cover a broad set of free tools, arranged by category.
Languages/ platforms
There are numerous free/ open source programming/ scripting languages, and each has its strong points and flaws. Some are great for pattern matching, others for rapid prototyping of web pages or web apps. You’ll have to find what works for you, based on your programming needs and what other developers are using. Choices include but are not limited to: Ruby/ Ruby on Rails, Gnu C/C++, Free Pascal, Java, Python (try ActivePython), Perl (try ActivePerl), and PHP.
Compilers/ Lexical analyzers
The chances of you needing to create a new programming language is slim. But if you feel like it, Lex and Yacc (Yet Another Compiler Compiler) or Flex and Bison are your tools. Lex and Flex are lexical analyzers, and Yacc and Bison are parsers. You’ll have to research your development environment to decide what you need to use, but you can start on the Lex & Yacc page at Compilertools.
Text editors
To write code, there’s always your handy dandy text editor, and there are a lot of them, depending on your operating system. Something simple with a bit of pattern matching ability and search and replace usually does the trick. There’s always the old hat Vi/Vim and variations. For Windows, there’s TextPad, Notepad++, Crimson Editor, and others - many of which handle PHP, Perl, C/C++, Java, Javascript and HTML - or some combination thereof.
IDEs
Sometimes you have to go beyond a text editor, into a nice IDE (Integrated Development Environment) so that you can write, test and refine your code in one application. Some options are Eclipse, Code::Blocks, Aptana Studio (for web dev). (Note: Aptana works standalone or as an Eclipse plugin.)
Debugging tools
Many of the top-end IDEs have debugging features built in, but there are standalone tools that give you more power. What you use really depends on which environment and which development language you’re using. Wikipedia has a list of links to debugging tools (or to lists of them).
Code and application repositories
IDEs might make it nice and easy to develop and test your code, but if you need some help getting started, you can find building blocks or free applications in various code or apps repositories. For example, CPAN is great for Perl code libraries. Google Code often has source code for apps and frameworks that you can integrate into your own code. Sourceforge has open source applications and tools. Don’t forget to also check Freshmeat and GNU Project, amongst others.
Web scripting libraries
There are dozens of web scripting libraries available, but two of the more popular and powerful are jQuery and Prototype. These tend to have loads of code samples written for them by other developers, most of which you can use readily for rapid prototyping and development of web applications.
Web browsers
Whether you’re doing web development or not, you’ll want a good browser. If you are doing web dev, you’ll want all of the latest: Firefox, Google Chrome, Opera, Flock, Safari, and yes, Internet Explorer and whatever else comes up. But for working in, web developers tend to favor Mozilla Firefox. While each browser has its strengths, Mozilla Firefox is arguably THE browser for web developers. Sure, you have to build web apps that run in multiple browsers, but in terms of developer-friendly features, plugins, and addons, Firefox is high on the list. Armed with the addons Web Developer and Firebug (for debugging web pages), you’re already several steps ahead. If you need to upload files, use FireFTP. Need to write articles and publish them? The ScribeFire HTML editor works in a pane (or tab) of your browser.
Web servers
Need to install a web server? Whether you’re doing it "locally" on your computer or on an Internet-accessible machine, Apache pretty much wins the competition hands down. There are a various small-footprint alternatives also available for free.
Social networking and forums
If you’ve downloaded most of the categories of software above, you have enough to get coding. But if you have trouble, join a relevant social network to help you find a colleague that can guide you. Or you could build your own network with BuddyPress and WPMU (WordPress Multi-User). With all the features that come with these two combined, you don’t really need forum software, but if you feel you do, look to Vanilla or better yet BBPress, which integrates well with WordPress. When you’re tired of coding and want to socialize, you can debate with your new friends about whether Captain Kirk and Mr. Spock would have used Macs or PCs (Windows or Linux?), or whether an iPhone is better than a communicator device.
Communications and planning
So you’ve used your social network to find a colleague or three who can help out with your project. Have a more private discussion or conference using Skype or Campfire (both free and paid options)
Project planning
If you need some help planning out your project, try Google Calendar, GanttProject and/or a variety of mind mapping tools such as FreeMind, XMind, Mindmeister and Mindomo. What you use depends on your needs.
Screen capture + video capture
Need some screen snaps or a video screencast for your documentation package? There are lots of options, though in the freebie arena, your choices are more limited. There are an ever-growing number of options for both types of software, depending on your operating system. Start with Wink (Windows, Linux) or Fireshot (Firefox browser addon) for screen snaps, and Camstudio for screencasting. TechSmith also has 30 day free trials of SnagIt and Camtasia Studio.
Documentation
Yeah yeah, we know. Real programmers don’t document? Well sometimes you have no choice in the matter. Your choices depend on your development environment, but for general purpose documentation, try something like OpenOffice Writer, Google Docs or Zoho Docs. If you need something more dedicated to software/code documentation,various languages have "code to doc" systems offered by third parties.
Version control
To manage your code, docs, and related files, version/ revision control software makes life easier. However, there are a lot of options. Subversion is a good multi-platform starting point, or check out Wikipedia for a list of other options.
FTP software
When your code and documentation is all ready to go live, FTP software gets it from your computer to a server - whether you’re serving the app online or allowing it to be downloaded. Or use the app to hide your stash of "boudoir" pics of your significant other. Filezilla is cross-platform and free, but if you prefer a browser interface, FireFTP is an addon for Firefox browser that runs in its own window pane. You can read more about Open Source at Wikipedia , and free software in general at the FSF/ Free Software Foundation.
Operating systems
What a concept - not having to pay for an operating system. Or at least not having to pay much. That’s what you get you pick Linux Linux Linux - any one of it’s several flavors. If you’re using Mac OS X, you probably know that it’s based on UNIX (just like Linux is). So you can port and install Linux/ UNIX apps on Mac OS X. But if you have to work on Windows, you could set up a dual boot (Linux and Windows), or you could use cygwin as a stand in. Cygwin is not an OS, but if you’re stuck with Windows and need (some) Linux functionality, this is one of your better options. You get a command line shell as a starter, and you can add various open source programming languages plus a clone of the X-Windows system, to get a visual interface. You don’t get true threaded processes, but otherwise it’s not a bad clone of Linux. Alternately, you could run a virtual machine application to emulate Linux on a Mac or PC.
Database systems
A relational database is the backbone of nearly all dynamically-rendered websites, as well as other applications. Without a database system, you’d have to use (1) coded data, (2) a flat data text file, or *horrors* (3) a spreadsheet. Um, no thanks; not for a live website that’s potentially serving content to thousands of people. Unfortunately, one of the most popular database systems, mySQL, is apparently no longer free since the founding company, MySQL AB, was bought out. (Brilliant move by the buyer of mySQL, considering how many millions of websites are powered by mySQL.) But there’s still the relatively popular PostgreSQL in the "free" category.
Markup languages
XML. XML is not a programming/ coding language, and it’s not just for web-based applications. It’s a markup language base, with which you can create custom markup languages and use standard XML parsers to do the initial data processing. You still need custom code to do the rest of the work. However, by piggybacking over XML, you save a great deal of development time and cost.
More Free Software Resources For Students
We put this list together primarily as a toolkit resource for college students who are either computer science majors or who need to do a lot of programming. But we also know that there are many other great sources of free software out there that are outside the scope of this article. Below are six articles that highlight the best that’s out there: