프로그래머가 코드 표현력을 향상시키기 위해 쓰기 수업을 받아야합니까?


15

프로그래머가 저자이며 추상적 사고와 개념을 표현하기위한 코드를 작성하고 다른 프로그래머가 어려움없이 오해없이 좋은 코드를 읽어야한다는 점을 감안할 때 프로그래머가 더 나은 코드를 작성하기 위해 수업을 작성해야합니까?

개념과 실제 문제 / 엔터티를 추상화하는 것은 좋은 코드를 작성하는 데 중요한 부분이며, 코딩에 사용되는 언어의 숙달은 프로그래머가 자신의 생각을보다 쉽게 ​​또는 더 잘 표현할 수 있도록해야합니다. 또한 코드를 더 잘 작성하거나 다시 작성하려고 할 때 함수, 변수 또는 데이터 구조의 이름을 결정하는 데 많은 시간이 소요될 수 있습니다.

이것은 또한 하나 이상의 의미를 가진 코드 작성을 피하는 데 도움이 될 수 있으며 종종 다른 프로그래머 사이의 오해의 원인이됩니다. 코드는 항상 명확하게 그 기능을 명확하게 표현해야합니다.



2
사람들이 18 세 이상이 된 후에, 특히 외국어를 사용할 때 (IT의 경우와 같이) 명확하게 쓰는 법을 배울 수 있다면 좋을 것입니다. 문제는 비교적 짧은 시간에 좋은 결과를 얻을 수있는 교수법이 있는지 여부입니다. 나는 처음 대학에 입학했을 때 과학 영어 코스를 받았다는 것을 기억합니다.
NoChance

1
"코드 표현"이란 무엇입니까? 필자는 프로그래밍 언어의 표현력 이 아닌 다른 것으로 생각합니다. 글을 쓰는 수업의 양은 바뀌지 않기 때문입니다.
Andres F.

1
blog.codinghorror.com/recommended-reading-for-developers- > 코드 완성 2 참조. 내가 읽은 최고의 "코드를 올바르게 작성하는 방법"책.
Machado

1
@JoseFaeti는 책에서 맛이 좋습니다. :-) "if"문장을 올바르게 작성하는 방법을 논의하는 끝없는 페이지? :-)
Machado

답변:


25

1. 쓰기 수업? 실제로는 아닙니다.

소스 코드를 작성하는 것은 책을 쓰는 것과는 다릅니다.

모호하지 않고 이해하기 쉬운 동일한 목표를 추구하지만, 그들은 매우 다른 방식으로하고 있으며, 작가가 배우는 것은 소프트웨어 개발자가 배우는 것과는 다릅니다.

예 1 : 연설

연설의 숫자는 소설의 표현을 증가시키기 때문에 소설이나시 등을 쓸 때 가치가 있습니다.

소스 코드에서 oxymoron 또는 litotes를 마지막으로 본 것은 무엇입니까 ? 그것들을 갖는 것이 도움이됩니까, 아니면 나중에 그러한 소스 코드를 유지해야하는 개발자에게는 오히려 해로울까요?

예 2 : 어휘

풍부한 어휘는 문학에서 높이 평가됩니다. 예를 들어 윌리엄 셰익스피어의 어휘는 2 만에서 2 만 5 천 단어입니다. 풍부한 어휘는 소설이나시를 읽는 것이 더 흥미 롭습니다.

소스 코드를 작성할 때 영어를 잘 못하는 사람들이 소스 코드를 읽을 것으로 기대합니다 . 영어가 코드에 매우 해롭다는 것을 얼마나 잘 알고 있는지 보여줍니다. 꼭 필요한 것을 의미하는 멋진 단어를 알고 있지만 많은 사람들이이 단어의 의미를 모른다는 것을 알고 있다면 그 표현을 덜 표현하는 동의어 나 단어의 의미를 설명해야합니다. 주어진 프로젝트에 수 천 단어의 어휘만으로도 충분합니다.

