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

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

JavaScript의 범위는 변수의 접근성 범위를 결정하며, 이는 글로벌, 기능 및 블록 수준 범위로 나뉩니다. 컨텍스트는 이것의 방향을 결정하고 함수 호출 방법에 따라 다릅니다. 1. 스코프에는 글로벌 범위 (어디서나 액세스 가능), 함수 스코프 (함수 내에서만 유효 함) 및 블록 레벨 범위 ({} 내에서 유효 함)가 포함됩니다. 2. 실행 컨텍스트에는 가변 객체, 스코프 체인 및 이것의 값이 포함되어 있습니다. 이것은 일반 함수에서 글로벌 또는 정의되지 않은 것을 가리키며, 메소드 호출은 통화 객체를 가리키고 생성자는 새 객체를 가리키며 Call/Apply/Bind에 의해 명시 적으로 지정 될 수 있습니다. 3. 폐쇄는 외부 범위 변수에 액세스하고 기억하는 기능을 말합니다. 종종 캡슐화 및 캐시에 사용되지만

HTML 입력 상자의 값을 얻으려면 코어는 DOM 작업을 통해 해당 요소를 찾고 값 속성을 읽는 것입니다. 1. Document.getElementById를 사용하여 가장 직접적인 방법으로 사용하십시오. 입력에 ID를 추가 한 후이 방법을 통해 요소를 얻고 값을 읽을 수 있습니다. 2. QuerySelector를 사용하여보다 유연하게 사용하면 이름, 클래스, 유형 등과 같은 속성을 기반으로 요소를 선택할 수 있습니다. 3. 입력 또는 변경 이벤트 리스너를 추가하여 실시간으로 입력 컨텐츠를 얻는 것과 같은 대화 형 기능을 달성 할 수 있습니다. 4. 스크립트 실행 타이밍, 철자 오류 및 널 판단에주의를 기울이고 값에 액세스하기 전에 요소가 존재하는지 확인하십시오.

선택한 라디오 버튼 값을 얻는 두 가지 핵심 방법이 있습니다. 1. QuerySelector를 사용하여 선택한 항목을 직접 얻고 입력 [이름 = "your-radio-name"]을 사용하여 선택한 요소를 얻고 값 속성을 읽으십시오. 최신 브라우저에 적합하며 간결한 코드가 있습니다. 2. Document.GetElementsByName을 사용하여 Loop Nodelist를 통해 최초의 확인 된 라디오를 찾아 값을 얻습니다.이 값은 이전 브라우저와 호환되거나 프로세스의 수동 제어가 필요한 시나리오에 적합합니다. 또한 이름 속성의 철자, 선택되지 않은 상황을 처리하며 동적 컨텐츠로드에주의를 기울여야합니다.

JavaScript를 사용하여 보안 샌드 박스 iframe을 만들려면 먼저 HTML의 샌드 박스 속성을 사용하여 스크립트 실행, 팝업 창 및 양식 제출과 같은 iframe 동작을 제한하십시오. 둘째, 필요에 따라 권한을 완화하기 위해 허용 스크립트와 같은 특정 토큰을 추가함으로써; 그런 다음 PostMessage ()를 결합하여 안전한 크로스 도메인 커뮤니케이션을 달성하고 메시지 소스 및 데이터를 엄격하게 확인하십시오. 마지막으로 소스를 확인하지 않고 CSP를 설정하지 않고 소스를 확인하는 등의 일반적인 구성 오류를 피하고 온라인으로 가기 전에 보안 테스트를 수행하십시오.

JavaScript에서 날짜 객체를 사용하는 경우 다음 핵심 사항에주의를 기울여야합니다. 1. NewDate ()을 사용하여 현재 시간을 얻기 위해 인스턴스를 만들거나 문자열, 연도, 월 및 일 매개 변수를 통해 시간을 지정하십시오. 호환성을 보장하기 위해 ISO 형식을 권장합니다. 2. 날짜와 시간을 얻기 위해 getlylyear (), getmonth () 및 기타 메소드를 사용하고 문자열을 수동으로 스플릿하고 형식화하십시오. 3. GetUTC 시리즈 방법을 사용하여 지역 시간 구역 간섭을 피하기 위해 UTC 시간을 처리하십시오. 4. 타임 스탬프 차이로 시간 간격을 계산하지만 교차 시간 영역이나 일광 절약 시간으로 인해 발생할 수있는 편차에주의를 기울입니다.

Vue3의 CompositionApi는 복잡한 논리 및 유형 파생에 더 적합하며 옵션 API는 간단한 시나리오 및 초보자에게 적합합니다. 1. OptionsApi는 데이터 및 방법과 같은 옵션에 따라 코드를 구성하며 명확한 구조를 가지지 만 복잡한 구성 요소는 조각화됩니다. 2. CompositionApi는 설정을 사용하여 관련 논리를 집중시킵니다.이 논리는 유지 관리 및 재사용에 도움이됩니다. 3. CompositionApi는 Composable 기능을 통해 충돌이없고 매개 변수화 가능한 논리 재사용을 인식합니다. 4. CompositionApi는 TypeScript와보다 정확한 유형 도출에 대한 더 나은 지원을 가지고 있습니다. 5.이 둘의 성능과 포장량에는 큰 차이가 없다. 6.

동시 처리에서 JavaScript의 웹 워크와 Javathreads 사이에는 필수적인 차이가 있습니다. 1. JavaScript는 단일 스레드 모델을 채택합니다. 웹 워크 사람들은 브라우저에서 제공하는 독립 스레드입니다. UI를 차단하지는 않지만 DOM을 작동 할 수없는 시간 소모적 작업을 수행하는 데 적합합니다. 2. Java는 스레드 클래스를 통해 생성 된 언어 수준의 실제 멀티 스레딩을 지원하며 복잡한 동시 논리 및 서버 측 처리에 적합합니다. 3. 웹 워크는 postMessage ()를 사용하여 주 스레드와 통신하는데, 이는 매우 안전하고 고립된다. Java 스레드는 메모리를 공유 할 수 있으므로 동기화 문제에주의를 기울여야합니다. 4. 웹 워크는 이미지 처리 및와 같은 프론트 엔드 병렬 컴퓨팅에 더 적합합니다.

복잡한 JavaScript 응용 프로그램을 디버깅하려면 체계적인 사용 도구가 필요합니다. 1. 조건에 따라 기능 입력 전, 루프, 비동기 콜백 및 필터와 같은 의심스러운 프로세스를 가로 채도록 중단 점 및 조건부 중단 점을 설정합니다. 2. 블랙 박스 기능이 타사 라이브러리 간섭을 차단하도록합니다. 3. 환경 판단에 따라 디버그 항목을 제어하기 위해 디버거 진술을 사용하십시오. 4. CallStack을 통해 통화 링크를 추적하고 실행 경로와 가변 상태를 분석하여 문제의 근본 원인을 효율적으로 찾습니다.
