(왜) 새로운 프로그래밍 언어를 배워야합니까? [닫은]


97

Java, C / C ++, JavaScript / jQuery에 능숙하고 Objective-C에 능숙합니다. 나는 언어와 그에 상응하는 프레임 워크로도 생산성이 높으며 코드를 깨끗하고 유지 가능하게 유지하면서 엔터프라이즈 환경 시스템 (및 소규모 시스템)을 충분히 쉽게 생성합니다 (예, 6시 후에 나 자신의 코드를 읽을 수 있음) 개월 :)

플랫폼 (iPhone, iPad 등) 또는 클라이언트 / 구현 기관에서 요구하지 않는 한, "왜"새로운 프로그래밍 언어를 배워야합니까? 재미로"? 내가 그만한 가치가있는 일을하지 않는다면 그 재미로 무엇을합니까?

많은 동료들이 "다음 새로운 것 / 언어"를 배우기 위해 뛰어들 준비가되어 있으며 보통 파이썬, 루비 또는 PHP입니다 (일부 인기있는 이름을 지음). 이제 언어 자체 만 아는 것은 무익한 IMHO입니다. 또한 프레임 워크를 알고, 사용법 / API를 배우고 '좋은 구현 관행'등을 알아야합니다.

'경제적 인'의미에서 새로운 프로그래밍 언어를 배우는 데 어떤 이점이 있습니까? 언어가 빠르고 더러운 방식으로 배운다면 아마도 빠르고 더러운 프로토 타이핑 / 구현에도 사용될 것입니다. 그러나 나는 그것이 시간 / 노력의 정당한 투자라고 생각하지 않습니다.

그렇다면 왜 (또는 그 문제의 누군가) "재미있어서 시도해 보자"이외의 새로운 프로그래밍 언어를 배워야하는 이유는 무엇입니까? 만약 시간 투자가 장기적으로 가치가 없다면?


6
programmers.stackexchange.com/questions/118338/… 내가 당신에게 gere에 준 대답에 관심이있을 것입니다.
deadalnix

3
새로운 개념에 새로운 언어를보고하지 그들을 이해하는 욕망을 가질 수 있다면, 많은 장소는 (사실, 많은 면접 질문은 특히이 같은 것들을 결정하기 위해 만들어진) 당신을 고용하지 않습니다
빌 K

3
왜 새로운 언어를 배우지 말아야하는지 물어볼 것입니다.
사용자

2
작업이 Java 개발자를위한 것이더라도 후보는 Java를 초월한 사람이었습니다. 발에 몸을 쏘는 것처럼 들립니다.
NimChimpsky

2
슈퍼 자바가 많이 있습니다. 나는 당신이 지금 알고있는 것보다 6 개월 동안 당신이 알게 될 것에 관심이 있습니다. (물론 저는 Erlang, CoffeeScript 및 PHP에서 모든 시간을 보내는 것 같습니다)
Zachary K

답변:


178

에서 실용주의 프로그래머 , 팁 # 8 "귀하의 기술 포트폴리오에 정기적으로 투자"

매년 적어도 하나의 새로운 언어를 배우십시오. 언어마다 다른 방식으로 같은 문제를 해결합니다. 여러 가지 접근 방식을 배움으로써 생각을 넓히고 혼란에 빠지지 않도록 할 수 있습니다. 또한 인터넷에서 무료로 제공되는 풍부한 소프트웨어 덕분에 많은 언어를 배우는 것이 훨씬 쉬워졌습니다.

다음 "새로운 것"에 관한 것이 아닙니다. 그것은 일반적인 사고 패턴 이외의 다른 방식으로 사고하는 것에 관한 것입니다.

"해머라면 모든 것이 못처럼 보인다"는 말이 있습니다. 다른 기술을 사용하여 문제를 해결하는 더 좋은 방법이있을 수 있습니다. 탐색하지 않으면 사용 가능한지 알 수 없습니다.


훌륭한 지적입니다. 이 생각으로 인해 프로젝트에서 RavenDB를 사용해 볼 수 있었으며, 수년 동안 SQL Server 틀에 박힌 후 많은 것을 배웠습니다.
밥 혼

52
나는 당신이 가진 모든 것이 당신의 엄지처럼 보이는 망치
Zachary K

2
완전히 동의 해. 또한 다른 언어를 배우면 이전에 알고 있다고 생각한 언어의 측면을 더 잘 이해하는 데 도움이됩니다. 또한 "실제"프로그래밍 기본 개념 / 패턴 / 제한 사항과 특정 툴셋의 인공물을 구별하는 데 도움이됩니다. 예를 들어, 당신이 알고있는 모든 언어가 약하게 타이핑되면, 강력한 타이핑이 존재한다는 것을 결코 알지 못하고 왜 그런지 궁금하지 않을 것입니다! 따라서 제품 출시 시간이 뛰어나더라도 제품의 성능이나 안전성이 저하 될 수 있습니다. ;-).
JJC

