Для наибольшего понимания основ можно использовать C++ или Pascal. То и то - языки со статической типизацией (т.е. тип всех сущностей определен на этапе разработки, а не в момент запуска), что позволяет проще вникать в содержимое кода. Для обращения к объектам они используют указатели, после завершения использования объектов память нужно освобождать вручную, это позволит более ясно понять организацию памяти. Однако в С++ есть часть неявных преобразований, например числовое значение 0 может быть неявно преобразовано в логическое значение false, что может сбивать начинающих разработчиков и являться причиной ошибок.
В плане понимания понятнее язык Java, который старается по максимуму ограничить разработчика от ошибок, допущенных по невнимательности. Обращение к объектам происходит с использованием ссылок (урезанная и безопасная аналогия указателей), за границы массива вылезти нельзя, руками удалять объекты не надо. Но результатом такой "песочницы" на первых порах будет отсутствие понимания физического расположения объектов.
Скриптовые языки типа python или JS более просты для освоения, но вместе с тем делают много неявной работы, скрытой от разработчика. Соответственно, непонимание того, что в действительности происходит под капотом, будет растянуто по времени.
Зачем вообще знать, что под капотом, если написанная программа работает? Не нужно знать идеально, но нужно понимать, какие гарантии дает язык и окружение. Если упустить этот важный этап, можно наткнуться на проблемы, которые самостоятельно разработчик поправить будет не в силах.
Например, если у вас в учебном проекте произойдет утечка памяти, вы ее скорее всего и не заметите, хотя это косяк. А вот под нагрузкой реального проекта такие проблемы всплывут быстро.
Если потребуется помощь репетитора в изучении Java - обращайтесь, разберем подробно все и даже больше!
"вникать в содержание кода". Не приближайтесь к этому репитотору даже на растояние двухметровой палки.
Добрый день! Программировать что именно? Сайты, базы данных, игры...
Если вас интересуют игры, то советую начать с нашего курса Unity Базовый курс: 2D платформер с нуля.
В нашей школе разработаны курсы на любой уровень знаний, полный список наших курсов вы можете найти на нашем сайте. Заходите и выбирайте!
Java - не простой язык.
Ни в коем случае не начинайте с javascript.
Изучайте математику (матан, линал, дискретка) и C.
После того как научитесь сносно писать на C, появится вкус к программированию — тогда и выберете себе язык по душе.