swyjs   1년 전

수업은 C하고 자바 두개가 개설되어있습니다.

C로 자료구조하면 빡셀거같긴한데... 그런거 상관안쓰고 최대한 미래에 도움되는 언어로 하고 싶습니다

(현재 전 파이썬으로 문제를 풀고 있습니다)

고수님들 조언 부탁드립니다... 수업고르는데 참고하고 싶습니다!

pill27211   1년 전

(지극히 개인적인 의견입니다)

저는 개인적으로 C로 하시는 걸 추천 드립니다. (단, C만이 갖는 문법적 특성에 익숙하다는 가정 하에)

'공부 목적'으로 데이터 구조를 공부하는 거라는 걸 떠올려야 합니다. 임의의 자료구조가 갖는 특성을 직접 손으로 구현해보며 원리에 대해 보다 깊은 이해를 얻는데에 목적을 둬야 한다는 것이죠.

단순히 라이브러리에 있는 자료구조를 가져다 쓰는 것은 몇 번 써보다 보면 금방 익숙해져서 누구나 사용할 수 있습니다. 그러나 알고 쓰는 것과 모르고 쓰는 것은 결국 티가 나기 마련입니다. 한계또한 분명하죠.

물론 라이브러리에 있는 것을 적재적소에 끌어다 쓰는 것 또한 능력일 테지만, 어디까지나 '공부 목적'으로 데이터 구조를 공부하는 것이니까요.

이에 더없이 어울리는 언어가 바로 C언어 입니다. 이왕 하는거 내 손으로 직접 특정 자료구조를 만들어 내 보는 게 좋지 않을까요 ?

특히 포인터를 이용해 메모리 단위로 생각해보며 구현하게 되는데, 말그대로 해당 자료구조의 동작 과정을 그대로 구현하게 됩니다. 익숙치 않다면 만만치 않긴 하지만요. (포인터랑 강제로 친해질 수 있는 절호의 기회 ㄷㄷ)

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

이제 위 내용은 공부 목적에 한해서고 (물론 굉장히 중요한 경험이 됨), ps나 기타 상황에선 이미 잘 구현되어 있는 라이브러리를 필요에 맞게 가져다 쓰는 것이 좋겠죠. 문제 하나 풀 때마다 문제 로직 짜기도 전에 자료구조 구현하는데에 힘 쓰고 있으면 그건 미련한 거니까요.

peydihalta   1년 전

우리나라 기업들은 현재 대부분 Java를 많이 씁니다. (미래에 바뀔지도 모르지만..) Java는 C보다 다루기 편리하고, 포인터 대신 new로 할당하고 참조하지만, 학습에는 적합합니다.

C++는 갈수록 스펙이 복잡해지고 있어서 평생을 배워도 제대로 사용하는 사람이 드문 언어 중 하나입니다. 물론 다양한 STL이 존재하지만, 학습용으로는 비추천합니다.

C는 로우 레벨 언어로 커널 개발 및 빠른 속도의 장점으로, AI 연산에도 사용되는 언어입니다. 링크드 리스트 등을 구현한다면 포인터 개념을 같이 학습할 수 있어 적합합니다.

언어 특유의 자유로움으로 인해, 스택과 힙을 마음대로 다룰 수 있습니다.

Python은 AI의 프론트 쪽, 기타 가벼운 작업을 할 때 사용이 가능하고, 다용도입니다. 다만, 대부분의 기능이 라이브러리에 탑재되어 있어 학습에는 적합하지 않습니다.

Go는 C언어류의 과도한 초기 설정 및 자원 관리 리스크(Makefile 등등)를 줄이고, 더 나은 러닝 커브를 제공합니다. 가장 많이 사용되고, 사용될 컨테이너 오케스트레이션 도구인 쿠버네티스도 Go로 쓰여졌습니다. 포인터 개념이 있기 때문에 C와 동일하게, 자료구조를 학습하기에 적합합니다. (저는 go가 가장 미래지향적인 언어 모델이라고 생각합니다.)

Rust는 메모리 관리를 정말 안전하게 할 수 있도록 하는 도구를 제공하는 거의 유일한 메인스트림 언어입니다. (go도 rust를 참조할 만큼 go 다음으로 미래지향적인 언어 모델이라고 생각합니다. 다만, 내부 구현의 복잡성이 갈수록 늘어나기 때문에 러닝 커브는 C보다 확실히 높습니다.)

초기 설정 리스크는 C보다 매우 적고, 다만, 내부 구현이나 문법이 복잡한 편이고, 생각해야 될 점도 많습니다. 단순히 자료구조를 학습할 용도라면 적합하지 않습니다.

Javascript는 메인스트림 언어이지만, 자료구조 학습에 적합한 언어가 아닙니다.

swyjs   1년 전

답변해주셔서 감사합니다! 언어 선택하는데 참고하겠습니다!

위에 분들말고도 다른 분들도 의견 남겨주시면 모두 보고 참고하겠습니다 감사합니다!

peydihalta   1년 전

NSA에서 언어 선택 관련 권고안이 나와서 공유합니다. 보시고 자유롭게 생각하시면 될 것 같습니다.

C++ 창시자, NSA의 메모리 안전언어 사용 권고 반발 (msn.com)

댓글을 작성하려면 로그인해야 합니다.