많은 프로그래밍 언어를 배우는 것이 상처가됩니까?


37

9 학년 때 BASIC에서 프로그래밍 경력을 시작했습니다. 나는 더하기, 빼기 및 인쇄하는 간단한 프로그램을 작성하여 약간의 기본을 배웠습니다. 그런 다음 대학에 가서 컴퓨터 정보 및 시스템 공학을 전공했습니다. 첫해에 나는 C를 배웠고 그것을 잘 다룰 수있었습니다.

다음으로 2 년째에 C ++을 배웠습니다. 방금 OOP에 대한 지식을 가르쳐주었습니다. 이제 PHP와 함께하고 있습니다 (HTML과 함께). C ++, BASIC 또는 PHP를 마스터하지 않았습니다. 이제 모바일 개발로 이동할 계획입니다. 그러나 나는 내가 배운 언어로 모든 것을 다루지 않았다고 생각합니다.

정말 문제가 되나요?

답변:


50

우리는 모두 약간의 프로그래밍 언어를 배우고 있습니다. 언어 구현 자는 언어 에 대한 지식이 10 명 중 10 명인 것으로 간주합니다 .

여러 언어와 패러다임을 배우는 것이 당신이 좋아하고 싫어하는 것에 대한 "맛"을 개발하는 유일한 방법입니다. 하나의 언어 만 배운다면, 마음에 드는 것인지 아닌지 를 실제로 결정할 수조차 없습니다.

실제로 올바른 방법으로하고 있습니다. 서로 다른 구문, 라이브러리 및 프레임 워크에 노출되는 동안 배우는 가장 중요한 기본 사항을 재사용 할 수 있습니다.


16
나는 "당신이 좋아하는 것"이 ​​적고 "일을위한 올바른 도구"라는 것을 제외하고는이 답변을 좋아합니다. 모든 문제를 해결하기 위해 같은 언어를 사용해서는 안됩니다. 그것은 나쁜 소프트웨어 개발자가 될 것입니다. 각 언어와 패러다임에는 장단점이 있습니다.
user606723

1
컴파일러와 인터프리터에 버그가 있다고 생각하면 대부분의 언어에서 10까지 도달하는 것이 인간적으로 가능하지 않다고 생각합니다.
jmoreno

6
C ++ 컴파일러를 작성하는 사람들조차도 C ++을 이해하지 못한다고 생각합니다. 개인적으로, 나는 의미한다. 분명히 집합 적으로, 그들은 어떻게 든 전체 언어를 이해해야하지만, 나는이 행성에 모든 사람을 이해하는 한 사람이 있다고 생각하지 않습니다. 실제로,위원회 위원들은 대개 자신의 전문 분야 만 이해한다는 사실에 대해 분명합니다. 마틴 오더 스키 (Martin Odersky)는 최근 자바에서 와일드 카드를 이해하는 사람은 3 명 뿐이라고 믿고있다. 그리고 이메일의 톤에서 나는 그가 자신을 포함하지 않았다는 인상을 받았습니다
Jörg W Mittag

2
그는 실제로 Java Generics를 디자인 했지만 (필자는 물론 Phil Wadler와 함께) 공정하기 위해, 그의 동의없이 그의 표현 와일드 카드가 추가되었다 .
Jörg W Mittag

1
@ brian, 나를 믿으십시오. 컴파일러를 구현하기 위해 언어를 알 필요가 없습니다. 스펙을 맹목적으로 코드로 변환하면됩니다. 그러나 그렇게 한 결과, 최소한 언어의 기초를 배우게되므로 이것이 새로운 언어를 배우는 가장 좋은 방법입니다.
SK-logic

21

당신이 여전히 대학교에 있다면, 당신이 아는 어떤 언어로도 모든 것을 다룬다 고 생각하지 않아도됩니다. 공통의 기본적인 이론을 이해 뒤에 다음 언어로 훨씬 더 중요하다. 기본 사항을 이해하면 필요할 때 다른 언어의 세부 사항을 배울 수 있습니다.


