프로그래머로서 저급 및 고급 프로그래밍 언어를 알아야합니까? [닫은]


18

TCP / IP를 통한 원격 제어 LED 디스플레이 작업을 위해 연락을 받았지만 경험과 준비는 주로 고급 프로그래밍 언어에 관한 것입니다. 나는 그 일에 관해 저에게 연락하는 사람에게 말했습니다.

"자신을 프로그래머라고 부르면이 모든 것을 알아야한다"

프로그래머가 실제로 저수준 프로그래밍의 세부 사항을 알아야합니까? 또는 저수준 프로그래밍이 저의 전문 지식이 아니라는 점을 염두에두고 이론적 지식이지만 반드시 그렇게하거나 저수준 언어 솔루션을 구현할 필요는없는 블랙 박스 개념으로 취급 할 수 있습니까?


8
높은 수준에서 프로그래밍 할 때, 당신은 해야한다 추상화의 낮은 수준을 마스크, 또는 당신은 아무것도 완료되지 것입니다. 더 낮은 레벨에서 작업 할 수있는 것은 매우 유용하지만 모든 레벨의 추상화에서 한 번에 모든 작업을 수행하지 마십시오. 그럴 필요는 없지만, 필요하지 않은 경우에는 저급 일자리를 신청하지 마십시오.

1
@delnan : 높은 수준에서 작업 할 때는 물론 낮은 수준의 세부 사항을 숨겨야합니다. 그러나 모든 프로그래머는 프로그래밍하는 머신이 하위 레벨에서도 작동하는 방식을 알아야한다고 생각합니다. 지식이 너무 자세 할 필요는 없습니다. 기본 컴퓨터를 처음부터 새로 작성하는 방법을 아는 것만으로도 충분합니다.
Schedler 2016 년

4
"당신이 프로그래머라고 부르면이 모든 것들을 알아야합니다."그들이 당신을 너무 나쁘게 원했을 때 그들이 당신의 배경 부족으로 저주를 받았다면, 뭔가 잘못되었습니다. 나는 그들의 말이 전혀 이해가되지 않는 것으로 무시하고 싶다. 그들은 당신을 당신의 배경으로 원하거나 당신을 원하지 않으며 당신이 가지고 있지 않은 배경으로 당신을 저주해서는 안됩니다.
S.Lott

3
"휴, 내가 그 총알을 놓쳤다 니 다행이야!" 당신은 정말 그런 코를 위해 일하고 싶지 않습니까?
Edward Strange

2
@Schedler-자신의 보드를 태우지 않으면 완전히 새로워집니다.
Edward Strange

답변:


37

대화 상대가 대화 내용을 모릅니다. 한 사람이 필요한 세부 사항을 모두 잘 알지 못하는 언어, 방법론, 기술 등이 많이 있습니다. 프로그래머로서 알아야 할 것은 작업을 수행하는 데 필요한 것을 배우고 사용해야하는 프로그래밍 언어에 관계없이 솔루션에 도달하기 위해 적용 할 수있는 문제 해결 접근 방법입니다.

당신이 모르는 것을 인정하는 것은 괜찮지 만, 당신이 직면 한 것이 무엇이든 원하는 결과를 얻을 수있을만큼 충분히 배울 수 있음을 증명할 수도 있습니다. 훌륭한 프로그래머는 다양한 프로그래밍 언어로 솔루션을 구현할 수있는 좋은 문제 해결사입니다.

나는 당신의 접촉이하는 태도를 가진 사람을 위해 일하지 않을 것입니다.


4
+1 : 코멘트는 처음에는 의미가 없습니다.
S.Lott

비록 시간에 의해 그를 기꺼이 기뻐할 많은 어셈블리 전용 개발자가있을 것이라 확신합니다.
Erik Reppen

22

"자신을 프로그래머라고 부르면이 모든 것을 알아야한다"

나는이 진술에 강력히 동의하지 않습니다. 이것은 요리사에게 무엇이든 요리하거나 어떤 종류의 자동차를 운전하는 운전사 또는 의사가 모든 질병을 알도록 요구하는 것과 같습니다.