3
Pragmatic Programmer는 내가 읽은 최고의 프로그래밍 책 중 하나입니다. 정말 좋다!
Soner Gönül

"정상적인 사고 패턴 이외의 다른 방식으로 생각하는 것"에 동의합니다. 파이썬을 배웠을 때 새로운 사고 방식을 갖게되었습니다.
Yoo Matsuo

80

사람들은 왜 산을 오르나요? 에베레스트 산? 아니면 24 시간 내에 100 마일을 달리 시겠습니까? 우리는 왜 도전을 수행합니까? 거기 있기 때문입니다. "Ars gratia artis"에는 아무런 문제가 없습니다. 학습을위한 학습이 자신의 보상이되는 시점이 있습니다. 그러나 새로운 언어를 배우는 더 강력한 이유를 원한다면 다음과 같습니다.

문제를 해결하는 새로운 방법 새로운 언어를 배우고 실제로 시간을 들여서 초보자로 다시 프로그래밍 할 수 있습니다. 이 새로운 관점은 오래된 언어로 이어질 수있는 기술을 가르쳐 줄 수 있습니다. Ruby on Rails가 ASP.NET MVC에 어떤 영향을 주 었는지 또는 Java Hibernate가 C #으로 포팅 된 방식 (.NET 개발에 영향을주는 수많은 다른 프레임 워크와 함께)을 생각해보십시오. 다른 언어에 노출되면 문제를 해결하는 새로운 방법을 배울 수 있습니다.

올바른 작업을위한 올바른 도구 언급 한 모든 언어는 OO / 절차 하이브리드 (또는 C의 경우 순차 절차 적)입니다. 기능 언어 또는 두 가지 언어로 손을보십시오. 재귀를 사용하여 Erlang에서 계승을 구현하고 20000시 턱이 ​​바닥에 닿는 것을보십시오! 5 초 내에 반환됩니다 (사이트에서 스택 오버플로 없음). 그런 다음 RMI 또는 SOAP를 통해 두 개의 JVM 인스턴스가 대화하는 데 걸리는 것보다 적은 수의 코드로 프로토콜을 구문 분석하여 숫자를 처리하고 프로토콜을 구문 분석하도록 애플리케이션을 확장하는 기능을 살펴보십시오. 특정 문제를 해결하기 위해 다른 언어 / 프레임 워크를 배우면 더 많은 도구를 얻을 수 있습니다.

새로운 사람 만나기 / 네트워크 확장하기 새로운 언어로 다이빙하면 새로운 커뮤니티에 노출됩니다. 새로운 사람들을 만나는 것은 당신의 경력과 개인적으로 좋은 일입니다.

새로운 기회 새로운 언어를 아는 것은 핫 스타트 업으로 일자리를 얻을 수있는 기회 만 증가시킬 수 있습니다. "루비를 안다면이 직업은 완벽 할 것입니다." 또한 경로를 전환하기로 결정한 언어를 충분히 즐길 수 있습니다.

그것은 신선한 유지 하루에 같은 일의 하루 작업 지루한된다. 다른 언어를 사용하면 매일 갈기에서 벗어날 수 있으며 다음날 새로 고침 할 수 있습니다.

그것이 있기 때문에 당신이 원하기 때문에 새로운 언어를 배우십시오.


3
+1 자바 스크립트는 기능적 일 수 있지만, OP가 툴박스에서 몇 가지 패러다임을 잃어버린 것 같습니다. 기능 언어에 대한 경험이 많을수록 기존 언어 (예 : C ++ 템플릿
jk)에

신선하게 유지하기 위해 +1, 다른 무언가에 대해 좋은 느낌을줍니다
Mona

테일 콜 최적화는 언어가 (순수한) 기능적인지 여부와 관련이 없으며 .NET 64 비트 런타임에서 실행되도록 컴파일 된 명령형 언어는 테일 콜 최적화를 무료로 가져옵니다. .
Blindy

1
LOL, 그렇습니다. Erlang을 순수한 기능적 언어로 만드는 것은 아니지만 전체적인 관점의 변화입니다. 명령형 언어에서는 가장 사소한 경우를 제외하고 재귀를 피하는 것이 좋습니다. 기능적 언어 재귀는 삶의 방식입니다. if / else 또는 switch / case와 달리 패턴 일치는 매우 시원합니다.
Michael Brown

2
재귀를 사용하여 Erlang에서 계승을 구현하고 20000시 턱이 ​​바닥에 닿는 것을보십시오! 5 초 내에 반환됩니다 (사이트에서 스택 오버플로 없음). 이것은 내가 본 기능적 언어를 배우기위한 가장 강력한 주장 중 하나입니다. 그것이 그렇게 효율적일 수 있다고 생각하지 마십시오.
Olegs Jeremejevs

37

우리는 말로 생각합니다. 우리가 사용하는 언어는 우리가하는 방식에 영향을줍니다. Pirahã 언어 에 대한 흥미로운 사례가 있습니다. 언어를 말하는 사람들 은 자란 언어 에 "특정 수량"에 대한 단어가 없기 때문에 숫자로 "간단한"또는 "직관적 인"것으로 취급 할 수 없습니다. "및"많은 ").