5
처음 2 년 동안 우리는 대부분의 프로젝트 작업 (1982-85)의 기초가 된 파스칼과 함께 3-4 주마다 새로운 언어를 선택했다고 생각합니다. 그 중 일부는 기능적 언어였습니다. 요점 중 하나는 "프로그래밍"과 "코딩"을 분리하는 것입니다.
Murph

12

프로그래밍에서 가장 중요한 것은 다른 패러다임 을 이해하는 입니다.

귀하의 질문에 귀하는 객체 지향 프로그래밍 (OOP) 을 언급했습니다 . 이 주제를 마스터 한 경우 의사 코드와 기본적으로 일부 그래픽 모델링 표현 (예 : UML 클래스 다이어그램) 만 사용하여 설명 할 수 있습니다.

Java를 사용하기로 결정하든 C ++ 또는 C # (...)을 사용하든 귀하가 일하는 회사에 달려 있지만 실제로 중요한 것은 다른 문제 를 이해 / 인식하고 이를 해결 하기위한 최상의 모델을 결정하는 것입니다. 프로그래밍 문제를 해결하는 매우 중요한 방법 은이 참조 서적 에서 찾을 수 있는 디자인 패턴 을 사용 하는 것 입니다 .

임베디드 언어에 관해서는 중요한 것은 그러한 기술과 관련된 다양한 문제를 이해하는 것입니다.

은유 적으로, 나는 이것을 과학적인 좋은 책을 쓰는 것과 비교할 것이다. 중요한 것은 노출 한 이론, 해결해야 할 문제 등입니다. 책을 영어, 프랑스어 또는 일본어로 작성하는 것은 결국 중요하지 않습니다.

즉, 기술을 매우 효율적으로 활용하기 위해 해당 기술을 전문화하려는 경우 특정 언어의 세부 사항을 알고 있어야합니다.


2
패러다임의 경우 +1 X 또는 Y 언어의 구문 설탕에 초점을 두는 것은 중요하지 않습니다 (물론 매일 직장에서 X 언어를 사용하는 경우 필요합니다). IMHO는 문제 해결에서보다 개방적이고 창의적이되도록 도와주기 때문에 다른 패러다임을 연구하는 것이 유용합니다.
사키 스크

5

제 생각에는 언어를 자주 바꾸는 데는 아무 소용이 없습니다. 당신은 실제로 그들 중 어느 것도 잡지 못할 것입니다. 특히 C ++과 같은 일부 사람들은 언어를 쓰는 데 10 년을 소비하고 여전히 코드를 C처럼 보입니다.

언어로 모범 사례를 작성할 수 없다면 IMO로 넘어 가지 마십시오. 즉, 수십 년이 아니라도 몇 년이 넘으면 몇 년이 걸릴 것입니다.


5

많은 다른 언어를 배우는 것이 아프지 않다고 생각하지만 동시에 적어도 한두 가지의 깊이를 배워야합니다.


3

저는 AMOS Basic, Java, C ++, PHP, VB6, Delphi 등 많은 언어를 사용했습니다. 오늘날 C #, JavaScript, Ruby 및 일부 Clojure를 직장에서 사용하고 있으며 Pyhton, Erlang, 공통 리스프 및 구성표.

그러나 올 가을 나는 내 블로그를 위해 특별한 엑스 마스 캘린더를 만들고 싶었고 24 가지 언어로 특정 문제를 숙지하고 해결하기로 결정했습니다. 이것은 훌륭한 경험이었고 많은 것을 배웠으며 프로그래밍 경험이 있으면 이것을하는 것이 좋습니다.

당신에게 내 대답은 이것입니다 : 두 가지 언어를 정말 잘 배우십시오.

