소프트웨어 엔지니어는 더 이상 저수준의 지식을 더 알아야합니까? [닫은]


23

C #, Java 등과 같은 고급 프로그래밍 언어가 개발됨에 따라 많은 사람들이 어셈블리 언어 및 C / C ++와 같은 언어를 대체 할 것이라고 주장합니다. 컴퓨터를 다루는 데 시간을 낭비하지 않고 프로그램을 만들고 문제를 해결하는 데 도움이됩니다. 하드웨어가 지속적으로 개선됨에 따라 C / C ++와 Java의 성능 차이는 크지 않으며 큰 게임은 Java와 같은 언어로 프로그래밍 될 수 있습니다.

이것이 인터넷에서이 주제를 살펴본 후 간단히 요약 한 일반적인 아이디어입니다. 가까운 미래에 현실이 될 것이라고 생각하십니까? 저수준의 물건에 대해 우리가 배우는 모든 것이 더 이상 소프트웨어 산업에 실용적이지 않습니까? 즉, 어셈블리 언어와 C / C ++는 전기 구성 요소를 프로그래밍해야하는 유일한 사람이기 때문에 전기 엔지니어에게만 관련이 있습니까?


얼마나 많은 학습이 충분합니까? 저수준의 것들을 너무 많이 배우면 결국 전기 공학에 더 집중하게되고 너무 많은 수학을 배우면 프로그래머가 아닌 수학자가되는 법을 배울 수 있습니다. 나는 내가 배운 수학 자료 (이 책과 비슷한 자료를 다루는 수학 코스를 밟았습니다 (다른 교과서 사용) : 이산 수학 및 그 응용 프로그램)가 실제로 우리의 프로그래밍 기술 세트만큼 유용한 지 알고 싶습니다. 많은 수학 연습을하는 데 대부분의 시간이 소요될 수 있으며, 진지한 경우 프로그래밍을 공부하는 시간이 줄어 듭니다. gamedev 포럼에서 Math와 Physics조차도 프로그래밍과 비교할 수있는 섹션이 하나뿐입니다.

지금 막 "컴퓨터 프로그래밍의 기술"을 읽기 시작했습니다. 수학은이 책의 약 4 분의 1 만 다루지 만, 비 수학자에게는 연습이 어렵다. 그런 "초등"수학조차도, 우리의 경력에서 많이 사용 했습니까? 어떤 사람들은 TACOP라는 책을 읽는 것이 시간을 낭비한다고 말하고, 책이 프로그래밍에 관한 것이지만 (실제로 비슷한 것을 설명하는 것에 비해 약간 더 학문적 인) 시간이 더 걸릴 것입니다. 그러나 저자는 그것을 만들기 위해 많은 시간과 노력을 기울 였다고 생각합니다. 그는 5 권의 책을 모두 쓸 수 있으며, 청중은 그 책을 읽어야 할 사명 만 가지고 있습니다. 왜 안돼?


1
"C / C ++와 Java 간의 성능은 중요하지 않습니다." 이 경우 곧 Java 기술을 수정하기 위해 PM을 보내 주시기 바랍니다. 그런 이유로 몇 년 전에 Java 사용을 중단했습니다.
sakisk

3
대부분의 C / C ++ 코드는 하드웨어에 액세스하지 않습니다. 그것은 쉽지만 일반적으로 장치 드라이버에 의해 숨겨져 있습니다. C 또는 C ++ 코드의 95 % 이상이 하드웨어와 직접 상호 작용하지 않는다고 말하기까지했습니다.
Pemdas

1
저급 언어로 제목 변경을 제안합니다. C ++이나 Assembly를 알지 못하는 경우에도 여전히 가치가있는 하위 수준 (스레드 작동 방식, 운영 체제 작동 방식 등)이 많이 있습니다.
ShaneC

