Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Высокоуровневые и низкоуровневые языки |

22.12.2009, 12:58
|
|
Участник форума
Регистрация: 27.04.2008
Сообщений: 224
Провел на форуме: 140661
Репутация:
313
|
|
Высокоуровневые и низкоуровневые языки
Здравствуйте. Поспорили мы тут с одним человеком на тему уровня Си. Я утверждаю что Си - язык низкоуровневый, ведь на нём пишут драйвера, ядра для ОС и подобные этому вещи. На том же Delphi такое не попишешь.
Он же утверждает что Си - высокоуровневый, а низкоуровневый лишь ассемблер. Кто из нас прав? =)
P.S. В доказательство товарищь приводит цитату из какой-то книги Абеля: " хотя большинство специалистов в области программного обеспечения ведут разработки на языках высокого уровня,таких как паскаль или си,что проще при написании программ,наиболее мощное и эффективное программное обеспечение полностью или частично написано на языке ассемблера. Языки высокого уровня были разработаны для того,чтобы избежать специальной технической особенности конкретных компьютеров. Язык ассемблера,в свою очередь,разработан для конкретной специфики компьютера или точнее для специфики процессора. Следовательно,для того,чтобы написать программу на ассемблере для конкретного компьютера,следует знать его архитектуру... "
Но толи автор здесь С с С++ путает, толи я что-то в корне не так понимаю.
|
|
|

22.12.2009, 13:11
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
друг твой в чемто прав)
но native-coding это низкоуровневое программирование, та что единого мнения по этому вопросу быть не может)
http://ru.wikipedia.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3% D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0 %B0%D0%BD%D0%B8%D1%8F_%D0%B2%D1%8B%D1%81%D0%BE%D0% BA%D0%BE%D0%B3%D0%BE_%D1%83%D1%80%D0%BE%D0%B2%D0%B D%D1%8F
__________________
 
snow white world wide
Последний раз редактировалось sn0w; 22.12.2009 в 13:14..
|
|
|

22.12.2009, 13:24
|
|
Reservists Of Antichat - Level 6
Регистрация: 22.01.2007
Сообщений: 616
Провел на форуме: 7452489
Репутация:
1359
|
|
Всё относительно.
бинарные коды -> асм -> Си Форт -> c++ -> управляемый код / интерпретируемый код
в моем понимании шкала уровней абстракции примерно такая.
и они(языки) высоко/низкоуровневые относительно друг друга.
|
|
|

22.12.2009, 13:40
|
|
Познающий
Регистрация: 12.09.2009
Сообщений: 61
Провел на форуме: 818777
Репутация:
19
|
|
Согласен с цитатой, но всё же чёткой линии высокого и низкого уровня нет,хотя мне кажется C++ правильнее отнести к высокому.
|
|
|

22.12.2009, 14:37
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Четкая линия есть. Асм - низкоуровневый. всё остальное(Си и более) - высокоуровневые.
Главная особенность в том, что в высокоуровненых языках ты не должен заботиться о том, каким образом данные передаются в функции, не должен заботиться над тем какие регистры процессора юзать, также то, как будут располагаться переменные в стеке и какие регистры процессора должны быть сохранены при использовании определенных функций, также при составлении условий, тебе не нужно думать о том, что и как сравнивать, где знаковые переменные, где беззнаковые. где целый, где дробные.
В языках высокого уровня это всё просчитывается автоматически. И записывается по общей схеме. В языках низкого уровня - ты сам должен выполнять эту работу.
И главное - язык высокого и низкого уровня - его уровень не зависит от того что ты будешь на нем писать. Потому что дрова можно было и на Делфи писать. Также их можно и на С и на С++ писать. Собственно говоря на любом другом компилируемом языке, дающего непосредственно машинный код.
Именно по этому языки низкого уровня - это тока ассемблеровидные языки.
ну и отчасти опкоды тоже можно к ним причислить, потому что когда то и их юзали.
А вот языки высокого уровня - это те которые дают тебе возможность не задумываться над тем на какой платформе будет выполняться код и под какую ОС.
Хороший пример этого - Си - ты можеш не знать как в ОС осуществляется создание файла, а использовать функцию fopen
Т.е. языки выс. уровня имеют небольшую прослойку между системными командами(системные вызовы, WinAPI), которая дает большую независимость от конкретной платформы, но за это расплачиваешься скоростью работы, потому как идут дополнительные операции.
Тем более что любой высокоуровневый язык дает тебе возможность быстро выполнять некоторые действия, которые в низкойровневых языказ занялибы много время на разработку.
Прмиером этого может быть функции
Си (gets), Delphi (readln) которые довольно сложно сделать на асме юзая WInAPI b чтобы они работали быстро.
Последний раз редактировалось slesh; 22.12.2009 в 14:46..
|
|
|

22.12.2009, 14:49
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
P.S.
2 sn0w
но native-coding это низкоуровневое программирование, та что единого мнения по этому вопросу быть не может)
Тут ты чуть наверное путаешь. native - низкоуровневое по отношению к ОС, а не к созданию кода.
|
|
|

22.12.2009, 19:45
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
я и привел линк на википедию, просто у меня вызывает некоторое смущение как это назвать когда например приходиться использовать naked функции в юзермоде. уж не говорю о ядре. - это все касательно си а не си++
кроме того, там заявлено что высокоуровневым языком могут считаться языки умеющие манипулировать структурными объектами. но, этож и макроассемблер может.
__________________
 
snow white world wide
|
|
|

23.12.2009, 03:13
|
|
Познающий
Регистрация: 11.04.2009
Сообщений: 47
Провел на форуме: 116295
Репутация:
2
|
|
Сообщение от sn0w
я и привел линк на википедию, просто у меня вызывает некоторое смущение как это назвать когда например приходиться использовать naked функции в юзермоде. уж не говорю о ядре. - это все касательно си а не си++
кроме того, там заявлено что высокоуровневым языком могут считаться языки умеющие манипулировать структурными объектами. но, этож и макроассемблер может.
Не знаю что ты кому хочешь доказать, но твой друг прав а ты нет. Эволюция языков программирования выглядит следующим образом:
Машинный код (те самые 0 и 1)-> низкоуровневые языки программирования (ассемблеры assembly languages, мнемокод) -> высокоуровневые (c, c++, pascal, basic) -> скриптовые (почти все написаны на c, это php, python, perl, ruby)
|
|
|

23.12.2009, 16:30
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Нет четкого и однозначного определения, так что вы оба проиграли.
А википедия в таких холиварных вопросах имеет не более авторитета, чем накаченная силиконам ТП в области квантовой физики.
Первое определение - это соответствие 1 оператором языка 1 команды для исполняющей среды. Тогда только ассемблерЫ.
И кстати по этому определению многие ассемблеры являются... высокоуровневыми Т.к. 1 их команда выполняет несколько операций.
Второе - уровень абстракции. Тут уже нет четкого разграничения, т.к. есть как и наличие, так и отсутствие признаков.
По моему мнению он гораздо более низкоуровневый, чем высокоуровневый.
Так что чтобы прекратить срач, еще раз заявлю.
Нет однозначного определения. Иначе бы ответ на этот вопрос был бы ясен сразу из определения.
|
|
|

23.12.2009, 22:10
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
479
|
|
лично я считаю, что языки высокого уровня - те, которые, когда ты пишешь на них - ты не думаешь о регистрах, памяти, и.т.д. - то есть начиная с С++ (ООП), делфи и т.д.
Си - чисто низкий уровень (имхо)
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|