Другие языки программирования и технологии
А вот правельно ли я думают о языках программированиях? И каквообще делают?? (см.внутри)
Мне кажется что вводя команду, скажем в окно ку-бейсика (на других долго расписывать) INPUT x, y x / y = z print "z="; z C инпутом понятно, там какбы оперативка подключается расмотрим эту строку x / y = z тоесть если знак деления находится в программе то при её выполнении подключается какойта чип, процессор, который занимается сложением вычитанеием умножением или делением чисел. Тоесть как бы при вводе команды, подключается какоето устройство. И тоесть как бы так языки программирования и делают? Просто "биндят" какую либо команду к определённому устройству, которые выполняет своё дело? Если так то как это делают, на специальных ОС, или как? С помощю чего делают языки программирования?
Программа с любого языка сначала проверяется на синтаксические ошибки, потом транслируется на ассмеблер и машинный код. В данной проге деление происходит внутри процессора непосредственно, а вообще на деле мат. ф-ими занимается мат. сопроцессор. вот пример на ассемблере:
data segment
x dw 10
y db 5
z db ?
data ends
assume cs:code, ds:data
START: mov ax, data
mov ds, ax
lea bx, x
mov ax, [bx]
lea bx, y
mov dx, [bx]
idiv dx
lea bx, z
mov [bx], al
DELAYendp
codeends
endSTART
data segment
x dw 10
y db 5
z db ?
data ends
assume cs:code, ds:data
START: mov ax, data
mov ds, ax
lea bx, x
mov ax, [bx]
lea bx, y
mov dx, [bx]
idiv dx
lea bx, z
mov [bx], al
DELAYendp
codeends
endSTART
Руслан Гизатуллин
а в ассемблер траслируется во всех языках?
Нет, у вас неправильные представления.
В машинах все операции совершаются в регистрах процессора. Это специальная ограниченная быстродействующая память процессора, для которой определены различные команды, как например, деление, умножение и т. д.
Когда Бэйсик анализирует входную строку, он, во-первых, проверяет ее на правильность синтаксиса. Затем данные, то есть переменные переводит в машинное представление, а затем эти данные заносит в регистры и выолняет соответсвующую машинную команду над регистрами.
В машинах все операции совершаются в регистрах процессора. Это специальная ограниченная быстродействующая память процессора, для которой определены различные команды, как например, деление, умножение и т. д.
Когда Бэйсик анализирует входную строку, он, во-первых, проверяет ее на правильность синтаксиса. Затем данные, то есть переменные переводит в машинное представление, а затем эти данные заносит в регистры и выолняет соответсвующую машинную команду над регистрами.
ассемблер тебе поможет
Во-первых,
x/y = z вас убьет. Нельзя результату деления что-то присваивать.
Во-вторых, в каком-то смысле, да. Каждый оператор императивного языка программирования преобразуется в последовательность (!) команд ассемблера, а те однозначно соответствуют командам процессора. Фактически, шаг языка ассемблера может пропускаться.
Но нельзя сказать, что какой-то юнит подключается или отключается. Например, команда перехода (типа goto) изменяет регистр IP (EIP, RIP). Но регистр IP меняется при выполнении любой команды, только при переходе он меняется произвольно, а при обычном выполнении - на длину команды, чтобы перейти к следующей. То есть, этот юнит активен всегда.
Языки программирования ничего никуда не биндят, они лишь описывают суть операций. Может быть, это будет новостью, но кроме императивных языков есть декларативные, которые машине говорят не "сделай то-то и получишь, что надо", а "вот то, что надо. Получай. ". Тут уж ни о каком бинде говорить вообще не приходится.
Для императивных языков есть процесс компиляции или трансляции, который и делает этот "биндинг". Но опять же - язык ничего не связывает с командами процессора. Например, на x86 умножение двух чисел - это одна команда, а на процессорах ARM - другая, или вообще несколько. А на том же бейсике это пишется одинаково - *. Трансляторы - компиляторы работают почти под любой операционной системой.
x/y = z вас убьет. Нельзя результату деления что-то присваивать.
Во-вторых, в каком-то смысле, да. Каждый оператор императивного языка программирования преобразуется в последовательность (!) команд ассемблера, а те однозначно соответствуют командам процессора. Фактически, шаг языка ассемблера может пропускаться.
Но нельзя сказать, что какой-то юнит подключается или отключается. Например, команда перехода (типа goto) изменяет регистр IP (EIP, RIP). Но регистр IP меняется при выполнении любой команды, только при переходе он меняется произвольно, а при обычном выполнении - на длину команды, чтобы перейти к следующей. То есть, этот юнит активен всегда.
Языки программирования ничего никуда не биндят, они лишь описывают суть операций. Может быть, это будет новостью, но кроме императивных языков есть декларативные, которые машине говорят не "сделай то-то и получишь, что надо", а "вот то, что надо. Получай. ". Тут уж ни о каком бинде говорить вообще не приходится.
Для императивных языков есть процесс компиляции или трансляции, который и делает этот "биндинг". Но опять же - язык ничего не связывает с командами процессора. Например, на x86 умножение двух чисел - это одна команда, а на процессорах ARM - другая, или вообще несколько. А на том же бейсике это пишется одинаково - *. Трансляторы - компиляторы работают почти под любой операционной системой.
Руслан Гизатуллин
невту сторону написал =\
Спасибо тебе, автор вопроса! Мой день прожит не зря.
Руслан Гизатуллин
непонял поясни О_о
Похожие вопросы
- Язык програмирование. Как Вы Думаете какой язык программирование имеет место быть в будущем?
- Хочу спросить. На изучение какого языка программирования лучше всего делать упор, если хочешь найти работу программиста
- Помогите плиз, что делать? см. внутри
- Какой язык программирования выбрать для изучения для начинающего ? (внутри)
- Необходимо консультация по реальности проекта, и выбору языка программирования для реализации нейросети. Подр. и внутри.
- А какие языки программирования изучали в 80х и на чём вы их изучали?
- С какого языка программирования начать?
- Какой язык программирования следует изучить в первую очередь, если в программировании вообще ничего не понимаешь?
- И снова про языки программирования ^_^ Поправьте, если я ошибаюсь где-то.
- Виды языков программирования