01.03 Tools for Programming
What tools are needed to program or code?
You do not need a lot of tools to create computer programs and to write code. A basic computer and a text editor is all that is necessary but additional tools and software can make the process easier and more efficient.
Computer
Most computers can run basic programs written by users. A faster computer can help with less waiting but is only necessary for computationally intensive tasks such as machine learning. One can never have enough screen real estate when producing digital content, and coding is no different. It can be very helpful to have multiple monitors to spread out reference material, your code editor, and live previews of the program on different screens. It is not necessary to have multiple monitors but it can greatly improve efficiency.
Text Editor
Although basic text editors that come with a computer, Notepad in the case of Windows and TextEdit for the Mac, can be used for coding, it is recommended to used a text editor with features designed for coding. Features such as syntax highlighting, code completion, extensions, debugging, code environments and more make code specific text editors much easier to use than a basic plain text editor.
Text editors should not be confused with programs like Open Office, Microsoft Word, or Google Docs. While these programs appear to write just text, they include lots of “markup” behind the scenes to make everything look pretty. This extra markup does not play well with computer code. Even the default text editor TextEdit on the Mac defaults to Rich Text Format (RTF) and will create problems with code writing.
Text Editors for Coding
Various text editors are listed below. Try out various editors to see which you prefer. The instruction in this course will primarily use Visual Studio Code .
- Visual Studio Code - VSC is the multiverse sized elephant in the room of text editors. It has lots of features for large complex projects, a rich extension ecosystem, and new AI tool integration such as GitHub’s Copilot. VSC is owned by Microsoft which also owns GitHub so integrations with Git and Github are realatively seamless. The program is free, open source and runs on Mac, Linux, and Windows.
- Sublime Text is a simple text editor that runs on Mac, Linux, and Windows with specific features design to help you code such as auto complete and syntax highlighting. It may not have all the features of more robust text editors but it works well for programming projects.
- Notepad++ is a no frills but powerful text editor for Windows.
- Brackets is a text editor designed for web development.
- GNU Emacs - “An extensible, customizable, free/libre text editor — and more.”
Web Browser and Internet Access
A lot of programming projects are made with the intention of interacting with or displaying on the internet. Even if you are designing a local only program that will have zero online connectivity, internet access is essential to efficiently research code references and find the answers to problems when your code doesn’t work as intended or not at all.
A web browser will allow you to preview web based programming projects and test them before deploying the project publicly. Text editors like Visual Studio Code have built in virtual servers that show how Javascript or other code will run once hosted on the web. A web browser is also indispensible for any web development programming project.
Programming Languages
If you tell a human to draw a red circle in the middle of a page, unless they are newly born, they will understand what you mean and be able to execute the instructions. Computers do not understand this type of natural language instruction. This will likely change with ever developing Large Language Models (LLMs) and AI , but for now you need to use a specific programming language that the computer understands in order to give it instructions to follow.
- C
- C++
- Javascript
- Python
- Swift - https://docs.swift.org/swift-book/
- Rust
- PHP
Development Environment
A development environment is a method of testing code and projects before sending them out into the world. It is a way to experiment, test, and try things out without the risk of having project or program breaking changes being published.