매년 새로운 프로그래밍 언어를 배우려면, 그 목록은 무엇입니까? [닫은]


19

장 하나에서 "실용주의 프로그래머" 최초의 학습 목표는 다음과 같습니다

매년 적어도 하나의 새로운 언어를 배우십시오. 언어마다 다른 방식으로 같은 문제를 해결합니다. 여러 가지 접근 방식을 배움으로써 사고를 넓히고 게터가 틀에 박힌 것을 피할 수 있습니다. [...]

경력을 통해이를 달성하기 위해 언어 목록이 상당히 길어질 수 있습니다 (특히 경영진에 "진보"하지 않으려는 경우). 분명히 프로그래머 (또는 어떤 형태의) 교육이라도 상업적으로 유용한 핵심 언어 (C, C ++, Ruby, Python, JavaScript, C #, Java, VB, .. ). 또한 공식 또는 비공식 학습 프로그램은 기능적 접근 방식을 다루었을 가능성이 높습니다 (Haskell, LISP 또는 ML 파생 언어 등).

그러나 일단 그 목록의 합당한 부분 집합이 익히면 다음은 무엇 이고 왜 그런가 ?


3
에서 대답 나는 당신의 능력을 확대 연구 할 수있는 언어 패러다임의 일부를 나열합니다. 언어에 중점을 두지 않고 이러한 모든 패러다임을 배우려고 노력할 것이므로 현재 언어에서 사용하는 모든 언어를 선택하고 사용하는 언어와 다른 언어를 가진 언어를 선택하십시오. C #에서 시작하여 Java에서 시작하는 것이별로 중요하지 않습니다. 처음에는 더 다양 화하십시오. 모든 기본 유형을 다룬 후에는 다른 공통 언어를 선택할 수 있습니다.
Simon P Stevens

@Simon : 여기에 답을 해보지 않겠습니까?
Richard

1
Java에서 C #으로가는 방법은 많이 배울 것이지만 그 반대는 아닙니다.
Casebash

@Richard. 나는 그것이 완전한 답을 정당화한다고 생각하지 않았다. 나는 단지 내가 당신에게 내가 다른 곳에서 쓴 관련을 언급하고 있었다.
Simon P Stevens

1
일년에 한 언어를 배우는 대부분의 사람들은 몇 년 동안 몇 가지에 집중할 때까지 "모든 거래의 잭이지만 아무도 마스터하지"않을 것입니다. 많은 경험을 바탕으로 개발자의 1 %-5 %를 제외하고 '풀 스택'프로그래머의 개념이 잘못되었다고 생각합니다. 내가 아는 대부분의 하드 코어 백엔드 사람들은 훌륭한 프론트 엔드 기술을 가지고 있지 않으며 그 반대도 마찬가지입니다.
junky

답변:


19

프로그래밍 언어를 사용해 본 적이없는 틈새를 채우는 고유 한 프로그래밍 언어에 대한 인터프리터 또는 컴파일러를 작성하는 것이 흥미롭고 매년 보내십시오. 매년 전년도에 작성한 언어를 사용하여 다음 컴파일러 / 통역사를 작성하십시오.


7
싸인 부탁드립니다. :-)
Christian Davén

1
+1 아마도 유머러스 한 의미 일지라도 훌륭한 답변입니다.
Joe D

1
@Joe D 완전히 유머러스 한 의미는 아닙니다. 이 작업을 수행 할 수 있으면 모든 틈새를 마스터 한 것입니다.
대안

완전히 유머러스 한 방식으로 그것을 의미하지 않기 위해 -1. (우리는 반 버려진 언어 / 구현이 충분하지 않은 것처럼)
ZJR

2
@ZJR 99 % 유머, 1 % 비 유머가 나쁩니 까? 몬. 또한 댓글을 기반으로 답을 내리는 이유는 무엇입니까?
대안

13