오늘날 OOP와 FP (함수 프로그래밍)를 잘 아는 것이 중요하며 매우 정적이고 역동적 인 언어로 편안해야합니다.

추신 : 내 블로그 는 노르웨이어로되어 있지만 내가 다루는 언어 목록을 보려면 여기를 참조하십시오 .


2

새로운 것을 배울 필요가있을 때 특정 언어로 배워야 할 것을 배웁니다. 언어에 대해 더 깊이 파고 들어야한다는 것을 알려주는 "트리거"는 특정 코드가보기 흉하거나 어색하거나, 유지할 수 없거나, 테스트하거나 설명하기 어렵다는 것입니다. 이러한 트리거는 종종 특정 프로그래밍 관용구, 스타일, 데이터 구조 등에 대한 지식이 부족함을 나타냅니다.


2

여러 프로그래밍 언어를 배우는 것은 좋은 습관이며 오늘날에는 필요합니다. 여러 번 당신이 항상 모든 언어를 선택할 수있는 것은 아닙니다.

다른 언어가 어떻게 작동하는지 보는 이점은 프로그래머로서 도움이 될 것입니다. 당신이 구문 실수를하더라도 이따금 당신이 주변에 점프 할 때 경우 (예를 들어, 불평등을 검사한다 !=, ~=또는 <>). 언어 구문뿐만 아니라 일반적인 소프트웨어 공학 기술뿐만 아니라 언어 내 모범 사례를 배우는 데주의를 기울여야합니다. C를 배운 다음 C ++을 배운다면 C ++ 코드를 작성할 때 C ++ 코드 스타일 (몇몇 새로운 키워드를 가진 C가 아닌)인지 확인해야합니다. 즉, 여러 클래스 / 객체가 있으며 참조를 선호합니다 / raw 포인터 등의 스마트 포인터


1
If x <b> = </ b> 5부터 시작하지 마십시오. BASIC과 관련된 것을 유지 한 후 일주일 동안 모든 C 코드를 다시 확인해야합니다.
user606723

2

적어도 다른 프로그래밍 패러다임에서 언어를 공부하는 것이 좋습니다! 절차 적, 선언적, 기능적, 객체 지향적, 프로토 타입 및 동적 언어-각 프로그래밍 클래스는 문제를 구성하고 해결하는 방법에 대한 고유 한 통찰력을 제공합니다. 결국 가장 생산적이고 행복한 하나 이상의 패러다임을 발견하고 사용합니다.


2

기필코 아니다. 물론 다른 스타일의 언어를 배우고 싶어합니다. C #과 Java를 모두 배우면 어떤 식 으로든 마음을 넓힐 수 없지만 Java와 Haskell을 배우면됩니다.

7 주간 의 Book Seven Languages를 확인하십시오. Ruby, IO, Scala, Erlang, Prolog, Clojure 및 Haskell에 대한 소개를 안내합니다. 언어를 좋아한다면 그 책을 좋아할 것입니다.


1
Java 이후 C #을 학습하면 기능적 프로그래밍 (및 Java에없는 다른 기능) 덕분에 마음이 확장 될 수 있습니다. 그러나 그것이 단지 학습을위한 것이라면, Haskell은 순전히 기능적인면에서 훨씬 나을 것입니다.
svick

1

C와 C ++는 모바일 프로그래밍에 해를 끼치 지 않을 것입니다. Cocoa Touch 또는 Android NDK와 함께 사용할 수 있으며 때로는 성능을 위해 필요할 수도 있습니다. 또한 여러 플랫폼에서 실행되는 코드를 작성하기를 원할 때도 있습니다. 이 경우 타사 프레임 워크를 사용하지 않는다고 가정하면 C / C ++로 앱을 작성하고 필요한 기본 요소 (예 : OpenGL 컨텍스트를 얻는 유일한 방법)에 대해 플랫폼 별 래퍼로 컴파일 할 수 있습니다 iPhone에서는 기본 CAEAGLLayer 클래스를 사용합니다).

