본문 바로가기

Software

C 언어 란 무엇입니까? 왜 그렇게 강력하고 어떤 언어로 작성 되었습니까?

반응형

1. 지구상에 컴파일러가 없을 것으로 예상합니다. 기계 언어로 시작해서 무엇을해야하는지보아야합니다. 머신 언어는 컴파일러가 없어도 CPU에 의해 합법적으로 실행될 수 있습니다. 그 시점에는 저수준 컴퓨팅 구조가 있습니다. 저수준 컴퓨팅 구성은 기계 언어의 정신적 보조 자라는 사실에도 불구하고, 추가로 실행하려면 기계 언어로 조립되어야합니다. 이 첫 번째 컴파일러를 기계 언어로 작성하는 것은 절대 불가능합니다 (나중에 사용되지 않음). 저수준 컴퓨팅 구조의 문제가 이해되었으며 주요 발전이 이루어졌습니다. 현재 C 언어 컴파일러는 저수준 컴퓨팅 구조로 작성 될 수 있습니다. 우리는 이것이 C 컴파일러의 전임자라고 말합니다. 이 조상을 사용하면 모든 C 언어 프로그램을 집계 할 수 있습니다. C 언어 자체에서 컴파일러를 구성 할 수 있습니까? 단순히 선구자와 집계하십시오. 좋아, 상당히 많은 수의 레이어 후에 마침내 C로 작성된 컴파일러를 얻었습니다. 매우 불편합니다. 이 시점에서 과거에 작성된 C 언어 컴파일러가 서로 어려워 질 수 있습니다. 분명히 Pascal과 같은 다른 중요한 수준의 방언이 C 언어보다 먼저 나타난 경우 Pascal을 사용하여 C 언어 컴파일러를 작성할 수 있습니다. 기본 파스칼 컴파일러는 포트란으로 작성되어야합니다. 주요 고급 언어 인 포트란 (Fortran)으로서, 컴파일러는 저수준 컴퓨팅 구조로 작성되어야합니다. C 언어는 정말 대단합니다. 어떤 언어로 작성됩니까? 소재주기를 부트 스트랩이라고합니다

2. 컴파일러와 관련하여 흥미로운 전설이 있습니다.

전설에 따르면 유닉스 설계자 중 한 사람인 Ken Thompson은 Bell Labs의 유닉스 머신을 방문하기 전에 자신의 사용자 이름과 비밀 문구를 입력하고 루트로 로그인했습니다! Ringer Labs는 셀 수없이 많은 능력을 가지고 있으며, 다른 거대 낙농 동물들은 약점을 발견하기로 약속했습니다. 그들은 Unix C 소스 코드를 통해 마지막으로 로그인 간접 액세스를 찾았습니다. 간접 액세스를 정리 한 후 Unix를 집계하고 실행했지만 톰슨은 아직 로그인 할 준비가되었습니다. 소수의 사람들은 컴파일러에 문제가 있다고 생각합니다. Unix를 수집 할 때 간접 액세스가 포함되었으므로 C 언어로 컴파일러를 재구성하고 새 컴파일러로 Unix를 다시 정렬했습니다. 이것은 오래 전부터 조용합니다. 모든 것이 작동하지 않더라도 톰슨은 어떤 경우에도 루트로 로그인 할 수 있습니다. 그 후, 톰슨 자신도 미스터리를 열었습니다. 문제가 발생한 것은 주요 C 언어 컴파일러였습니다. 분명히이 컴파일러는 유닉스 소스 코드를 수집 할 때 보조 통로를 포함합니다. 이것으로 충분하지 않습니다. 또한 C 언어로 작성할 가능성이있는 경우 다른 컴파일러가있는 경우이를 두 가지 코드로 누적해야합니다. 그것을 축적하기 위해 무엇을 사용하는 것이 좋습니까? Thompson이 구성한 주요 컴파일러 만 주문합니다. 고려한 모든 사항, 작성한 컴파일러가 더러워집니다. 이 시점에서 컴파일러는 Unix를 축적하고 보조 통로도 포함됩니다. 이제 몇 년 전 XcodeGhost 발생을 회상했습니다. 간단히 말해, 트로이 목마는 Xcode에 내장되어 (비공식적으로 다운로드 됨) XCode에 의해 정렬 된 ios 응용 프로그램은 완전히 오염되어 있으며 이러한 응용 프로그램은 해커가 불법적 인 일을하는 데 사용할 수 있습니다. 이 XCodeGhost가 Thompson보다 먼 길 임에도 불구하고 프로그래밍을 다운로드하는 동안 일반적인 절차를 따르고 공식 사이트에서 다운로드하고 사이트의 HTTPS 표준을 확인하고 체크섬을 확인해야한다고 조언합니다. C 언어는 정말 대단합니다. 어떤 언어로 작성됩니까? 소재주기를 부트 스트랩이라고합니다

3. 몇몇 사람들은 다음과 같이 질문 할 수 있습니다. 저는 Hui와 Hello World를 구성하는 것이 매우 불편합니다. 누군가가 실제로 그것을 사용하여 예측할 수없는 컴파일러를 작성합니까? 상상할 수 있습니까?

분명히 유닉스 원본을 만들 때 C 언어조차 없었습니다. 켄 톰슨과 데니스 리치 (Dennis Ritchie)는 유닉스 라인을 수집했다. WPS의 주요 형태는 Qiu Bojun에 의해 구성되었으며 Turbo Pascal의 컴파일러는 Anders에 의해 추가로 구성되었습니다. 표준 개체는 신성한 존재의 능력을 실현할 수 없습니다. 컴파일러의 경우 "눈덩이"접근 방식을 사용하여 다음을 만들 수 있습니다. 예를 들어 C 언어를 사용하면 주 변환은 먼저 C 언어의 하위 집합을 선택할 수 있습니다. 예를 들어 필수 정보 유형, 스트림 제어 조음 및 용량 호출을 지원합니다.이 하위 집합을 C0이라고합니다. 이 시점에서 저수준 컴퓨팅 구조에서 컴파일러를 작성하고 언어 C0의 하위 세트 만 가져 오면 작성하기가 훨씬 간단합니다. 언어 C0은 작동 할 수 있으며, 이후에이 서브 세트를 확장합니다 (예 : struct, pointer ... 포함). C1의 컴파일러는 누가 구성 했습니까? 일반적으로 C0. C1이 작동 할 때까지 유지하고 언어를 한 번 더 포함하여 컴파일러를 C1으로 작성하고 C2를 얻습니다. 그 시점에서 C3, C4 ...는 마침내 총 C 언어를 얻습니다.

반응형