Лол, постоянно путают два понятия: "основы программирования" и "языки программирования". Основы нужны для того, чтобы понять базовые алгоритмы, осознать как система исполняет код, что можно делать, а что нельзя. Для этого можно пользоваться любым языком, но перегруженные стандартными конструкциями языки будут путать новичка. Мы начинали с 2х простейших языков Pascal и C. Можно выбрать что-то одно, я бы начал с C (Б.В. Керниган, Д.М. Ричи. Язык С.). После осознания стандартных конструкций и понимания что такое память, диск и т.п. можно приступать к ООП. Тут уже похрену: C++/Java/C#/Python/Ruby и т.п. Хорошему программисту плевать на чём писать. Мы за время обучения освоили более 10ти языков. Всё что было после C++ проблем уже не вызывало.
BrainFuck почти не перегружен стандартными конструкциями, восемь команд всего, как раз для новичков.
Тогда уж BF, Whitespace. Lisp шикарен на самом деле. Для определённого типа задач он незаменим, как и Haskell, но порог вхождения в него ниже. Я Haskell так и не осилил, хотя и не пытался толком. Функциональные языки твёрдо занимают свою нишу и никуда не денутся.