2
@faif, 장시간 실행되는 응용 프로그램의 경우 Java 응용 프로그램은 C / C ++ 응용 프로그램과 보조를 맞출 수 있습니다. Java가 예열 된 이는 시간이 지남에 따라 Java 코드를 원시 코드로 재 컴파일하는 핫스팟 기술 때문입니다. 그러나 짧은 실행 응용 프로그램의 경우 Java 시작 시간은 여전히 ​​끔찍합니다. 어떤 시점에서, 특히 서버 응용 프로그램의 경우 통신이 실제 처리보다 병목 현상이 더 심합니다.
Berin Loritsch

1
@BerinLoritsch Java는 비교적 빠르지 만 예를 들어 메모리 오버 헤드, 런타임 라이브러리 오버 헤드, 저수준 하드웨어에 대한 액세스 및 실행 전에 VM 사전 구성 (예 : 다른 힙 제한을 달성하기 위해)은 끔찍합니다. OS에서 실행되는 저수준 프로그램입니다. 명령을 동일한 크기로 실행하는 것이 전부는 아닙니다.

답변:


18

흥미로운 질문입니다. 나는 오랫동안 C #에서 일하고 (성능이 중요한 작업을 위해 관리되지 않는 C ++로) 오랜 시간 동안 C ++ 프로그래머이며, 역사적으로 성능상의 이유로 때때로 어셈블리 코드를 추가해야했습니다.

질문에 대한 답변을 준비 할 때 몇 가지 사항 :

  • 비교를 위해, 당신이 언급 한 언어 C #과 Java, 다른 집합, Assembly, C / C ++의 주요 차이점은 전자가 관리 런타임을 사용하여 가비지 수집을 제공한다는 것입니다. 다른 차이점 (예 : 이진 이식성, 프레임 워크 크기 및 이식성)이 있지만 성능 차이를 비교할 때 이는 주요 기여자입니다.

  • 어셈블리, C 및 C ++은 "낮은 수준"과 거리가 멀다. 나는 하드웨어 / 펌웨어 / 드라이버 개발자와 조립 및 C 언어를 연결하는 당신에게 맞아요을 생각하지만, C ++은 일반적으로 높은 계층에서 사용되며, 대량 사용에 여전히 TIOBE에 따라 명확하게 C 있지만 # / 자바는 그것을 밖으로 때리고있다 - 색인.

  • C ++ 티어에서는 C # / Java보다 C ++와 더 유사하므로 Objective-C를 추가합니다. 마지막으로 shared_ptr <> 및 기타 자동 리소스 관리 기능을 추가하면 이러한 언어가 가비지 수집에 가까운 것을 지원합니다.

확인-당신의 주요 질문에 : 소프트웨어 엔지니어는 더 이상 저수준 물건을 알아야합니까?

내 대답 :

원인:

  • C # / Java를 사용하는 경우에도 명시적인 리소스 관리가 필요한 프레임 워크 엔터티 및 / 또는 사소한 응용 프로그램에서 "고정 된"메모리 그래프 문제가 발생할 수 있습니다. 이러한 문제를 효과적으로 피하고 디버깅하기 위해 이러한 시스템의 작동 방식을 이해해야합니다.
  • 모바일 플랫폼은 더 제한된 리소스를 가지고 있으며 일부에서는 제한된 버전의 Java 및 .NET을 지원하지만 iOS 및 Objective-C의 현재 지배력은 오랫동안 새롭게 업데이트되었습니다.
  • 퍼포먼스 : 퍼포먼스의 한계를 뛰어 넘을 때마다 네이티브 컴파일 된 코드 청크를 사용하여 문제를 해결해야합니다.
  • 레거시 지원 : 관리 코드에서 아직 노출되지 않은 기능에 액세스하기 위해 상호 운용해야 할 때마다 동일하게 수행해야합니다.

좋은 질문입니다. 그러나 관리되지 않는 언어는 가까운 시일 내에 사라지지 않습니다.


답변 주셔서 감사합니다. 나는 컴퓨터 기반 (OS, 네트워크, 더 많은 수학과 같은 기본 원리를 이해하기에 충분하고 프로그래밍 향상에만 너무 집중하지는 않음)에 대해 더 많이 연구 할 것입니다. 바라건대 언젠가는 편리 할 것입니다.
Amumu