프로그래밍 언어와 동일합니다. 새로운 프로그래밍 언어는 프로그래밍의 일부 측면에 대해 마음을 열 수 있습니다.

현재 프로그래밍 배경을 감안할 때 Erlang 또는 Scala와 같은 기능적 언어를 배우는 것이 좋습니다. 마지막으로 Clojure도 매우 견고한 언어입니다.

집에서 조금 더 느끼고 싶다면 Python이나 Ruby와 같은 강력한 스크립팅 언어를 사용해보십시오.


22
+1. "프로그래밍에 대해 생각하는 방식에 영향을 미치지 않는 언어는 알 가치가 없습니다." - 앨런 펄리스는
ruakh

2
나는“말로 생각한다”라는 전제를 거부합니다. 단어가없는 사람 (또는 무엇이든)이 생각할 수있는 가능성을 부정하기 때문입니다. 그러나 단어 개념에 레이블을 지정하는 데 매우 유용합니다 (따라서 구별하는 데 도움이 됨). 우리는 주로 효율적이기 때문에 단어에 대한 높은 생각을합니다. 어느 것이 더 모호한 진술이지만, 나는 진실에 더 가깝다고 생각합니다. 재미있게도, 나는 단어를 사용하지 않고 단어의 사용을 거부 할 수 없다…
Donal Fellows

@DonalFellows : 단어로 표현할 수없는 "정신적 프로세스"가 있다고 생각합니다. 그러나 나는 이것을 "생각"이라고 부르지 않고 "느낌", "반사", "직관"등이라고 부릅니다. 나는 일종의 언어의 관점에서 올바른 생각이 표현되어야한다고 생각합니다. 따라서 언어가없는 것은 삶, 프로세스, 반응, 느낌을 줄 수 있지만 생각할 수는 없습니다. 그러나 이것은 실제 증거가 아닌 직관을 기반으로 한 신념입니다. 그리고 또한 약간 벗어난 주제, 정말로 :)
egarcia

새로운 멋진 프로그래밍 언어이기 때문에 언어를 배우는 것은 말이되지 않습니다. 당신은 매우 다른 것들을 고수하고 그것들을 너무 많이 가리지 않도록 노력해야합니다. 무언가를 잘하는 데는 상당한 시간 (아마도 10 년 이상)이 걸리지 만 악기를 연주하든 요리를하든 프로그래밍을하든 상관 없습니다.
미스터 스미스

2
@evilcandybag : 공교롭게도, 나는 실제로 : 소스 보여 sciencemag.org/content/306/5695/496 , sciencemag.org/content/suppl/2004/10/15/1094492.DC1/... (PDF)를.
ruakh

26

새로운 언어를 배우고 싶을뿐만 아니라 이미 알고있는 언어와 다른 언어를 배우고 싶을뿐입니다. Java 학습 C #이 실제로 당신에게 도전하지 않는다는 것을 알고 있다면, 그것들은 상당히 비슷합니다. 이상적으로는 당신이 아는 것과는 다른 언어를 선택해야합니다. Java, JavaScript 및 Objective-C를 알고 있다면 매우 다른 것을 원합니다.

같은 :

루비 재미 있고 약한 OO 언어

프롤로그 매우 다른 논리 프로그래밍 언어

Erlang 동시성 및 내결함성 양호

구성표 SICP를 읽고 깨달음

Haskell 그것이 컴파일 될 경우 세계에서 가장 강력한 유형 시스템 중 하나 일 것입니다. 또한 모든 종류의 이상한 오류를 만드는 것을 막을 수 있습니다.

또는 7 주 만에 7 개 언어를 선택하면 타이틀의 기능에 대해 할 수 있습니다.


2
+1! 내가 지금하고있는 운동은 다른 언어로 동일한 알고리즘 (병합 정렬)을 구현하는 것입니다. 이것은 실제로 동일한 계산을 표현하는 방법이 얼마나 많은지를 느끼게합니다. 이미 C, C ++, Pascal, Java, Scala 및 Haskell 버전이 실행 중입니다. Python, Ruby, Modula2, Scheme이 진행 중입니다. 다른 프로그래밍 언어를 보면서 많은 것을 배울 수 있습니다! 한 언어로 한 가지 일을함으로써 다른 언어로 더 잘 구현하는 방법에 대한 많은 아이디어를 얻을 수 있습니다.
Giorgio

3
Haskell을 설명하는 것을 제외하고 는 이것을 좋아합니다 . 여전히 컴파일하는 잘못된 코드를 작성할 수 있습니다. 하스켈을 배우는 이유는 표기법이 수학에 매우 가깝고 게으른 평가 모델을 가지고 있기 때문입니다. 그것은 프로그래밍에 관한 대부분의 프로그래머의 개념을 흔들어야한다.
Donal Fellows

나는 프롤로그를 시도해야한다고 생각합니다. 처음 배웠을 때 놀랐습니다. 몇 글자 만 쓸 수있는 방법.
사용자

