당시에는 개발자들이 금속에 훨씬 더 가까이 다가 가고있었습니다. C는 본질적으로 어셈블리를 대체 할 수있는 수준이 높았으며, 이는 하드웨어와 거의 비슷하기 때문에 코딩 문제를 해결하는 데 효율적인 포인터가 필요했습니다. 그러나 포인터는 날카로운 도구이므로 부주의하게 사용하면 큰 손상을 입을 수 있습니다. 또한 포인터를 직접 사용하면 당시에는 문제가되지 않았던 많은 보안 문제에 대한 가능성을 열어줍니다 (1970 년 인터넷은 몇 개의 대학에 걸쳐 수십 대의 컴퓨터로 구성되어 있었으며 그렇게 불리지 않았습니다. ...), 이후 점점 더 중요해졌습니다. 따라서 오늘날 고급 언어는 원시 메모리 포인터를 피하도록 의식적으로 설계되었습니다.
"VB.Net 또는 Java에서 수행되는 고급 작업은 C에서는 불가능합니다"라고 말하는 것은 매우 제한적인 관점을 보여줍니다.
우선,이 모든 언어들 (어셈블리도)은 Turing이 완료되었으므로 이론적으로는 한 언어로 가능한 모든 것이 가능합니다. VB.Net 또는 Java 코드가 컴파일되고 실행될 때 어떤 일이 발생하는지 생각해보십시오. 결국 머신 코드로 변환 (또는 맵핑)됩니다. 머신이 이해하는 유일한 것은 기 때문입니다. C 및 C ++와 같은 컴파일 된 언어에서는 실제로 하나 이상의 실행 파일 / 라이브러리로서 원래 상위 소스 코드와 동등한 전체 머신 코드를 얻을 수 있습니다. VM 기반 언어에서는 프로그램의 전체 동등한 머신 코드 표현을 얻는 것이 더 까다 롭고 불가능할 수도 있지만 결국 런타임 시스템과 JIT의 깊은 리 세스 내에 어딘가에 있습니다.
물론 어떤 솔루션이 특정 언어로 실현 될 수 있는지는 완전히 다른 질문입니다. 현명한 개발자는 어셈블리에서 웹 응용 프로그램을 작성하지 않을 것입니다. 저수준 언어, 일반적으로 C로 구현됩니다.
질문에 답하기 위해
당신은 젊은이들에게 포인터에 대한 지식이 중요하다고 생각합니까?
포인터 뒤에있는 개념은 간접적 입니다. 이것은 매우 중요한 개념이며 모든 훌륭한 프로그래머는 특정 수준에서 이해해야합니다. 누군가가 더 높은 수준의 언어로만 작업하더라도 간접적 인 참조와 참조는 여전히 중요합니다. 이것을 이해하지 못한다는 것은 매우 강력한 도구를 사용할 수 없어 장기적으로 문제 해결 능력을 심각하게 제한한다는 것을 의미합니다.
내 대답은 그렇습니다. 정말 좋은 프로그래머가 되려면 포인터도 이해해야합니다 (재귀뿐만 아니라 신진 개발자를위한 다른 전형적인 걸림돌입니다). 당신은 그것으로 시작할 필요가 없습니다-요즘 C가 제 1 언어로 최적이라고 생각하지 않습니다. 그러나 어느 시점에서 간접 지향에 익숙해 져야합니다. 그것 없이는 우리가 사용하는 도구, 라이브러리 및 프레임 워크가 실제로 어떻게 작동하는지 이해할 수 없습니다. 그리고 도구가 어떻게 작동하는지 이해하지 못하는 장인은 매우 제한적입니다. 공평하게도, 더 높은 수준의 프로그래밍 언어로도 이해할 수 있습니다. 좋은 리트머스 테스트 중 하나는 이중 연결 목록을 올바르게 구현하는 것입니다. 선호하는 언어로 할 수 있다면 간접적 인 이해가 충분하다고 주장 할 수 있습니다.
그러나 다른 것이 아니라면, 우리는 그들이 가지고있는 말도 안되는 간단한 도구를 사용하여 믿을 수없는 것들을 만들 수 있었던 옛 프로그래머들에 대한 존중을 배우기 위해 노력해야합니다. 우리는 모두 거인의 어깨에 서 있으며, 우리 자신을 거인이라고 가장하기보다는 이것을 인정하는 것이 좋습니다.