# Rust vs. Ada

> Clean Markdown view of GeekNews topic #17329. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=17329](https://news.hada.io/topic?id=17329)
- GeekNews Markdown: [https://news.hada.io/topic/17329.md](https://news.hada.io/topic/17329.md)
- Type: news
- Author: [regentag](https://news.hada.io/@regentag)
- Published: 2024-10-20T10:29:14+09:00
- Updated: 2024-10-20T10:29:14+09:00
- Original source: [reddit.com](https://www.reddit.com/r/ada/comments/18c2nr4/comment/kc8jeg5/)
- Points: 11
- Comments: 2

## Summary

Rust와 Ada는 C 언어의 단점을 피하면서 메모리 안전성을 제공하는 장점을 공유합니다. Rust는 동적 할당과 스레드 안전성에서 우위를 가지며, Ada는 값 안전성과 형식적 증명 분야에서 강점을 보입니다. 두 언어의 차이점을 이해하면 특정 프로젝트의 요구에 맞는 언어를 선택하는 데 도움이 될 것입니다.

## Topic Body

Reddit의 [r/ada](https://www.reddit.com/r/ada)에서 발견한 Rust와 Ada의 비교 댓글입니다.  
  
  * 두 언어 모두 __C가 아님__에서 오는 이점이 있음. C의 문법적 foot guns(역주: 프로그래머가 자기 발을 쏘게 하는 기능)들, 정의되지 않은 동작 등.  
  
  * 두 언어 모두 memory safety를 지원함. 배열 경계는 런타임에 검사되며, 유효한 포인터를 확인하는 규칙 등. Ada는 검사가 좀 더 간단하며, 모든것을 우회하는 ```Unchecked_Access```가 있음. Rust의 burrow checker는 좀 더 정교하지만 우회가 필요한 상황에도 우회가 힘듦.  
  
  * Rust는 동적 할당을 수용했음. Ada에서도 가능은 하지만, 어색하고 불편함. Ada 언어가 이를 원하지 않는게 분명함. Ada는 힙 할당이 안전에 문제가 되고, 메모리의 파편화를 걱정하고, 메모리 고갈이 없음을 증명해야 하던 시대에서 유래했음. Rust는 힙을 자유롭게 사용하는것을 권장하며, 동적 할당이 필요하다면 Rust가 확실히 더 안전함. Ada에서 할당 해제는 dangling pointer를 남길 수 있어 안전하지 않은 작업임.  
  
  * Rust는 thread safery에서 우위에 있음. Burrow checker는 race condition을 처음부터 방지함.   
  
  * Ada는 value safety에서 우위에 있음.  Constrained subtype은 올바른 코드 작성을 위한 좋은 도구이며, 배열 검사와 같은 Ada의 다른 기능을 위한 기초가 됨.  
  
  * Ada는 SPARK를 사용하여 formal proof 분야에서 우위에 있음. Rust에서는 이런것을 찾을 수 없었음. 고수준의 안전성이 필수적이라면 SPARK는 가장 적합한 도구임.

## Comments



### Comment 30209

- Author: regentag
- Created: 2024-10-20T10:42:00+09:00
- Points: 1

핸드폰으로 쓰다보니 오타가 있군요 ㅠ  
  
memory sadety -> memory safety 입니다.

### Comment 30282

- Author: jwh926
- Created: 2024-10-22T11:09:31+09:00
- Points: 1
- Parent comment: 30209
- Depth: 1

burrow checker -> borrow checker  
thread safery -> thread safety  
:D
