미적분과 선형 대수학은 시스템 프로그래머에게 어떻게 유용 할 수 있습니까? [닫은]


10

시스템 프로그래밍에 미적분학과 선형 대수학이 필요하다는 웹 사이트를 찾았습니다.

내가 아는 한, 시스템 프로그래밍은 osdev, 드라이버, 유틸리티 등에 관한 것입니다. 미적분학과 선형 대수학이 어떻게 도움이되는지 알아낼 수 없습니다. 미적분학에는 과학에 여러 응용 프로그램이 있지만,이 특정 프로그래밍 분야에서는 미적분학이 얼마나 중요한지 상상할 수 없습니다.

정보는이 사이트에있었습니다 : http://www.wikihow.com/Become-a-Programmer

편집 : 여기에 대한 답변은 알고리즘 복잡성과 최적화에 대해 설명합니다. 이 질문을 할 때 시스템 프로그래밍 영역에 대해 더 구체적으로 노력하려고했습니다. 알고리즘 복잡성 및 최적화는 시스템 프로그래밍뿐만 아니라 모든 프로그래밍 영역에 적용 할 수 있습니다. 그래서 질문 당시에 그런 생각을 할 수 없었던 것 같습니다.


6
당신의 사고 과정을 바꾸는 것만 큼 직접적인 적용은 아닙니다.
SomeKittens

3
나는 많은 시스템 프로그래밍을하지 않지만 (확인-나는하지 않습니다) 일련의 성능 테스트를 실행하고 결과에 대한 통계 분석을 원한다면 미적분학 및 선형 대수학 놀러와 알고리즘의 복잡성 분석을 수행 할 때 필요할 수도 있습니다.
FrustratedWithFormsDesigner

2
@Telastyn : 정말요? 그 흥미 롭군요. 어떻게 작동합니까?
FrustratedWithFormsDesigner

2
웹 사이트에 대한 링크를 제공 할 수 있습니까? 좀 더 구체적인 답변을 얻는 데 도움이되는 컨텍스트가 추가 될 수 있습니다.
Caleb

2
@FrustratedWithFormsDesigner-값과 포인터의 비유는 파생과 같습니다. 함수로 시작하여 다른 것을 의미하는 새 함수 (숫자가 아닌 메모리 주소를 나타내는 int)를 얻도록 파생시킵니다. 같은 것을 의미하지만 다른 두 번째 미분 (포인터에 대한 포인터)을 얻을 수도 있습니다. 그런 다음 실행을 취소하려면 몇 가지주의 사항이있는 통합 (포인터 참조 취소)이 필요합니다 (함수 대 객체 슬라이싱을 가져올 때 손실되는 상수). 바라건대, 그것은 말이
됐습니다

답변:


6

내부 운영 체제를 사용하지 않고 최신 운영 체제에서 비 GUI 유틸리티를 작성하는 경우 그다지 중요하지 않다고 생각합니다. 최신 운영 체제를 변경하거나 새로운 운영 체제를 개발하는 경우 다른 이야기 일 수 있습니다.

비디오 하드웨어 또는 베어 메탈 윈도우 시스템을 사용하는 경우 그래픽을 효율적으로 업데이트하려면 선형 대수 지식이 필요합니다. 나는 나 자신을 보지 못했지만 X, KDE 및 Gnome의 소스 코드에서 예제를 찾을 수 있다고 확신합니다.

디지털 신호 처리와 관련하여 하드웨어를 사용하는 경우 미적분학이 매우 중요합니다. 로컬 마이크로 프로세서 대신 시스템의 CPU를 사용하여 무거운 물건을 들어 올리는 장치가 있으며 종종 아날로그 전기 시스템과 인터페이스하는 장치가 있다고 생각합니다.

또한 미적분학은 데이터에 곡선 맞춤을 시도 할 때 선형 대수 외에 성능 분석에서 중요한 역할을합니다.


directx 또는 opengl 프로그래밍을 수행하더라도 선형 대수 이해가 필요합니다.
Rig

@Rig : 당신이가는 동안 배우십시오, 그것이 내가 한 방법입니다. 수학 측면에서 배우는 IMHO는베이스-백 워드입니다.
Coder

8

