개발자가 컴퓨터 하드웨어의 내부 작동을 알아야합니까? [닫은]


13

나는 메모리가 할당되는 방법과 메모리 관리 (예를 들어 C에서 배울 수있는 것)가 아니라 하드웨어 측면과 컴퓨터 하드웨어의 각 구성 요소가 내부적으로 작동하는 방식과 서로 통신하는 방법에 대해 이야기하고 있습니다.

얼마나 많은 사람들이이 모든 것을 알고 있습니까?

답변:


31

그것은 당신이하는 일에 달려 있습니다.

임베디드 개발자이고 매우 작은 장치에서 금속 근처에 글을 쓰는 경우 시스템의 모든 구성 요소를 안팎으로 알아야합니다.

시스템 개발자이고 운영 체제 나 장치 드라이버 또는 데이터베이스를 작성하는 경우 저수준 하드웨어 인터페이스에 대한 모든 정보를 알아야합니다.

게임 개발자이고 프로젝트를 늦게하는 경우 (최적화 대상), 사용할 CPU 캐시 및 그래픽 아키텍처에 대한 정보를 알아야합니다.

응용 프로그램 개발자 인 경우 메모리 사용을 적절한 수준으로 유지하는 것 외에는이 중 어떤 것도 알 필요가 없습니다.

웹 개발자라면 인터넷 프로토콜을 아는 것이 편리하지만 메모리 문제를 처리하는 방법을 제외하고는이 외에 다른 것은 필요하지 않습니다.


20
업무용 응용 프로그램 만 수행하더라도 시스템에 대해 알면 항상 더 나은 개발자가됩니다. 그러한 지식은 필요하지 않을 수도 있지만 확실히 중요합니다.
Robert Harvey

@Robert Harvey : 맞습니다 . "알 필요 가 없습니다 ." 라고 말합니다 . 어쨌든 이러한 것들을 아는 것은 확실히 아프지 않습니다. :)
greyfade

2
+1이지만 메모리 사용을 고려하지 않는 몇몇 웹 개발자는 알고 있습니다.
Tim Post

"응용 프로그램 개발자 인 경우 메모리 사용을 적절한 수준으로 유지하는 것 외에는이 중 어느 것도 알 필요가 없습니다." 이 주변 시스템의 더 큰 문제 중 일부는 데이터베이스를 사용하는 방법을 모르고 "일이 느리게 실행되고 내 코드가 아닌 DBA의 프로필을 볼 때"dba를 비난하는 응용 프로그램 설계자에 의해 발생합니다.
Andrew Hill

@AndrewHill : 하드웨어 문제는 언제 알고리즘적인 문제가 아닌가? 문제는 고급 알고리즘이 아닌 저수준 하드웨어 동작을 이해하는 것입니다.
greyfade

12

아니, 당신은하지 않습니다 에,하지만 난 그게 좋은 생각이라고 생각합니다. 논리적 수준에서 사물이 어떻게 작동하는지에 대한 일반적인 개요를 배우면 개발에 실제로 도움이되었습니다.


6

응용 프로그램 개발자와 웹 개발자에 대한 의견이 잘못되었다고 생각합니다.

예를 들어 누군가가 ssh 또는 다른 암호화 알고리즘과 같은 많은 보안 관련 내용을 포함하는 웹 응용 프로그램을 개발하는 경우 컴퓨터에서 실제로 처리 할 수 ​​있는지 확인할 수 있도록 실행중인 하드웨어 유형을 알고 있어야합니다. 작업 부하. 다른 예로는 일종의 다운로드 된 콘텐츠를 호스팅하는 서버가 있습니다. 상당히 많은 양의 요청을 예상 할 경우 디스크 드라이브의 기능과 연결된 버스 인터페이스 유형에 대해 잘 알고 있어야합니다.

응용 프로그램의 관점에서 볼 때 일종의 CAD 프로그램 또는 3D 렌더링을 수행하는 응용 프로그램은 이러한 응용 프로그램이 알고리즘 및 그래픽으로 계산 집약적 일 것으로 예상 할 수 있습니다. 응용 프로그램이 응답하고 사용 가능하도록 하드웨어를 이해하는 것이 현명합니다.

PCI 프로토콜과 같은 기능을 이해하는 데까지 갈 필요는 없지만 인터페이스와 하드웨어가 무엇을 할 수 있는지 이해하는 것이 좋습니다.

궁극적으로 개발 유형에 관계없이 중요합니다. 당신이 이해하는 데 필요한 세부 수준은 논쟁의 여지가 있습니다.


2