1
또한 하위 수준에서 진행되는 일에 대해 더 깊이 이해하면 의사 결정에 도움이됩니다.
dietbuddha

1
내 0.02를 추가하려면 필요할 때 어떤 일이 발생하는지 아는 것이 일반적으로 좋습니다. 요구 사항을보다 합리적이고 효율적으로 만드는 데 도움이 될 수 있습니다 (고수준 프로그래밍 및 보스에 적용).
ssube

43
  • 합법적 것 그 사람이 하지 에 대해 배우고 되지 매우 생산적이고 가치있는 개발자를 낮은 수준의 기능을 이해하고, 여전히 이미 경우입니다.
  • 하위 수준의 기능을 배우거나 이해할 필요가 없으며 항상 시간 낭비가 될 수 있으므로 결코 그렇지 않습니다.

모든 엔지니어링 분야와 마찬가지로 최종 제품에는 많은 단계가 있으며,이 단계는 모두 중요하고 전문 지식을 요구하며 가치가 있습니다. 특히 소프트웨어 엔지니어링에는 많은 추상화 계층이 있습니다. 모두가 필요하며 아무도 그들 모두의 전문가가 될 수 없습니다.

그러나 Assemby / C 개발자보다 C # / Java / Ruby 개발자가 더 필요합니다. "높은 수준의"개발자에게는 "후드"에서 어떤 일이 발생하는지 더 잘 이해하는 것이 도움이되고 더 나은 개발자가 될 것입니다. 그러나 다른 많은 것들도 마찬가지 입니다. 닷넷 개발자, exmaple를 들어, 거기에 너무 많은 나는 우리 공부하는 것이, 그 날의 생산성을 것입니다 배울 수있는 중간 언어 (훨씬 적은 C는 ++ / C / Assmebly),하지만 매우 도움이 종종 다시 좌석을한다.


7

낮은 수준의 내용을 몰라도 오늘날 프로그래머로 생활 할 수 있습니다. 나는 그것이 당신을 더 잘 아는 프로그래머라고 생각합니다.

그러나 하위 수준의 항목으로 높은 수준의 역량을 유지하는 것이 점점 중요 해지고 있습니다. 내 말은, 20 년 만에 아무 일도하지 않았고 다시 생산하기 전에 진지한 회복이 필요할지 모르지만 그 수준에서 일하는 방식에 대한 전반적인 개념은 여전히 ​​내 의식의 일부이며 고급 언어로 작업 할 때도 때때로 도움이됩니다.


3

나는 그렇게 생각하지 않는다. 커널 개발자들은 항상 저수준의 것들을 필요로 할 것이다. 작성하는 코드가 실제로 수행하는 작업을 근본적으로 이해하면 더 나은 코드 작성을 배우게됩니다. 이 추상적 인 사고는 때때로 유용하지만 문제가 가장 좋은 방법으로 해결되기를 원한다면 실제로 저수준의 물건을 제거하는 것이 끔찍한 생각이라고 생각합니다. 예를 들어 문자열을 연결할 때 실제로 새 문자열을 만드는 것이 중요하지만 문자열이 어떻게 구현되었는지 이해하지 못하는 경우 연결하고 5 분 동안 기다렸다가 프로그램을 실행하는 데 걸릴 수 있습니다. 이것은 다음과 같은 것들에 대한 훌륭한 기사입니다 : http://www.joelonsoftware.com/articles/fog0000000319.html


3

이것은 소프트웨어 엔지니어가 실제로 작업하는 내용에 따라 다릅니다. 이제 저수준의 어떤 것도 건드리지 않고 생산적이고 행복하며 수익성있는 경력을 쌓을 수 있지만 모든 프로그래밍 작업이 아닙니다. 운영 체제 및 컴파일러가 있으려면 운영 체제 및 컴파일러에서 작업하는 엔지니어가 있어야하며 C, C ++ 및 시스템의 어셈블리 언어를 알아야합니다.

