Подтвердить что ты не робот

Когда люди сначала начали думать, что "C - портативный ассемблер"?

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

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

4b9b3361

Ответ 1

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

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

[...]

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

[...]

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

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

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

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

P.S: Не стесняйтесь записывать этот ответ так, как хотите:)

Ответ 5

Мое предположение было бы в первый раз, когда был язык более высокого уровня, чем C.

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

Ответ 6

В точный момент Smug Lisp Weenies забыл, что их REPL был реализован в C.