Самыми сложными с точки зрения того, какие операции они позволяют делать, являются языки высокого уровня. На данный момент их 3: С++, Java и С#. Любители Apple скажут, что есть ещё Objective C, но он есть только для iOS.
Исторически С++ появился раньше всех. Код, написанный на С++, можно скомпилировать в любой операционной системе. Однако С++ не обладает большой частью функциональности, реализованной в Java и C#, плюс, с точки зрения программиста на последних двух языках, его "синтаксис" подчас чересчур громоздок и во многом устарел. Существуют различные расширения С++, типа Qt, которые пытаются устранить этот разрыв, но у этих расширений не очень-то получается.
Одна из причин, по которой С++ сохраняет свою популярность, заключается в том, что в С++ нет так называемого "сборщика мусора" - программы, автоматически чистящей память от неиспользуемых объектов. Это ставят С++ в преимущество, потому что программист получает ручной контроль за памятью. Поэтому С++ любят использовать для тех процессов, где расход памяти кажется настолько критическим, что автоматический сбор мусора не кажется вариантом. На деле, сборщики мусора в Java и С# заметно продвинулись со времён первых версий. Так что преимущество становится всё более сомнительным, особенно на фоне того, что а) для каждого объекта в С++ приходится писать дополнительный код деструктора, освобождающего память, б) не уничтоженные вовремя объекты - постоянные источник трудно отлавливаемых багов, в) в Java и C# есть методы, позволяющие прямо указать, что объект должен быть удалён в конкретном месте.
Java более проста в своём синтаксисе, чем С++, на Java написано куча программ для интернета вещей. Как и С++, Java изначально была многоплатформенной. Тем не менее, большая часть функциональности, которая есть в С#, на Java реализуется внешними пакетами, поддерживаемыми полутора программистами и потенциально рискующими конфликтовать друг с другом. Плюс, синтаксис Java кажется мне всё-таки более громоздким, чем у C#.
Как вы уже поняли, моим фаворитом был, есть, и вот уже 17 лет остаётся C#. Это язык с наиболее чистым синтаксисом, позволяющий изящно писать программы. Вся та функциональность, которая в Java достигается встраиваемыми пакетами, в С# уже есть. Плюс, пакеты туда тоже можно встраивать.
Многие программисты любят не любить C#, и связано это с его историей. C# - детище Microsoft, а Microsoft в целом имел имидж жёсткого копираста. Изначально на C# программы можно было писать только под Windows, что ограничивало его применимость по сравнению с Java. Плюс, единственным редактором, в котором можно было писать на C#, долгое время оставался Visual Studio.
Тем временем, всё это давно уже изменилось. Майкрософт стал распространять многие свои приложения бесплатно - в частности, есть бесплатная версия Visual Studio, по функциональности мало отличающаяся от платной. Xamarin сделал программы, написанные на C#, конвертируемыми в другие операционные системы. Наконец, появились и другие редакторы C# и вообще среды .NET, к примеру Rider.
Кроме того, C# выгодно отличается от Java тем, что прошёл ISO-стандартизацию.
В общем, для большого, сложного проекта, который делает устоявшаяся фирма, я бы всячески рекомендовал С#.
А как же функциональные языки? Haskell, Lisp?
это языки с программированием на стеке - например ассемблер мат. сопроцессора х86. Или в ранних версиях Эльбруса. Вместо плоской памяти и набора ячеек у вас стек и это настолько отличается от обычного логики человека что програмить это чрезвычайно трудно. А вот для компилятора это даже удобно и хорошо оптимизируется.
CREATE
DUP , 0 ?DO
DUP C@ C, CHAR+
LOOP DROP 0 C,
DOES>
DUP CELL+ SWAP @
Если мы ищем языки, которые могут изучать даже дети, то подойдут Scratch или Logo.
Если речь о взрослых, то, во-первых, вы тоже можете начать с указанных языков — будет полезно и весело! А во-вторых, однозначного рейтинга языков по уровню сложности просто нет, поэтому всё относительно.
К условно лёгким можно отнести Pascal, хотя он подходит для решения далеко не всех современных задач.
Сложным является Malbolge, но вряд ли на нём кто-то пишет :)
Из распространенных и наиболее популярных языков программирования — Python и JavaScript — по-своему сложны, но и одинаково прекрасны. В любом случае, их можно изучать с нуля новичкам в IT — с грамотной программой и серьёзным настроем у вас всё получится!