Вы задали так много вопросов в одном; позвольте мне попытаться ответить, разделяя их. Я нанимаю много людей, которые относятся к этому типу профиля, и довольно часто мне приходится брать столько интервью и отвергать людей, потому что часто у них нет четкого ответа на заданные вами вопросы.
Является ли хорошее мастерство в C или C ++ достаточно хорошо, чтобы подготовить вас к другой программе?
Если вы на старшем уровне на самом деле НЕТ, то есть, если вы уже около 6 лет занимались программированием на C ++ для некоторых основных корпоративных приложений, а сейчас я пытаюсь поместить вас во встроенные системы, все из которых написаны на C - вероятно, ваш синтаксис программирования и способы отладки не являются проблемой. Но если вам нужно продумать проблему - вы, безусловно, очень грязные. Это верно с любой стороны на другой язык. Чем больше лет вы проводите только один тип языка - тем легче преобразовать в другой форме! Дело не в том, можете ли вы выучить синтаксис языка, но на самом деле вы думаете по-другому, когда вы находитесь на C, C ++, Java, Perl и Python. Чтобы расширить вопрос - чаще всего - C ++ и Java, ребята могут быть использованы взаимозаменяемо, как и Perl, PHP, Phython. С - совсем другая порода!
Если вы сравнительно молодой парень, скорее всего, вы быстро догоните его.
Означает ли это, что у меня выше навык, когда я знаю C ++, а не C
На самом деле нет. Нет, потому что, как правило, если вы способны создать полноценный продукт из C, это гораздо более сложная задача, чем делать это в C ++. Количество людей, которые могут освоить устранение неполадок в системах с общей памятью, намного меньше, чем количество людей, которые могут написать достойную программу с графическим интерфейсом, используя VC ++ или аналогичную среду.
Означает ли это, что знание C (или программирование самого низкого уровня) - это самый высокий уровень достижений?
Нет снова! Это не противоречие. На этот раз это зависит от домена, который вы сравниваете. Если вы смотрите на системное программирование внутри ядра Linux или что-то очень похожее на аппаратное обеспечение, возможности программирования на C более актуальны, однако, если вы пишете банковское программное обеспечение или некоторые механизмы бизнес-правил - C ++ обычно является естественным выбором. Дело в том, что ваша истинная сила заключается не столько в синтаксисе языка, сколько в том, как вы решаете класс проблем, и вы можете только надеяться овладеть несколькими категориями / областями в своей жизни. Если вы помещаете что-то в свое резюме - это то, что действительно имеет значение.
Значит ли это, что если бы я только был на C - я не знаю объектно-ориентированного программирования?
Не за что. Фактически, мой лакмусовый тест в интервью, чтобы узнать, является ли парень из C фона или C ++, состоит в том, чтобы задать очень простой вопрос - «Так вы можете заниматься объектно-ориентированным программированием на C?» - прыгает парень и говорит - «Определенно НЕТ!» он / она сотрудник C ++. Дело в том, что когда вы действительно пишете очень сложный код, такой как мультимедийный код, многопоточная система, стек протокольного уровня, вы все равно «мыслите как объектный код» - компилятор C не накажет вас, если вы плохо разбираетесь в двух подпрограммах или объекты - но когда система масштабируется, что продолжает вас пускать - я верю, время от времени - многие рождаются в эпоху объектной ориентации, довольно часто довольно слабо знают, как именно нарушается инкапсуляция в коде, который в значительной степени заполнены классами и объектами. Извините я отвлекся, Но дело в том, что ваши навыки анализа и проектирования проблем важнее, чем ваши навыки программирования.