프로그래머가 되려면 자동화 된 방식으로 일부 작업을 수행하기 위해 언어로 소프트웨어를 작성하는 방법을 알아야합니다. 언어와 작업은 요리사가 만드는 요리법, 운전자가 작동법을 알고 있거나 의사가 진단하는 방법이 각 직업에 전문화되기를 원하는 방법에 따라 달라지는 것과 마찬가지로 프로그래머마다 프로그래머마다 다릅니다.


2
예, 추상화가 중단되고 코드에서 성능 문제가 발생하는 이유, 일부 외부 라이브러리가 데이터를 충돌 / 손상시키는 이유 등에 대한 단서가 없을 때까지 내 경험에 따르면 고급 언어 만 아는 프로그래머는 단순히 좋지 않습니다. 둘 다 할 수있는 사람들로서
Ed S.

4
요점을 놓쳤다. 예, 고급 프로그래머는 저급 측면을 이해할 수 있어야하지만 Linksys 라우터 용 펌웨어 업그레이드를 작성하는 방법을 알아야합니까?
maple_shaft

7
나는 그들이 어떻게 방법을 찾는 지 알아야한다고 생각합니다. 현대 프로그래밍의 큰 부분은 기억해야 할 것과 참조로 제출할 것을 아는 것입니다.
Michael K

8

자신의 인생에서 한 줄도 작성하지 않은 사람처럼 말을했습니다. 이것은 당신이 인용 한 시간의 반으로 그것을 할 수 있어야한다고 느끼는 사람과 동일 할 것입니다. 바보와 논쟁하지 마십시오.

당신은 당신의 한계를 알고 훨씬 더 많은 지식과 성격을 보여주었습니다. 이 사람은 자신이 모르는 것에 대해 이야기합니다.

모든 목수는 화려한 가구를 조각하는 방법을 알아야한다고 생각합니다. 조종사가 하나의 비행기를 조종 할 수 있다면 비행기를 모두 조종 할 수 있습니다.


나는 당신이 의사이기 때문에 열린 심장 수술을하는 방법을 알아야한다는 것에 동의합니다. 그러나 실생활에서 그는 그것을하기 위해서는 반드시 전문가 여야한다는 것을 알고 있지만, 외부에서 '모든 강력한 프로그래머'라고 생각할 때 구별하기 어려운 점을 프로그래밍하는 데있어 차이가 있습니다.
직업

6

학교의 대부분의 CS 프로그램은 저수준 프로그래밍에 대한 지식을 제공합니다. 예를 들어, 8088 프로세서를 사용하는 어셈블러 클래스가 있습니다 (OK ... 그래서 약간 날짜가 있습니다). 그러나 요즘 많은 무역 학교가 그 지식을 우회한다고 생각합니다. 그것이 사실이 아니라면 의견을 제시하십시오.

결론적으로, 칩 수준에서 어떤 일이 발생하는지 항상 아는 것이 좋습니다. 게다가 고급 언어는 결국 실행될 때 끝납니다.

그러나 현재 저수준 프로그래밍에 대해 잘 모르기 때문에 누군가가 프로그래머가 아니라고 말하게하는 것은 무지합니다. 현재 프로젝트에 그러한 기술이 필요하다면, 필요한 기술을 배우고 적용 할 수있는 충분한 지능이나 동기가 있어야합니다.

고객이 이미 그런 식으로 이야기하고 있다면 프로젝트를 수행하지 않는 것을 진지하게 고려해야합니다. 어디로 갈 수 있는지 알 수 없습니다.


6

사람들이 "프로그래머라고 부르기 위해서는 X를 알아야한다"고 말할 때 나는 그것을 정말로 경멸한다. 정말? 글쎄요, 어떤 사람들은 하루 종일 코볼에서 일하고 사랑합니다 그들은 그것과 그들의 문제 영역을 잘 얻었을 것입니다. 그 옆에 우리는 모두 척합니다.

진지하고 흥미로운 방식으로 직면 한 문제를 해결하는 것에 대해 사람들에게 존 중심을 표하십시오. 큰 문제 해결은 다양한 배경에서 비롯된다는 것을 이해하십시오. 그들이 모두 같은 방식으로 생각할 수 있도록 모든 사람들이 알아야 할 "체크리스트"기술을 숙달했는지 여부는 아닙니다. 그것이 우리가 원하는 것의 정확한 선택입니다. 모든 사람의 "체크리스트"는 달라야합니다. 다를수록 좋습니다. 프로그래밍은 요즘 해결하는 데 문제가 있습니다. 잘하는 사람들을 존중하고 모든 사람들이 다른 강점을 가지고 식탁에 온다는 것을 이해하십시오. 이것이 우리가 서로 팀으로 효과적으로 일하도록 도울 수있는 유일한 방법입니다. "C"나 무언가를 아는 것이이 사람이 굉장한 데 도움이된다고해서


