Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Уровни языков


Рекомендуемые сообщения

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

В связи с этим вопрос язык с являеться языком низшего уровня из-за того что может непосредственно работать с регистрами и стеком или какието другие причины?

Ссылка на комментарий
Поделиться на другие сайты

Delphi: ты читал старую книгу + не много не точно. Есть языки низкого, среднего и высокого уровня, + есть машинно-ориентированные языки. Язык С язык по сути МОЯ + НСВ ( я сократил).

7. Язык С и другие машинно-ориентированные языки. Осознание того, что программирование с использованием универсального языка, не отражающего особенности конкретного вычислительного оборудования, не дает возможности достичь предельной эффективности программ на этом оборудовании, привело к появлению так называемых машинно-ориентированных языков. Популярность таких языков зависит не только от распространенности оборудования, для которого они рассчитаны, но и от успешности выполненных с их помощью проектов.
http://www.intuit.ru/department/se/progstyles/3/3.html

Для написайния драйверов нужен С, Паскаль создан как обучающий язык вообщем надо бы источник давать где ты это прочёл, а то можно запутатся.

Ссылка на комментарий
Поделиться на другие сайты

Indomito

ссылку на такое утверждение я поищю, тут ещё вспомнил в пользу С что в системе юникс(или ей подобных) с помощью С можно осуществлять чтение и запись на определенные участки жесткого диска, тоесть работа с секторами диска(ссылку на данный материал я тоже поищю)

Ссылка на комментарий
Поделиться на другие сайты

Delphi:

.... с помощью С можно осуществлять чтение и запись на определенные участки жесткого диска, тоесть работа с секторами диска....
не обязательно С, можно и на бэйсике :g: достаточно знать API, ну естественно я про винды говорю.
Ссылка на комментарий
Поделиться на другие сайты

Delphi: не обязательно С, можно и на бэйсике :g: достаточно знать API, ну естественно я про винды говорю.

Ну если через API то да, но я так понял имелось ввиду, что стандартными средствами.

Ссылка на комментарий
Поделиться на другие сайты

Delphi:

В С нет команд для работы напрямую с секторами жесткого диска. Это вообще делается с помощью обращения к BIOS, которое может осуществляться двумя путями: с помощью ассемблерных вставок или, гораздо чаще, обращением к функциям заранее написанного на ассемблере или содержащего ассемблерные вставки модуля. Так можно делать в любой системе, и Unix, и Windows, и MS-DOS, это позволяют любые реализации и C, и C++, и Pascal, но все эти функции не входят в состав стандарта языка.

Вообще, конечно, можно внутри ассемблерной вставки написать и команды прямого обращения к контроллеру жесткого диска, но причем тут C?

В C гораздо больше различных операций и его типы данных ближе к представлению данных в компьютере. Он шел в направлении развития программирования от машинных кодов к простой записи алгоритмов. Pascal же шел в обратном направлении - от языка записи алгоритмов к машинным кодам. Но со временем оба языка много переняли друг от друга.

Вообще в статье многое неверно. Язык С, по статье, появился в результате осознания неэффективности универсальных языков, но при этом до них. А фраза "Заметными объектными языками стали Turbo Pascal версий с 5.5 до 7.0 и Object Pascal системы Delphi." показывает, что автор просто не знает, о чем пишет.

Ссылка на комментарий
Поделиться на другие сайты

Язык С, по статье, появился в результате осознания неэффективности универсальных языков, но при этом до них. А фраза "Заметными объектными языками стали Turbo Pascal версий с 5.5 до 7.0 и Object Pascal системы Delphi." показывает, что автор просто не знает, о чем пишет.

Когда читал первый раз фразу как-то пропустил. В принципе да С на сколько я помню разрабатывался из-за того, что язык язык В на котором планировалось вести разработку юникса немного неудовлетворял требованиям, так как в нем был всего один тип данных.

Появление варианта системы, написанного не на языке ассемблера, было заметным продвижением. Однако сам язык Би во многом не удовлетворял разработчиков. Подобно языку BCPL язык Би был бестиповым, в нем поддерживался только один тип данных, соответствующий машинному слову. Другие типы данных эмулировались библиотекой функций. Деннис Ритчи, который всегда увлекался языками программирования, решил устранить ограничения языка Би, добавив в язык систему типов. Так возник язык Си ("C"). В 1973 году Томпсон и Ритчи переписали систему на языке Си. К этому времени существовало около 25 установок ОС UNIX, и это была "Четвертая редакция".

Статья оригинал Это статья про систему юникс но там и про С говориться. точнее почему он возник.

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

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

В связи с этим вопрос язык с являеться языком низшего уровня из-за того что может непосредственно работать с регистрами и стеком или какието другие причины?

Я помню как в учебнике по информатике за 7 класс давалось это определение - "Чем 'ближе' язык к человеку и 'дальше' от машинного кода, тем выше его уровень". Но тогда по этой логике получается, что Visual Basic - вершина программерского мироздания :nerd:

А вообще я считаю что сейчас разговор о "высоте" языков программирования уже не актуален - если нужно напрямую лезть в регистры, напрямую писать в секторы ж\д и т.д. можно просто сделать ассемблерную вставку.

Ссылка на комментарий
Поделиться на другие сайты

Я помню как в учебнике по информатике за 7 класс давалось это определение - "Чем 'ближе' язык к человеку и 'дальше' от машинного кода, тем выше его уровень". Но тогда по этой логике получается, что Visual Basic - вершина программерского мироздания :blush2:

А вообще я считаю что сейчас разговор о "высоте" языков программирования уже не актуален - если нужно напрямую лезть в регистры, напрямую писать в секторы ж\д и т.д. можно просто сделать ассемблерную вставку.

На самом деле, "высота" - это уровень абстракции языка от среды выполнения. То есть, ассемблер - это самый низкий уровень, бо привязан к конкретной архитектуре и может быть даже привязан к конкретному процессору. Так что VB - это действительно, один из самых высокоуровневых языков.

Но надо понимать, что чем более абстрактен язык, тем меньше его гибкость - при обобщении теряются частности. Поэтому чем выше уровень языка, тем меньше его гибкость и, часто, более низкая производительность.

Насчёт ассемблерных вставок - оч распространённое заблуждение, что они позволяют вот так просто менять регистры и радостно этим пользоваться. Откомпилируйте код с асмовой вставкой и дизассемблируйте его - увидите, что компилятор сохранит все регистры перед вставкой, а после выхода из неё восстановит. Так что назначение асмовых вставок - исключительно для увеличения производительности. Ну и для ухудшения переносимости кода :blink:.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...