PDA

Просмотр полной версии : Высокоуровневые и низкоуровневые языки


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

sn0w
22.12.2009, 13:11
друг твой в чемто прав)
но 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

geezer.code
22.12.2009, 13:24
Всё относительно.
бинарные коды -> асм -> Си Форт -> c++ -> управляемый код / интерпретируемый код

в моем понимании шкала уровней абстракции примерно такая.
и они(языки) высоко/низкоуровневые относительно друг друга.

Eo0
22.12.2009, 13:40
Согласен с цитатой, но всё же чёткой линии высокого и низкого уровня нет,хотя мне кажется C++ правильнее отнести к высокому.

slesh
22.12.2009, 14:37
Четкая линия есть. Асм - низкоуровневый. всё остальное(Си и более) - высокоуровневые.
Главная особенность в том, что в высокоуровненых языках ты не должен заботиться о том, каким образом данные передаются в функции, не должен заботиться над тем какие регистры процессора юзать, также то, как будут располагаться переменные в стеке и какие регистры процессора должны быть сохранены при использовании определенных функций, также при составлении условий, тебе не нужно думать о том, что и как сравнивать, где знаковые переменные, где беззнаковые. где целый, где дробные.
В языках высокого уровня это всё просчитывается автоматически. И записывается по общей схеме. В языках низкого уровня - ты сам должен выполнять эту работу.

И главное - язык высокого и низкого уровня - его уровень не зависит от того что ты будешь на нем писать. Потому что дрова можно было и на Делфи писать. Также их можно и на С и на С++ писать. Собственно говоря на любом другом компилируемом языке, дающего непосредственно машинный код.

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

А вот языки высокого уровня - это те которые дают тебе возможность не задумываться над тем на какой платформе будет выполняться код и под какую ОС.
Хороший пример этого - Си - ты можеш не знать как в ОС осуществляется создание файла, а использовать функцию fopen

Т.е. языки выс. уровня имеют небольшую прослойку между системными командами(системные вызовы, WinAPI), которая дает большую независимость от конкретной платформы, но за это расплачиваешься скоростью работы, потому как идут дополнительные операции.

Тем более что любой высокоуровневый язык дает тебе возможность быстро выполнять некоторые действия, которые в низкойровневых языказ занялибы много время на разработку.
Прмиером этого может быть функции
Си (gets), Delphi (readln) которые довольно сложно сделать на асме юзая WInAPI b чтобы они работали быстро.

slesh
22.12.2009, 14:49
P.S.
2 sn0w

но native-coding это низкоуровневое программирование, та что единого мнения по этому вопросу быть не может)


Тут ты чуть наверное путаешь. native - низкоуровневое по отношению к ОС, а не к созданию кода.

sn0w
22.12.2009, 19:45
я и привел линк на википедию, просто у меня вызывает некоторое смущение как это назвать когда например приходиться использовать naked функции в юзермоде. уж не говорю о ядре. - это все касательно си а не си++

кроме того, там заявлено что высокоуровневым языком могут считаться языки умеющие манипулировать структурными объектами. но, этож и макроассемблер может.

XPYMGT
23.12.2009, 03:13
я и привел линк на википедию, просто у меня вызывает некоторое смущение как это назвать когда например приходиться использовать naked функции в юзермоде. уж не говорю о ядре. - это все касательно си а не си++

кроме того, там заявлено что высокоуровневым языком могут считаться языки умеющие манипулировать структурными объектами. но, этож и макроассемблер может.

Не знаю что ты кому хочешь доказать, но твой друг прав а ты нет. Эволюция языков программирования выглядит следующим образом:

Машинный код (те самые 0 и 1)-> низкоуровневые языки программирования (ассемблеры assembly languages, мнемокод) -> высокоуровневые (c, c++, pascal, basic) -> скриптовые (почти все написаны на c, это php, python, perl, ruby)

nerezus
23.12.2009, 16:30
Нет четкого и однозначного определения, так что вы оба проиграли.
А википедия в таких холиварных вопросах имеет не более авторитета, чем накаченная силиконам ТП в области квантовой физики.

Первое определение - это соответствие 1 оператором языка 1 команды для исполняющей среды. Тогда только ассемблерЫ.
И кстати по этому определению многие ассемблеры являются... высокоуровневыми ;) Т.к. 1 их команда выполняет несколько операций.

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

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

ntldr
23.12.2009, 22:10
лично я считаю, что языки высокого уровня - те, которые, когда ты пишешь на них - ты не думаешь о регистрах, памяти, и.т.д. - то есть начиная с С++ (ООП), делфи и т.д.

Си - чисто низкий уровень (имхо)

mIhoZzz
25.12.2009, 02:29
А че, в си обязательно о них заботиться? че за лажа???? четкие границы есть!!!! при споре учитывалось то, что Асм - в чистом виде, и Си - в чистом виде. Про макроассемблеры, С++ или С# никто не говорил. Это диалекты!

Retimiled
25.12.2009, 02:35
тяжелый вопрос ... похоже на него и ответа нет и быть не могет ... наверно есть низкий уровень... это прямо кодить в шестнадцатиричном редакторе а все остальные лишь приближение то есть высокие!

nerezus
25.12.2009, 03:10
А че, в си обязательно о них заботиться? че за лажа???? четкие границы есть!!!! при споре учитывалось то, что Асм - в чистом виде, и Си - в чистом виде. Про макроассемблеры, С++ или С# никто не говорил. Это диалекты! Асм в чистом виде?) Это как?)