3
내 경험에서 @DonalFellows Haskell에서 유형을 올바르게 얻으면 나머지 프로그램은 스스로 작성하는 경향이 있습니다.
tobyodavies 2012

1
"루비 약한 유형의 OO 언어": 루비는 실제로 약한 유형이거나 다소 역동적 인 유형입니까?
조르지오

15

귀하의 질문은 다음과 같은 질문을 요구하는 최고의 질문입니다.

직업별로 프로그래머라면 왜 세상에서 직업 경험에 추가 할 새로운 것을 배우고 싶지 않습니까?

당신의 질문은 제가 한때 학생의 태도와 매우 흡사합니다. Y2K 이전 1 년 또는 2 년 전 당시 제가 가르치고있는 대학의 커리어 서비스 디렉터의 요청에 따라 코볼 수업 (선택 과목)을 가르치고있었습니다. 그는 Cobol 프로그래머를위한 직업 기회를 가지고 많은 회사에 다가 가서 우리가 학생들에게 기술을 배우고 기술을 추가 할 수있는 기회를주지 않음으로써 장애를 겪게 될 것이라고 생각했습니다.

나는 마지막 수업으로 졸업 한 학생이있었습니다 . 그는 당시 C 프로그래머로 일하고있었습니다. 그는 다른 선택이 없었기 때문에 코볼 수업을 들었고 학위를 원했습니다. 그래서 그는 어깨에 칩을 가지고 수업에 왔습니다.

나는 이미 C를 알고 있으며 그것을 전문적으로 사용하고 있기 때문에 세상에서 왜 누군가가 코볼을 배우고 싶어하는지 알 수 없습니다.

그래서 나는 각 입력 레코드에 대해 특정 형식을 가진 파일에서 데이터를 읽는 프로그램을 작성하는 작업으로 그에게 도전했습니다 (즉, 각 필드가 한 줄에 걸린 문자 수, 첫 번째, 두 번째, 세 번째 등의 필드 수) .)

그는 자신의 프로그램을 C로 작성해야했고, 그의 프로그램을 내게 보여주었습니다. 동시에, 나는 그에게 코볼 버전의 프로그램을 보여 주었다.

그런 다음 그에게 커브 볼을 던졌습니다.

최종 사용자가 다른 곳에서 데이터를 가져오고 있다고 가정합니다. 각 레코드의 필드는 동일하지만 필드 당 문자 수와 순서는 다릅니다. 새로운 데이터 형식으로 작동하도록 프로그램에서 변경해야 할 사항을 보여주십시오.

그는 새로운 데이터 형식으로 작동하는 프로그램의 새 버전을 만드는 데 하루가 걸렸습니다. 최소한 20 ~ 30 줄의 코드를 변경하고 여러 기능과 모듈을 수정해야했습니다.

그런 다음 Cobol 프로그램에 필요한 변경 사항을 보여주었습니다. 새 데이터 형식을 반영하도록 그림 절을 수정했습니다.

나는 그가 그 운동의 교훈을 완전히 이해했는지는 확신하지 못하지만 적어도 학기의 나머지 부분에 대해서는 불평을 그만 둔다.

따라서 귀하의 질문에 대한 답변으로 : 당신은 배우고 싶어하기 때문에 새로운 언어를 배워야합니다. 그리고 당신이 배우고 싶지 않다면-당신에게 더 많은 힘을 ... (나는 그 태도로 당신을 고용할지 확신 할 수 없습니다)


6
당신의 의도는 좋았지 만, 내가 그 학생이라면, 앱이 쉽게 변경되는 유일한 이유는 최종 요구 사항 변경을 알고 있었기 때문이라고 생각합니다. 프로그램이 동일한 지식으로 C로 작성된 경우 최소한의 변경도 필요합니다.
hspain

"C와 PHP로 돈을 벌 수 있습니다. 왜 다른 언어를 배우는데 시간을 낭비해야합니까?" 그는 더 이상 일하지 않습니다.
greyfade

3
모든 요구 사항은 조만간 변경됩니다! 그것은 일종의 요점입니다.
Zachary K

@hspain-실제로 연습의 요점 때문에 Cobol은 I / O 사양을 프로그램의 작성 및 주문 방식에 따라 laissez-faire 방식으로 발생하는 것이 아니라 프로그램의 1 차 부분으로 취급한다는 것입니다. Zachary K의 의견을 반영하기 위해 요구 사항이 변경된다는 사실이 C의 I / O 설명입니다. -예, I / O 요구 사항이 변경 될 때 덜 취해 지도록 C로 프로그램을 구성 할 수 있지만, C 프로그램을 작성할 때 일반적으로하는 것과 완전히 다른 방식으로 프로그램에 대해 생각해야합니다.
Zeke Hansell 2019

나는 실제로 코볼에 대해 몰랐습니다. 언젠가 나는 살펴 봐야 할지도 모른다
Zachary K

12

