I'm a freshman doing computer science and the course focuses on c++...

I'm a freshman doing computer science and the course focuses on c++. Everyone has told me that trying to use a compiler on Windows is futile and that I need Linux. I have an old x220. Which distro do I install?

Ubuntu

arch linux

also its not that hard to setup g++ on windows its just harder than it should be

Ubuntu if this is your first time using Linux at all. Specifically Xubuntu because XFCE is the best.

Ubuntu looks like the right choice based on other things I've heard. What's XFCE and why does it make Xubuntu better? I've never touched Linux.

speaking from experience arch+i3+vim/sublime

Fedora, or Arch if you are hardcore.

/thread

i personally found arch to be alot easier than ubuntu because the wikis are fantastic

XFCE is a desktop environemt. Essentially it handles how the windows behave/look and stuff like that. Ubuntu typically comes with Unity, which a lot of people don't like. For the most part it's purely cosmetic and subjective and boils down to which one you like better. Google image search "Unity ubuntu" and "XFCE ubuntu" to get an idea of what each one will look like.

If you guys could give reasons for your deviation from the Ubuntu recommendation like this guy did:
That would be somewhat useful rather than serving only the purpose of telling me these things exist and that you like them.

Thanks, that makes more sense. I'll have a look. There aren't any compatibility issues between the two? For instance, commands within their respective shells don't change etc.

Ubuntu is literally THE most beginner friendly distro available so just go with that.

Sorry why can't Windows compile C++?

Never said that, it's just more of a hassle

poor summer

It can - it's just incredibly unintuitive and tedious to do.

xfce definitely looks better. Do I necessarily have to install Xubuntu or is possible to run Ubuntu with this DE?

You must be mentally retarded because I've had no problems.

Ubuntu comes with Unity by default but you can install a new environment if you want.

How so?

it's winter

look at all you nogs just gobbling up that b8

rick and morty reference but never mind

I've used most of these in the past and I'm mainly a C++ developer, so I'll try help.

>Ubuntu
It just works out of the box, it's the most common Linux distribution and so has the most support, additionally anything you do or encounter will be most applicable to other people's experiences.

>Arch Linux
I use this because it allows me just the right level of customization, enough that I can make it do what I want (and have a very easy time of doing so) but not so DIY that I need to compile software myself or search for hours for fixes. It also has a Wiki that outdoes most other distros I've used. It also has an extensive library of software called the Arch User Repository which makes installing less common pieces of software (often) easier than other distros.

>i3
i3 is a tiling window manager. I use it because I find it makes my work faster and my experience overall more enjoyable. Essentially rather than having "floating" windows you can drag anywhere, windows are locked into a grid of tiles, you can move them in this grid using command

>vim
I don't use this any more because it was too much hassle and it felt like I was using a giant ball of spaghetti code (hint: I was, Vim's code base and general structure are a total pigsty). Basically, Vim has two strong points among people who use it:
- Commands: Vim has a clever system of commands that can allow you to perform complicated operations very very quickly. These commands can be combined to create more complex commands and are bound to keys you'll find unusual coming from modern text editors, but which make for very fast editing once you learn them.
- Ubiquity: Every platform under the sun (except Windows of course) has Vim installed, if you SSH into a server it'll almost always be available, it's the default way of editing files for several programs (git and visudo spring to mind).

alright so ubuntu, then xfce installed afterwards will work? I can just go with unity if I fuck something up it really doesn't matter.
Cheers for the help by the way

if you want it to just work (TM) you don't even have to bother with XFCE and be on your merry way honestly. I've been using unity just fine on one of my laptops, however use KDE on my main work laptop

Oops forgot to finish the i3 section.
The tiling approach allows for greater control over windows, you can lay them out quickly without needing to accurately resize them, move them just with keyboard commands, it's also more aesthetically pleasing for some people. It also has support for floating windows which can be useful sometimes.

This honestly. Most CS students I know (of those who use Linux, some insist on using Windows for everything) and all of the people in my team at my last workplace just use Ubuntu with Unity.

I'm not baiting I honestly want to know why it would be harder to compile code on Windows vs. Linux.

>Everyone has told me that trying to use a compiler on Windows is futile and that I need Linux.
Just ssh into their lab and work there.

Nope, the shell is a separate thing. By default Ubuntu will use bash.

Thanks a lot. After a google i3 definitely looks the best. As a "tiling window manager" does it work in tandem with Unity, or instead of it?

>Most CS students I know (of those who use Linux, some insist on using Windows for everything)

funny, at my uni you're basically forced to either use linux or macOS by data structures since you have to use bash

Personally I find the Linux structure more desirable, I can just run make instead of having to lug Visual Studio around, which is enormous and awkward and slow on lower end machines. It also got me into very bad habits when I first started using C++, I used all the nice graphical shit via Visual Studio and then I discovered I needed a CMake file if I wanted the build system to be portable. I also dislike the way in interacts with CMake, you need to add the files in the CMake to have them show up in Visual Studio, for which you need to reload the project files, at which point you discover it's also created ZERO_CHECK and several other spurious projects. Perhaps using MinGW fixes these problems but I've never tried it.

i3 is a window manager, it just shunts windows around. Unity is a desktop environment, it provides other things like settings panels, bars, launchers, widgets, etc. as well as providing a window manager as part of the package.

Usually i3 is used instead of a Desktop Environment (Unity, KDE, XCFE), but some desktop environments will let you swap out their window manager and put in your own, not sure if Unity can do this (the KDE can, but I've never gotten it to behave properly with i3).

They're forced to use it at multiple points, we did a whole networks module using Ubuntu VMs, but many of them go straight back to using Windows as soon as they can, that's really what I mean.

My school's CS course starts by teaching us how to ssh into their Debian servers, so this is never an issue

Friend of mine just SSH'd to do everything. I stuck with Ubuntu. I think you could also try out CLion which integrates uses CMake iirc - you get to use an ide while keeping it cross-platform.