3

나는 당신이 이것을 읽는 것이 좋습니다 :

http://www.joelonsoftware.com/articles/LeakyAbstractions.html

설명했듯이 추상화를 사용할 때 하위 수준의 항목은 항상 수행중인 작업에 영향을줍니다. 이는 성능상, 실패 원인, 보안 이유 등일 수 있습니다.

결론적으로, 당신은 이제 이러한 것들에 대해해야합니다. 특히 asm 또는 CPU 아키텍처 전문가가 아닙니다. 그러나 더 많은 것을 알 필요가있을 때 자신을 문서화 할만큼 충분한 지식을 갖추어야합니다.


어쩌면 TCP / IP의 작동 방식을 알고 있음을 분명히해야합니다 =), 내 요점은 TPC / IP를 통해 소켓과 같은 것을 구현하고 있다는 것입니다. 물론 배우고 싶습니까? 실제로는 아닙니다. 최종 결과가 프로덕션 환경에서 완전히 입증되거나 주어진 시간의 모든 요구 사항을 준수 할 것이라고 확신하지 않기 때문입니다. 나는 그것이 고급 언어의 전문 지식 수준에 도달하는 데 걸리는 시간에 생각하며, 주어진 시간이 모든 위험을 알기에 충분할 것이라고 생각하지 않습니다.
직업

이것이 핵심입니다. 전문가가 될 필요는 없습니다. 그러나 기본 사항을 알아야합니다. 따라서 사용중인 추상화의 한계가 무엇인지 알 수 있습니다. 최소값이며 한계에 도달하면 자신을 문서화하는 방법을 알고 있습니다.
deadalnix 2016 년

2

그의 논거는 No True Scotsman 논리적 오류 의 좋은 예입니다 .

그러나 저수준 프로그래밍과 고수준 프로그래밍의 차이점은 언어가 아니라 애플리케이션 지식 영역입니다. 값을 true로 지정하면 LED를 켜거나 위젯에서 마우스 클릭 이벤트를 사용할 수 있습니다. 언어는 상관하지 않습니다.

예를 들어 arduino에서 LED 매트릭스로 작업하기 위해이 라이브러리 를 살펴보십시오 . 여기에는 로켓 과학이 아니며, 실제로 어떤 프로그래머라도 "낮은 수준의 오 아니요!" 정신 차단.


1

각 프로그래밍 언어에는 고유 한 장단점이 있습니다. 몇 가지를 배우면 프로젝트가 주어질 때 무엇을 사용하고 효과적으로 사용하는 방법에 대한 큰 인식을 갖게 될 것입니다.

프로그래머는 문제를 해결하기위한 유일한 도구로 특정 PL을 전문화 할 수 있으며, 많은 PL을 알 수 있지만 이러한 극단 사이에서는 아무것도 전문화하지 않아도됩니다.

어쩌면 "구"가 답답하다고 말한 사람은 아마도 당신이 그와 대화 한 유일한 사람은 아니었을 것입니다.

문제를 효과적으로 해결하기 위해서는 문제를 알고 어떤 기술이 필요한지 아는 것이 프로그래머의 좋은 특성 중 하나입니다. 슬프게도, 필요한 기술 세트가 없기 때문에 필요한 기술 세트를 가진 다른 프로그래머에게 연락 할 수 있습니다.

건배,

워디


1

이론적 인 지식을 갖는 것이 좋습니다. 필요할 때 저급 언어 를 배울 수 있는 것이 매우 중요합니다.

그러나 "자신을 프로그래머라고 부르면이 모든 것을 알아야한다"고 누가 모든 것에 대해 모든 것을 알 수 있는가? 그들은 심지어 그들을하기 전에?


-2

다시 문구를 쓰겠습니다

"자신을 프로그래머라고 부르면이 모든 것을 알아야한다"

"자신을 프로그래머라고 부르면이 모든 것을 빨리 배울 수있을만큼 충분히 알아야한다"

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