새로운 언어를 배우는 데 시간이 걸리는 데는 몇 가지 이유가 있습니다.

  1. 도구 상자의 크기를 늘리십시오. 새로운 언어를 배우면 기술적 인 문제를 해결하기위한 추가 경로를 제공 할 수 있습니다. 새로운 도구의 가능성은 이전에 알고 있던 도구 / 언어보다 특정 문제를 해결하기 위해 언어 / 플랫폼을 더 잘 선택할 수있게합니다. 스크립팅 언어를 배우는 것은 배치, 환경 설정 등의 측면에서 다른 가능성을 열어줍니다.
  2. iOS를 위해 개발하고 싶다면이 언어를 배우는 것이 거의 필수입니다.
  3. 새로운 패러다임을 배우십시오-특정 언어는 새로운 패러다임에 더 잘 접근 할 수 있습니다. C를 예로 사용하면 표준 ANSI C로 웹 서비스를 개발하기가 어려울 수 있습니다. 그러나 .NET, Java, PHP 또는 기타 새로운 언어로 개발하는 것을 배우면 웹 서비스 개발 속도가 빨라질 수 있습니다.

이미 언급했듯이 새로운 언어를 배우면 "빠르고 더러운"솔루션에서 즉각적인 이점을 얻을 수 있습니다. 그러나 이러한 즉각적인 솔루션을 통해 프로그래머는 새로운 언어와 관련된 아키텍처를 조사하고 자세히 조사하여 "적절하게"학습 할 수 있습니다. 이러한 빠른 학습 연습은 새로운 언어가 추가 교육 시간에 가치가 있는지 여부에 대한 투자에 대한 투자로 볼 수 있습니다.


11

한마디로 : 시장성 .

새로운 것을 적응시키고 배우는 능력이 있음을 보여줄 수있을 때 취업 전망을 열어줍니다. 물론, 당신은 당신이 정말로 능숙하게 된 한 가지 언어를 사용하여 응용 프로그램을 계속 작성할 수 있지만, 당신이 좋아하는 언어가 당신이 일하고있는 산업과 관련이 없다는 것을 알게되면 어떻게 될까요? 실제로 우리가 사용한 시간을 기억합니다 C 또는 C ++에서 자체 웹 서비스를 처음부터 작성하기 위해 요즘 우리는 모든 기본 "webbiness"를 수행하는 도구를 사용합니다 (Think Rails 등).

요점은, 당신은 TV 시리즈를하는 배우들과 같은 결과를 낳게되며, 그들은 영원히 원래 캐릭터로 여겨지기 때문에 다른 것에 쉽게 옮길 수 없습니다. "지상에서 커크 대위가 인디아나 존스가되기를 원하는 사람은 누구입니까?" 하나의 제품 만 사용한 프로그래머도 마찬가지입니다. 물론, 당신은 다른 사람처럼 그것을 알지 못하지만 C #으로 작업 할 수없는 Fortran으로 복싱 한 것처럼 도움이 될 때 도움이되지 않습니다.

작업을 쉽게 이동하고 옵션을 열어 놓으려면 경험을 넓혀야합니다. 여러 언어로 된 다양한 프로젝트에서 작업하고, 바람직하게는 2 개 이상의 플랫폼에서 작업하고, 현재의 것 이상을 위해 자신을 마케팅하십시오.

물론, 새로운 언어를 배우는 데에는 다른 이유가 많이 있습니다. 때로는 언어조차도 아닙니다. 그것은 다른 가능성에 대한 당신의 마음을 열어 주므로, 당신의 상사가 당신에게 와서 "우리가 무언가를 할 수 있습니까"라고 말할 때, 당신이 이용할 수있는 도구를 선택하여 예라고 말할 수 있습니다.


8

당신의 경력의이 시점에서, 당신이 더 나은 프로그래머가 될 것이라고 생각한다면, 새로운 언어를 배워야합니다.

나열된 언어 (Java / C / C ++ / Javascript / Objective-C)의 대부분은 일반적인 OO / 제 국어입니다. 또 다른 OO / 제 국어를 배우는 것은 아마도 그런 종류의 프로그래밍에 대해 더 많이 가르치지 않을 것입니다. 특별한 관심이 없다면 스펙의 달의 맛을 배울 필요가 없습니다.

또한 규모의 생산성 향상에 대한 주장에 회의적입니다. 그러나 때때로 평판이 좋은 고 생산성 언어를 확인하여 마음에 드는지 확인하는 것이 좋습니다.

새로운 언어를 배우는 가장 좋은 이유는 일반적인 적용 기술을 배우는 것입니다. 이를 위해 기능 언어 (Haskell 또는 Lisp 중 하나)와 다른 한편으로는 어셈블리 코드 및 시스템 아키텍처 (x86 또는 ARM)를 심층적으로 살펴볼 것을 권장합니다.

함수형 프로그래밍은 두뇌를 깨뜨리고 정신을 향상시키는 반면 기계 아키텍처를 배우면 다른 조립 라인을 작성하지 않아도 디버깅 및 최적화 기능이 향상됩니다.


