Xenocephal
Member
Откуда:
Сообщений: 666
|
| Akh | Ассемблер - как возможное использование. Конструкции языка не содержаться в библиотеке. |
Да? Где же содержится конструкция new и delete?
| | Компилятор по стандарту С++ имеет право формировать runtime-библиотеку для конкретного приложения, т.к. он некладывает на это ограничений. |
Даже для hello, world не сформирует - не хватит памяти.
| Реализовать компилятор работающий на платформе с очень ограниченной памятью нельзя, т.к. язык сложен. |
Именно. Потому и не универсален.
| Например - священную и неприкосновенную основу всея C++ - безудержную арифметику указателей.
|
Простое опровержение - шейдерные языки содержат структуры данных. Указатели и ссылки привязываются к их местоположению в памяти. [/quot]
Там на них такое количество ограничений накладывается, что проблемы с alignment-ом на том же SPARC после этого проблемами казаться перестанут. Полноценную арифметику указателей реализовать там невозможно.
| Да, немного не верно выразился.
Смысл в том, что Язык SQL это некий протокол с помощью которого происходит обмен программы-клиента и программы-сервера. Это не язык программирования. Это я хотел сказать. Т.к. дико как-то смотриться. Ладно был не прав. |
В том то все и дело, что это язык. Вообще, почти все - это язык, такая вот загогулина получается.
| | Тогда дальше: что мешает выполнять функциональность SQL на C++? |
То, что у SQL сугубо декларативная семантика.
| | Допустим select легко меняется на for. |
Не меняется. Вообще. Для просвещения и просветления рекомендую посмотреть на что-либо простенькое, например SQLite3, там довольно понятно написано. SELECT компилируется в последовательность атомарных операций, которые уже можно выразить средствами C++, но вот только для того, чтобы получить этот набор операций, нужно знать все про физические свойства каждой таблицы и каждого индекса - чего клиент, конечно же, не знает, и не должен знать. Сервер получает от клиента декларативную инструкцию, которую компилирует и оптимизирует в последовательность инструкций императивных, учитывая и состояние кэшей, и текущие инструкции в пайплайне от других сессий. Просто физически всю эту работу перенести на клиентов невозможно, и, соответственно, язык протокола просто ОБЯЗАН быть декларативным. Чего C++ не умеет категорически и бесповоротно. |