/ c언어로 모든 걸 만들수 있다
; 문장 자체는 거짓.
단, 앞에 "posix랑 man 이라는 운영체제 기반 저수준
언어를 사용하면" 이 붙어야 참이 됨.
/ 그러므로 c언어 기본책에 나오는 내용만으로는
고급지고 다양한 것들을 만들 수 없음.
; posix랑 man 이용해서 고급기능 함수 만들어서
활용해야함.
/ 어셈블리 = '바이너리'와 'c언어 및 posix랑 man'을 이어주는 언어
/ posix랑 man = 어셈블리와 c언어를 이어주는 언어
/c언어로 모든 것이 구현가능함->틀린말
/어셈블리로 모든것이 구현 가능함-> 맞는말
= c언어와 poxis로 모든 어셈블리가 구현 가능함
- dc official App
c언어로 모든 걸 만들 수 있다 이거 참입니다 c언어의 능력==어셈블리의 능력==다른 자바파이썬등등의 능력==현대 컴퓨터의 능력 이거임
앞서 말했듯이 c 만으로 다 만들수는 있지만, 프로그램으로 현실에 영향(인터넷, 화면출력 등)을 주려면 c동작->현실영향을 이뤄내는 기계(컴퓨터)의 구조를 알아야 함 근데 이게 너무 귀찮은 작업이니 남이 미리 만들어 준 걸 가져다 쓰는 거고
posix: 남이 대신 만들어 주는 함수 이름이 다르면 골치아프니 이름 통일하자는 표준 man: 리눅스 사용설명서 둘 다 언어는 아님
컴퓨터에 cpu 있잖아요 그거 뒤집어보면 핀 많을텐데 그중에 프로그램 코드 들어가는 핀도 있거든요 컴퓨터가 대충 어떻게 동작하냐면 그 핀들 값이 0000이면 뭐 하고 0001이면 뭐 하고 이런식임
그래서 컴퓨터가 000101010101 같은 기계어 쓴다는 얘기가 나오는거고 근데 이게 사람이 읽기에 괴랄하니까 기계어를 영어로 읽을 수 있게 만든 언어가 어셈블리임 그래서 기계어하고 어셈블리는 1대1 치환이 됨
socket() 이나 bind() 함수를 뜯어보면, 그 내용이 c언어 기본책에 나오는 내용들만으로 이루어져있나요? 포직스 인터페이스 문법이 섞여서 들어가 있는것 아닌가요? - dc App
근데 어셈하고 기계어 모두 핀의 개수하고 반도체 개수 한계 때문에 'a하고 b 더해서 c에 넣어라' 이런 단순한 거만 가능하다보니 사람 머리로 쓰기 힘듦. 그래서 좀 더 인간 친화적인 언어를 만들고, 그 언어를 더 많은 어셈으로 번역하자는 아이디어가 나왔는데 이게 c 하고 어셈의 관계임
기본책은 말그대로 기본이기때문에 양에 한계가 있음. 아무튼 c로는 모든 걸 할 수 있다는 참임. 근데 기본서가 뭔지몰라서 그건 확답 못해줄듯 이제 버스 내릴거여서 더 답할 시간이 없는데 아무튼 이런거 궁금하면 컴퓨터구조같은거 공부하십쇼
그럼 소켓이나 바인드 함수 뜯어봤는데
https://m.terms.naver.com/entry.naver?docId=2271954&cid=51207&categoryId=51207
기본
c언어 책에서 없었던 AF_UNIX, SOCK_STREAM 같은 단어가 보이는데 이게 포직스 인가요? - dc App
소스에서 매크로로 정의한 거다... Peek Definiton 기능으로 확인해 보셈 - dc App
추가로 물어보신 'c언어로 모든 걸 만들 수 있냐' 이거 자체가 어려운 질문임 범위가 너무 모호함 '모든 것'이나 '만들다' 라는 단어를 어떻게 정의하느냐에 따라 참거짓이 달라짐 나의 경우에는 '모든 것'을 컴퓨터가 할 수 있는 일, 그러니까 알고리즘이라고 생각했고 '만들다'를 컴퓨터의 자원을 이용하여 어떤 기능을 구현한다고 생각해으니까 저 명제가 참인거임
지금 물어보시는 것들은 컴퓨터 쪽 기반지식 없으면 질의응답 자체가 불가능한 내용들입니다 우리가 디시 댓글 몇개로 머리좋은 공대생들 몇달씩 공부해야 이해하는 지식들 다 설명할 능력이 있으면 여기가 아니라 어디 인강강사라도 하고있겠죠
아무튼 지금 드릴 수 있는 말씀은 이미 선배 개발자들이 어려운 거 다 구현해서 각종 라이브러리들하고 표준 만들어 놨으니 그거만 쓸 줄 알아도 대부분은 만들 수 있다. 질문하신 내용처럼 언어의 한계나 세부 구현에 대한 내용들은 이해하기 위해 많은 기반지식들이 필요하다. 이 기반지식들이 쌓이기 전까지는 아무리 설명하고 이해해도 오개념일 가능성이 높다 이겁니다
모든 걸 고급지고 다양한 것 추상적인거로 참 거짓을 말할 수 있음?
기계가 할 수 있는 일이 그 언어가 할 수 있는 일의 범위임. 결국 컴퓨터에 두들기는 모든 언어는 기계가 (제조사가 정의한) 명령어로 환원되기 때문임. 기계 명령은 메모리에 010101 하는 그런 거로 저장되서 컴퓨터가 시작되면 순서대로 읽고 실행해 나가는 거야. - dc App
컴퓨터의 역사에 대해서 공부해 보셈. 코딩이 능사가 아님. 컴퓨터 구조가 어떻게 생겼는지, 유닉스가 왜 만들어졌는지 같은 거. 좀 깊게 공부해 보려면
https://csapp.cs.cmu.edu/
이거 한 권이라도 읽어보셈. - dc App
posix, man, 운영체제 전부 이미 C언어로 만든거 사용하고 있으면서 C언어로 못 만든다 ㅇㅈㄹ
기계어로 할 수 있는 일은 어셈블리어로 모두 할 수 있음, 어셈블리어로 할 수 있는 일은 C언어로 모두 할 수 있음. 따라서 기계어, 어셈블리어, C언어는 모두 동치이고, 튜링 완전한 언어이기 때문에 C언어로 모든 걸 만들 수 있음. 이건 다른 python같은 생산성 높은 언어도 마찬가지임
돌겠네 국비라도 다녀라 - dc App
그냥 니 전공이나 열심히 해
프로그래밍 재능 없는거 같은데 딴거 알아봐
ㅋㅋㅋㅋ C언어로 만든게 붙어야 C언어로 모든 걸 만들 수 있다는 명제가 참이 된다니
언어 이전에 이론부터 학습하세요 - dc App