다시 오신 걸 환영해요
이번 강의에서는 여러분이 연구할 수 있는 심화
주제를 다룰 거예요
수업을 마무리하고 있어요
마무리하고 있어요
그래서 다 찍지는 못했어요
당연히 초급반이죠
네 C#을 심도 있게 연구할 수 있는 많은 고급 주제들이
있습니다 C# 프로그래밍을 정말 훌륭하게 만들기 위해서요 그 중 몇 가지를
말씀드리고자 합니다
먼저, 타이프데프에 대해 살펴보지 않았고요.
좀 더 상세히 설명하고 싶었지만 좀 더
진보된 개념이라서요
에눔스 얘기를 했죠
열핵은 자기 타입을 만드는 방법이죠
특히 c에서는 tpedef라는 키워드가 있는데 데이터 타입을
만들 수 있어요.
아주 유용하죠 진보된 개념이니까요
그런 건 확실히 배우셔야 해요
네 사전 처리기에 더 많은 정보가 있어요
특히 문자열 연결에요
컴파일러 전에 실행된다는 걸 기억하세요
정의된 문에 대해 배웠죠
네 네 몇 가지 다른 것도 배웠지만 사전 처리기는
더 많은 정보를 가진 또 다른 섹션이 될 수 있어요
기본적으로 많은 코드를 훔칠 수 있어요 사전에 실행할
수 있도록요
인라인 기능과 전처리장치로 실행할 수 있죠
멋진 콘셉트예요
텅 빈 별에 관한 게 더 많아요
공허한 별 여러분 유연성을 잊지 마세요
특히 오작동으로 텅 빈 별이 돌아왔죠
네 함수를 만들 수 있어요 void 포인터를 이리저리 돌려가며
좀 더 유연하게 만들 수 있죠
연구할 게 아주 많아요
정적 라이브러리와 공유 개체죠
도서관 얘기는 안 했잖아요
링크할 때 라이브러리를 사용하죠
구체적으로 많은 Telibraries가
C 표준 라이브러리에서 정의돼요
하지만 자신만의 라이브러리를 만들 수 있어요
프로그램을 만들었어요
프로그램은 메모리로 실행돼요
하지만 라이브러리는 다른 프로그램에서 재사용할 수 있는 코드죠
예를 들어 C 표준 라이브러리요
다른 언어로 프로그램했다면 보통 언어와 함께
오는 API죠
두 가지 유형의 거부권을 만들 수 있어요
링크를 할 때 코드를 컴파일 할 수 있는 staticlibrary도
만들 수 있고요
네 그런 다음 공유 개체를 만들어 프로그램을 실행하는
동안 함수를 찾아 호출할 수도 있어요
네 정적 라이브러리는 보통 .a로 끝나고 정적인 시간에
컴파일됩니다 혹은 프로그램을 컴파일할 때 컴파일됩니다
네 공유 개체는 .입니다 파일이나 그것들도요 dll로 생각할
수 있습니다 동적 링크 라이브러리와 비주얼
C++를 들어보셨다면요
하지만 공유하는 물건들은 시간을 압축하지 않죠
코드를 재사용하는 방법이죠
네 이런 개념을 공부해서 정적 라이브러리를 만드는 법과 공유 개체를 만드는
법을 보여드리겠습니다
마크로스요
매크로에 대해 얘기할 기회가 없었어요
고급 과목이에요
사전처리장치에서 주로 스트링 치환 작업을
해요
Westudied의 일부 기능은 macros로 작성됩니다
assert macro 같은 거죠
마크로는 훨씬 더 상세하게 탐구할 수 있어요
노조 때문이죠
노조는 보통 스트럭츠를 따르죠
네 같은 것을 나타내는 여러 타입의 데이터를 반환하거나 같은 것을 나타내는
여러 타입의 멤버 요소를 반환할 수 있죠
네 멤버가 하나인 구조를 가질 수 있지만 그 멤버는 엔터나 float가
될 수 있어요 그걸 위해 UNION을 사용할 수 있죠
다른 토픽 함수 포인터요
주로 캐릭터 포인트와 정수 포인터 혹은 이중 포인터에
대해 얘기했죠
하지만 다양한 기능에 대한 포인터 포인터를 가질 수 있어요
프로그램이 실행될 때 함수 하나를 실행할 수 있어요
그런 다음 그런 다음 다음 실행하면 사용자 입력 같은
것에 기반해 다른 함수를 실행할 수 있죠
기능 포인터는 완전히 다른 주제죠
고급 포인터요
우리가 논의한 것 중에 지적할 게 더 많아요
기본 오브포인터에 관해 얘기했지만 포인터에 관해 훨씬
더 상세히 얘기할 수 있어요
네 네 포인터엔 실제 포인터가 있어요 포인터 두 개가 있는데
그건 좀 더 고급 토픽이죠
함수의 변수 인수요
이건 신경계 기능이에요
printf 함수를 사용합니다 인수의 변수
수를 갖고 있는 거죠 하지만 인수의 변수 수를 갖고 있는 함수는 정의하지
않았어요 그 개념을 아주 유용하게 탐구할 수 있어요
동적 연결이에요
이때 알리바이러리를 엽니다 공유 객체와는 약간
다르죠
네 런타임에 라이브러리를 열어 성능을 향상시키고 실행
가능한 프로그램을 작게 만듭니다
dlm이 열리면 실제로 자율적으로 할 수 있죠
신호, 교환, 절차적 의사소통요
네 이 모든 걸 탐구할 수 있어요 절차 간 의사소통은 프로그램이 두 개일 때 가능해요
소통하고 싶어 해요
의사소통 방법이 다양해요
파일로 소통할 수 있어요
소켓이라는 걸 통해 소통할 수 있어요
파이프로 소통할 수 있어요
다른 기술도 있지만 그건 두 기계가 서로 대화하려고
할 때죠
포크는 또 다른 과정을 생성할 수 있는 곳이죠
코드에 프로세스를 생성할 라이브러리가 있어요
네 코드에 다른 프로세스를 생성하면
고유 주소 메모리 공간을 갖게 되고 프로그램을 좀 더 효율적으로 만들
수 있어요
네 그리고 신호는 우리가 많이 다루진 않았지만 신호는 디버깅에 사용됩니다
다른 프로그램에 다른 메시지를 생성하는 데 사용되죠
스레드와 동시성이죠
공부하고 싶은 고급 과목이네요
프로그램 내부에 다수의 실행점을 허용하죠
코딩모스트를 동시에 실행할 수 있게 해주죠
효율성에 관한 거죠
네 프로그램에서 장기 실행 중인 작업이 있는 경우 예를 들어 데이터
모니터링이나 데이터 대기 혹은 방대한 파일을 읽는 작업 같은 거요 그걸
위해 다른 스레드를 생성해 동시에 프로그램의 다른 부분을
실행할 수 있는 거죠 ? 네, 맞아요
콘센트요
소켓은 네트워킹에 사용되죠
네 네 다른 컴퓨터에 연결하고 그 컴퓨터에서 데이터를 얻으려면
소켓을 사용해야 합니다
네트워킹은 아주 중요해요 인터넷을 비롯한 모든 게 있으니까요
속기술에 대해 배우고 볼 수도 있죠
셋점프와 룽점프의 기능은 두 가지예요
그건 국가를 복구하기 위한 거예요
메모리 관리와 파편화에 대해 자세히
알아보죠
네 이건 단순하지 않아요 메모리를 관리해 저장소나 저장소에
저장하는 방법이죠
네 프로그램이 좀 더 효율적이어야
파편화가 적게 되죠
네 파편화는 순차적이지 않은 곳에 있는 기억을
뜻합니다 그래서 기억을 찾는 데 시간이 더 걸리죠
파편을 줄일 수 있어요
프로그래밍을 좀 더 휴대 가능하게 만들 수 있어요
C 프로그램은 휴대성이 좋아요
네 하지만 더 많은 테크닉을 사용해서 프로그램을 한 번 작성하면
여러 운영체제에서 실행되고 다시 쓸 필요가
없어요
C#에서 사용 가능한 Pix 표준을 이용할
수 있죠
네 확실히 할 수 있는 건 어떤 버전의 C 표준이냐에
따라 특정 규칙을 사용해 다중 표준에서 작동된다는
거죠
커널과 인터페이스 하는 프로그램도 작성할 수 있어요
커널은 운영 체제의 뇌라는 걸 기억하세요
커널에는 모든 드라이버가 들어 있어요
하위 레벨 메모리 기능에 대한 온갖 호출이 담겨 있어요
다양한 정보를 제공하죠
커널에는 C 프로그램에서 인터페이스할 수 있는
특정한 기능성이 있어요
낮은 수준의 내장재예요
IO 컨트롤 같은 콜을 사용할 수 있어요
하드웨어로 직접 드라이버 다톡을 생성할 수 있어요
네 컴파일러와 링커에게 전달할 수 있는 다양한 플래그와
컴파일러에는 더 많은 것들이 있습니다 프로그램의 효율성을
높여줍니다
다양한 깃발에 대해 얘기할
기회가 없었어요
주로 대시보드나 다른 기본적인 것에 대해 얘기했지만
더 심화된 건 없었어요
디버거와 응용 프로그램을 디버그하는 방법을 다뤘죠
코드 블록에서의 디버거는 그래픽 사용자 인터페이스를 거치죠
하지만 디버거의 진짜 장점은 gdb를 쓴다는 거죠
GDb는 누 디버거예요
그리고 중단점과 그래픽 사용자 인터페이스를 통한 사용에 대해서만 얘기했었죠.
하지만 gdb로 더 많은 것을 할 수 있어요.
네 콘솔 이슈에서 GDb 디버거를 살펴볼 수도 있어요 코어 파일로
더 많은 걸 할 수 있어요 gdb를 이용해 핵심 파일을 읽는 방법을
이해했습니다 많은 고급 토픽들이 있습니다
프로파일링과 추적 도구요
네 정적 분석기 얘길 안 했어요 프로그램을 실행하기 전에 코드를
분석할 수 있는 도구죠 데드 코드가 있는지
나쁜 프로그래밍 사례가 있는지 확인하기 위해서요
네 추적 도구도 있어요 S추적 d S추적 g 프로필도요 여러분이 사용할 수
있는 중요한 도구들입니다 디버그를 하고 효율성을 측정하고
메모리를 얼마나 사용하는지 혹은 프로그램의 성능을 측정하는
데 도움이 됩니다
다른 메모리 디버깅 도구도 있어요 Valgrind 같은 거요
트레이스 상태나 기억력 감퇴에
도움이 되죠
네 네 대부분의 경우 메모리를 관리할 때 버퍼 오버플로나 메모리가 누출되는
경우 그런 걸 찾기가 아주 어렵습니다
밸그린드 같은 도구를 찾을 수 있어요
C 분야 전문가가 되려면 다양한 원소를
탐구해야 하죠
기본적인 건 다뤘어요
시작하기 전에 정말 중요한 걸 다뤘어요
하지만 이 추가 원소 운동으로 전문가가 될 수 있어요
고마워요