# Programming tool

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/Programming_tool
> Markdown URL: https://mediated.wiki/source/Programming_tool.md
> Source: https://en.wikipedia.org/wiki/Programming_tool
> Source revision: 1355993413
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

Computer program used to develop another program

Not to be confused with [Programmable tooling](/source/Programmable_tooling).

Part of a series on Software development Core activities Data modeling Processes Requirements Design Construction Engineering Testing Debugging Deployment Maintenance Paradigms, models Agile Cleanroom Incremental Prototyping Spiral V model Waterfall Methodologies, frameworks ASD DAD DevOps DSDM FDD IID Kanban Lean SD LeSS MDE MSF PSP RAD RUP SAFe Scrum SEMAT TDD TSP UP XP Supporting disciplines Configuration management Deployment management Documentation Project management Quality assurance User experience Practices ATDD BDD CCO CD CI DDD PP SBE Stand-up TDD XP Tools Build automation Compiler Debugger GUI builder IDE Infrastructure as code Profiler Release automation UML modeling Standards, bodies of knowledge CMMI IEEE standards IREB ISO 9001 ISO/IEC standards ITIL OMG PMBOK SWEBOK Glossaries Artificial intelligence Computer science Electrical and electronics engineering Outlines Software development Computer programming Programming languages C C++ C# Java JavaScript Perl Python Rust v t e

A **programming tool** or **software development tool** is a [computer program](/source/Computer_program) that is used to [develop](/source/Software_development) another computer program, usually by helping the developer manage [computer files](/source/Computer_file). For example, a [programmer](/source/Programmer) may use a tool called a [source code editor](/source/Source_code_editor) to edit [source code](/source/Source_code) files, and then a [compiler](/source/Compiler) to convert the source code into [machine code](/source/Machine_code) files. They may also use [build tools](/source/Build_automation) that automatically package executable program and data files into shareable [packages](/source/Package_manager) or [install kits](/source/Installation_(computer_programs)).

A set of tools that are run one after another, with each tool feeding its output to the next one, is called a [toolchain](/source/Toolchain). An [integrated development environment](/source/Integrated_development_environment) (IDE) integrates the function of several tools into a single program. Usually, an IDE provides a source code editor as well as other built-in or [plug-in](/source/Plug-in_(computing)) tools that help with [compiling](/source/Compiler), [debugging](/source/Debugging), and [testing](/source/Software_test).

Whether a program is considered a development tool can be subjective. Some programs, such as the [GNU compiler collection](/source/GNU_compiler_collection), are used exclusively for software development while others, such as [Notepad](/source/Windows_Notepad), are not meant specifically for development but are nevertheless often used for programming.

## Categories

Notable categories of development tools:

- [Assembler](/source/Assembly_language) – Converts assembly language into machine code

- [Bug tracking system](/source/Bug_tracking_system) – Software application that records software bugs

- [Build automation](/source/Build_automation) – Building software via an unattended fashion

- [Code review software](/source/Code_review) – Activity where one or more people check a program's code

- [Compiler](/source/Compiler) – Software that translates code from one programming language to another

- [Compiler-compiler](/source/Compiler-compiler) – Program that generates parsers or compilers, a.k.a. parser generator

- [Debugger](/source/Debugger) – Software for debugging a computer program

- [Decompiler](/source/Decompiler) – Program translating executable to source code

- [Disassembler](/source/Disassembler) – Computer program to translate machine language into assembly language

- [Documentation generator](/source/Documentation_generator) – Automation technology for creating software documentation

- [Graphical user interface builder](/source/Graphical_user_interface_builder) – Software development tool

- [Linker](/source/Linker_(computing)) – Program that combines intermediate build files into an executable file

- [Loader](/source/Loader_(computing)) – Loads executable files into memory and prepares them for execution by the CPU.

- [Memory debugger](/source/Memory_debugger) – Software memory problem finder

- [Minifier](/source/Minification_(programming)) – Removal of unnecessary characters in code without changing its functionality

- [Pretty-printer](/source/Prettyprint) – Formatting to make code or markup easier to readPages displaying short descriptions of redirect targets

- [Performance profiler](/source/Profiling_(computer_programming)) – Measuring the time or resources used by a section of a computer program

