## Installing Programming Languages Tools Without The Virtual Machine.

If you can't install my virtual machine, either because you have an ARM Mac
or due to other reasons, you will have to install the tools needed for this class
separately.  We will look at many languages, but the languages you will
definitely be asked to write programs in are:

  - **C** and **C++** (gcc and g++, or clang and clang++).  In addition, your C++ must
    be C++14 or newer (accepts `std=c++14` option).
  -  Microsoft **C\#** and **[F\#](https://fsharp.org/)**.
     These languages do not require Windows to run.
     You can install them on [Mono](https://www.mono-project.com/)
     in Linux or MacOs.  In fact, I would recommend Mono even if you have
     Windows and the .Net development tools, because it's easier for writing
     small programs.
  -  **[Rust](https://rust-lang.org)**
  -  Python and Perl (maybe)

We'll deal with other languages if the need arises.

### Recommendation for PCs

  If you have a PC but can't install my VM, my recommendation is to
  use VirtualBox or some other VM host such as Multipass to install a new
  Linux VM on top of Windows.  I recommend Ubuntu since it's easy.
  Installing development tools in Linux is usually much easier than on Windows.
  For example, to install the SFML library for C++ in Debian or Ubuntu Linux,
  you just need to `sudo apt-get install libsfml-dev`.
  
  Without a Linux VM, you will have to install the tools on  Windows directly.
  The community edition of [Visual Studio](https://visualstudio.microsoft.com/downloads/) is free (be sure to install F# as well as C/C++/C\#).

### Recommendation for Macs

  You can also install your own Linux virtual machine on top of MacOS
  with a non-VirtualBox VM host such as
  [Multipass](https://multipass.run/).  However, since MacOS is also a
  Unix-based operating system, it's already very similar to Linux and
  so I don't think it would be much better than just installing the
  tools directly.  You will certainly need
  [Xcode](https://developer.apple.com/xcode/).  Download Mono, which
  comes with C\#, and follow instructions for installing F\#.  You
  might have some languages installed already, such as Python.

#### C/C++ Compilers on Macs

  There are two versions of C and of C++: ANSI C/C++ (clang/clang++) and
  Gnu C/C++ (gcc/g++).  The gnu versions allow some extentions that we
  will be using in some programs.  On a Mac, although you can run gcc/g++ once
  you've installed Xcode and the relevant command-line tools, these are NOT
  the genuine Gnu versions.  For licensing reasons, gcc actually calls
  clang - clang and gcc are the same.  To install the real gcc/g++, you can
  try to follow the instructions [here](http://cs.millersville.edu/~gzoppetti/InstallingGccMac.html).  After you follow all the steps carefully, Gnu C/C++ will be
  available as gcc-13 and and g++-13.  gcc/g++ will still refer to the ANSI
  versions.


###  Choosing a Development Enviornment

  I believe that the best development environment for writing relatively
  small programs and experimenting with various languages is a simple
  editor and a command-line compiler.  But you can use whatever you want.
  Macs and Linux already should have Vim and some other simple editors installed.
  All systems can run [VS Code](https://code.visualstudio.com) (not to be
  confused with full visual studio).  For PCs, you can also choose a simpler
  editor such as [Notepad++](https://notepad-plus-plus.org/) and for Macs,
  [Textmate](https://macromates.com/).  Be sure to use an editor designed for
  writing code (not notepad or wordpad) and do things like show line
  numbers and match parentheses and other brackets.

<p>

Lastly, please remember the following: although I will be happy to help you
setup your computer if I can, ultimately you are responsible for preparing
your computer to do the assignments for this class.  Do not rely on me
for tech support.
