Высокоуровневые и низкоуровневые языки

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Kuzya, 22 Dec 2009.

Thread Status:
Not open for further replies.
  1. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    Здравствуйте. Поспорили мы тут с одним человеком на тему уровня Си. Я утверждаю что Си - язык низкоуровневый, ведь на нём пишут драйвера, ядра для ОС и подобные этому вещи. На том же Delphi такое не попишешь.
    Он же утверждает что Си - высокоуровневый, а низкоуровневый лишь ассемблер. Кто из нас прав? =)
    P.S. В доказательство товарищь приводит цитату из какой-то книги Абеля: " хотя большинство специалистов в области программного обеспечения ведут разработки на языках высокого уровня,таких как паскаль или си,что проще при написании программ,наиболее мощное и эффективное программное обеспечение полностью или частично написано на языке ассемблера. Языки высокого уровня были разработаны для того,чтобы избежать специальной технической особенности конкретных компьютеров. Язык ассемблера,в свою очередь,разработан для конкретной специфики компьютера или точнее для специфики процессора. Следовательно,для того,чтобы написать программу на ассемблере для конкретного компьютера,следует знать его архитектуру... "
    Но толи автор здесь С с С++ путает, толи я что-то в корне не так понимаю.
     
  2. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,310
    Reputations:
    327
    друг твой в чемто прав)
    но 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%BD%D1%8F
     
    #2 sn0w, 22 Dec 2009
    Last edited: 22 Dec 2009
  3. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    Всё относительно.
    бинарные коды -> асм -> Си Форт -> c++ -> управляемый код / интерпретируемый код

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

    Eo0 Member

    Joined:
    12 Sep 2009
    Messages:
    62
    Likes Received:
    8
    Reputations:
    0
    Согласен с цитатой, но всё же чёткой линии высокого и низкого уровня нет,хотя мне кажется C++ правильнее отнести к высокому.
     
  5. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Четкая линия есть. Асм - низкоуровневый. всё остальное(Си и более) - высокоуровневые.
    Главная особенность в том, что в высокоуровненых языках ты не должен заботиться о том, каким образом данные передаются в функции, не должен заботиться над тем какие регистры процессора юзать, также то, как будут располагаться переменные в стеке и какие регистры процессора должны быть сохранены при использовании определенных функций, также при составлении условий, тебе не нужно думать о том, что и как сравнивать, где знаковые переменные, где беззнаковые. где целый, где дробные.
    В языках высокого уровня это всё просчитывается автоматически. И записывается по общей схеме. В языках низкого уровня - ты сам должен выполнять эту работу.

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

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

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

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

    Тем более что любой высокоуровневый язык дает тебе возможность быстро выполнять некоторые действия, которые в низкойровневых языказ занялибы много время на разработку.
    Прмиером этого может быть функции
    Си (gets), Delphi (readln) которые довольно сложно сделать на асме юзая WInAPI b чтобы они работали быстро.
     
    #5 slesh, 22 Dec 2009
    Last edited: 22 Dec 2009
    2 people like this.
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    P.S.
    2 sn0w
    Тут ты чуть наверное путаешь. native - низкоуровневое по отношению к ОС, а не к созданию кода.
     
  7. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,310
    Reputations:
    327
    я и привел линк на википедию, просто у меня вызывает некоторое смущение как это назвать когда например приходиться использовать naked функции в юзермоде. уж не говорю о ядре. - это все касательно си а не си++

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

    XPYMGT New Member

    Joined:
    11 Apr 2009
    Messages:
    34
    Likes Received:
    3
    Reputations:
    0
    Не знаю что ты кому хочешь доказать, но твой друг прав а ты нет. Эволюция языков программирования выглядит следующим образом:

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

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Нет четкого и однозначного определения, так что вы оба проиграли.
    А википедия в таких холиварных вопросах имеет не более авторитета, чем накаченная силиконам ТП в области квантовой физики.

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

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


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

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    лично я считаю, что языки высокого уровня - те, которые, когда ты пишешь на них - ты не думаешь о регистрах, памяти, и.т.д. - то есть начиная с С++ (ООП), делфи и т.д.

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

    mIhoZzz New Member

    Joined:
    22 Dec 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    А че, в си обязательно о них заботиться? че за лажа???? четкие границы есть!!!! при споре учитывалось то, что Асм - в чистом виде, и Си - в чистом виде. Про макроассемблеры, С++ или С# никто не говорил. Это диалекты!
     
  12. Retimiled

    Retimiled Banned

    Joined:
    23 Dec 2009
    Messages:
    110
    Likes Received:
    17
    Reputations:
    0
    тяжелый вопрос ... похоже на него и ответа нет и быть не могет ... наверно есть низкий уровень... это прямо кодить в шестнадцатиричном редакторе а все остальные лишь приближение то есть высокие!
     
  13. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Асм в чистом виде?) Это как?)
     
  14. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    Мда... Я даже представляю себе, что на это ответил бы Кез.
     
  15. ntldr

    ntldr Elder - Старейшина

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    Ну как сказать. Да, в си, при написании системных приложений, довольно часто бывает, что без отладчика никак не обойтись
     
  16. shell_c0de

    shell_c0de Hack All World

    Joined:
    7 Jul 2009
    Messages:
    1,185
    Likes Received:
    618
    Reputations:
    690
    Если в одном языке рождается другой то основной сразу на низкоуровневый переходит получается ? например C# на основе языка C, Delphi на основе языка Pascal, Java... Ну косвенно тоже на основе языка C.
     
    _________________________
  17. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Всетаки, что не думайте а c и с++ ЯЗЫК ВЫСОКОГО УРОВНЯ ПРОГРАММИРОВАНИЯ.
    http://ru.wikipedia.org/wiki/Высокоуровневый_язык_программирования
    Мне кажется и дальше эта тема дисскусии не подлежит. :)
     
  18. mIhoZzz

    mIhoZzz New Member

    Joined:
    22 Dec 2009
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Не подлежит, конечно. Умных людей всегда хватает. Си - язык низкого уровня. Ну и бред. Каждый останется при своем мнении. Просто все сейчас в основном среда делает, открыв Борланд, например, не нужно описывать классы окна для его создания. Да и вообще, много чего делать не обязательно! А все, что мудово, для наших новомодных "программистов" - это низкий уровень кодинга)))))) Завтра и JavaScript - тоже станет низкоуровневым...
     
  19. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Википедия не авторитет в холиварных вопросах, т.к. каждый дурак может изменить статью.

    Тебе рано об этом говорить, т.к. ты два абсолютно разных языка считаешь одним ))

    Как и тебе. Каким образом билдер относится к C?)
     
  20. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Что тебя обьяснять :D Я общался сам лично с преподами на эту тему, С++ - ЯЗЫК ВЫСОКОГО УРОВНЯ.
     
Thread Status:
Not open for further replies.