성능도 중요 할 수 있습니다. 현재 사용중인 랩톱은 최초의 가정용 컴퓨터보다 약 백만 배 더 강력하며 실행중인 소프트웨어는 여전히 시간이 걸릴 수 있습니다. 여전히 비디오 게임이 지연 될 수 있습니다. 물론 비디오 게임은 화면에서 백만 개가 넘는 픽셀 각각에 수백만 가지 색상 중 하나를 부여 할 수 있기 때문에 더 좋아 보입니다 (일부 문자는 그래픽에 사용됨). ). 가까운 시일 내에 컴퓨터 성능이 수천 배나 증가 할 것으로 의심되며, 그렇게하면 점점 더 복잡한 소프트웨어에서 사용될 것으로 예상됩니다.

대량의 비즈니스 소프트웨어는 일반적으로 C가 아닌 가장 빠른 속도로 생산 및 출고되는 방식으로 계속 작성되지만 C 및 C ++ 전문가에게는 많은 여지가 남아 있습니다.


2

"하드웨어가 계속 향상되면서 C / C ++와 Java 간의 성능은 크게 향상되지 않을 것이며 큰 게임은 Java와 같은 언어로 프로그래밍 될 수 있습니다."

나는 그 진술이 조만간 정확할 것이라고 믿지 않는다. 이면에서 수행 된 점검으로 인해 관리 코드에 항상 적중이 있습니다. 하드웨어가 나아질수록 하드웨어에서 나아질 것으로 예상되는 앱도 향상되므로 하드웨어의 문제는 아닙니다. 기본 코드로 작성된 시스템에는 관리 코드에 대한 인터페이스가 있어야합니다. 둘 사이를 전환 할 때 발생하는 성능 저하가 있습니다.

그러나 일반적으로 적은 비율의 응용 프로그램 만이 최적화 된 코드를 필요로합니다. 대부분의 LOB (기간 업무) 응용 프로그램은 관리 코드, .net, java 등으로 충분합니다. 필요한 응용 프로그램이 곧 전환 될 것이라는 의미는 아닙니다. 그러나 최적화 된 C / C ++ 컴파일러를 사용하면 손으로 쓴 어셈블리가 훨씬 덜 사용됩니다. 최근에는 완전히 어셈블리로 작성된 OS가 있었으므로 여전히 일부 OS가 있습니다. 보안 분야에서도 매우 중요합니다.

그래도 정말 좋은 개발자가 되려면 저수준에서 무슨 일이 일어나고 있는지 이해해야합니다. 특히 네이티브 코드를 호출 할 때 어려운 문제를 해결하는 데 도움이됩니다.


@Adam Tuliper "전적으로 집필 된 OS"흥미 롭다. OS 이름을 알려주시겠습니까? 문제 해결에 대해 좋은 지적을했습니다.
Amumu

@Adam : 어셈블리 전용 "OS"는 아마도 멋진 애니메이션 GUI 및 페인트 프로그램과 같은 종과 휘파람이 많지 않을 것입니다. 대신 하나 또는 두 개의 사용자 모드 프로세스 만 실행할 수 있습니다 ...
Macke

@Macke : 농담 해? C로 작성된 것보다 더 많은 멀티 태스킹 운영 체제가 어셈블리 언어로 작성되었습니다. NT (Windows 커널)가 복제 된 운영 체제는 주로 Macro-32 어셈블리 언어로 작성되었습니다.
비트 트위 들러

1
@ bit-twiddler : 확실합니까? 내가 본 대부분의 출처는 BLISS에있었습니다.
TMN

@TMN : BLISS는 고급 OS에만 사용되었습니다. 전체 VMS 커널은 Macro-32로 작성되었습니다. 나는 그것이 멋진 아이디어라고 생각했기 때문에 포크 수준 처리 코드 목록을 몇 년 동안 유지했습니다. 포크 레벨 처리는 인터럽트 핸들러가 코드의 시간에 중요하지 않은 부분을 더 낮은 인터럽트 우선 순위 레벨에서 실행하도록 스케줄 할 수있는 메커니즘이었습니다. 포크 레벨 처리는 NT 커널에서 지연된 프로 시저 호출로 이름이 변경되었습니다.
bit-twiddler

