Jump to content

Programming tool

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Stevebroshar (talk | contribs) at 21:54, 14 December 2024 (Describe automation, toolchain and productivity; enhance examples (a data file is not a tool)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A programming tool or software development tool is a computer program that is used to develop another program. A tool provides a command line interface (CLI), a graphical user interface (GUI), or both. A CLI allows a tool to be used for automation such as for build or test.

In general, development tools manipulate computer files. A programmer may use a text editor or a source code editor to edit source code files. They may use a compiler to convert the source code into machine code files. They may use tools that package executable program and data files into distributable packages or install kits.

A toolchain is a set of tools that are often run in sequence such that the output of one tool is the input to the next one.

An integrated development environment (IDE), as the name implies, integrates the function of several tools into one. Usually, an IDE provides a code editing GUI and often provides for compiling, debugging, running tests and many other functions – as applies to the programming context.

Some tools provide productivity enhancements. Allowing the developer to perform tasks faster and/or better than without the tool. For example, profiling can be accomplished via hand-coded logging but a profiler tool might provide more detailed information with less effort.

Whether an program is considered a development tool can be subjective. For example, a compiler is clearly for development. But Windows Notepad is neither designed nor used exclusively for development yet is often used for development. A person who uses Notepad for development might consider it a development tool, but others, especially non-programmers, might not.

Programs used at runtime, such as a database engine or an interpreter, are generally not considered development tools. Such programs may be used during development but are a runtime integration instead of a tool for assisting in the development of a program.

The once notable computer-aided software engineering (CASE) initiative sought to provide tools with design aspects such as unified modeling language (UML) support. But, today, such tools are uncommon.

Uses of programming tools

Translating from human to computer language

Modern computers are very complex and in order to productively program them, various abstractions are needed. For example, rather than writing down a program's binary representation a programmer will write a program in a programming language like C, Java or Python. Programming tools like assemblers, compilers and linkers translate a program from a human write-able and readable source language into the bits and bytes that can be executed by a computer. Interpreters interpret the program on the fly to produce the desired behavior.

These programs perform many well defined and repetitive tasks that would nonetheless be time-consuming and error-prone when performed by a human, like laying out parts of a program in memory and fixing up the references between parts of a program as a linker does. Optimizing compilers on the other hand can perform complex transformations on the source code in order to improve the execution speed or other characteristics of a program. This allows a programmer to focus more on higher level, conceptual aspects of a program without worrying about the details of the machine it is running on.

Making program information available for humans

Because of the high complexity of software, it is not possible to understand most programs at a single glance even for the most experienced software developer. The abstractions provided by high-level programming languages also make it harder to understand the connection between the source code written by a programmer and the actual program's behaviour. In order to find bugs in programs and to prevent creating new bugs when extending a program, a software developer uses some programming tools to visualize all kinds of information about programs.

For example, a debugger allows a programmer to extract information about a running program in terms of the source language used to program it. The debugger can compute the value of a variable in the source program from the state of the concrete machine by using information stored by the compiler. Memory debuggers can directly point out questionable or outright wrong memory accesses of running programs which may otherwise remain undetected and are a common source of program failures.

List of tools

Software tools come in many forms:

IDEs

Integrated development environments combine the features of many tools into one package. They for example make it easier to do specific tasks, such as searching for content only in files in a particular project. IDEs may for example be used for development of enterprise-level applications.

Different aspects of IDEs for specific programming languages can be found in this comparison of integrated development environments.

See also

References

  • Software Development Tools for Petascale Computing Workshop 2007
  • Kernighan, Brian W.; Plauger, P. J. (1976), Software Tools, Addison-Wesley, pp. 352, ISBN 0-201-03669-X

Media related to Programming tools at Wikimedia Commons