중요한 점에 유의하십시오. Google 번역은 비 원어민에게 큰 도움이 될 수 있지만 모든 번역가에게는 두 가지 문제가 있습니다.

  • 한 쌍의 언어가 단어 사이에 반드시 1 : 1 일치하는 것은 아닙니다. 일부 단어는 다른 언어로 번역되지 않았거나 여러 단어가 외국어로 된 단일 단어로 번역 될 수 있습니다. 예를 들어 러시아어에는 눈과 추운 날씨의 특정 상태를 대상으로하는 단어가 엄청나게 많으며 일반적으로 프랑스어 나 스페인어로 번역 할 수는 없습니다.

  • 단어는 때때로 여러 가지 의미를 가지고 있으며 그 의미는 문맥에서 추론됩니다. Google 번역은 품질은 우수하지만 일반적으로 가장 기본적인 상황 이외의 의미를 나타낼 수 없습니다.

예 3 : 표현식

표현은 글을 더 풍부하게 만듭니다. 저자는 독자가 일정한 양의 일반 문화를 가질 것으로 기대하며,이 기회를 통해 텍스트를보다 표현력있게 만듭니다.

앞의 예와 마찬가지로 이러한 표현은 원어민이 아닌 사람들이 읽을 때 매우 문제가 될 수 있습니다. 그러나 일반적인 어휘를 번역 할 수 있다면 표현은 훨씬 더 문제가됩니다.

예를 들어, 영어는 모국어가 아니며 매일 StackExchange에서 여기를 포함하여 모르는 표현이 나타납니다. 나는 그들의 의미를 추측하려고 노력하며 때로는 옳습니다. 그러나 때때로 나는 틀렸고, 인터넷 검색은 도움이되지 않습니다.

그녀의 의견 에있는 사용자는 방금 프로그래밍을 시작할 때 PHP의 needle and haystack 과 같은 고통을 겪었던 예를 상기 시켰습니다 . 나는 그에 해당하는 연설을 알지 못했기 때문에 설명서를 읽을 때마다이 모든 것이 무엇인지 궁금했습니다. 말할 것도없이 C # sequence.Contains(element)이나 훌륭한 파이썬 element in sequence은 훨씬 더 나은 대안입니다. 글쎄, 적어도 히브리어를 모르는 개발자는 PHP로 고통 받아야 했지만 이것은 다른 이야기입니다.

예 4 : 문화 참조

문화적 참조. 문학에서는 주어진 문화의 요소를 포함시키고 싶은 유혹이 있으며, 이로 인해 책이 더 풍부하고 때로는 더 재미있어집니다.

그러나 코드는 전 세계 개발자에게 제공됩니다. 따라서 이탈리아 개발자에 대한 명백한 참조가 러시아 개발자에게는 명백하지 않을 수 있으며, 모든 인도 소년이나 소녀가 알고있는 것이 미국 프로그래머에게 반드시 알려진 것은 아닙니다.

바늘과 건초 더미에 대해 이야기 한 동일한 사용자는 그러한 문화적 참조의 훌륭한 예를 보여주었습니다 : 성배. 성배가 무엇인지 누가 알 수 있습니까? 글쎄, 그것은 프랑스어로 "Graal", 스페인어로 "Grial", 그리고 터키어로 "Kutsal Kâse"입니다. 그러나 미국이나 유럽 개발자들은 중국이나 인도의 중세 역사를 얼마나 알고 있습니까? 왜 모든 중국인과 인도인 프로그래머가 성배 참조를 알아야한다고 가정할까요?

2. 표현적인 소스 코드 작성법? 확실한.

  • 모든 개발자는 표현적인 소스 코드 작성 방법을 배워야합니다.

  • 모든 개발자는 왜 주석이 다음과 같은지 설명해야합니다.

    int j = i + 1; // Creating i and adding 1 to it.
    

    그것은 완전히 잘못되었다는 사실을 제외하고는 나쁘다.

  • 모든 개발자는 기본 리팩토링과 소스 코드를보다 표현력있게 만드는 방법을 이해할 수 있어야합니다.

  • 모든 개발자는 20 %의 시간이 코드 개발에 사용되고 80 %의 시간이 코드를 유지 관리한다는 것을 기억해야합니다. 일부 프로젝트의 경우 5 %-95 %와 비슷합니다.

  • 기타


본질적으로 프로그래밍은 기술 문서에 가깝습니다. 볼트에 대한 사양서를 작성하는 사람이 쓰기 수업을 받아야합니까? 실제로는 아닙니다. 개발자도 마찬가지입니다. 누구나 모든 단어에 철자를 잘못 쓰지 않고 글을 써야하며 누구나 자신의 아이디어를 명확하게 전달할 수 있어야합니다. 그 외에도, 컴퓨터 과학이나 IT 보안 또는 그 외의 과정보다 글쓰기 수업이 얼마나 유용한 지 잘 모르겠습니다.