전문 프로그래머를 들어, 나는 그것을보고 전체적인 전체를 이해하는 방법 시스템을 ,보다는 주어진 프로그래밍 언어의 문법을 알고 금일를 . 프로그래머 (및 분석가)가 현명한 디자인 결정을 내리고 더 많은 정보를 제공하는 알고리즘 및 데이터 구조를 선택하는 데 도움이됩니다.

내 자신의 경험에서 최고의 프로그래머는 대상 플랫폼에 대한 기본 조립 지침 세트 를 이해하는지 , 학교의 초급 컴퓨터 조직 과정, 기초 디지털 전자 기기이해 하는지 또는 세부적인 내용이해할 수 있는지 여부에 관계없이 내부 작업에 대해 다양한 정도를 알고있는 경향이 있습니다. 최신 모델의 CPU 및 GPU 코어에 대한 설명 은 별이 덜한 동료보다 완벽한 지식을 갖추고 있습니다.


1

그것이 도움이되는지 확실하지 않지만, 실제로 작업하는 시스템에 대해 내가 알고있는 시스템에 대해 더 많이 알면 더 편안합니다. 내가 어렸을 때, 내가 작업하고있는 시스템의 어셈블리 언어를 모르는 것을 좋아하지 않았다. 내가 바뀌 었거나 시스템에 대한 느낌을 크게 확장시키지 못한다는 것을 충분히 배웠습니다. 나는 하드웨어 전문가가 아니었지만 컴퓨터를 분리하여 다른 하위 시스템의 이름과 상호 작용 방식을 지정할 수 있습니다.


0

거의 25 년 전에 컴퓨터 아키텍처 수업과 실제가 아닌 아키텍처에서 배운 것을 알 수 있습니다.

나는 주로 다양한 플랫폼에서 응용 프로그램 프로그래밍을 수행합니다. 상용 x86 하드웨어뿐만 아니라 Sparc, PA-RISC 및 기타 서버 아키텍처에서 실행할 코드를 개발하는 기간이있었습니다. 그 수준의 지식은 단순히 내가하는 일에 필요하지 않습니다.


0

저는 AP 고등학교 수업으로 Java 프로그래밍을 가르치고 있습니다. 학생들이 컴퓨터의 내부 작업에 대해 알면 프로그래밍 개념을 이해하는 데 도움이된다는 것을 알게되었습니다.

나는 선상에 가지 않는다-물건이 기억에 저장되는 방법과 같은 단순한 개념은 학생들을 돕는 것처럼 보인다.


0

나는 제목에서 요구 되는대로 이것에 대답 할 것입니다 :

예, 개발자 하드웨어의 내부 작동을 알아야합니다. 개발자의 유형과 목표, 사용 가능한 시간 및 개인적인 관심사에 따라 달라집니다. 물론 우선 순위는 그들이 해당 분야에서 사용하는 즉각적인 도구, 기술 등에 중점을 두어야합니다. 이 견해는 잘 다듬어 진 개인의 선을 따른 것입니다. 공예품을 희생하지 않고 공예품 이외의 것을 더 많이 알수록 좋습니다.

그렇다고 치즈 위즈에 열광해야한다는 의미는 아닙니다. 하드웨어, 조각의 상호 작용 방식, 운영 체제가 하드웨어를 사용하는 방식에 대해 잘 살펴보십시오. 이러한 내용과 함께 모든 개발자를위한 운영 체제 개념 책을 읽는 것이 좋습니다.

이 모든 것을 알고 있습니까? 지옥 없음. SCSI에 관한 쓸모없는 정보를 잊어 버린 것도 재미 있지도 않습니다. 그러나 그것에 대해 배우는 것은 귀중한 경험이었습니다. 또한 다른 하드웨어 관련 세부 사항을 많이 잊어 버렸지 만 그 지식에서 배운 중요한 개념을 상기하십시오.

따라서 하드웨어에 대해 배우는 것이 좋습니다. 필요에 따라 합리적인 속도로 수행하십시오. 합리적으로 가능한 많은 세부 사항을 배우고 개념에 초점을 맞추십시오.


0

모든 개발자는 컴퓨터 공학과 관련된 기본 개념 인 이진 산술, 기본 변환, 부울 대수, 논리 게이트, CPU 구성 (및 구성 요소의 기능), 캐시, 가상 메모리, 압축, 오류 감지 및 수정 등을 알아야합니다.

이것들의 범위는 프로그래머의 직업에 달려 있습니다. 다른 사람들이 말했듯이 임베디드 시스템 개발자는 웹 개발자보다 하드웨어 기능과 하드웨어를 가장 잘 활용하는 소프트웨어를 작성하는 방법에 훨씬 익숙해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.