6

우리 각자는 무엇을하고 싶은지 결정합니다 ...

  1. 당신이 원하는 때문에 당신은 그것을 배우
  2. 당신이 원하는 직업을 위해 그것을 필요로하기 때문에 그것을 배웁니다

PHP를 배우고 싶지 않다면 아무도 당신을 만들고 있지 않으며 PHP 철자법조차 몰라도 프로그래밍 할 수있는 많은 영역이 있습니다.

많은 사람들이 구직 시장을 조사하여 더운 지역이 어디 있는지 파악하고 해당 기술을 뛰어 넘습니다. 많은 사람들이 하나의 언어를 배우고 그 언어를 고수하고 20 년 후에 그들은 레거시 유지 보수 엔지니어가됩니다. 그리고이 두 극단 사이에 많은 사람들이 있습니다.

결국, 그것은 당신이 원하는 곳에 관한 것입니다.


설명에서 약간 흑백으로 들립니다. "기술 호퍼"와 레거시 유지 보수 엔지니어는 IMHO의 두 가지 극단입니다. 또한 일부 "기술 호퍼"는 최신 기술을 실제로 익히기에는 너무 반짝이는 기술에 너무 미치므로 (단일 기술에 투자하려는 것보다 더 많은 시간이 소요될 수 있음), 장기적이고 견고한 솔루션을 생산하지 못할 수 있습니다 문제에.
Péter Török

1
@ PeterTörök : 내 답변을 편집했습니다. 나는 비늘을 지적하고 있었지만 모든 것을 설명하기에는 너무 게으르다. 당신은 맞습니다, 그것은 연속적인 스펙트럼입니다.
DXM

5

내가 아는 가장 좋은 주장은 문제를 해결하거나 논리를 표현할 수있는 여러 가지 방법에 대한 관점을 넓히는 것입니다. Java와 C ++을 잘 아는 것은 기본 및 VM 영역 모두에 대해 잘 볼 수 있지만 더 많은 "자유도"를 탐색 할 수 있습니다.

나는 C ++에서 약 15 년의 경험을 가지고 있으며 Java에서는 5 년입니다. 내가 배우고 남은 많은 언어가 있고 (PHP, Pascal, 여러 프로세서를위한 어셈블리 등) 더 이상 사용하지 않는 언어조차도 문제에 대해 어떻게 생각하는지에 대한 중요한 표시를 남겼습니다. . 또한 : 주어진 프로젝트에 대해 Java를 고수하려고하더라도 제안자에게 좋은 반론을 제시하는 대안을 알아야합니다.

그래도 올해 만 파이썬을 배웠고, 어떤 일을 얼마나 우아하게 할 수 있는지에 기뻐했습니다. 그래서 필자가 작성한 소수의 REST 서블릿을 Java에서 Python으로 변환하기로 결정했습니다. 코드 유지 관리의 장점은 상당히 중요했습니다. 필자는 이제 일부 작업에 Python을 선택할 것뿐만 아니라 C ++ 및 Java로 코딩 할 때 유사한 디자인 원칙을 채택 할 수 있기 때문에 일을하는 방식에 표시를 남겼습니다.

즉, 나는 당신이 그것을 위해 항상 많은 다른 언어를 배워야한다고 생각하지 않습니다. 상당한 시간이 걸리며, 이미 알고있는 다른 사람들과 공존하기 위해서는 마음 속에서 "숙박"을해야하므로 시간과 노력이 필요합니다. 언어가 충분히 성숙하고 개발자 기반이 우수하며 내가 알고 있거나 배우려는 다른 사람들과는 상당히 다른 결과를 제공 할 때만 언어를 배우기로 결정합니다. 예를 들어 파이썬을 배우기로 결정했을 때, 루비와 펄도 고려했고 나중에 가까운 시일 내에 버렸습니다.


5

사람들은 새로운 언어를 배우고 ...

  • 그들의 지식을 확장하십시오. 더 많이 알면 기분이 좋아지고 자신감이 커집니다.
    자신감 = 멋진 코드!
  • 더 큰 도구 상자가 있습니다. 앱을 만들어야한다고 가정 해 봅시다. Java 만 알면 프로그램을 Java로 작성하게됩니다. 그러나 Java, Python, Scheme 및 Lisp를 알고 있다면 작업에 가장 적합한 도구를 선택하게 될 것입니다.
  • 일자리를 구해. 그것을 직면. 더 많은 언어를 알고 있다면 더 많은 직업 기회가 있습니다. 그것은 꽤 자명하다.
  • 더 나은 만능 프로그래머가 되십시오. Perl의 구문을 알고 있다면 약간 미쳤을 수도 있습니다. Perl에서 긴 프로그램을 작성할 때, 기본적으로 모범 사례를 따라야합니다. 그렇지 않으면 행복한 야영자가 될 수 없습니다. Perl의 모범 사례를 알고 있기 때문에 더 나은 PHP 코드를 작성하는 데 도움이 될 수 있습니다.

