Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Высокоуровневые и низкоуровневые языки (https://forum.antichat.xyz/showthread.php?t=165321)

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

Цитата:

Сообщение от sn0w
я и привел линк на википедию, просто у меня вызывает некоторое смущение как это назвать когда например приходиться использовать 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

Цитата:

Сообщение от mIhoZzz
Это диалекты!

Мда... Я даже представляю себе, что на это ответил бы Кез.

ntldr 25.12.2009 07:34

Цитата:

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

Ну как сказать. Да, в си, при написании системных приложений, довольно часто бывает, что без отладчика никак не обойтись

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

Цитата:

Сообщение от nerezus
И? Большинство преподов нашего универа не дотягивают до уровня моих коллег. Дальше что?

А при чем тут 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

Цитата:

Сообщение от nerezus
Нет, я человек, который не забил на логику и не кидается необдуманными фразами.

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

Цитата:

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

Бог - Иисус Христос, а кто верит в других богов язычники)))

slesh 27.12.2009 22:23

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

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

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


Время: 21:35