"마진 관련성"을 최대화해야합니다. 즉, 아직 강하지 않은 새로운 영역에 항상 투자하십시오. 프로그래밍 언어와 개념을 모두 바꿉니다 . 객체 지향 언어를 모르는 경우 Java 및 최대 절전 모드와 같은 일부 고도의 프레임 워크를 사용해보십시오. 그런 다음 일부 시스템 관리 항목을 Python 또는 Perl과 같은 스크립트 언어로 작성하십시오. 그런 다음 고성능 멀티 스레드 서버 코드를 작성하여 C 또는 C ++에서 일부 저수준 기술을 익 힙니다. 함수형 프로그래밍을 모르는 경우 Peg Solitaire 해결 과 같은 일부 그래프 이론 문제로 Haskell을 사용해보십시오 . 습득 또는 특수 목적을 달성 할 때까지 배우는 모든 것이 즉각적인 시장 가치를 갖도록하는 것이 매우 실현 가능합니다. 같은 개체 기능 보안 ,프롤로그 또는 VHDL .

그런데 좋은 운동! 이렇게하면 플랫폼 별 기술이 너무 적지 않고 측면에서 생각하고 언어에 구애받지 않는 용어로 문제를 구상하게됩니다. 예를 들어, C ++과 Python 간의 가상 메소드 디스패치의 유사점과 차이점을 마스터하면 다른 언어에 대해서는 즉시 "얻을 것"입니다.


9

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

다른 답변 중 일부가 언급했듯이, 매년 새로운 언어를 배우는 이유는 무엇입니까? 프로그래머로서의 능력을 확장하는 것입니다. 어떻게 요? 이미 알고있는 언어와 다른 패러다임을 가진 언어를 배우고 이미 알고있는 패러다임을 활용하면 다음에 배울 언어가 결정됩니다.

이 패러다임은 무엇입니까? 고급 개념의 개념, 기법 및 컴퓨터 프로그래밍 모델은 그래픽 맵으로 훌륭한 개요를 제공합니다 .

따라서 C와 같은 명령형 언어 만 알고 있다면 Scheme / Lisp를 배우는 것이 매우 유용합니다. 명령형 및 기능적 언어를 이미 알고 있다면 Prolog 학습 등이 유용합니다.

여러 언어와 패러다임을 가르치려는 최근의 책 은 7 주간의 7 개 언어입니다 . 물론, 일주일의 공부 후에 각 언어에 유창하지는 않지만, 접근 가능한 실무자 중심의 다중 패러다임 관점을 제공하는 것 같습니다.

또 다른 패러다임을 겪을 때 그것은 진정으로 선 순간입니다. 명령형에서 함수형 프로그래밍으로 갈수록 컴퓨팅 세계를 완전히 새로운 시각으로 볼 수있었습니다. 행복한 학습!


그리고 언어는 당신이 표현할 수있는 것에 의해서가 아니라 당신의 생각에 영향을 미칩니다.
Florian F

9

C-시스템 프로그래밍 언어 인 "모든 것을 기본으로하는"필수 요소

Lisp (Scheme)-위대한 해커가 멋지다고 생각하는 이상하지만 믿을 수 없을만큼 강력한 언어

스몰 토크-이것이 OO가 의도 한 것이기 때문에

배우를 이해하기위한 얼랭 (또는 다른 배우 언어)

Haskell-Monads 이해

Javascript-브라우저를 스크립팅하는 데있어 어디에서나 필요하기 때문에

Python / Ruby / Perl 중 하나입니다 (그러나 실제로는 중요하지 않습니다). 따라서 우수한 라이브러리 지원 기능을 갖춘 인기 있고 현대적인 고급 스크립팅 언어가 어떤 느낌인지 알고 있습니다

SQL-관계형 데이터베이스와 대화 할 수 있습니다

프롤로그-당신은 여전히 ​​당신의 마음을 날려야하기 때문에


2
내가 Haskell을 배운 이유는 기능 언어를 배우고 싶었 기 때문입니다 (이전에 알고 있던 모든 절차 언어와는 반대 임). 내가 Haskell을 좋아하는 이유는 언어 수준이 높고 라이브러리 지원이 우수하고 빠르기 때문입니다 (C보다 약 50 % 빠르지 만 수행중인 작업에 따라 다름). 또한 많은 코드를 작성할 수 있으며 컴파일 또는 컴파일 후 첫 번째 또는 두 번째로 모두 작동합니다.
Joey Adams