돈에 대한 SomeKittens의 의견은 다음과 같습니다. 미적분학과 선형 대수학이 필요합니다. 이러한 과정 은 생각 하는 방식과 세상을 이해하는 방식을 변화시키기 때문 입니다. 선형 대수학은 한 도메인에서 다른 도메인으로의 매핑에 관한 것입니다. 미적분은 함수의 작동 방식을 다룹니다. 그것들은 강력한 도구 자체이지만, 그 분야를 연구 할 때 배우는 기술들도 당신의 세계 정신 그림의 일부가됩니다.

사람들은 당신이 그 용어로 생각할 수 있기를 기대 하기 때문에 당신은 또한 그 과정이 필요합니다 . 동료들이 화이트 보드에서 다항식의 미분을 취하는 것을 종종 보지 못하지만, 어떤 흥미로운 점에서 그려진 접선 또는 곡선 아래의 영역이있는 함수 스케치를 종종 볼 수 있습니다. 우리는 실제 값에 대해서는 충분히 신경 쓰지 않고 값을 계산하는 데 신경 쓰지 않지만 값이 어떻게 변경 되는지 가 중요하며 일상적인 대화의 일부입니다.

모든 학부 컴퓨터 과학 학위는 미적분학, 선형 대수학, 통계학, 논리 및 기타 수학 과정이 필요합니다. 프로그래머가 기술을 정기적으로 직접 적용해야하기 때문이 아니라 (필요한 일에 따라 가능하지만) 나중에 오는 자료를 이해하는 지식.


2
만약 내가 이것을 두 번 이상 공표 할 수 있다면.
Mr.Mindor

유용한 답변이지만 질문에 대답하지는 않습니다. 예를 들어 최근에 재미를 위해 r600g 드라이버를 해킹하고 약한 수학 배경을 개선하는 데 관심이 있기 때문에 여기에 왔습니다. 수학 지식을 확장 해야하는 드라이버에서 구현할 아이디어를 찾는 것이 좋을 것입니다. "드라이버 개발 수학"과 같은 많은 쿼리가 하나의 논문으로 나오지 않았습니다.이 페이지는 제가 얻을 수있는 가장 가까운 것입니다.
Hi-Angel

@ Hi-Angel 동의하지 않습니다. 그것은 당신이 예상하는 방식의 질문에 대답하지 않을 수 있습니다, 그것은 질문 "나는 수학 능력을 향상시키기 위해 어떤 일을 할 수 있습니다"별도의 답변을하지 않을 수 있습니다,하지만 난 고급 수학은 시스템 프로그래머에게 유용한 것을 주장 주로 이 변화하는 것을 당신의 관점과 더 깊은 이해를 제공합니다. 그래픽 프로그래머는 실제로 정기적으로 미적분과 선형 대수를 사용 하지만 시스템 프로그래머는 덜 사용합니다. 그러나 이러한 주제를 이해하는 것은 여전히 ​​중요합니다.
Caleb

6

계속해서 미적분학이나 선형 대수학이 시스템 프로그래밍에 중요하지 않다고 생각합니다.

저는 미적분학과 선형 대수학이 일반적으로 배울 가치가 있다고 생각합니다. 저는 수학자입니다! 다른 답변에서 지적했듯이 성능 분석 및 알고리즘 설계에서 고급 수학을 사용할 수 있기 때문에 간접적 인 관련성이 있습니다. 그러나 시스템 프로그래밍이 일반적으로 수학으로 생각되지 않는 대부분의 다른 필드보다 이러한 종류의 수학에 더 의존한다고 생각하지 않습니다.


GPU를 본 적이 있습니까? :) 조금 수학적인 예입니다. 그것에 대한 드라이버를 작성하기 위해 ...하지만 사실입니다 : 당신이 붙어 있다면, 당신은 항상 math.stackexchange.com을 사용할 수 있습니다 :))
Aadaam

나는 컴퓨터 그래픽 사람이기도합니다. 나는 그 말과 비슷하다! 그래픽 카드 드라이버를 작성하려는 사람은 시스템 프로그래밍뿐만 아니라 컴퓨터 그래픽 (및 선형 대수 및 기본 미적분학)을 이해해야합니다.
오는 폭풍

내가 볼 수있는 한 그래픽 API에서 유용한 것을 수행하기 위해 삼각법과 선형 대수학을 알아야하지만 그래픽 API 에서이 API를 구현하지 않아야합니다. 여기에서는 주로 응용 프로그램 요청에 따라 많은 레지스터를 전환합니다. 상상할 수있는 그래픽 드라이버에서 수학을 적용 할 수있는 유일한 곳은 컴파일러 최적화입니다. 내가 틀렸다면 바로 잡아주세요. 수학 배경을 개선하고 r600g를 거의 해킹하지 않기 때문에 실제로 여기에 왔으며 두 가지를 결합하는 것이 좋습니다.
Hi-Angel

