То, что начинать надо с основ - понятно. Вопрос в том, что считать основами.
Основы - это то что 2 яблока плюс 3 яблока будет 5 яблок, или то что яблоки состоят из белков, жиров и углеводов, а если копнуть по глубже то есть бозоны Хиггса? Или то, что если яблоки оставить на полгода на столе они сгниют? Или то, что их надо мыть перед едой? Или то, что за яблоки в магазине надо платить деньги, а не туалетную бумагу? Это все основы различных аспектов взаимодействия человека с яблоками.
ASM может быть даст знание об основах внутренней архитектуры компа. Но зачем один процесс обучения языку нагружать дополнительно изучением архитектуры компа? Вам одной задачи мало? Может быть делать это вприсядку, чтобы еще и за одно поддерживать спортивную форму?
Структурный язык может дать знание об основах структурного программирования, алгоритмах и т.д. Знать чем qsort отличается от bubble sort полезно и не требует знания о том, что валяется в регистрах проца, а что в памяти, и что xor ax,ax быстрее чем mov ax,0.
Объектно-ориентированный язык поможет понять основы ООП, паттернов проектирования и т.д. Знать чем наследование отличается от делегирования, и когда разумно использовать паттерн strategy - тоже полезно и не требует знания ни архитектуры компа ни алгоритмов.
А еще может быть грамотного DBA можно вырастить начиная с SQL
Мое мнение такое: в современном мире есть тенденции к абстрагированию от уровня железа. Все что позже асма старается быть в той или иной степени кроссплатформенным. То есть про железо знать полезно, но если вы не будете писать драйвера - вам это знание не потребуется напрямую. Алгоритмы знать тоже полезно, но они неплохо инкапсулируются. В смысле знать о наличии Arrays.sort для большинства задач достаточно.
А вот архитектуру системы, которую вы пишете, вам спрятать не удастся и не удастся от нее абстрагироваться.
И если цель первого языка дать понять, что же такое современное программирование вообще - то и надо показывать различные его аспекты с должной степенью детализации. Вы можете писать дрова, но можете и не писать. Вы можете разрабатывать алгоритмы, но можете и пользоваться готовыми. Вы можете разрабатывать архитектуру ваших приложений, а можете использовать готовую от коллеги поумнее.
Можно попытаться выбрать язык в котором есть все. В с++ можно и вставки на асме писать, можно и алгоритмы эффективно реализовывать, можно и ООП проектировать. И кстати зачем так уж себя ограничивать? Если вас волнуют регистры и прерывания, поучите асм для удовольствия, а потом яву чтобы можно было как-то прокормиться
Обучение вопрос вложный. Фиг знает, может быть если сначала выучить японский, а потом древнегреческую философию, то потом все языки пойдут как по маслу... Но подход "сначала паскаль, потом все остальное" тоже неплохо работал. Еще можно смотреть на настоящее - каких специалистов на рынке требуется больше. Мне видится это java,c#,sql,html,javascript. Можно пытаться угадать будущее, функциональные языки там или ядерная война.
Интересно посмотреть, что бы получилось если начать с UML и проектирования, а уже потом думать как это накодить
Короче начинал бы я с паскаля как структурного языка и дельфей (да, все знают что дельфи это оболочка, а язык object pascal, ну и что? учить object pascal отдельно?) как ООП с возможностью дизайнить GUI. А еще лучше начинал бы с того, на чем старший брат пишет, если он есть.