보시다시피 새로운 언어를 배우는 데는 여러 가지 이유가 있습니다. 당신에게 나의 조언 (그리고 내가 생각하는 유일한 나의 유일한 인용) :

코드를 자주 작성하십시오. 코드를 잘 작성하십시오. Scheme, PHP, Java, Python, Lisp, Perl, C, C ++, C #, Visual Basic, Ruby로 코드 작성 ...


1
@Nupul : 또는 적어도 나는 견적이 그렇게 생각합니다 ...
Dynamic

5

이미 게시 된 대부분의 답변에 동의합니다. 이에 추가하려면 2011 Stack Overflow User Survey에서 얻은 통계를 확인하십시오. 알려진 언어의 수와 수입은 매우 높은 상관 관계가있었습니다. 그것들은 서로 직접 연결되어 있지는 않지만 생각해야 할 부분입니다.

더 많은 언어를 배우려는 사람들은 더 많은 돈을 버는 경향이 있습니다.

http://blog.stackoverflow.com/2012/02/survey-results/


4

알프레드 노스 화이트 헤드 "라는 훌륭한 에세이를 썼다 좋은 표기법의 중요성을 "

과학의 발전에있어 겸손한 상징이 얼마나 중요한지 주목하는 것은 흥미 롭습니다. 그것은 아이디어, 특히 매우 미묘한 아이디어를 강조하여 표현할 수 있으며, 그 존재로 인해이 아이디어가 발생하는 모든 복잡한 아이디어의 기차와이 아이디어의 관계를 쉽게 표현할 수 있습니다.

프로그래밍 언어는 일종의 표기법입니다. C로 OO를 코딩 할 수 있습니다. 실제로 Stroustrup이 C ++로 시작한 방식은 일련의 C 프리 컴파일러 매크로입니다. 그러나 Java, C ++ 또는 C #에서 OO 코드를 작성하는 것이 훨씬 쉽고 빠릅니다. OO를보다 쉽게 ​​지원하는 언어 기본 요소가 있기 때문입니다.

지금까지 주어진 새로운 언어를 배우는 모든 이유는 유효하지만 새로운 언어를 배우는 가장 좋은 이유는 새로운 표기법을 통해 새로운 문제를 해결하는 데 도움이되는 새로운 방식으로 생각할 수 있기 때문입니다.


2

위의 답변의 대부분 또는 전부는 직업과 관련이 있습니다. 프로그램 작성. 프로그래머가되기 전에 우리는 인간이라는 것을 상기시키고 싶습니다.

새로운 프로그래밍 언어를 배우지 않는 좋은 이유 중 하나 는 자기 자신을 쉬게하거나 프로그래밍 이외의 다른 일을하기 위해서입니다.

제 경험으로는 농업과 나무를 다루면서 프로그래밍에 대해 많이 생각했습니다. 그보다는 새로운 언어를 배우는 것입니다. 즉, 좋은 프로그래머가 되려면 먼저 좋은 인간이어야합니다. 인생에서 경험이 많지 않으면 프로그래밍 외에 프로그래밍에 대한 아이디어가 전문가 일지라도 완전히 잘못되었을 수 있습니다.

프로그래밍의 많은 개념은 일상에서 직접 나오고 있습니다 : 단순성, 유지 보수성, 실용성, 유용성, 빠르고 때로는 느리고 모듈성 등; 예를 들어 목수가 사용하는 모든 개념입니다.

믿거 나 말거나 : 개인적으로 나는 오렌지를 따기 위해 오랜 휴가를 보내면서 프로그래밍 개념에 대해 많은 것을 배웠습니다. 내가 배운 주요 개념은 단순성입니다. 벽을 똑바로 세우고 싶다면 가능한 한 좋은 기반을 세우십시오.

마지막으로, 귀하의 질문에 대한 답변은 휴가를 가거나 태권도 수업에 참여하거나 정원을 돌보는 것입니다. 그러면 귀하의 질문은 더 이상 귀찮게하지 않을 수 있습니다.


나는 당신에게 동의 할 수는 있지만, 다른 활동을하면서 프로그래밍에 관한 모든 좋은 아이디어를 얻은 후에는 이러한 아이디어가 구현되는 프로그래밍 언어를 배우고 싶습니다. 따라서 IMO는 프로그래밍에서 벗어나 새로운 프로그래밍 언어를 배우는 두 가지 측면을 서로 배제하지 않아야합니다.
Giorgio

프로그래밍을 중단하고 새로운 프로그래밍 언어를 배우는 것이 서로를 배제하지 않아야한다는 것은 사실입니다. 그러나 우리가 살고있는 매우 빠른 세상에서 휴식은 운동보다 생산적 일 수 있다는 점을 기억하는 것이 중요합니다. 커피 휴식 일 수도 있고 1 년 휴식 일 수도 있습니다.
Shian

-2

새로운 프로그래밍 언어를 배우는 것의 가치는 대략 당신이 이미 알고있는 프로그래밍 언어의 수의 역수입니다.

