유닉스 개발하려고 만든 랭귀지가 바로 c언어다.
그걸 바탕으로 객체지향 추가한게 c++이고.
극한의 최적화된 속도와 메모리 효율을 달성하기 위해
c에서는 자료형에서 문자열 타입이 없을 정도다.
다른 랭귀지에서는 문자열 길이에 따라 런타임에서
메모리 할당 해제를 자동으로 해주지만 c언어에서는
그걸 다 프로그래머에게 직접 손수 하게끔 해놨지.
즉 처음부터 끝까지 모든걸 포인터를 통해 간접 참조해서
프로그래밍 하는게 거의 반강제적으로 요구되는 유일한
랭귀지이기도 함. os를 싹다 어셈블리로 짜는건 너무 힘들고
그렇다고 포트란으로 짜기엔 너무 효율 안나오니까 c언어를 만든거임.
c++이 왜 어렵게 느껴지냐면 c를 베이스로 객체지향 확장이
추가되었기 때문에 c++에서도 어쩔 수 없이 별거 아닌
사소한 부분에서도 항상 포인터를 신경쓰면서 코딩해야 하며
까딱 방심할 경우 그대로 메모리 뻑나서 다운되는게 특징이다.
그 시절엔 극한의 메모리 절약과 효율, 속도 최적화가 절실했기 때문에
어쩔 수 없이 c언어(c++)가 그런 특징을 갖고 탄생했다는걸 알아야한다.
기본적인 문자열을 다룰 때에도 포인터를 신경쓰지 않으면
중간에 프로그램 다운될 수도 있기 때문에
데이터베이스처럼 문자열을 다루는게 주된 프로그래밍에서는
c/c++보다는 다른 랭귀지가 여러모로 더 편리하고 효율적임.
pascal(delphi), perl, php, vb 등등
아닌데?