2

임베디드 프로그래밍을 사용하는 것과 같이 일부 하위 레벨을 아는 것이 디버깅에 매우 도움이된다고 생각합니다.하지만 대부분의 경우 C를 사용하여 수행되지만 특정 마이크로 컨트롤러에 대한 어셈블리를 아는 것이 매우 유용합니다.


동의하다. 저는 약 30 년 동안 임베디드 프로그래밍을 해왔으며 더 이상 어셈블리 코드를 더 이상 작성하지 않아도되지만 (모든 것이 C로되어 있음) 명령별로 프로그램을 단계별로 실행하는 경우가 많습니다.
tcrosley

필자는 종종 Windows의 CPU 모드에서 C 및 C ++ 코드를 디버깅합니다. 사용중인 컴파일러의 런타임 구성뿐만 아니라 프로세서에 대한 아키텍처 및 명령어 세트에 대한 지식은 사용자가 필요로하는 강력한 기술입니다. GCC 생성 코드를 자세히 설명하는 다음 programmers.stackexchange.com 질문을 참조하십시오. programmers.stackexchange.com/questions/59880/…
bit-twiddler

2

컴퓨터가 처음 발명되었을 때 소수의 사람들 만이 컴퓨터 사용법을 알고있었습니다. 이제 부유 한 국가의 모든 가정에는 보통 사람이 사용할 수있는 컴퓨터가 하나 이상 있습니다. 많은 평범한 사람들이 매일 컴퓨터에서 일하는 직업을 가지고 있습니다. 보통 사람은 컴퓨터를 사용할 수 있지만 프로그래머는 여전히 필요합니다.

마찬가지로, 일반 프로그래머는 어셈블리 언어로 알거나 정기적으로 프로그래밍 할 필요가 없습니다. 이것은 기술 세계에서 우리가 얼마나 멀리 왔는지에 대한 경례만큼 시장성있는 기술의 조건입니다. 업무를 자동화하려면 컴퓨터가 필요합니다. 따라서 .NET / Java로 프로그래밍 할 수있는 프로그래머에게는 큰 수요가 있습니다.

자동화 할 수있는 작업이 자동화됩니다. 모든 작업을 자동화 할 수있는 것은 아닙니다. 모든 자동화가 완벽하지는 않습니다. 조립이 중요합니까? 당연하지. "프로그래머"여야합니다. 당연히 아니지.


0

흠 나는 실제로 저수준 학습을 즐긴다.

어쩌면 그것은 가장 정확한 직유가 아니지만 나에게 그것은 자동차 내부의 기계 조작을 배우는 것과 같습니다. 모든 조각이 서로 어떻게 작동하는지 모르겠지만 엔진, 크랭크 샤프트, 실린더, 차동 장치, 크레인, 브레이크, 오일, 연소, 냉장 및 마찰, 응력, 열, 힘, 과학 — 열역학, 물리학, 유체 역학 ...

아마도 유용하지는 않지만 (이 모든 것을 알면 차를 고칠 수는 없습니다) 확실히 전문적으로 실용적이지는 않지만 재미 있습니다. L' art pour l' art : la connaissance는 la connaissance를 부어 넣습니다.


0

유용한 경험 법칙은 더 빠를수록 필요한 수준이 더 빠르다는 것입니다.

따라서 그래픽 중심의 1 인칭 슈팅 게임 또는 알고리즘 FX 거래 시스템은 속도가 중요하기 때문에 여전히 상당히 낮은 수준입니다 (C ++ 등). 그러나 정시에 판매 보고서를 내뿜는 웹 앱? 지옥, 당신은 Sinclair BASIC에 그것을 쓸 수 있었고, 그것은 여전히 ​​받아 들여질 것입니다.