4

나는 그것이 가장자리 주위에 사실이라고 생각합니다. 시스템 프로그래머는 성능과 신뢰성에 대해 훨씬 더 많은 관심을 가져야하므로 알고리즘 분석이 중요 할 수 있으며 때로는 Big-Oh 분석의 증거로 미적분학이 필요합니다. 큐잉 이론 및 이산 최적화 (코드 최적화가 아닌 수학적 최적화)와 같은 주제도 역할을 수행 할 수 있습니다. 그러나 나는 이것이 대부분 USB 3.0 드라이버를 사용하는 사람이 아니라 운영 체제 및 네트워크 프로토콜의 최첨단에서 일하는 사람들에게 적용 될 것이라고 생각합니다.


이산 최적화를위한 ⁺¹는 흥미롭고 관련이있는 것 같습니다.
Hi-Angel

1

시스템 프로그래밍에 대한 당신의 정의는 Wikipedia의 답변과 잘 일치합니다.

그것이 제공하는 것에 대해 생각한다면 – 즉. 하드웨어에 대한 소프트웨어 인터페이스, 미적분학과 선형 대수학이 유용한 기술인 이유를 이해하기 시작합니다.

저수준 인터페이스를 추상화하려면 장치 작동 방식을 이해해야합니다. 전자 장치는 여전히 물리 법칙에 구속됩니다. 미적분과 선형 대수는 장치의 동작을 모델링하는 수단을 제공합니다. 장치를 모델링하면 기능에 서비스를 제공 할 수 있습니다.

이미 말했듯이,이 두 분야는 시스템 프로그래밍의 전부가 아닙니다. 나는 미적분학과 선형 대수학을 잘하지 못했지만 여전히 간결하게 작동하는 장치를 설명 할 수있는 많은 EE를 알고 있습니다.


시스템 프로그래밍의 정의가 맞습니까?
Victor

2
정확하지 않습니다. CPU와의 인터페이스에는 제공된 지침에 대한 지식 만 있으면됩니다.
DeadMG

@DeadMG-CPU의 경우 논쟁 할 수 없습니다. 가속도계 또는 직접 IO 인터페이스와 같은 원시 하드웨어의 용어에 대해 더 많이 생각하고있었습니다. 그러나 대부분의 인터페이스에는 인터페이스를 제공하는 일종의 칩이 있습니다. 내 의견은 아마도 장치 드라이버 계층보다 칩 내의 논리에 더 적합하다고 생각합니다.

1

일반적인 웹 응용 프로그램 및 / 또는 관리 프로그래밍에는 선형 대수 또는 미적분학을 많이 적용하지 않지만 많은 전문 분야가 필요합니다. 지오메트리를 다루면 선형 대수학에 빠지게됩니다. 대부분의 물리 프로그래밍은 대수와 미적분학을 모두 다룹니다. 사운드 및 라디오 프로그래밍과 같은 파형 조작과 관련이있을뿐입니다. 일반적으로 정보 이론, 데이터베이스 및 데이터 및 / 또는 논리가 결합되는 다른 장소와 같은 많은 응용 프로그램에 유용한 집합 이론, 그래프 이론 및 공식 (부울) 논리를 다루는 이산 수학을 이해하는 것이 더 중요합니다. . 시스템 프로그래밍의 경우 많은 응용 프로그램이 보이지 않습니다.


2
대부분의 프로그래밍 영역에서 미적분학이나 선형 대수학을 사용하지 않고도 "이동"할 수 있다고 생각합니다. 그러나 개념에 익숙하다면 몇 가지 다른 문제를 적용 할 수 있는지에 놀랄 것입니다. 시계 드리프트를 측정하고 예측하며 배터리 지속 시간은 최근에 미적분학을 사용한 것들을 떠올리게합니다. 삼각 측량 및 경로 예측에는 작년에 작업 한 문제에 대한 선형 대수가 포함되었습니다. 다른 사람들이 사용한 이전의 매우 복잡하고 열악한 근사법으로 이러한 주제를 사용하는 데 필요한 문제는 없었습니다 ...
Dunk

