소프트웨어 엔지니어/일반

아직도 C, C++ 쓴다고?

shroomie 2024. 8. 14. 12:20

c, c++ 가 인기가 있는 이유는 아직 많은 디바이스의 하드웨어 리소스가 부족하거나, 
빠른 속도의 데이터 처리가 필요한 곳이 많기 때문이지. 

자바, 파이썬, 노드js, 고도 그렇고, 언어뒤에 숨겨진 기능이 (가비지 컬렉션 같은 메모리 메니지먼트 나 등등)
프로그래머가 해야할 일을 (? 솔직히 이게 프로그래머의 일인지도 모르겠지만)
언어자체가 대신해주게 되는 경우는, 그만큼의 리소스를 언어를 돌리는데 할당해야 해서 효율적이지가 않은거야. 

하지만 c , c++ 는 모든 동작의 처리를, 심지어 메모리 데이터 접근해서 맘대로 바꾸는거 마저도 
프로그래머의 의지에 따라 할수가 있으니, 
그만큼 효율적인 코드를 만들수 있는거지. 프로그래머의 역량에 따라 더 엉망이 될수도 있지만....  

간단하게 예를 들어보면, 파이썬 당고를 서버로 사용한다고 하면 
성능좋은 pc, 운영체제 올리고 그위에 파이썬 인터프리터가 있고 그 위에서 당고 서버가 돌아가겠지.
서버는 당고 프레임웍도, 파이썬 인터프리터의 기능기능도 다 사용하면서 돌게 될꺼고, 
만약에 사용자가 하루에 100명일때는 괜찮지만 100000000으로 늘어난다면 하나의 서버로 감당하기 힘들꺼야
서버를 늘리는거도 비용이자나? (, 물론 코드를 최적화 하는거도 돈이긴 하지만 ~)
근데 파이썬 당고를 사용하면 코드를 최적화 하는데 한계가 있지 (프레임웍을 어쩌진 못하니까)

하지만 이때 만약에 c++ 를 사용했다고 하면, 
코드를 최적화 하기가 좀더 용의하다는거야 (메모리 관리도 효율적으로해서 가비지컬렉션에 들어가는비용을 줄일수 있다는..)
물론 프로그래머의 역량에 따라 차라리 당고같은 프레임웍을 쓰는게 효율적이기도 하겠지. 


이게 임베디드디바이스의 경우는 더 명확해 지지. 

결론은? 
1.하드웨어 자원도 널널하고 프로그램도 속도나 효율에 민감하지 않은 경우: 상황에 맞게 프레임웍이 잘 되어 있는 언어를 상황에 맞게 선택하고, 
2.하드웨어 자원이 부족하고, 빠른 속도와 효율이 필요한 경우: C, C++ 를 고려해 봐야 한다!!