1
-1 : 유용한 경험 법칙은 더 빠를수록 빨리 얻을 수있는 수준이라고 생각합니다. -그냥 궁금해서 몇 살입니까? 더 나은 알고리즘, 더 나은 아키텍처 및 더 나은 하드웨어는 대부분의 최신 소프트웨어 응용 프로그램을 가속화합니다. 컴퓨터 게임 및 내장 시스템은이 규칙에서 예외입니다.
Jim G.

너무 오래되었습니다! :-) 더 나은 알고리즘, 더 나은 머신 아키텍처, 더 나은 하드웨어에 대해 언급하지만 프로세스 실행 속도에 동등한 영향을 미칩니다. 프로세서 속도를 높이면 개발 된 언어에 관계없이 모든 프로세스 (필수)가 더 빠르게 실행됩니다. 느린 정렬 알고리즘을 사용하면 응용 프로그램을 작성한 내용에 관계없이 필요에 따라 느리게 실행됩니다. 높은 수준의 프로그래밍 언어는 여전히 실행 속도와 상대적인 차이를 만듭니다. 밀리 초가 중요하면 낮게 진행하십시오. 알고리즘 거래 시스템은 Java로 작성되지 않았습니다.
Adrian Parker

0

모든 소프트웨어 엔지니어링 작업이 동일한 것은 아닙니다 . 운영 체제, 컴파일러, 프레임 워크, 장치 드라이버, 임베디드 시스템 및 고성능 과학 컴퓨팅에 종사하는 사람들은 '낮은 수준의 것들'을 알아야합니다. 엄마와 팝 상점을위한 Access CRUD 양식이나 PHP 쇼핑 카트를 작성하는 사람들은 그리 많지 않을 것입니다. 어떤 종류의 소프트웨어 엔지니어링을하고 싶습니까? 그리고 남은 생애를하고 싶습니까?

내 의견은 일반적으로 작업하는 것보다 최소한 하나의 추상화 수준을 배워야한다는 것입니다. C / C ++에서 작업하는 경우 일부 기계 아키텍처 및 어셈블리를 선택해야합니다. PHP로 작업한다면 HTTP와 약간의 C / C ++ 또는 Perl을 이해해야합니다. Access가 빵과 버터라면 RDB 이론과 COM 또는 .Net에 대해 조금 더 잘 알고있을 것입니다. 언젠가는 경력의 하위 레벨에서 발생하는 문제로 인해 경력이 사라질 수 있으며, 해당 분야의 전문가와 최소한의 의사 소통을 할 수 있어야합니다. 이 물건없이 '도착'할 수 있습니까? 물론 경쟁이 치열한 직업 시장에서 '가져 오기'를 계획하는 것은 위험합니다.


-1

나는 C # .NET에서 광범위하게 일하고 있으며 항상 C, C ++에서 멀어졌습니다. 최근에 일자리를 찾기 시작했고 C, C ++에 대한 경험이 필요한 일자리가 몇 개인 지 놀랐습니다. 나는 처음에는 C, C ++이 구식이되었지만 사용 가능한 작업을 보았지만 그렇지 않은 것처럼 보입니다.


-1

나열된 모든 관리 언어에는 C / C ++로 작성된 인터프리터 또는 가상 머신이 있습니다. 이 두 가지가 없으면 대부분의 관리되거나 해석되는 언어는 존재하지 않을 것입니다. 나는 당신이 그들의 가치를 과소 평가한다고 말할 것입니다.


-1

나는 "실제적인"지식의 개념을 정말로 싫어한다 . 지금까지 배운 모든 것이 똑같이 실용적입니다. 하드웨어에 가까운 추상화 수준에서 작동하지 않더라도 해당 도메인의 개념을 아는 것만으로도 다른 추상화 수준에서 새로운 지식을 구축하는 데 도움이됩니다. 관련 개념이 많을수록 좋습니다.

