Какая разница между этими языками ?
Язык C - это язык, которому 40 лет, на нём очень много программ написано, поэтому сталкиваться с ним в мире компьютеров ты будешь постоянно.
Язык C++ - это язык, созданный лишь с одной целью, - прославить своего автора так же, как C прославил своего. Поэтому он всё время противопоставляется C, при этом явно до него не дотягивая.
Тут тебе и каша-малаша в приоритетах операций, и запутанный синтаксис (иногда чрезмерно удлинённый или в стиле масла масляного), множество введённых ключевых слов, убивающих любой язык, и вечная недоделанность встроенных типов данных (стек или очередь, которые обязательно надо дописывать, прежде чем пользоваться).
Но ему тоже много лет (лет на 15 он младше C), да и производительность сохранилась на сишном уровне, поэтому кода тоже много и есть многие вещи, которых нет для C.
Язык C# - это язык, созданный лишь с двумя целями, - выпнуть Java с рынка и максимально пришпилить программистов к Windows, чтобы они никуда не могли с неё уйти и были вынуждены ставить сегодняшние индусские обновления для десятки.
Сам язык хороший, в нём всё есть, но его политическая направленность заставляет софт работать для Microsoft, а они обычно бесплатно ничего не делают и целенаправленно создают проблемы из воздуха.
Резюмируя вышесказанное, хорошо спроектированные языки - это C и C#, но C - минималистичный и удобный для подготовки к ассемблеру (а это тоже придётся узнать с вероятностью 100%), а C# - полон всех новшеств, но подходит для перехода на другой хороший язык.
А программировать надо в Linux, там всё для этого есть.