razzzar
25.12.2009, 04:38
Это диалекты!
Мда... Я даже представляю себе, что на это ответил бы Кез.

ntldr
25.12.2009, 07:34
А че, в си обязательно о них заботиться? че за лажа???? четкие границы есть!!!! при споре учитывалось то, что Асм - в чистом виде, и Си - в чистом виде. Про макроассемблеры, С++ или С# никто не говорил. Это диалекты!
Ну как сказать. Да, в си, при написании системных приложений, довольно часто бывает, что без отладчика никак не обойтись

shell_c0de
25.12.2009, 15:06
Если в одном языке рождается другой то основной сразу на низкоуровневый переходит получается ? например C# на основе языка C, Delphi на основе языка Pascal, Java... Ну косвенно тоже на основе языка C.

cheater_man
25.12.2009, 23:14
Всетаки, что не думайте а c и с++ ЯЗЫК ВЫСОКОГО УРОВНЯ ПРОГРАММИРОВАНИЯ.
http://ru.wikipedia.org/wiki/Высокоуровневый_язык_прогр аммирования
Мне кажется и дальше эта тема дисскусии не подлежит. :)

mIhoZzz
26.12.2009, 02:01
Не подлежит, конечно. Умных людей всегда хватает. Си - язык низкого уровня. Ну и бред. Каждый останется при своем мнении. Просто все сейчас в основном среда делает, открыв Борланд, например, не нужно описывать классы окна для его создания. Да и вообще, много чего делать не обязательно! А все, что мудово, для наших новомодных "программистов" - это низкий уровень кодинга)))))) Завтра и JavaScript - тоже станет низкоуровневым...

nerezus
26.12.2009, 10:45
http://ru.wikipedia.org/wiki/Высокоуровневый_язык_прогр аммирования
Мне кажется и дальше эта тема дисскусии не подлежит. Википедия не авторитет в холиварных вопросах, т.к. каждый дурак может изменить статью.

c и с++ ЯЗЫК ВЫСОКОГО УРОВНЯ ПРОГРАММИРОВАНИЯ. Тебе рано об этом говорить, т.к. ты два абсолютно разных языка считаешь одним ))

Си - язык низкого уровня. Ну и бред. Каждый останется при своем мнении. Просто все сейчас в основном среда делает, открыв Борланд, например, не нужно описывать классы окна для его создания. Как и тебе. Каким образом билдер относится к C?)

cheater_man
26.12.2009, 13:05
Что тебя обьяснять :D Я общался сам лично с преподами на эту тему, С++ - ЯЗЫК ВЫСОКОГО УРОВНЯ.

nerezus
26.12.2009, 13:42
Я общался сам лично с преподами на эту тему И? Большинство преподов нашего универа не дотягивают до уровня моих коллег. Дальше что?

С++ - ЯЗЫК ВЫСОКОГО УРОВНЯ. А при чем тут C++? о_О Посмотри первый пост то.

cheater_man
27.12.2009, 11:53
И? Большинство преподов нашего универа не дотягивают до уровня моих коллег. Дальше что?

А при чем тут C++? о_О Посмотри первый пост то.
Да кто ты такой? БОГ что-ли? :D

nerezus
27.12.2009, 12:00
Да кто ты такой? БОГ что-ли? Нет, я человек, который не забил на логику и не кидается необдуманными фразами.

P.S. И да, в моей религии бог - это я.
Если хочешь, то тоже вступай в нее, будешь мне поклоняться. Ну это по желанию.

Fata1ex
27.12.2009, 13:19
!_Внимание-внимание_! Затронута больная тема nerezus'a об образовании! Убедительная просьба воздержаться от комментариев по данному вопросу!

cheater_man
27.12.2009, 14:37
Нет, я человек, который не забил на логику и не кидается необдуманными фразами.

P.S. И да, в моей религии бог - это я.
Если хочешь, то тоже вступай в нее, будешь мне поклоняться. Ну это по желанию.
Тебе не кажется что твои высказывания про БОГа - это типизм(без обид) :confused:

nerezus
27.12.2009, 16:14
Тебе не кажется что твои высказывания про БОГа - это типизм(без обид) Мне кажется, что слепая вера в кого-либо - тупизм.
В данном случае это вера в преподователей.

nerezus
27.12.2009, 16:14
Тебе не кажется что твои высказывания про БОГа - это типизм(без обид) Мне кажется, что слепая вера в кого-либо - тупизм.
В данном случае это вера в преподавателей.

Retimiled
27.12.2009, 17:15
Вера ... в преподавателей , тема не стоящая внимания , ПРАКТИКА - настоящий бог! Теория - всего лишь АНГЕЛ!

XPYMGT
27.12.2009, 21:37
Вера ... в преподавателей , тема не стоящая внимания , ПРАКТИКА - настоящий бог! Теория - всего лишь АНГЕЛ!
Бог - Иисус Христос, а кто верит в других богов язычники)))

slesh
27.12.2009, 22:23
2 XPYMGT А если я верю в Сатану, то я тоже чтоли язычник?
Вообще тама зашла в тупик и исчерпала свою адекватность. Каждый думает по своему да и уже начался флуд по этому закрываю её.

Если комуто интересно продолжить её, то есть болталка.

2 nerezus если хочется дальше пообсуждать, то можеш открыть тему опять.