2
(계속) ...하지만 고급 수학을 사용하면 훨씬 간결하고 정확한 구현을 위해 만들어진 수학을 사용할 수있었습니다. IOW, 미적분학 및 선형 대수학은 일단 적용 방법을 배우면 강력한 도구이며, 대부분의 다른 프로그래머와 비교할 때 가장 높은 순위를 올리는 데 도움이됩니다. 대부분 학교에서 수학을 충분히 배우지 않았기 때문입니다. 나를 위해, 그것은 정말 멋진 프로젝트 대 평범한 프로젝트를 수행하는 것을 의미했습니다.
덩크

0

다른 사람들이 언급했듯이, 대학의 모든 수학 과정은 문제 해결 및 연역적 추론 능력을 향상시킬 수 있습니다. 이들은 거의 모든 사람에게 중요합니다.

그러나 때로는 선형 대수학을 아는 것이 특히 좋은 사업 아이디어에 도움이 될 수 있습니다 .


0

내가 아는 한, 시스템 프로그래밍은 osdev, 드라이버, 유틸리티 등에 관한 것입니다. 미적분학과 선형 대수학이 어떻게 도움이되는지 알아낼 수 없습니다.

미적분학을 사용하면 코스 내용을 자세히 살펴보면 매우 쉽습니다 . 그것은 알고리즘의 복잡성, Big-O 표기법 과 밀접한 관련이 있습니다.

방정식은 알고리즘 복잡성을 추정 할 때 얻는 것입니다. 에서 세 가지 수준의 중첩 된 루프 0로는 NN있는 3 개의 레벨의 중첩 루프가 N이고, 사람이 당신처럼 볼 수 있었다 얻을 N. 평가하고, (N 3 + 2 * N 2 + N) - 방정식이 있다고.

이제 N이 증가 할 때 실행 시간이 얼마나 빨리 커질 지 더 잘 이해하려면 파생 / 분화와 밀접한 관련이 있습니다. 도움이 될 수있는 미적분학의 다른 부분은 한계와 점근 적 분석입니다. 이것들은 Big-O 표기법을 이해하고, 프로그래밍 인터뷰에서 더 나은 점수를 매기 며, 아마도 시스템 프로그래밍을 더 잘 수행하게합니다.

  • 설계 파일 할당 테이블에 할당되었습니다. 어떤 데이터 구조를 사용 하시겠습니까? 거의 수정되지 않는 작은 파일이 많다고 가정하면 어떤 것이 더 좋을까요? 항상 끝에 추가되는 비교적 적은 양의 큰 파일이 있다고 가정하면 동일한 구조를 사용 하시겠습니까? 어떻게 결정하겠습니까?

에 관해서는 선형 대수학 , 여기에 매우 첫 번째 사진에서 당신을 응용 촬영을 프로그래밍.

http://pad1.whstatic.com/images/thumb/c/c4/LaTeX-2m.jpg/251px-LaTeX-2m.jpg

래스터 그래픽 (예 : 비디오 드라이버) 을 처리해야하는 경우 최악의 악몽에 위와 같은 그림이 표시됩니다.

  • 이 테스트 # 12345는 어떻게 누락 된 픽셀을 보여줍니까? Bresenham을 구현하는 데 문제가 있습니까? 테스트 디자인에서 반올림 오류를 올바르게 설명하지 않는 실수 일 수 있습니까?

내가 아는 모든 대학의 CS가 수학 부서와 분리되는 경향이 있습니다. 나는 그것이 매우 현명한 움직임이라고 생각합니다. 또한 CS 학생들은 기존 솔루션을 사용하여 솔루션을 알아내는 것으로 생각됩니다. 좋은 CS 학생은 컨테이너에서 문서를 읽고 O (nsomething)를보고 위키 백과를 열고 그래프를보고 컨테이너가 적절한 지 결정합니다. 일부 API 함수 호출에 대한 재진입 및 매개 변수 요구 사항을 확인하는 것과 같이 2 분이 소요됩니다. 그리고 프로파일 러 IMHO는 거의 항상 이론적 인 수학보다 더 나은 솔루션입니다.
Coder

2
@Coder, 물론 일부 컴퓨터 공학 학생들은 컨테이너와 알고리즘을 처음부터 설계해야하는 사람들이되었습니다. 그들에게 수학과 프로파일 러는 보완 도구입니다. 수학은 실제 구현을 제공하지 않으며 프로파일 러는 테스트 데이터가 단지 우연 일 뿐이라는 경고를하지 않습니다.
Charles E. Grant
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.