저는 어렸을 때부터 호기심이 많고 문제를 이해하고 해결하는 것을 즐기는 사람이었습니다. 저는 고등학교 때 프로그래밍을 처음 접했고, 분명한 이유로 금방 프로그래밍에 집착하게 되었습니다.
고등학교 시절 제가 기억하는 첫 번째 언어와 도구는 Turing, 프로세싱, GreenFoot, BlueJ와 같은 것이었습니다. Turing을 제외하고 모두 학습 도구였으며 주로 그래픽 프로그래밍에 초점을 맞춘 Java 추상화였습니다. 이 도구를 사용하면 매우 멋진 작업을 매우 빠르게 수행할 수 있습니다. 이러한 초기 경험이 제 관심을 끌게 된 계기가 되었습니다.
거기서 저는 지역 대학에서 웹 개발을 공부하고 싶습니다. 여기서 저는 HTML, CSS, JavaScript와 같은 것을 배우기 시작했습니다. 나중에 PHP, Ruby, ASP.NET, Angular 및 순수 개발 이외의 기타 관련 기술로 이동합니다. 훌륭한 과정이었으며 매우 효과적인 웹 개발자가 되기 위해 필요한 모든 기술을 제공했습니다.
대학 생활이 끝날 무렵 저는 웹 개발 전반에 대해 꽤 잘 이해하게 되었습니다. 나는 확실히 모든 것을 알지는 못했지만 나에게는 아무것도 미스터리하지 않은 지점에 있었습니다. 여기에서 나의 자연스러운 호기심은 나를 더 깊이 파고들게 만들었습니다. 운영 체제, 시스템 수준 개발 및 임베디드 시스템의 토끼굴로 나를 안내합니다. 짐작하시겠지만 첫 번째 단계는 C를 기대는 것이었습니다.
C를 배우는 것은 예상했던 것보다 훨씬 더 어려웠습니다. 포인터뿐만 아니라 스택과 힙 메모리의 개념도 매우 혼란스러웠습니다. 특히 가비지 수집기가 있는 고급 언어에서 발생합니다. C가 단순히 더 어렵다는 것이 아니라 실제로 언어가 실제로 매우 간단하다는 사실이 나에게 분명해졌습니다. 그러나 지난 몇 년 동안 더 높은 수준의 언어를 배우면서 만든 모든 나쁜 습관과 잘못된 가정을 끊임없이 잊어야 한다는 것이 분명해졌습니다!
이것이 바로 하향식 학습의 저주라고 부르는 것입니다!
비시스템 수준 언어를 배울 때 이러한 잘못된 가정을 모두 만들어서 극도로 좌절감을 느꼈습니다. 또한 C를 배우는 과정이 원래 예상했던 것보다 3배나 오래 걸리게 만들었습니다.
내가 사용하고 있던 추상화에 대한 이해가 부족했습니다!
오해하지 마십시오. 애플리케이션 수준 개발에만 집중하거나 기본적인 Python 스크립팅만 수행하면 전체 경력을 쌓을 수 있는 사람들이 많이 있습니다. 그러나 진정한 소프트웨어 엔지니어가 되고 싶고 임베디드 시스템부터 운영 체제 및 해당 운영 체제용으로 개발된 애플리케이션에 이르기까지 해당 분야를 전체적으로 이해하고 싶다면 밑바닥부터 위로 학습하는 것이 매우 유리합니다.
정말로 소프트웨어 엔지니어가 되고 싶은 사람에게 제가 제안하는 것은 C부터 시작하는 것입니다. 포인터뿐만 아니라 스택과 힙의 차이점도 이해하세요. 소규모 C 애플리케이션이 생성하는 어셈블리를 분석하는 것일지라도 일부 어셈블리를 사용해 보십시오. 이런 것들을 근본적으로 이해하시면 나머지는 훨씬 쉬워지실 거에요!
그렇게 시작했으면 좋겠어요. 내 실수로부터 기대세요!
위 내용은 소프트웨어 엔지니어가 되고 싶나요? 하향식 학습의 어려움.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!