Perl, Python 또는 Ruby를 배우는 것이 중요합니다. 예를 들어, 파이썬에는 루비에는없는 목록 이해가 있고, 루비에는 파이썬에는없는 모듈이 있습니다. 두 가지 결과를 어느 한 언어로 복제 할 수 있지만, 두 가지 중 하나를 배우면 매우 다른 방식으로 생각에 영향을 미칩니다.
철학 :

1
프롤로그-당신은 여전히 ​​당신의 마음을 날려 버릴 필요가 있기 때문에-최고의 논평 +1
Zachary K

1
저는 학습 haskell의 주요 이점이 반드시 모나드 추상화를 파악하는 것이 아니라 REAL 강력하고 강력한 유형 시스템의 이점을 배우는 것입니다. "정적 유형 시스템"에 대한 아이디어가 자바와 같다면, 하스켈은 숨을 쉴 것이다.
sara

4
  • Go (전통적이지 않은 동시성 및 개념을 잘 지원하는 새로운 시스템 레벨 프로그래밍 언어)
  • 루아 (OOP를 가능하게하는 스크립팅 언어 단순, 표현, 극도로 유연하고 균형 잡힌 패러다임)
  • D (C / C ++가 올바르게 수행됨)
  • Groovy (Java 세계의 표현성 및 메타 프로그래밍)
  • 에펠 (계약 별 설계 및 OOP에 대한 다른 접근 방식)
  • 프롤로그 (THE 논리 프로그래밍 언어)

1
누군가 이것을 왜 배워야합니까? ( 흥미로운 점은 여기에, 독특한 프로그래밍 언어가 거의 없다는 것입니다. 모든 패러다임이 두 번 이상 구현되었습니다.)
Richard

DC 라고 생각 합니다. 개인적으로 C를 사용할 때 OOP 추상화를 전혀 원하지 않는 저수준의 물건에 주로 사용합니다.
Jonas

@Jonas : 우리는 여전히 간단한 언어가 필요하지만이 언어는 오지 않습니다 .D는 명령 방식으로 훌륭하게 사용될 수 있습니다. 당신에게 D2는 더 기능적이며, 완료되면 주로 명령적인 언어에 대한 패러다임을 가장 잘 구현할 수 있습니다.
Maniero

옳은 것은 주관적이다. 나에게 Erlang 은 아주 작고 간단한 언어입니다. 누락 된 부분은 훌륭한 GUI 프레임 워크이며 복잡한 시스템을 사용하는 경우 정적 유형 언어를 더 원할 수 있습니다.
Jonas

@Jonas : Erlang은 좋은 언어이지만 C / C ++가 아니고 완전히 다른 것입니다.
Maniero

2

1) 프롤로그 : 지금까지 사용했던 모든 필수 언어와는 완전히 다르며 문제에 대한 생각 방식이 바뀔 것입니다.

2) Lisp : 그것 없이는 Vi를 사용할 수도 있습니다.

3) Erlang : 다시, 그것은 완전히 다르다, 또한, 그것은 꽤 유행 보인다.

4) Turing Tarpit (예 : Brainfuck)의 무언가, 아마도 컴파일러 또는 해석기를 작성하십시오. 나는 이것을 할 이유를 생각할 수 없지만 좋은 생각 인 것 같습니다.


1
"없이는 Vi를 사용할 수도 있습니다." 나는 아무도 그것을 선택하지 않은 것에 놀랐다 :)
Gauthier

나는 vi를 사용한다! (잘 gvim)
Zachary K


1

나는 새로운 언어를 배우는 것이 좋고 (오랫동안의 경력을 통해 명령을받는 것이 좋다) 동의하지만, 1 년에 1 년은 처음 5-10 년을 지나친 것으로 생각합니다. 오히려 내가 아는 것은 이미 알고있는 언어에 대해 새로운 것을 배우는이 수준의 경험을 가진 사람입니다. 어느 시점에서 지식의 폭과 깊이가 필요합니다. 따라서 12 개 언어로 된 대형 구문 인 If 구문을 작성할 수 있습니다. 차라리 실제로 파고 들어 최소한 한 가지에 전문가가되는 사람을보고 싶습니다. 그리고 다음 몇 년 동안 다른 일에 전문가가되었습니다. 30 년 이상 경력을 쌓은 사람은 많은 것들의 기본 사항뿐만 아니라 깊이있는 지식을 가진 사람을 원합니다.

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