powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Зачем нужен C++ ?
21 сообщений из 121, страница 5 из 5
Зачем нужен C++ ?
    #38024104
oldjackal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosh the bestподробнее: я высказал предположение, что транслятор llvm ir в машкод целевой платформы можно написать и на других языках, помимо си и с++ с терпимым провалом в скорости трансляции

Какая разница - IR или C++? И то и другое должно транслироваться БЫСТРО . В том же Clang большая часть времени при компиляции тратися именно внутри LLVM (не верите - возьмите профайлер и убедитесь). И делать это быстро на чем либо отличном от C++ вы не сможете. Все остальное будет намного, недопустимо более медленным.

далее я написал, почему все же на си и с++ будет быстрее - за счет нативных типов (в том числе и беззнаковых)

Это как раз нисколько не преимущество, у JVM тоже они нативные, а беззнаковые тут ну совсем не нужны.

и возможности напрямую работать с голой памятью, накладывая на нее структуры данных
так понятнее?

А этой фразы я вообще не понял.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024107
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldjackalи возможности напрямую работать с голой памятью, накладывая на нее структуры данных
так понятнее?

А этой фразы я вообще не понял.а что непонятного?
выделил мегабайт памяти, и размещай там объекты как хочешь.

а в джаве - огромная фрагментация данных в куче. и весь доступ осуществляется через крупные цепочки ссылок.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024111
oldjackal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNа что непонятного?

Кривизна формулировки.

выделил мегабайт памяти, и размещай там объекты как хочешь.

Ну так и надо говорить про арифметику указателей.

а в джаве - огромная фрагментация данных в куче. и весь доступ осуществляется через крупные цепочки ссылок.

А вот это неверно. Как раз автоматический GC позволяет избежать фрагментации там, где руками это сделать очень непросто. Правда, в обсуждаемой задаче (компиляторы) это совершенно не важно, фрагментации там не будет в любом случае, так как мы можем оперировать очень хорошо разграниченными пулами.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024121
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosh the bestдалее я написал, почему все же на си и с++ будет быстрее - за счет нативных типов (в том числе и беззнаковых) и возможности напрямую работать с голой памятью, накладывая на нее структуры данных
так понятнее?Как будто в лиспах нет возможности накидать гадостей в голую память :)
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024122
Фотография kosh the best
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldjackal, ну хватит уже
раскрутка компилятора, бутстрэппинг
яву пишут на яве, лиспы тоже пишут на лиспах и прочее
хватит тут всех убеждать, что компиляторы нужно писать на с++
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024125
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldjackalЗа счет того, что в коде на C++ будут использоваться пулы - т.е., породил парсер AST, кодогенератор сделал из него LLVM IR модуль, и весь пул с AST тут же удаляется, тогда как в managed языках на этом AST потом будет долго спотыкаться GC. И так на каждом этапе компиляции, со всеми промежуточными структурами (а они могут быть очень большими).Ну то есть пулы придумали именно сиплюсплюсовцы и никак не раньше, ага.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024126
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosh the bestхватит тут всех убеждать, что компиляторы нужно писать на с++У Си при построении компиляторов обнаруживаются два больших достоинства --- меньший дефицит годных кадров и достаточно удобные средства отладки, компенсирующие неприспособленность языка для задач сопоставления с образцом.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024129
Фотография kosh the best
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Как будто в лиспах нет возможности накидать гадостей в голую память :)
не очень понимаю, как это сделано
вот пусть у нас есть бинарный файлик в определенном формате - пусть этот файлик выступает в роли простейшего хранилища обычной реляционной таблички с фиксированным количеством полей
в сишке его можно прочитать в память и потом тупо начать накладывать структурки c полями, соответствующими полям таблицы на эту память по определенному смещению - тогда доступ к полям будет осуществлятся исключительно быстро
а как это сделать в лиспах? там же все равно будут некие накладные расходы - скорей всего, будет происходить копирование этого куска памяти, соответствующего одной записи в некое s-exp для возможности дальнейшей обработки..
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024132
oldjackal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruКак будто в лиспах нет возможности накидать гадостей в голую память :)

В общелиспе? Так, чтоб об эту голую память GC не спотыкался? Не, нет такой возможности разумными путями.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024134
oldjackal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosh the bestяву пишут на яве

Ага, так написали, что единственный действительно удобный для пользователя компилятор Java - это Jikes. Который, таки да, работает как раз более чем в десять раз быстрее чем родной компилятор. Угадайте, на чем он написан?

лиспы тоже пишут на лиспах

Ну, про этих в приличном обществе лучше вообще не говорить.

хватит тут всех убеждать, что компиляторы нужно писать на с++

Уточнение - БЫСТРЫЕ компиляторы надо писать на C++. Да, язык низкоуровневый, некоторые вещи требуют большого объема boilerplate-кода, но за все за это мы получаем сверхсветовую скорость работы. Поверьте, оно того стоит.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024135
oldjackal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruНу то есть пулы придумали именно сиплюсплюсовцы и никак не раньше, ага.

Ну то есть пулы фундаментально несовместимы с тотальным GC.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024136
oldjackal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosh the bestа как это сделать в лиспах?

Там вообще другая идеология, там глупо было бы этими вещами заниматься. Там скорее вот так сделают: http://okmij.org/ftp/Scheme/binary-io.html
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024138
oldjackal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruнеприспособленность языка для задач сопоставления с образцом.

1) Посмотрите на tablegen в LLVM

