Когда люди впервые задумались: «C - это портативный ассемблер»? - PullRequest
22 голосов
/ 14 июня 2010

В популярной культуре языков программирования кажется «принятой концепцией», что «C - портативный ассемблер». Я впервые услышал это по крайней мере 15 лет назад. Но когда это действительно стало частью массовой культуры?

Примечание: если вы не согласны с тем, что «C - портативный ассемблер», просто пропустите этот вопрос. Этот вопрос о «популярной культуре программирования». Я добавлю комментарий к этому вопросу, который вы можете проголосовать за тех, кто не согласен с этим утверждением.

Ответы [ 6 ]

36 голосов
/ 14 июня 2010

От введения к первому изданию Язык программирования C :

C является относительно "низким уровнем" язык. Эта характеристика не уничижительное; это просто означает, что C имеет дело с однотипными объектами что большинство компьютеров делают, а именно символы, цифры и адреса.

[...]

Опять же, поскольку язык отражает возможности современных компьютеров, программы на С, как правило, достаточно эффективны, поэтому вместо них нет необходимости писать на ассемблере.

[...]

Хотя C соответствует возможностям многих компьютеров, он не зависит от какой-либо конкретной архитектуры машины, и поэтому с небольшой осторожностью легко писать «переносимые» программы ...

По крайней мере, общая идея сочетания переносимости с общими возможностями языка ассемблера, кажется, возникла почти с самого начала.

11 голосов
/ 14 июня 2010

Вот почему C был разработан.С самого начала C был разработан для мобильности.

3 голосов
/ 14 июня 2010

Понятие C как «переносимого ассемблера» связано с тем простым фактом, что большинство программистов на «поп-культуре» C слишком ленивы, чтобы изучать язык «жестко» - академически - и вместо этого предпочитают «учиться» уна практике, в основном, связывая языковые команды с подразумеваемым базовым машинным кодом.Большинство из этих ассоциаций основаны на довольно нелепых заблуждениях о языке, которые возникают здесь (и на других форумах) как вопросы типа «У меня 20-летний опыт программирования на С, но я не понимаю, почему мой типХакерская игра больше не работает ".Тем не менее, большинство из этих типов «переносимых ассемблеров» на самом деле гордятся своим подходом, считая, что все остальные не достаточно компетентны, чтобы видеть сборку за кодом C:)

Другими словами, единственные люди, которые видят C как переносимыйАссемблер - это люди, которые никогда не удосужились выучить язык.Это действительно просто поп-культура.C не является переносимым ассемблером, и на самом деле это не вопрос «согласия» или «несогласия» с ним, а скорее вопрос знания как жесткого факта.«Популярная культура программирования», о которой вы, похоже, упоминаете, очень слабо связана с профессиональным миром программирования на С.

1 голос
/ 15 июня 2010

В тот момент, когда они начали экстраполировать / неправильно интерпретировать определения слов:)

Язык ассемблера: символическое представление (или мнемоника) числовых машинных кодов и других констант, необходимых для программирования конкретной архитектуры ЦП.

Ассемблер: Программа для преобразования ассемблера в машинный язык.

C: язык программирования, который

    (1) is not a mnemonic of a particular CPU architecture
    (2) cannot be fed into an assembler

PS: не стесняйтесь понижать этот ответ столько, сколько хотите :)

0 голосов
/ 15 июня 2010

В тот самый момент, когда самодовольные Лиспи забыли, что их REPL был реализован на языке C.

0 голосов
/ 14 июня 2010

Полагаю, это был первый раз, когда был язык более высокого уровня, чем C.

Это сделало бы C переносимым, но все же довольно низким уровнем (и, по крайней мере, в некоторых умах, ближайший, который вы можете получить)ассемблеру и все же быть переносимым).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...