당연히 알고있다고 생각했으나..
최근 면접에서 막상 설명하려니까 단어가 목에서 콱..
설명하지 못한다면 모르는것과 다를바 없기에 다시한번 간략하게 개념 및 정리를 진행해봤다
라는 생각에 유튜브와 블로그들을 보다보니 여기만큼 깔끔하고 심플하게 설명하는곳이 없는것 같다
평소 자주보는 노마드 코드라는 유튜버인데 여러가지 개발관련 정보를 잘 정리해서 알려준다
(특히 비트코인편 추천)
추가로 알고있는거 몇몇개도 같이 정리해봤다
일단 C는 프로그래밍을 위한 초창기 언어다
그당시 컴퓨터의 운영체제는 독보적으로 유닉스로 구성되었는데
해당 운영체제들은 매우 낮은레벨 (low-level)언어인 어셈블리어로 작성되었었다
그러나 점점 운영체제들의 덩치가 커지다보니 어셈블리 언어만으로는 생산성에 제한이 있다보니
더 상위레벨의 고급 언어체계가 필요하게되었고
그래서 개발된게 C언어다
(이후 운영체제들은 어셈블리 언어 대신 C로 개발되었다고 한다)
하지만 C언어는 결국 어셈블리 언어를 대체하기위해 최대한 저단계로 설계가 되었기때문에
그만큼 효율적인 메모리 활용이 가능하나 지원되는 기능 등은 다른 고레벨 언어에 비해서 적은편이고
메모리 관리나 컴파일러 동작등을 수동으로 직접 지정해줘야한다
검색도중 재미있는 문구를 발견했는데, C99 Rationale에서 설명하는 C의 정신의 가장 첫 문장이다
'프로그래머를 믿어라' (Trust the programmer)
즉, C언어는 프로그래머가 코드를 아무렇게나 짜두더라도 의심하지않고 그대로 진행한다
프로그래머가 짠 코드를 믿는것이다 (믿지마..)
그리고 이후 개발된게 C++
C++는 C를 대체하기위한, C의 확장판 개념으로 설계되었다
C++는 class라는 개념을 활용하는 객체지향 언어이며
그외에는 하드웨어와 밀접성 등에 대해서는 C와 비슷한부분이 많다
C#는 앞서말한 C, C++보다는 자바쪽에 더 가깝다
자바와 오라클이 독보적인 생태계를 구축하자
마이크로소프트사에서 윈도우 개발환경 프레임워크인 .NET과 더불어 C#을 발표했다
C#또한 C++와 마찬가지로 객체지향언어이나, 컴파일러에 대한 의존성이 훨씬 높은편이다
메모리 관리 등에 대한것도 자동으로 관리하므로 속도효율은 낮지만 그만큼 개발자들이 편하게 접근할 수 있다는 장점이 있다
이상!
'개발공부' 카테고리의 다른 글
#include <> #include "" (0) | 2022.09.12 |
---|---|
"Gradle 에러네요" (0) | 2022.09.12 |
투 포인터 - Middle of the Linked List (0) | 2022.02.15 |
투 포인터 - Two Pointers (0) | 2022.02.15 |
이진탐색 - Binary Search (0) | 2022.02.15 |