Езици за програмиране

Incremental C++ - съвременни REPL решения и изследвания

Анотация

Интерактивният/Incremental C++ представлява възможност за изпълнение на C++ код в реално време, като потребителят може да въвежда и тества свои програми директно в среда, която поддържа интерактивност (REPL подход). Една от съвременните реализации на този подход в C++ е Clang-Repl - система базирана и разширяваща възможностите на Clang.

Въпреки възможностите си за висока производителност, C++ не е първият език за програмиране, който идва на ум за бързо разработване на надеждни приложения, главно поради дългите цикли редактиране-компилиране-изпълнение. Това се премахва от системи от рода на Cladg-Repl, което ги прави "C++ интерпретатора" Clang-Repl практически приложим за: Data Science (Интерактивно изследване на данни и интерфейси, което прави сложните библиотеки и данни по-достъпни за потребителите), CUDA (Разширението на Clang-Repl с CUDA пренася работата на Interactive C++ към GPU, без да губи производителност и съвместимост със съществуващия софтуер), Проучвателното програмиране (Бързо възпроизвеждане на резултатите, което е от решаващо значение по време на проучвателната фаза на проекта), Jupyter Notebooks (Interactive C++ може да се интегрира с Jupyter Notebooks, осигурявайки бързо прототипиране и визуално учебно съдържание за потребителите на C++) и др.

Текущите изследвания в проекти като Cling, Clang-Repl, Xeus-cpp и др. имат за цел да предоставят практически използваеми интерактивни възможности на езика за програмиране C++. Идеята е да се даде възможност за динамична оперативна съвместимост, за бързо създаване на прототипи и проучвателно програмиране, които са от съществено значение за научните изследвания и др.

Необходимо време

1-2 години.

Съвременни подходи при Автоматичното диференциране (AD)

Анотация

Автоматичното диференциране (AD) е полезна техника в области на научни изследвания като машинно обучение, изчислителна геометрия, физика, оптимизация и др. Този подход се различава от символичното диференциране и численото диференциране. AD позволява автоматично изчисляване на производни на функции (зададени най-често като код написан на ЕП от високо ниво, например C++) с висока точност и ефективност. Една от съвременните системи, реализираща AD е Clad. Тя позволява автоматично диференциране на C++ код, като се основава на инфраструктурата на LLVM и е плъгин за компилатора на Clang. Тя не само опростява процеса на диференциране, но също така подобрява производителността и точността на числените изчисления в научните приложения.

В научните изследвания, където преобладават сложните математически модели, използването на AD чрез инструменти като Clad носи ново ниво на възможна сложност и скорост на изчисленията. Използвайки AD в C++ компилаторите, изследователите могат да се съсредоточат повече върху научните аспекти на своята работа, вместо да затъват в ръчни задачи за диференциране. Тази автоматизация не само ускорява процеса на разработка, но също така гарантира, че изчисленията са без грешки и с възможно най-ниска цифрова нестабилност.

Въпреки многото възможности на Clad тук има и много широко поле за развитие и иновации в сферата на AD и нейните приложения.

Необходимо време

1-2 години.

Разпространи съдържание