Имеют ли определенные языки встроенную архитектуру процессора? - PullRequest
4 голосов
/ 29 мая 2009

Мне любопытно узнать, подходят ли определенные языки по дизайну для определенных архитектур процессоров. Когда я говорю об архитектуре, я имею в виду не ARM / PPC / MIPS, а больше архитектур на основе стека, накопителя или регистра.

Например, я могу думать о Forth, который является архитектурой стека. Любые другие?

Ответы [ 7 ]

5 голосов
/ 29 мая 2009

Да, определенно ... все идет и другим путем: многие аппаратные архитектуры предназначены для работы с определенными языками.

  • Архитектура RISC - это ответ на то, что люди перешли с ассемблера на скомпилированные языки, такие как C / C ++.
  • Берроуз B5000 вместо ассемблера имел Алгол.
  • Существует несколько различных Forth фишек .
  • Машина Lisp были разработаны для эффективной работы Lisp.
  • Java-процессоры выполняют аппаратный байт-код Java.
  • Некоторые процессоры ARM имеют (опционально) Технология ускорения Java .

Возможно, есть еще много хороших примеров.

4 голосов
/ 29 мая 2009

Да, они делают. Например, язык программирования Occam изначально был связан с архитектурой Transputer .

2 голосов
/ 29 мая 2009

Возможно, это немного умный ответ, но:

Языки ассемблера задействованных процессоров тесно связаны с архитектурой, поэтому, да, существуют некоторые языки, где это правда.

Возможно, языки более высокого уровня демонстрируют то же самое, возможно, более интересно.

1 голос
/ 29 мая 2009

Я видел выступление Саймона Пейтона Джонса в Google Video, в котором говорилось об этом. Он упомянул, что в те времена люди были очень заинтересованы в написании аппаратного обеспечения, специализированного для выполнения определенного языка, но люди нашли лучший способ решить проблему: сделать компилятор умнее. Посмотрите на Хаскелл. GHC производит несколько смехотворно быстрый код из высокоуровневых конструкций, но Haskell настолько сильно отличается от ассемблера x86, что оба выглядят чуждо друг другу. То же самое произошло с Java и Lisp: Java и Lisp работают очень быстро на современных компьютерах и используют приличные преимущества наших процессоров, но изначально Java была скомпилирована для странного стекового байт-кода, и очень давно люди создавали машины Lisp.

Вот видео, кстати. Большая часть этого не относится к текущему вопросу, но вы можете найти его интересным, он о том, «почему функциональное программирование важно» и о том, как сделать модульные тесты простым способом.

http://video.google.com/videoplay?docid=-4991530385753299192&hl=en

Только недавно (в последнее десятилетие или около того?) Компиляторы были настолько умны, что сделали Haskell и Java почти такими же быстрыми, как C, хотя ни один из них не раскрывает большую часть базовой архитектуры. Черт, GHC даже не использует стек, насколько это странно?

0 голосов
/ 29 мая 2009

C был написан в начале 1970-х годов для соответствия DEC PDP-11 например На PDP-7 язык программирования B имел только один тип данных, но портируя его на PDP-11, который имел типы данных различного размера, в язык были добавлены типы данных для переменных.

0 голосов
/ 29 мая 2009

Самый известный пример, конечно, c

0 голосов
/ 29 мая 2009

Большинство языков предназначено для Архитектура фон Неймана , которая является основой большинства процессоров.

Occam для Transputer, упомянутый Нилом Баттервортом, является заметным исключением.

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

...