다른 방법으로 소스 코드의 표현성을 배울 수 있습니다. superM 은 그의 대답에서 좋은 코드를 읽는 중 하나를 언급 했습니다 . 다른 몇 가지를 언급 ​​할 수 있습니다.

  • Beautiful Code 또는 Code Complete와 같은 책을 읽고

  • 숙련 된 개발자에게 코드를 검토하도록 요청

  • 패턴 이해 및 사용 방법과시기.


좋은 대답 +1. 표현력과 간결함을 유지하는 것이 매우 중요하지만 수업을 쓰는 것이 훈련 시간을 가장 잘 활용하지 못할 수 있습니다. 명백하고 자기 서술적인 코드를 작성하기 위해 고의로 노력하는 것은 모든 사람이해야 할 일이며, 나머지는 실제 수업이 필요없이 단순히 자리를 잡고 있다고 생각합니다.
Daniel B

동료, 상사, 사용자, 미래의 자기 자신과 의사 소통하는 데 필요한 문서, 전자 메일, ... 및 코드가 있습니다. 그러나시는 사용하지 마십시오.
Steve314

나는 요점을 얻었다. 실제로 도메인 고유 언어 사용에 대해 더 많이 생각하고있었습니다. 범용 프로그래밍 언어의 기본 구문을 사용하는 대신 도메인 별 언어로 프로그래밍하는 것이 더 편한 시점에 도달했습니다. 이를 통해 프로그래머가 아닌 사람도 쉽게 코드를 이해하고 쉽게 이해할 수 있습니다. 나는 이것이 나의 나쁜 영어 어휘 때문인지 궁금해서 수업을 쓰는 것에 대한 생각이었다.
Jose Faeti

일반적으로 좋은 대답이지만 코드에서 음성을 보았습니다. 예를 들어, PHP의 몇 가지 좋은 기능 중 하나는 모든 검색 / 찾기 기능이 건초 더미에서 바늘을 찾는다는 것입니다.
user949300

@ user949300 : 이것이 PHP를 너무 싫어하는 이유 중 하나입니다. 영어를 모국어가 아닌 사람으로서, 나는 그에 상응하는 표현을 알지 못했고 저에게 그 용어는 모두 도움이되었습니다. 이것을 C # sequence.Contains(element)또는 우수한 Python과 비교하십시오 element in sequence. 따라서 API에서 연설의 자리는 없습니다.
Arseni Mourzenko

11

더 나은 코드를 작성하기 위해 프로그래머가 수업을 받아야합니까?

프로그래머는 더 나은 산문을 쓰기 배울 교훈을 작성해야합니다. 프로그래머는 더 나은 코드 작성법을 배우기 위해 프로그래밍 수업을 받아야합니다. 유사점에도 불구하고 산문 작성과 코드 작성은 상당히 다릅니다.

프로그래머가 수업을 쓰지 말아야한다는 것은 아닙니다. 그들은해야! 몇 가지 이유 :

  • 글쓰기는 교육을받은 사람에게 필수적인 기술입니다. 글을 잘 쓰면 더 똑똑해 보일 것입니다.

  • 최선의 노력에도 불구하고, 프로그래머는 종종 다른 사람들과 의사 소통을해야하며 종종 단어를 사용합니다.

  • 글쓰기 수업 이외의 기술을 배우고 프로그래머에게 유용한 기술이 종종 있습니다. 예를 들어, 다른 사람들의 감정을 상하게하지 않으면 서 다른 사람들의 작업에 대해 토론하는 법을 배우고 개인적으로 받아들이지 않고 다른 사람들의 비판을 받아들이는 법을 배우게됩니다.


그게 요점입니다. 코드가 더 나을 필요는 없지만, 특히 다른 프로그래머 나 동료와 의사 소통 할 때 더 나은 사람이 될 것입니다. 내 질문은 다르게 공식화되어야 할 것 같다 :)
Jose Faeti

2
아주 많이 요 산문을 잘 쓸 수 있다는 것은 모든 전문가에게 핵심 기술입니다.
Zachary K

6

내 코드는 점점 비즈니스와 기술 팀간에 공유 어휘를 만드는 데 달려 있습니다. 작문 기술을 향상 시키면 이러한 노력에 대한 모호함과 오해를 줄일 수 있지만 코드의 표현력에 도움이되지는 않을 것입니다.