2) Посмотрите на Elsa (и конкретно на http://scottmcpeak.com/elkhound/sources/ast/index.html )

3) Ничто не мешает и более сложные DSL поверх C++ (или какого либо препроцессора над C++) сделать. Можно даже аналог scrap your boilerplate сделать ( http://www.haskell.org/haskellwiki/Scrap_your_boilerplate )
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024142
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldjackalАга, так написали, что единственный действительно удобный для пользователя компилятор Java - это Jikes. Который, таки да, работает как раз более чем в десять раз быстрее чем родной компилятор. Угадайте, на чем он написан?Ну угадали. И что?
Оп-па - последний билд на SF датирован февралём 2005 года.
Ну что сказать - всех уделал.

P.S. Да, разумеется - IBM, взявши проект под своё крыло могла его закрыть и развивать, но "меня опять терзают смутные сомнения ...".
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024143
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_rukosh the bestдалее я написал, почему все же на си и с++ будет быстрее - за счет нативных типов (в том числе и беззнаковых) и возможности напрямую работать с голой памятью, накладывая на нее структуры данных
так понятнее?Как будто в лиспах нет возможности накидать гадостей в голую память :)тут уж конкретный лисп нужно упоминать. а то в некоторых - нельзя.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024145
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, все, вывод ясен. С++ нужен для написания быстрых компиляторов.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024166
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oldjackal1) Посмотрите на tablegen в LLVM
2) Посмотрите на Elsa (и конкретно на http://scottmcpeak.com/elkhound/sources/ast/index.html )
3) Ничто не мешает и более сложные DSL поверх C++ (или какого либо препроцессора над C++) сделать. Можно даже аналог scrap your boilerplate сделать ( http://www.haskell.org/haskellwiki/Scrap_your_boilerplate )В достаточно разумном компиляторе задачи сопоставления с образцами не заканчиваются с окончанием синтанализа, а только начинаются. И для их решения сишными средствами приходится городить толстый-толстый слой всякой ерунды, а чтобы эта ерунда шевелилась с разумной скоростью, приходится начинать с самого низа --- своя выделялка памяти большими кусками, свои пулы внутри этих кусков, свои специальные кучки внутри этих кусков, свои объекты в этих кучках и пулах (а typedef для этих объектов по историческим причинам у нас носит имя caddr_t :), свои структурки из этих объектов, специфические уже для конкретного транслятора, свои процедурки обходов этих структурок, сопоставлений с образцами, переписываний, поисков неподвижных точек... А ведь всё это --- здоровенный велосипед, многократно изобретённый и внедрённый, и он пишется не потому, что предыдущие плохи, а потому что в достаточно продолжительном проекте оказывается дешевле написать и поддерживать свой, чем интегрировать чужое и поддерживать эту интеграцию.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024273
iv_an_ruoldjackalЯ так полагаю, "несколько" будет как минимум в порядок, если заменить C++ на Java или там Lisp какой. Хотите ждать результатов компиляции в десять раз дольше?Не знаю, как прям сейчас, а недавно самый быстрый код для честных 80-битных даблов (без GPU) генерили из смеси Austin Kyoto Common Lisp + Livermore SDL. Так что фраза "Java или там Lisp какой" выдаёт в вас немножко неспециалиста.
Очевидно речь идет о том, на каком языке можно написать самый быстрый компилятор.

iv_an_ruoldjackal,

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

И так и сяк вопрос повернули.
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024275
kosh the bestoldjackal, ну хватит уже
раскрутка компилятора, бутстрэппинг
яву пишут на яве,
А как этот компилятор называется?
И какие библиотеки на яве могли бы помочь в написании компилятора?
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38024306
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На чем пишут компиляторына каком языке можно написать самый быстрый компилятор.На ассемблере! Принципиальные возражения будут? Нет. При вложении достаточных денег написать можно. На практике почему-то так не делают. И пишут много на чём, выбирая нужный компромисс между производительностью и ценой разработки.

Можете попробовать написать на плюсах самоприменимый mix ;)
...
Рейтинг: 0 / 0
Зачем нужен C++ ?
    #38025662
oldjackal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruВ достаточно разумном компиляторе задачи сопоставления с образцами не заканчиваются с окончанием синтанализа, а только начинаются.

Я где-то про парсинг вообще говорил? Библиотека ast в Elsa это уже совсем другой уровень. А уж tablegen и подавно. Вы бы хоть посмотрели внимательно, прежде чем комментировать.

И для их решения сишными средствами приходится городить толстый-толстый слой всякой ерунды,

Ой не надо. Чего там толстого-то? ADT это тупо tagged unions, компилятор даже довольно сложного языка шаблонов пишется на коленке за час максимум (код-то надо очень простой генерить, лесенки из if-ов и switch-ей получаются).

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

Все уже украдено до нас. Полно готовых аллокаторов.

свои специальные кучки внутри этих кусков, свои объекты в этих кучках и пулах (а typedef для этих объектов по историческим причинам у нас носит имя caddr_t :), свои структурки из этих объектов, специфические уже для конкретного транслятора, свои процедурки обходов этих структурок,

Какие такие процедурки? Весь этот boilerplate тривиально генерить из декларативного, высокоуровневого описания.

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

Опять же, тривиальный boilerplate. То, что всякие там компиляторы haskell делают - это вовсе не rocket science, это очень примитивное раскрытие простейших шаблонов. Такое и поверх C++ сделать элементарно.

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

Такие велосипеды делаются легко и быстро. Так что нет даже смысла искать готовое, настолько все тривиально.
...
Рейтинг: 0 / 0
21 сообщений из 121, страница 5 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Зачем нужен C++ ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]