- [Static code analyzer](/source/Static_code_analysis) – Analysis of computer programs without executing themPages displaying short descriptions of redirect targets

- [Source code editor](/source/Source_code_editor) – Text editor specializing in software codePages displaying short descriptions of redirect targets

- [Source code generation](/source/Source_code_generation) – Type of computer programmingPages displaying short descriptions of redirect targets

- [Version control system](/source/Version_control) – Stores and tracks versions of files

## See also

- [Call graph](/source/Call_graph) – Structure in computing

- [Comparison of integrated development environments](/source/Comparison_of_integrated_development_environments) – Notable software packages that are nominal IDE

- [Computer aided software engineering](/source/Computer_aided_software_engineering) – Domain of software toolsPages displaying short descriptions of redirect targets

- [Git](/source/Git) – Distributed version control software system

- [GitHub](/source/GitHub) – Software development collaboration platform

- [Lint](/source/Lint_(software)) – Tool to flag poor computer code

- [List of AI-assisted software development tools](/source/List_of_AI-assisted_software_development_tools)

- [Lists of programming software development tools](/source/Lists_of_programming_software_development_tools)

- [List of software engineering topics](/source/List_of_software_engineering_topics) – Overview of and topical guide to software engineeringPages displaying short descriptions of redirect targets

- [List of unit testing frameworks](/source/List_of_unit_testing_frameworks)

- [Manual memory management](/source/Manual_memory_management) – Computer memory management methodology

- [Memory leak](/source/Memory_leak) – When a computer program fails to release unnecessary memory

- [Reverse-engineering](/source/Reverse-engineering) – Process of extracting design information from anything artificialPages displaying short descriptions of redirect targets

- [Revision Control System](/source/Revision_Control_System) – Version-control system

- [Software development kit](/source/Software_development_kit) – Set of software development tools

- [Software engineering](/source/Software_engineering) – Engineering approach to software development

- [SourceForge](/source/SourceForge) – Software discovery and hosting platform for B2B and open source software

- [SWIG](/source/SWIG) – Open-source programming tool

- [Toolkits for User Innovation](/source/Toolkits_for_User_Innovation) – Design methodPages displaying short descriptions of redirect targets

- [Valgrind](/source/Valgrind) – Programming tool for profiling, memory debugging and memory leak detection

## References

This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (August 2010) (Learn how and when to remove this message)

- [Software Development Tools for Petascale Computing Workshop 2007](https://www.csm.ornl.gov/workshops/Petascale07)

- [Kernighan, Brian W.](/source/Brian_Kernighan); [Plauger, P. J.](/source/P._J._Plauger) (1976), [*Software Tools*](https://archive.org/details/softwaretools00kern/page/352), Addison-Wesley, pp. [352](https://archive.org/details/softwaretools00kern/page/352), [ISBN](/source/ISBN_(identifier)) [0-201-03669-X](https://en.wikipedia.org/wiki/Special:BookSources/0-201-03669-X)

## External links

Media related to [Programming tools](https://commons.wikimedia.org/wiki/Category:Programming_tools) at Wikimedia Commons

Authority control databases GND

v t e Software engineering Fields Computer programming DevOps Empirical software engineering Experimental software engineering Formal methods Requirements engineering Search-based software engineering Site reliability engineering Social software engineering Software deployment Software design Software maintenance Software testing Systems analysis Concepts Abstraction CI/CD Compatibility Backward compatibility Compatibility layer Compatibility mode Forward compatibility Software incompatibility Component-based software engineering Data modeling Enterprise architecture Functional specification Modeling language Programming paradigm Software Software archaeology Software architecture Software configuration management Software development process/methodology Software quality Software quality assurance Software system Software verification and validation Structured analysis Essential analysis Orientations Agile Aspect-oriented Object orientation Ontology SDLC Service orientation Models Developmental Agile EUP Executable UML Incremental model Iterative model Prototype model RAD Scrum Spiral model UP V-model Waterfall model XP Model-driven engineering Round-trip engineering Other CMMI Data model ER model Function model Information model Metamodeling Object model SPICE Systems model View model Languages IDEF SysML UML USL Related fields Computer engineering Computer science Information science Project management Risk management Systems engineering Category Commons

---
Adapted from the Wikipedia article [Programming tool](https://en.wikipedia.org/wiki/Programming_tool) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/Programming_tool?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