표현의 문학적 개념은 표현의 프로그래밍 개념과 같지 않습니다. 많은 경우 언어의 모호함은 비소설에서도 표현력을 높이는 형태로 문학적 장치로 사용될 수 있습니다. 독자가 의도하고 의도하지 않은 다양한 문화적, 언어 적, 상징적 연관성을 유발할 것이기 때문입니다. 이런 종류의 표현은 프로그래밍에 바람직하지 않습니다. 추상화는 모호성보다 더 가치가 있습니다. 프로그래밍에서 추상화는 약간의인지 부하 비용으로 유연성을 향상시킵니다. 문학적 형태의 추상화는 프로그래밍에 미치는 영향과 반대되는 결과를 낳을 수 있습니다. 작문이 추상적 일수록 독자는 아무 말도하지 않을 것이라는 인식을 갖게됩니다. 구체적인 연설에서 나온 모든 상징과 연관성에는 가치가 있습니다.

그러나 프로그래머는 기계가 아닙니다. 인간은 지적 및 정서적 성장으로부터 예기치 않은 방식으로 혜택을받습니다. 의사 소통에 어려움을 겪게되므로 글쓰기를 개선하면 고객 공감이 더 커질 수 있습니다. 아마도 당신은 그들이 원하는 것을 말한 고객에게 느끼고 나서 그것을 전달하고 그들이 필요하지 않다는 것을 깨닫게 될 것입니다. 아마도 당신은 남아 있지 않은 것에 집중하는 법을 배우게 될 것입니다.

도자기 휠에 점토를 던지는 법을 배우면 장인 정신과 소프트웨어 개발 사이의 유사점을 파악하는 데 도움이 될 것입니다. 건물 설계자가 의사 소통하는 방식을 연구하면 프로그래밍에서 디자인 패턴의 어휘를 구축하는 데 더 큰 관심을 가질 수 있습니다. 생물학을 공부하면 개미와 꿀벌이 어떻게 식량 원을 찾고 의사 소통하고 간단한 메커니즘이 길 찾기 알고리즘으로 변환 될 수 있는지에 대한 매혹적인 통찰력을 얻을 수 있습니다.

호기심 많은 사람들이 그렇지 않은 사람들보다 더 나은 개발자를 만들기 때문에 핵심 영역 밖에서 배우는 것은 가치가 있습니다.

그만한 가치가있는 나는 거의 문학 전공이었습니다. 그 부서에서 수강하는 수업에 더 관심이 있었기 때문에 동아시아 연구로 전환했습니다. 제가 동아시아 연구를 공부하지 않았다면 업계에 없을 수도 있습니다. 일본어 공부의 부작용으로 인해 소프트웨어 회사가 언어 기술 때문에 일부를 고용했을 때 저를 더욱 소중하게 여겼기 때문입니다. 나는 여전히 더 심도있는 기술 기술 포트폴리오를 구축해야했지만, 의도하지 않은 학습으로 인한 부작용으로 인해 더 나은 소프트웨어 전문가가 될 수 있습니다.


+1 : "내 코드는 비즈니스와 기술 팀간에 공유 어휘를 만드는 데 점점 더 의존하고 있습니다.": 매우 중요한 포인트! 분석가와 개발자가 서로 다른 두 가지 용어에 특정 용어를 사용하기 때문에 많은 버그가 오해에서 비롯됩니다.
조르지오

4

프로그래밍 프로젝트가 실패하면 일반적으로 요구 사항과 관련된 통신 실패로 인한 것입니다. 평범한 영어를 이해하면 실제로 코드를 작성하는 데 충분할 수 있지만 올바른 코드를 작성하려면 훌륭한 의사 소통자가 필요합니다. 원격 작업, 텍스트 기반 커뮤니케이션의 시대에 영어 작문은 매우 중요한 커뮤니케이션 기술입니다.

즉, 귀하의 질문은 매우 명확하고 간결한 방식으로 작성되었습니다. 코드를 보지 못한 채, 선택한 코딩 언어로 자신을 표현하는 데 집중하는 것이 좋습니다. Java의 경우 Joshua Bloch의 저서 인 "Effective Java"를 추천합니다.


