Rust(Programming Language)는 Performance, Reliability, Productivity를 목표로 만들어진 개발언어이다. 특히 메모리 안정성에 초점이 맞추어져 있으며 프로그래밍 언어에서 고수준의 인간공학과 저수준의 제어가 조화롭게 구성되어 있다. 또한, 성능 면에서 C++와 비슷한 수준을 목표로 하고 있다. Rust를 학습하는 데 필요한 정보와 Rust만의 특징(References, Ownership, Borrowing, …)이 있는 부분을 기초 예제로 정리하였다.
파이썬으로 다양한 encryption algorithms(AES, DES, RSA, …)을 구현하기 위해 pycrypto 패키지를 설치해야 하는 데 문제는 Windows에서 설치 에러가 종종 발생한다. Microsoft Windows에서 이를 해결하기 위해서는 Visual Studio에 C++ 컴파일 환경이 필요하다. 우선 VS2017 또는 VS2019 설치(C++포함)하고 PIP로 파이썬에 pycrypto 패키지를 추가한 후 ‘nt.py’(pycrypto 소스)를 수정하면 된다.
vcvarsall.bat x86_amd64
cd %VCINSTALLDIR%
for /R %f in (*stdint.h) do set CL=-FI"%f"
pip install pycrypto
nt.py소스 수정import winrandom
#아래와 같이 수정
from . import winrandom
Windows OS 경우 네이티브 컴파일러를 이용하여 애플리케이션을 만들 수 있는 환경은 MFC(Win32API), QT(C++) 그리고 델파이(C++Builder) 정도에 불과하다. QT는 5.15 LTS 버전을 마지막으로 QT 6.0을 올 하반기에 출시한다. 6.0은 C++17을 기반으로 하고 있으며, qmake를 빌드시스템으로 사용하지 않는다고 한다. 자세한 내용은 여기를 참고하자. 이번 글에서는 QT(C++)에서 class를 사용하는 기초 예제를 소스 형태(템플릿)로 작성하여 보았다.
// Qt Console Application
#include "circle.h"
#include "shape.h"
#include <QCoreApplication>
#include <iostream>
#include <memory>
using namespace std;
void ShowArea(Shape &shape);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// [1...]
// Shape square(10, 5);
// Circle circle(10);
// ShowArea(square);
// ShowArea(circle);
// [2...]
// Shape *square = new Shape(10, 5);
// Circle *circle = new Circle(10);
// ShowArea(*square);
// ShowArea(*circle);
// delete square;
// delete circle;
// [3...]
auto square = make_unique<Shape>(10, 5);
auto circle = make_unique<Circle>(10);
ShowArea(*square);
ShowArea(*circle);
return 0;
// return a.exec();
}
void ShowArea(Shape &shape) { cout << "Area : " << shape.Area() << endl; }