Skip to content

How do I program?

OS (Operating system)

Your operating system is the software that talks directly to your hardware (including drivers and stuff). Knowing how things work on your operating system (OS) is crucial for all the other steps to follow when we program locally.

Windows

Windows is the most common desktop OS on the market so let's start with this one.

This OS is a propriatary(meaning commercial, not open source) OS which is developed by Microsoft and it has its own Windows kernel.

It is limited in its configurability(e.g. you can't change your desktop environment) but it has great compatibility due to the fact that it's so commmon.

MacOS

This is the second most common desktop OS on the market so let's continue.

This OS too is propriatary but in contrast to Windows it's based on Unix and developed by Apple.

It is also limited in its configurability and it has less compatibility because its less common.
But Adobe programs are exceptionally well optimized for MacOS and you can't get around it for iOS (and for that matter ipadOS and MacOS) development.

Linux

This is one of the least common desktop OS on the market. Multiple OSs based on the Linux kernel fall under the "Linux OS" category.

Compared to the other two Linux is open source (meaning the source code is available for everyone to see and modify) and is (like MacOS) Unix based.

In the past drivers were extremely limited for Linux but that - among other things like software support - have improved drastically in recent years.
It's also the most configurable one (you can even run it without an desktop environment!) and it has the most options to choose from.

Other

This is the section with fairly rare desktop OSs or mobile OSs.

We will still take a quick look at them as some of them will be platforms we develop for.

Other OSs
    BSD "BSD(Berkely Software Distribution), also known as Berkely Unix, is a discontinued Unix operating system developed and distributed by the Computer Systems Research Group (CSRG) at the University of California, Berkely." - Cited from WikiPedia
    Android Android is one of the most common mobile operating systems(phone-tablets) and it's developed by Google.
    It's also one of the most open ones out there, both because of it's: 1. open source nature
    2. And it's open platform where you can run your own Android apps(although this seems subject to change recently)
    Visit this site for more information
    iOS and iPadOS iOS is the other big player in the mobile OS market while iPadOS is an iPad only OS.
    They're both developed by Apple and you'll need an Apple device for their development (either through MacOS with its emulator or the physical phone/tablet itself).
    More information can be found at: iOS, iPadOS

IDE

An Integrated Development Environment (IDE) is a program which is used to develop software.
It often includes special development tools for writing and debugging (correcting mistakes in a programm) code.
Popular examples include VSCode, Zed and JetBrains IDEs.

But there's a difference about the approaches an IDE might take.

There are IDEs like VSCode or Zed for example which take a more plugin based approach, meaning most of the functionality comes from plugins.
Whereas IDEs like the ones from JetBrains have most functionality already at the core of the application.

There are both up and downsides to these approaches:

Plugin based approach: Setup can be tedious, but the core application itself remains lightweight.
Core functionality based approach: Setup is often not required or easier, but the core application itself can be bloated for certain use cases.

Installations

Depending on which OS you chose the installation process for the required software can look quite different. The most stark difference though is between Windows and MacOS/Linux.

Windows Installations

Windows installations mainly involve downloading an .exe file and executing it to start the setup.
You'll rarely use the terminal in Windows to do installations except when using winget - an open source tool that allows for applications to be installed via the command line.

Note: Oftentimes you'll also need to edit your system's variables or user environment variables to complete the install.

For a guide on how to do that: Click this link

MacOS Installations

MacOS installations can be both done by installing graphically or installing via the command line.

Note: Installations of regular apps are often done via graphical installations.
Development tools are often installed via the command line.

Graphical Installations

Mac App Store and manual installs via DMG/PKG files are the main ways to install apps on macOS.

CLI (command line interface) Installations

If you install things via the CLI you should use a package manager like homebrew.
Here is a guide to install the homebrew package manager: Link to guide

Linux Installations

In contrast to Windows or MacOS the main way to install things in Linux is through the command line.
But there's also a little thing to note here:

Linux distributions tend to use a package manager that is shared within a distribution family.
(e.g. Debian-based, Fedora-based, Arch-based)

This means that for example:

  • APT, used by Debian and Debian based distros
  • DNF, used by Fedora(+RHEL) and Fedora based distros
  • Pacman, used by Arch and Arch based distros

But don't be mistaken. You can also install graphically in Linux.

In comparison to the other OSs you can/have to install support for these app/package formats(if not preinstalled in your distro) for example: snap, Flatpack

But there's also package types used by distributions that come with support in their respective distribution family:

  • .deb files (on Debian based distros)
  • .rpm (on Fedora based distros)
  • .pkg.tar.zst package (on Arch based distros)