Pull to refresh

Comments 20

export import Bank;

Шизофрения на марше. В чём смысл было менять module на import? Чтобы не делать module зарезервированным словом? В указанном документе не нашёл никакого объяснения.
Я так понял, что это относится к экспортируемым включениям других модулей. Как по мне, смотрится куда более логично.
Если мне нужен приватный «инклюд»
я пишу просто
import Blank;
А если мне его еще и наружу надо отдать тем, кто будет мной пользоваться:
export import Blank;
ИМХО интуитивнее.
Слово Module уже используется во многих third party как собственное зарезервированное слово и никто не готов переписывать имеющийся код. Чтобы избежать конфликтов приняли решение использовать другой незанятый синтаксис.
А появилась ли поддержка модулей со стороны IDE (а не компилятора)? А то модули — это, конечно, круто, но писать без IntelliSense и прочего я и в блокнотике могу.
Судя по статье — пока нет.
Я, может, слишком глуп, но для чего вообще нужны модули в C++?
Ускорение скорости компиляции в десятки раз.
Сейчас каждый include вставляет текст заголовка в файл после чего он компилируется, и так с каждым файлом. Каждый модуль компилируется единожды, после чего он просто соединяется с вашей частью скомпилированно файла, т.е. примерно «линковка на стероидах»
Например, вставил несколько стандартных инклюдов типа iostream — и хоп! компилятору нужно уже мегабайтный файл процессить. А так у него уже готовые AST будут.
По сути, это эволюционное развитие идеи preprocessed headers, но на уровне одного хедера)
У меня вопрос к тем, кто их уже успел поковырять: как там обстоят дела с параллельной сборкой?
Допустим у меня такие файлы:
foo.cpp
bar.cpp
module.hpp
Модуль используется в обоих foo.cpp и bar.cpp. Соответственно, когда компилятор будет процессить модуль, ему нужно будет где-то сохранить результат. Я правильно понимаю, что до того как для module.hpp будет скомпилено бинарное представление (AST или что там), то нельзя начинать компилить foo или bar? ну а иначе же они могут одновременно попытаться получить/скомпилить данные module.hpp?

upd: кажется, да, понял, для компиляции по крайней мере msvc нужно указывать уже скомпиленные модули
30 лет думали, думали и наконец придумали то, что в pascal/delphi было давным-давно :) браво! верной дорогой. мы делаем проще. сам delphi и используем.
В каждой теме про ц++ найдётся дурачёк который использую <свойЛюбимыйЯзычёк>.
Удивительно другое, что ваш 'умный' язык постепенно превращается в наш 'глупый'. Странно как-то, правда?
Да, но без потери производительности. В любой момент можно использовтаь те технологии, чтобы получить эффективность Си.
export import Bank;

Давайте тогда ещё
import export Bank;


Я понимаю, C++ сложный язык, но почему нельзя сделать хоть тут без шизофрении :(
Хммм… Как я думаю — следующий этап — это встроить c++ компилер в ОС: ку по defaultу, на манер C#. Тогда можно будет подумать на тему «C++ скрипт», и я надесь что перепишу свою утилиту syncProj уже на нативный c++.
Так есть же WSL, в ней g++ подтянут. Нужно только сделать сборку винды, в которой оно ставится прямо при установке системы и все.
Только мне ещё нужен модуль для компиляции C++ кода. это наверное самое сложное.
Sign up to leave a comment.