고맙습니다, 최선을 다하고 있습니다! 실제로, 범용 프로그래밍 언어의 구문이 코딩 할 때 자신을 표현하기에 충분하지 않은 시점에 도달했습니다. 이제 언어 구문을 향상시키기 위해 전 처리기 도구를 프로그래밍하고 동일한 문제에 대해 도메인 별 언어를 구현하고 있는데, 이는 범용 프로그래밍 언어로 표현력을 강요하는 것보다 낫습니다.
Jose Faeti

3

작가가 세계의 고전을 읽음으로써 가르치는 것처럼, 프로그래머는 좋은 코드 를 읽음으로써 교육을받습니다 . 그러나 작은 문제가 하나 있습니다. 문학에는 거인이 알려져 있지만 프로그래밍에는 거인이 거의 없습니다. 그리고 있다면, 그들은 다른 언어를 "말할"수 있습니다. (나는 Tanenbaum의 Minix 소스 코드를 읽는 것이 합리적이라고 확신조차하지 못합니다)

주석 작성, 의미있는 이름 지정 등과 같이 코드를 더 읽기 쉽게 (=> 유지 보수 가능하게) 만드는 많은 방법이 있습니다. 또한 많은 회사에서 코드 작성 규칙을 설정하여 모든 것을 훨씬 쉽게 만듭니다.

어쨌든 많은 훌륭한 작가와 마찬가지로 프로그래머도 자신의 코드에 만족하지 않습니다. 따라서 언제 중지해야하는지 아는 것이 품질 코드를 작성하는 것만 큼 중요합니다.


2

나는 항상 코드를 작성한 다음 다시 읽은 후에 멈추지 만, 전에는 본 적이 없다고 상상하고 이것으로 먼 길을 얻습니다.

프로그래밍에 익숙한 친구에게 코드의 내용을 알려주지 않고 코드를 읽도록 요청하는 것이 더 좋습니다.


0

나는 그것이 도움이 될 것이라고 생각하지 않습니다. 창의적 글쓰기는 명료하게 기술적 인 개념을 표현하는 것이 아니라 음모와 캐릭터 개발 및 대화에 관한 것입니다. 기술적 인 글쓰기가 도움이 될지 모르지만 의심의 여지가 있습니다.

"읽을 수있는"코드는 주관적이며 주로 구문 스타일과 일반적인 관용구 (언어와 팀에 따라 다름)의 문제입니다.

그러나 변수와 클래스 및 메소드에 대한 올바른 이름을 선택하는 것이 중요합니다. 모든 개발자는 어느 정도 개발중인 도메인의 특정 측면에서 주제 전문가가되므로 도메인 용어를 올바르게 사용하는 것이 중요합니다.

동료 평가를 통해 어휘력과 자신감을 키울 수 있습니다


0

코드 작성과 산문 작성에는 큰 차이가 있습니다.

산문에서 문장은 시간에 따라 연결되거나 분리됩니다 (끝이나 의미에 도달하기 위해 서로 따라 오는 방식).하지만 효율적인 코드에서는 반복 가능한 테이블에서 '스토리'의 일부를 다시로드 할 수 있습니다 행동 / 응답. 따라서 독자 (문의) 또는 사용자 (코드)와의 상호 작용은 완전히 다릅니다.

다른 방법으로 'nice'산문 작성과 'nice'코드 작성은 유사합니다. 우아한'.

원소의 화학적주기 시스템은 우리가 사용하는 기본 재료의 몇 가지 기본 특성을 설명하는 매우 컴팩트 한 방식이기 때문에 우아하다고 생각합니다. 그러나 효율적인 코드와 비슷하지만 확실히 산만하지는 않습니다. 농담에는 많은 산문적 특성이 있지만 (특정한 분위기에 들어가서 분위기를 유지 한 다음 예기치 않은 경우 분위기를 바꾼다), 이는 엄청나게 많은 코딩 관행입니다.

그러나 두 가지 글쓰기 모두 장인 정신을 요구합니다.


-1

기본 영어와 문법은 내 관점에서 프로그래머에게 충분합니다. 그러나 단조로운 프로그래밍 루틴을 어기는 것은 항상 젊어 질 것이므로 쓰기 수업은 프로그래머에게 편안한 시간이 될 것입니다.


4
단조로운 프로그래밍 루틴은 레슨을 작성하는 것보다 경력을 수정하여 해결하는 것이 좋습니다.
Eliot Ball
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.