다음의 C 코드를 Rust로 바꾸어 보겠습니다. 배열과 for 루프, 그리고 함수에 배열을 넘기는 것이 포함됩니다. void analyze_slice(int arr[], int len) { printf("arr[0] = %d, 길이: %d\n", arr[0], len); } void main() { int xs[] = {1, 2, 3, 4, 5}; int ys[500] = {0}; printf("xs 배열의 크기: {}", sizeof(xs)/sizeof(int)); // 배열을 대여 - 함수 호출 analyze_slice(xs, 5); for (int x=0; x < 500; x++) { ys[x] = x; } // 배열의 슬라이스를 대여 analyze_slice(&ys[5], 3); } 배열을 2개 ..
러스트 언어는 C/C++ 언어에 뿌리를 두고 있다고 볼 수 있습니다. 새로운 개념이 많아 배우기 어려운 언어지만 그래도 작은 것부터 만들어보면 좋겠지요? 러스트 playground라는 사이트에서 프로그램을 짜서 컴파일러를 돌려볼 수 있습니다. 러스트는 컴파일이 어렵기로 소문이 자자합니다. 워낙 꼼꼼하게 에러를 내고 안전하고 정확한 코드가 아니면 실행을 안 시켜 주기 때문에 컴파일만 잘 되면 실행하다가 죽을 일이 별로 없다는 장점도 가집니다. (컴파일 오류가 런타임 오류보다는 훨씬 다루기 쉽죠?) 그럼 간단한 C/C++ 코드를 대응하는 러스트 프로그램으로 바꾸는 방법을 살펴보겠습니다. fn main() { let mut a = 10; let b = 20; let mut c = 30; a += b; c -=..
러스트 변수의 지정에서 변수와 객체의 오너십의 문제와 메모리 관리에 대해 Rust, 메모리를 자동으로 제때 해지한다 에서 살펴보았습니다. 여기서는 또하나의 변수에 관한 중요한 기능인 참조에 대해 살펴보려고 합니다. 러스트는 프로그래밍 언어의 개념들을 절묘하게 엮어 기존 언어와는 다른 새로운 규칙의 세계를 만들어 냅니다. 그래서 새로 익혀야 할 개념과 용어, 규칙이 많습니다. 변수는 자기가 가진 객체를 다른 변수에게 참조할 수 있게 빌려줄 수 있습니다. 대여(Borrow)는 말그대로 값에 대한 권한을 일부 빌려주는 것입니다. 그러면 참조 변수는 그 변수를 읽거나 쓸 수 있습니다. 러스트에서 변수와 객체의 관계는 다음과 같이 나누어집니다. 객체에 대한 불변 오너십을 가지는 변수: let name = "lee..
C/C++ 언어는 메모리를 프로그래머가 직접 delete합니다. 모든 메모리를 할당한 역순으로 한 방울도 남기지 않고 해지해야 메모리 리크 없는 프로그램이 됩니다. 그런가하면 여기 저기 흩어져 있는 힙메모리를 가리키는 포인터들은 언제든 댕글링 참조가 될 위험에 노출되어 있습니다. 이것은 정말 사람의 노력이 너무 많이 들어야 하는 무식한 방법이죠. 그런가 하면 자바처럼 또는 대부분의 언어들처럼 프로그래머는 메모리를 쓰기만 하고 해지는 신경 안 쓸래 하는 가비지콜렉션(GC) 모델이 있습니다. 필요하면 언제든 객체를 만들고 아무 생각없이 쓰면 됩니다. 메모리 용량을 넉넉히 늘리는 것이 사람이 직접 손으로 고생하는 것보다 편하고 또 안전하다 라고 자바에서는 주장하고 있지요. 파이썬처럼 아예 응용 프로그램만 만드..
변수는 값이 바뀌는 것이고 상수는 값이 변하지 않는다고 배웠는데... Rust 언어의 온라인 문서(이하 Rust Book)를 읽으면서 기존의 프로그래밍 언어와 많이 달라진 개념을 하나씩 조금 다른 관점으로 정리해 보려고 합니다. Rust 언어의 프로그래밍에 대한 시각을 음미해 보려고 합니다. https://rinthel.github.io/rust-lang-book-ko/ch03-01-variables-and-mutability.html 변수와 가변성 - The Rust Programming Language 2 장에서 언급했듯이, 기본 변수는 불변성입니다. 이것은 Rust가 제공하는 안전성과 손쉬운 동시성이라는 장점을 취할 수 있도록 코드를 작성하게끔 강제하는 요소 중 하나입니다. 하지만 여전히 rinth..
- Total
- Today
- Yesterday
- contentEquals
- APPEND
- format
- zip
- contains
- indexof
- TypeError
- rust
- 이터레이터
- 패턴
- 동적바인딩
- 스트링 +
- ToString
- Camel Style
- python example
- Iterator
- follow
- typedef
- 이터러블
- comparable
- 지연계산
- python exercise
- sort key
- C++ 클래스
- 자바regex
- CompareTo
- 콜렉션
- 스트링
- max
- Lazy evaluation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |