Здравствуйте, kilonet2, Вы писали:
K>Один знакомый, называющий себя "хорошим" программистом, говорит: "Я знаю основы, поэтому легко могу правильно написать любую программу, быстро освоить новую технологию и т. д...". Вот я и думаю, что есть эти "основы"? Ассемблер; умение решать алгоритмические задачи вроде ханойской башни ("алгоритмы и структуры данных"); Visual C++ с вездесущими объектами и копанием в устройстве Windows... или что-то ещё — я не знаю. K>Интересно узнать ваше мнение с аргументами.
Не претендуя на полноту... первое, что взбрело в голову.
Циклы. If. Подпрограммы/функции. И тд. и тп. Общие конструкции всех (императивных?) языков программирования.
Что такое строка. Что такое символ. Чем они отличаются от числа. Что числа бывают целые и дробные. Что точность их ограничена. А если неограничена — значит, там внутри мегапрослойка кода.
Что такое компилятор/интерпретатор.
Знание, что компьютер — это вычислительная машина.
Однажды моя бабушка спросила, можно ли считать на компьютере. Она была сильно удивлена, когда я сказал, что _только_ это и умеет делать — считать.
Знание, что на низком уровне все данные предствленны в виде байтов. В том числе и сама программа. Что такое бит.
Что такое память. Что такое иерархия памятей — регистры/кеш/память/жесткий диск. Что такое машинный код.
Что изображение состоит из (чаще всего, прямоугольных)пикселей. Что звук — последовательность чисел-выборок. Что фильм — последовательность картинок. Что по сети передаются электрические сигналы, потом байты, потом пакеты, потом потоки, потом .html страничеки и уже потом это превращается в то, что вы видите на экране.
Что такое операционная система.
Вообщем, многие вещи, о которых пользователь не знает.
Правильно работающая программа — просто частный случай Undefined Behavior