Имя програмы может быть любое, какое Вы захотите.
Единственное, чему меня учили относительно имени программы, это то, что название должно быть на английском языке, и желательно без пробелов. Не уверен, что без выполнения этих условий программа не скомпилируется, но я всегда пишу именно так.
Ps Если Вам нужно название, состоящее из нескольких слов, то поставьте нижнее подчеркивание между словами. Название будет легко читаемо, а программа точно ругаться не будет.
Для меня самым легким показался бейсик, это был первый ЯП, который мне пришлось освоить. Но вообще рекомендуют начать c Паскаль, так этот язык более структурирован, кстати, сложным я бы его тоже не назвала, да и программы на нем читаются гораздо легче чем во многих др. языках.
Первый язык программирования, как бы он не назывался, по своей сути был чисто машинным языком. Т.е. программы писалась на языке, понятном процессору, что исключало транслятор. Где-то 1820-е годы. Черльз Бэббидж и Ада Лавлейс.
А уж далее пошли различные автокоды 1:1, т.е. те же самые машинные языки, только их команды в кодах заменялись для удобства использования человеком символьными командами. Вот тут уже стали вовсю использоваться трансляторы с автокода в машинный язык, хотя на первых порах вполне себе хватало трансляторов-интерпр<wbr />етаторов.
Программирую на Python 3.5 и С++14. Изредка приходится писать писать на AVR assembler, хотя ассемблер я не люблю, но приходится с ним общаться, когда идёт битва за скорость прототипа. В иное время я предпочитаю с ним не связываться. И если скорость для данной задачи микроконтроллера не совсем уж сильно не важна, то я предпочту плюсы.
С++ -- для меня это язык общего назначения. Программы на нём быстрее, чем на Питоне, код строже, поэтому некоторые ошибки ловить проще.
Питон я использую как язык для научных вычислений. На нём программы пишутся быстро и сравнительно просто. Код можно быстро поменять и практически на лету вносить изменения. Опять же, в коде можно позволить себе некоторые "вольности", как, например, присвоение одной переменной сначала строки, затем числа, а затем и функции. К этому прибавляется обилие библиотек "на все случаи жизни".
Дело в том, что под этим понятием можно понимать ряд разных вещей. Они похожи между собой идеей.
1) Подключение заголовочного файла.
#include <stdio.h>
#include "myfile.h"
В заголовочных файлах чаще всего хранятся прототипы различных функций и некоторые константы. Это нужно, чтобы компилятор знал описание функций, которые вы используете, если они описаны не вами.
2) Подключение lib-файла.
Обычно делается в настройках проекта или коммандой #pragma comment(lib, "mylib.lib")
Таким образом мы можем использовать код, хранящийся, например в dll, без ручной загрузки.
3) Загрузка dll.
Делается через вызов функции LoadLibrary и последующими GetProcAddress - это ручная загрузка функций из библиотеки.
Все это предназначено для того, чтобы вы могли использовать сторонний код (будь то стандартные средства языка или код написанный просто другими программистами).