서랍에 도구가 많을수록 작업을 수행하는 데 필요한 옵션이 많아집니다. 다양한 종류의 작업을 전문으로 할 때 특정 작업을 선호합니다. UI 작업 만 수행하는 경우 C는 항상 좋아하지 않을 수 있습니다. 나는 내가하고 싶은 일에 대해 더 걱정하고 그런 일을하는 데 필요한 도구를 배웁니다.


1

실제로 프랑스어, 스페인어, 영어, 아랍어, 힌디어 및 중국어를 조금만 배우는 동시에 유용한 정보를 얻을 수 있습니다.


6
나는 당신이 그것에 대해 무엇을 말하려고했는지 전혀 모른다.
svick

우리 대부분은 모국어조차 "잘"알지 못한다는 것을 알고 있습니까?
Spidey

1

반대로, 나는 새로운 프로그래밍 언어를 배울 수 없을 때 아프다고 생각합니다. 시간 부족이나 다른 이유 때문일 수 있습니다. 내가 아는 한, 프로그래머 / 소프트웨어 개발자들은 언어에 도전하고 더 나은 것들 / 제품을 넣는 것을 좋아하며, 항상 똑같은 일을하고 있다고 느끼면 기분이 좋지 않습니다. 따라서 새로운 도전, 새로운 언어, 새로운 것을 배우고 더 많은 제품을 제공하는 새로운 것을 원합니다.

그래서 저는 새로운 언어, 새로운 라이브러리, 새로운 접근 방식, 새로운 기술을 따르는 것이 흥분된다고 생각합니다. 그러나 나는 그들 모두를 얻을 시간이 없으며 사람들은 항상 충분히 깊이 갈 수 없을 수도 있습니다. 따라서 더 배우지 않으면 아파요. 그러나 더 배우기 위해 아프지 않습니다.


0

나는 brian, FrustratedWithFormsDesign 및 SRKX에 동의하지만, 대학에서 여러 프로그래밍 언어 및 패러다임으로 지식을 넓히는 것이 좋은 전문가가되기에 바람직한 방법이라고 덧붙이고 싶습니다.

당신이 양성 프로그래머로서 대학에서 나온다는 것은 정말 불가능합니다. 프로그래밍은 어려운 기술이므로 좋은 프로그래머와 함께 일하고 좋은 교육 프로그램 및 지역 사회 모임에 참석하는 업계에서 수년이 필요하며 대부분 마스터 기술을 익힐 때까지 기술 문제에 직면하고 많은 실패를해야합니다. 그것.

우리 지역의 여러 문제를 해결하는 여러 패러다임, 여러 언어를 배우면 업계 전문가로 활동하면서 매일 스스로 공예를 배울 수있는 훌륭한 지원 기반을 제공 할 것입니다.

컴파일러 클래스에 참석할 수는 있지만 언어 디자이너, 제작자 또는 컴파일러 개발자가 될 수는 없습니다. 단계, 프로세스, 문제 및 기본 솔루션을 얻을 수 있으며,이 지식을 광범위한 문제에 적용 할 수있는 우위를 제공합니다.


0

짧은 대답 : 아니요.

긴 대답 : 많은 프로그래머 나 소프트웨어 엔지니어 또는 디자이너의 업무는 특정 언어와 독립적이지만 특정 방법론에 따라 크게 달라집니다. 예를 들어, 객체 지향 프로그래밍은 메모리 및 런타임에서 개체가 존재하는 위치, 액세스 가능한 방법 및 나중에 사용할 수있는 방법 (상속 및 캡슐화)에 관한 것입니다. Java는 원하는대로 상위 상속 된 클래스 Object를 갖는 Java와 지정하지 않은 C ++이없는 것과 같이 구현이 다릅니다.