내가 일반적으로하는 일에 대해 C #은 매우 낮은 수준의 언어이며 하드웨어와 매우 유사한 것으로 생각합니다. 그러나 여전히 디지털 전자 공학, CPU 디자인 등에 대한 초보적이고 녹슨 지식조차도 내가하는 모든 일에 매우 유용하다고 생각합니다.


@Amumu는 말했다 : 당신은 좋은 지적을했다. 사람들은 일반적으로 많은 돈을 벌 수있는 지식을 "실용적 지식"과 연관시킵니다. 그러나 그들은 요점을 가지고 있습니다. 최소한, 우리가 배운 것들, 특히 우리의 삶에 유익하지 않은 것들로부터 돈을 얻지 못하면 사회에 무언가를 기여할 것으로 기대하고 기대합니다. 예를 들어, 우리는 인생을보다 의미있게 돕는 철학이나 방법을 배우고 싶을 수 있습니다. 그러나 우리가 전기, 그러나 절반에 불과한 수학 공부에 시간을 보내면 아무것도 할 수없고 시간을 낭비 할 수 있습니다.
Adam Lear

@Anna Lear, 문제는 "실제적이지 않은"을 광범위하게 다루지 않으면 서 "실용적인"직접 적용 가능한 기술을 습득 할 수 없다는 것입니다. 이 세상의 모든 지식이 밀접하게 연결되어 있기 때문입니다. 가능한 연습과는 거리가 멀더라도 "시간 낭비"가 될 수있는 지식은 없습니다.
SK-logic

1
-1 : 당신이 배운 모든 것이 똑같이 실용적입니다. - 와우. 어쩌면 나는 모든 'Trivial Pursuit'질문 카드에 대한 답을 외워야 할 것입니다! ;)
Jim G.

@ Jim G., 당신은 충분한 자유 시간이 있고 이것보다 더 발전 할 수있는 것을 배우지 않는 비용이 들지 않는 한, 그래야합니다. "무용지물"을 기억하는 것은 실제로 메모리를 향상시키는 매우 강력한 방법입니다.
SK-logic

-1

대다수는 필요하지 않습니다. 저수준 기술을 연습하면 개발자가 전체주기에 영향을 줄 수있는 것에 대해 더 잘 알 수 있지만 오늘날 개발자는 그 시간을 활용하여 새로운 기술을 연구 할 수 있습니다. 에.


-1

내 생각에, "엔지니어"라는 단어를 사용할 때, 남자 / 여자는 아주 처음부터 물건을 디자인하고 만드는 사람입니다. 소프트웨어 엔지니어의 실제 문제는 문제를 해결하는 것이지만 어떤 문제입니까? 큰 질문입니다.

개발자는 여러 가지면에서 엔지니어와 다릅니다. "개발자"는 일반적으로 기존 플랫폼에서 물건을 만드는 사람입니다. 그는 기존 플랫폼을 개발하거나 확실히 상위 시스템의 구성 요소를 사용하여 이전 플랫폼에서 새로운 플랫폼을 상속합니다.

개발자는 일반적으로 비즈니스 관점에서 과학자가 아니라고 생각합니다. :) 개발자는 시스템의 사용자와 더 가깝습니다. 사용자 관점에서 생각하여 기술을 사용하여 사용자 문제를 해결합니다.

똑똑한 엔지니어 그는 과학자이며, 진짜 문제를 해결합니다. 컴퓨터 자체가 기능으로 갖는 대부분의 문제 엔지니어는 기존 시스템에 대해 많은 연구를 한 후 연구를 떠난 후 솔루션이 필요한 경우 시스템에 새로운 언어가 필요한 경우 기존 시스템이 할 수 없기 때문에 새로운 언어를 발명하여 문제를 해결하기 위해 새로운 것을 생각해 냈습니다. 엔지니어들은 결국 개발자들이 시스템을 구축하는 시스템을 구축하게되었습니다.

사실, 소프트웨어 엔지니어는 저수준의 것들을 배우고 정통해야합니다 ... :)

개발자는 그의 관심에 전적으로 달려 있습니다. :)


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