Другие языки программирования и технологии

Как работает процессор? Писать программу на разных языках почему приходится?

Ведь система компьютера понимает всего два числа: 1 и 0.Если правильно понимаю то процессор работает по след логике: биос даёт небольшое напряжение на конденсаторы процессора значит + .т. е. число 1,а если перестаёт подавать напряжение значит - .т.. е. значит 0?
Зачем программировать на разных языках, если исходник на компьютерном (бинарном) языке выходит с одинаковым количеством и положением, количеством цифр?
Вопрос был - "почему нельзя обойтись одним высокоуровевым (приближенным к человеку) языком", правильно? Например, зачем нужен JavaScript, если есть PL SQL. Или зачем нужен C++, если есть Fortran.
Я правильно понял?

По нескольким причинам. Одним языком все задачи эффективно решить не получится, каждый язык ориентирован на определенные задачи. Плюс языки развиваются, становятся лучше, а старый код под старые языки продолжает жить.

Плюс есть конкуренция между производителями ПО (в том числе ПО для разработки ПО, что иногда приводит к конкуренции между языками, если каждый язык активно продвигается в массы каким-то вендором) .

Могу порадовать - если известна конкретная задача, то выбор языков на выбор обычно не такой большой, как кажется. Реально из 1-3 вариантов обычно люди технологии выбирают.
Кубаныч Куба
Кубаныч Куба
19 662
Лучший ответ
Всё что ты пишешь автор, это делает сам процессор, программисту малое отведено.

Говорят биос выделает несколько байт 200 помоему с лишнем в оперативной памяти и выделяет процессор. Так делают загрузчик, загрузчик загружает операционную систему.

Далее операционная система предоставляет возможности программисту.

Указывается в каком месте по смещению адресов будут данные, потом данные работы программы. А что бы ты это всё легко указывал в процессоре уже это всё написано.

Там сложно всё. А то что на конденсаторы это всё в самой схеме процессора заложено, дальше ещё нужно думать
Инструкциями процессора кодить не удобно, да и кроссплатформенность нулевая. Поэтому пишут на языках высокого уровня и потом компилятор всё это на низкий уровень преобразует.
Юрий Селиванов
Юрий Селиванов
53 158
Язык - это инструмент. Вот Вы почему гвозди предпочитаете молотком забивать? Камнем или пассатижами тоже, ведь, можно, только неудобно.
Также и с разработкой программ. Для каждой лучше подходит свой инструмент.
Есть программы, для которых главное скорость исполнения. Для их написания лучше подходит язык, ориентированный на процессор, а не на человека (ассемблер, си) .
Есть программы, для которых главное переносимость, удобство и скорость разработки. Для их написания больше подходят
интерпретируемые языки с высоким уровнем абстракции, облегчающие человеку выражение своих мыслей. При этом мы жертвуем эффективностью кода.
Чтобы ответить на этот вопрос для себя надо попробовать написать программу бинарным кодом или хотябы на языке ассемблера. Это титанический труд. Высокоуровневые языки программирования к примеру позволяют операцию сложения двух чисел записать одной строкой, а в машинных кодах это будет в разных случаях до 4-5 команд.
1. Загрузить первое число из памяти. 2. Загрузить второе число из памяти. 3. Сложить числа. 4. Записать результат в память.
Стас Шепелев
Стас Шепелев
8 992
Во-первых, не для всех языков вообще есть компиляторы в машинный код.
Например, Джава большинством компиляторов фактически не компилируется, а сохраняется в бинарные файлы (вроде вордовских или екзелевских) - или, можно так сказать, компилируется в машинный код виртуального процессора.
Это делает формат "исполняемого" файла джавы - джар - не специфичным для какого-то реального процессора и обеспечивает его работоспособность на разных ОС, если там стоят эти виртуальные процессоры. Файл джар можно запустить под виндой, а потом скинуть на комп с линуксом - и он там тоже запустится, если в нем, конечно, не применены функции ВинАПИ и что-то еще, что есть только в винде.
Аналогично с си шарпом. Правда, линковщик еще после компиляции заключает бинарный файл с промежуточным кодом в специальную исполняемую оболочку, то есть в файл ехе, написанный в машинных кодах. Но эта оболочка просто в готовом виде зашита в линковщик, сам он ее не компилирует, а только вставляет промежуточный код.

Во-вторых, большинство языков, хотя и, действительно, компилируются в одинаковый машинный код, но различаются на более высоком уровне.
Скажем, С++ под ВинАПИ использует только библиотеки ВинАПИ, а Делфи еще может (но не обязан) использовать особую надстройку над ВинАПИ (которая при компиляции упаковывается в ехе) , с которой работать бывает проще и удобнее, чем с ВинАПИ напрямую.
a.pryjnikov
a.pryjnikov
212

Похожие вопросы