이는 한정된 수의 패러다임이 있고 새로운 언어를 배우면 일반적으로 최소한 한두 가지를 소개하기 때문에 프로그래머로서의 경험과 능력이 향상됩니다. 일부는 프로그래밍 세계를 거꾸로 뒤집을 수 있습니다. 그러나 당신이 이미 알고있는 패러다임을 특징으로하는 새로운 언어를 배울 때, 당신은 이미 그 언어를 알고 있으며 그들에게 익숙합니다.


-3

그들 대부분은 이미 작성 했으므로 C에 대한 실무 지식이 있습니다. 최근에 결과를 교차 확인해야하는 몇 가지 문제에 대해 연구하고있었습니다. 수학적이었습니다. 따라서 가장 빠른 답변을 얻는 방법은 더 빠른 프로그래밍 언어를 배울 수있는 기회를주었습니다.

그리고 임의의 정밀 계산기 언어 인 bc 가 모든 유닉스 플랫폼에서 거의 사용 가능한 유틸리티 라는 것을 알았습니다 .

나는 Python, Perl 등을 생각하지 않았지만 이것이 내 문제를 순식간에 해결한다는 것을 알았습니다. 친구 중 한 사람이 제안한 factorial (20000)에서 확인했으며 충돌없이 결과가 나왔습니다.

현재 직업 / 문제를 완화 할 수있는 새로운 언어를 알아야한다는 점이 중요합니다.

확실히, 내가 이력서에 이것을 쓰면 아무도 신경 쓰지 않을 것 같지만, 내 관점에서 내가 좋아하는 언어 'C'로 공격하기 전에 내 문제를 해결합니다.

또한 새로운 언어를 배울 필요가 있다면 다른 문제와 여러 가지 해결책으로 기회를 얻게 될 것입니다.


-8

누구나 새로운 언어를 만들 수 있습니다. 그러나 "더 나은"이 "입양 비용이 실제로 정당화되는 것보다 훨씬 낫다"는 것과 거의 동일하다는 것을 아무도 이해하지 못하는 것 같습니다. 최종 결과는 수백 가지의 언어로, 모든 소스 코드를 이해하는 것이 불가능하며, 언어 / 프레임 워크 / 라이브러리 차이로 인해 프로그래머가 비생산적인 시간을 4 분의 1 정도 낭비해야하는 경우가 있습니다.

이상적인 세계에는 하나의 저수준 프로그래밍 언어 (예 : C), 하나의 고수준 "안전한"프로그래밍 언어 (예 : Java) 및 하나의 스크립팅 언어가 있습니다. 표준화의 미덕과 "이탈"의 비용을 이해하지 못하고 IT 산업에 대한 끊임없는 재교육을 이해하지 못하는 사람들이 만든 "프로그래밍 언어 타워 바벨"을 파괴하기위한 커다란 썰매 망치도 있습니다.

는 '거시 경제'의미에서,이 취미로 새로운 프로그래밍 언어를 학습하지만, 아무 문제 없습니다 사용하여 아무것도 그 새로운 프로그래밍 언어는 당신에게 문제의 일부를합니다.


4
꽤 비현실적인 이상적인 것 같습니다. 이 표준 언어를 누가 결정하고 새로운 언어로 바꿀 가치가 있는지 어떻게 결정합니까? 아무도 새로운 것을 시도하지 않기 때문에 엉뚱한 언어에 빠질 위험은 어떻습니까? 우리가 10 년 전에이 일을했다고 상상해보십시오. 모두가 C ++ 및 Java (또는 VB)를 사용하게됩니다!
Brendan Long

3
"이상적인 세계"에 대한 당신의 개념은 의심 할 여지없이 Nineteen Eighty-Four 의 개념처럼 들립니다 . 뉴스 피크에서 "함수 프로그래밍", "유형 추론", "일류 다형성"및 "멀티 메소드"와 같은 혁신적인 아이디어는 표현할 방법이 없기 때문에 생각조차 할 수 없었습니다. 분명히, 오웰은 당신의 망치 개념에 대해 생각한 것 같지 않지만, 그가 가지고 있다면, 그것이 그 길을 찾았을 것이라고 확신합니다.
ruakh

2
위의 사항 외에도 귀하의 "답변"은 실제 질문과 관련이 거의 없습니다. 공감.
16764

3
이상적인 세상에서는 Nupal의 질문에 대한 답은 하나뿐입니다. 표준화의 미덕을 이해하지 못하는 사람들에 의한 첫 번째 답변 이후에 이러한 추가 답변을 모두 갖는 것은 혼란을 유발합니다. 자신의 생각에 대한 답변에 동의하지 않는 것은 아무 문제가 없지만 추가 답변을 게시하면 문제의 일부가됩니다.
benzado

1
이러한 언어로 제한한다고해서 언급 한 문제를 예방할 수는 없습니다. 언어를 변경하는 것보다 프레임 워크를 변경하여 응용 프로그램을 여러 번 다시 작성해야했습니다.
Fabio Ceconello
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.