-
Notifications
You must be signed in to change notification settings - Fork 0
Software Setup
In a nutshell:
This page describes how to set up a computer to code. While the focus is on robotics programming, the reader will find setups for other common programming languages as well, like Python and C++.
h2. Common Software
Programming effectively on all operating systems will require the following software:
-
A package manager.
This is a tool designed to download other programs by name automatically, and to update them en masse if any of them have changes. It is an alternative to chasing down individual pieces of software and downloading their installers.
-
Source code editors.
While it's technically possible to edit software using Notepad or TextEdit, that's not a good idea. Programming is not a trivial discipline, and keeping track of control structures, indentation, syntax errors, and line numbers ought to be a tool's job and not a human's.
-
Network tools.
Is your computer online? Is the FRC robot reachable? Why is this upload so slow? Tools exist that professional developers use to answer those questions, and we can use them too.
-
Terminals and shells.
A shell is a program that sits around and does absolutely nothing except to wait for user input to execute. While the shells you're probably thinking of are text shells (
C:\>
with a blinking cursor), graphical shells exist too, and you are probably using one right now: Windows Explorer or MacOS's Finder.A terminal is a window that displays lines of text -- usually shells. A good terminal will be able to run multiple shells at once, control their look and feel, and handle keyboard input in a flexible way.
-
Compilers and interpreters.
The only language that computers understand is assembled machine code -- low-level binary opcodes, 1s and 0s. That is why programming languages exist: source code is for humans. We write the source code in a source code editor, and either an interpreter reads that code directly and then runs it or a compiler converts it to machine code first. Either way, code isn't code until something on your computer reads it.
-
Productivity tools.
There's no reason that you should be subjected to ads while you browse the web, so if your browser cannot block them, install one that does. There are also system monitors, SSH clients, and even userlands that we've come to appreciate over the years, so where applicable, we will list those as well.
h3. Setup for Microsoft Windows
Pros and cons:
🟢 Widely supported for high-school robotics.
- Lots of robotics software is written for Windows, sometimes exclusively.
🟡 Very little tooling.
- Programmers on Windows have to install a lot of stuff before they can become productive.
🔴 Uche hates Windows.
- (No text)
h3. Setup for MacOS
Pros and cons:
🟢 Good userland.
- MacOS is really a Unix variant underneath the hood, so many productivity tools are built-in.
🟡 Lacks package management.
- MacOS would prefer that you use their App Store instead. (We don't use it at all.)
🔴 Gets in your way.
- Occasionally, MacOS's design decisions can be infuriating and the reasoning behind them inscrutable, such as the lack of correct behavior for the
Home
andEnd
keys, or confusing maximizing and fullscreen windows. Working around these flaws takes time.
h3. Setup for Ubuntu Linux
Pros and cons:
🟢 Good userland.
🟢 Very easy to program.
- All Linux distros include good terminals and shells, and ship with package managers that link to vast, curated repositories of pre-packaged software. Setting up Linux for programming takes only a few minutes.
🔴 Not popular for high school robotics.
- High-school robotics competitions almost always assume that students are running Windows or MacOS, even when the robot brains almost unfailingly run some flavor of Linux themselves.