많은 언어가 기능을 공유하고 많은 언어를 공유합니다. 물론 구문은 다르며 명령형 대 기능 형과 같은 완전히 다른 패러다임을 비교할 때 까다 롭습니다. 그러나 문자열 처리는 구문, 색인 및 변경 가능성에 대한 질문이 거의 없으면 어디를 가든 거의 동일합니다. 정적 타이핑이있는 모든 언어에는 일반적으로 캐스팅과 강제 방법이 있지만, 언제 어떻게 할 수 있는지는 언어 디자이너에게 달려 있습니다.

언어는 도구입니다. 벨트에 더 많은 도구를 넣고 있습니다. 그러나 도구는 도구를 사용하는 장인만큼 좋습니다.

자, 얼마나 많은 것을 배우는지는 개인적인 선택입니다. 나는 새로운 언어를 배우기 위해 결코 언어를 배우지 않을 것입니다. 새로운 언어를 배우기위한 선택은 코스 요구 사항 (작년에 단일 클래스에 대해 js, php 및 R을 선택해야 함), 기존 프로젝트 요구 사항 (작업의 90 %가 perl 6에서 완료된 경우) 고용 된 사람은 나머지 10 % 또는 응용 프로그램 별 혜택 (통계 분석을 위해 일부 달콤한 라이브러리와 결합 된 Java에 비해)입니다.

즉, 당신은 거기에 있고 가능한 것을 배우고 싶습니다. 우리 대학은이 주제 인 프로그래밍 언어 개념 에 관한 과정을 가르쳤습니다 . 이론적 인 컴퓨터 과학보다는 실용적으로 고려 될 수있는 기본 사항을 다루는 엄격한 수학이나 코딩 관련 과목이 아닌 광범위한 개요 과정이었습니다. 훌륭한 코스였으며 3-4 일이 아닌 1-2 년차에 제공되었던 것이기를 바랍니다. 텍스트는 프로그래밍 언어의 개념이었다 . 나가서이 책을 읽어야한다고 말하지는 않지만, 확실히 당신의 시야를 넓힐 것입니다.


0

글쎄, 내가 보는 방식은 언어의 모든 비트를 배울 필요가 없다는 것입니다. 그러나 다른 언어에서도 필요한 매우 기본적인 기능을 배우십시오.
예를 들어, OOPS 개념은 Java , PHP 또는 기타 언어와 같은 모든 언어에서 필요합니다.
메모리 할당 개념은 많은 프로그래밍 언어에서 매우 유사합니다. 이런 종류의 주제는 절대로 놓치지 마십시오.
각 언어마다 문법과 규칙이 있으며 프로그래밍 언어에도 동일하게 적용됩니다. 데니스 리치 자신도 그 사실을 받아 들였다. 그래서 그 언어의 문법을 배워야합니다.
그러나 내가 보는 방식은 두 프로그래밍 언어 사이에서 공통적이지 않은 요소를 배우는 것입니다. 어떤 언어가 무엇을 의미하는지 식별 할 수 있습니다. C ++ 은 모두 기본 OOP (Object Oriented Programming)이므로 OOP 개념을 배우면 PHP 및 Java에서도 볼 수있는 문법을 배울 수 있습니다.
내 학습 흐름이었다 :
기본 5 (부분) 비주얼 -> (부분) HTML 2.0 -> (부분) C는 -> (부분) CPP는 -> (부분) 자바
와는 내가 배운 C 언어 로 다시 다음 C ++는 다음 JAVA ( 이 시간을 완료하십시오) 그런 다음 JavaXML 에 익숙 하여 Android 로 옮겼습니다.(일부) 평균 시간에 배웠습니다. 첫 번째 시도는 덜 가르쳐 주었지만 두 번째 시도에서는 다음에 도움이 될 모든 것을 배우십시오.


이 게시물은 읽기 어렵습니다 (텍스트의 벽). 더 나은 형태로 편집 하시겠습니까 ?
gnat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.