다른 사람을 알고 있다면 어떻게 새로운 언어를 빨리 선택할 수 있습니까? [닫은]


14

Programmers.SE에서 계속 제기되는 질문 중 하나는 다른 언어를 알고있는 경우 (보통 많은 경험이나 교육을 통해) 특정 언어를 배우는 방법입니다.

그러나 어떤 경우에는 직무 나 개인 개발을 위해 빠르게 속도를 내거나 새로운 플랫폼을 확인해야 할 수도 있습니다.

경험상, 새로운 언어를 빨리 선택하기 위해 어떤 일반적인 전략을 사용 했습니까? 추울 때 집중하려는 언어의 특정 측면이 있습니까? 이 과정에서 어떤 유형 의 리소스가 도움이 되나요?


6
나는 그냥 그렇게 말할 것입니다. 공식 문서와 Google만이 필요한 리소스입니다.
Fosco

@Rein 일부 답변은 겹치지 만이 질문의 목표는 가능한 한 신속하고 효율적으로 언어 학습에 대한 정식 답변을 작성하는 것입니다. 다른 질문은 책 추천, 여기에 제시된 것과 비슷한 답변 및 비 학습 학습에 대한 일반적인 조언 (잠자리 직전 읽기, 언어 사양 읽기, 몇 가지 다른 기본 수준에 익숙해지기까지 몇 주가 소요됨)입니다. 언어).

질문 된 질문이 얼마나 유용한 지 잘 모르겠습니다. 여러 프로그래밍 언어를 알고 있다면 아마도 새로운 언어를 선택하는 방법을 배웠을 것입니다. 그렇지 않은 경우이 질문의 이점은 무엇입니까?
David Thornley

1
@David 저는 십여 개의 언어를 알고 있지만, 수업을 들거나 몇 달 동안 일한 후에 보통 배웠습니다. 그러나 다른 한편으로 새로운 직업을 위해 언어를 빨리 선택해야한다면 도움이되지 않습니다. 여러 언어를 배운 사람들이 빨리 배울 수있는 방법을 찾았다는 것은 의심 할 여지가 없습니다.

@ Mark Trapp : 감사합니다.
David Thornley

답변:


18

새로운 언어를 배우는 가장 좋은 방법은 독서뿐만 아니라 실천하는 것입니다. 따라서 새로운 언어를 배우고 싶거나 필요로 할 때 일반적으로 구문에 대한 참고서의 몇 장을 읽지 만 책을 읽거나 읽지 않고 바로 뛰어 들어 무언가를 만듭니다.

문제와 질문이 발생하면 답변이 발견되는 경우가 많습니다 (종종 인터넷에서). 또한, 이것이 구 버전 인 경우에도 대부분의 시간에 작업 제품을 생산하고 있기 때문에 작업 교육에서 매우 가치있는 이유라고 생각합니다.

나는 사람들이 관심있는 것을 생각하고 코드를 작성하거나 양식을 만드는 등의 작업을하도록 장려한다

나중에, 프로젝트 후에 프로젝트를 만든 후에는 좋은 참고서가이 시점에서 더 쉽게 이해할 수있는 세부 사항을 알려줄 것입니다.

또한 프로젝트는 일반적으로 간단한 "Hello World"앱에서 작지만 유용하지 않은 소규모 프로젝트부터 전체 앱에 이르기까지 소규모로 시작하여 복잡성이 커집니다. 내가 중점을 둔 언어의 어떤 측면에서, 그것은 언어의 적용되는 사용에 달려 있습니다-나는 모든 API 또는 프레임 워크를 배우지 않습니다 (예를 들어 .NET과 같이). 너무 오래 걸릴 것입니다. 핵심 구문을 배운 다음 거기서 확장하여 필요에 따라 각 확장을 조사합니다. CSS 나 XSLT와 같이 덜 모듈화 된 언어를 사용하여 가장 인기있는 구문을 먼저 배우고 필요에 따라 다른 것을 추가합니다.


"그냥해라"라고 말할 때, 가능한 한 효율적으로 집어 들기 위해 다이빙 할 때 집중하는 언어의 특정 측면이 있습니까? 아니면 "클릭"할 때까지 무작위 샘플 프로젝트를 계속하고 있습니까?

글쎄, 프로젝트는 일반적으로 간단한 "Hello World"앱에서 작지만 유용하지 않은 작은 프로젝트에 이르기까지 전체 앱에 이르기까지 소규모로 시작하고 복잡성이 커집니다. 내가 중점을 둔 언어의 어떤 측면에서, 그것은 언어의 적용되는 사용에 달려 있습니다-나는 모든 API 또는 프레임 워크를 배우지 않습니다 (예를 들어 .NET과 같이). 너무 오래 걸릴 것입니다. 핵심 구문을 배운 다음 거기서 확장하여 필요에 따라 각 확장을 조사합니다. CSS 나 XSLT와 같이 덜 모듈화 된 언어를 사용하여 가장 인기있는 구문을 먼저 배우고 필요에 따라 다른 것을 추가합니다.
jqueryrocks

2
답변에 다시 추가 할 수 있습니까? 좋은 정보입니다.

5

이것은 나를 위해 작동합니다 :

  1. 그것에 대해 읽으십시오.
  2. 그걸 써.
  3. 고토 1.

그것에 대한 읽기 단계에서는 언어에 대한 "the"참조를 선택하려고합니다. 예 : "C 프로그래밍 언어". 요약하여 요점을 정리하고 지식을 점진적으로 구축해야합니다. 그런 다음 덮개를 덮어서 읽습니다. 나는 빠른 독자이고이 첫 번째 글을 읽지 않습니다. 그런 다음 돌아가서 언어를 사용하려고 할 때 특정 지점을 참조합니다. 아마 더 많은 시간을 할애 할 것은 책 내부의 코드 예제입니다.

가장 먼저 필요한 것은 구문입니다. BEGIN인지 {인지 또는 들여 쓰기를 차단하는지 또는 변수를 선언하는 방법을 모르면 아무 것도 쓸 수 없습니다. 저자는 일반적으로 가장 중요한 부분을 먼저 소개하거나 언어의 기본 사용법을 다루는 자습서를 갖습니다. 일부 언어는 다른 언어와 매우 다르기 때문에보다 일반적인 지침을 제공하기가 어렵습니다. 다음은 언어에 대한 전반적인 느낌, 전반적인 철학, 언어의 맥락에서 문제 해결 방법에 관한 것입니다.

명심해야 할 또 다른 사항은 "사용하거나 잃는"개념입니다. 한동안 언어를 사용하지 않은 경우 속도를 회복하는 데 시간이 걸립니다 (시간이 더 오래 걸리지 만 경험이 줄어 듭니다). 언어 구문을 얻은 후에는 라이브러리 등에 대해 배워야합니다.

따라서 반복적 인 과정입니다. 각 반복에서 더 깊어집니다. 끝이 없습니다. 20 년 동안 언어를 사용한 후에도 여전히 배울 점이 있습니다.


"읽어보기"라는 말의 의미에 대해 더 자세히 설명해 주시겠습니까? 특히 새로운 언어를 배우기 시작할 때 무엇에 초점을 맞추고 있습니까?

@Mark-내 편집 내용보기 ... 원하는 내용입니까?
Guy Sirton

5

실제 프로젝트를 잡아라

내가 볼때는, 당신이 실제로 때 뭔가를 배울 것이 더 쉽습니다 필요가 그것을 배울 수 있습니다. 나를 위해 그것은 2 개월 기간으로 큰 프로젝트를 수락함으로써 위험에 처한 자바 스크립트였습니다. 이 프리랜서 프로젝트의 결과를 달성하기 위해 매일 매일 밤 저에게 있었고, 프로젝트는 1.5 개월이 걸렸습니다.

또한 실수로 SQL을 배운 다음 대학에서 학습을 마치고 더 쉬운 시간을 보냈습니다.

위험을 감수하고 싶지 않다면 ...

이전 요점의 실제 열쇠는 실제 문제를 해결하는 것입니다 ...하지만 스트레스를 받으면 더 잘 작동합니다 (스트레스가 좋으면 재미 있고 손상 될 수 있다고 생각합니다 ...). 그렇지 않다면, 관심있는 오픈 소스 프로젝트를 진행하고 배우고 싶은 언어를 사용하십시오. 코드가 짜증 나면 커뮤니티에 따라 피드백을받을 수 있습니다.

코드를 연구하는 것만으로도 발전 할 수 있습니다.

당신이 할 수있는 모든 참조를 가져옵니다

여기에는 여러 권의 책, 공식 문서 및 얻을 수있는 모든 참조가 포함됩니다. 그런 식으로, 당신은 다른 방식으로 같은 일을하는 방법을 알게 될 것입니다.

포럼, 메일 목록 및 여기와 같은 다른 커뮤니티도 참조로 계산됩니다.


나는 " 어려운 현실 문제를 잡아라"고 덧붙일 것 입니다. 첫 날에 목이 깊어 야하는 것을 선택하십시오. C #을 사용한 첫날은 동적으로 dll을로드하고 리플렉션을 사용하여 클래스를 얻는 방법과 그 목록에서 mehod 목록을 찾는 방법을 알아 냈습니다. 나는 .net 기술을 사용한 적이 없었습니다.
Bryan Oakley

2

새로운 언어를 배우는 방법은 많이 있지만 모두가 똑같이 효율적인 것은 아닙니다. 이 세 가지 지침이 가장 효과적이라는 것을 알았습니다.

모르는 것에 대한지도를 만드십시오

미리 배워야 할 것이 무엇인지 파악하십시오. 추상적 인 용어로 언어를 설명하는 개요 또는 일반 문서 소스를 찾으십시오. 그로부터, 당신은 일반적으로 언어에 관한 상당히 완전한 개요를 얻을 수 있습니다. 이 개요를 사용하여 모르지만 언어의 핵심으로 간주되는 영역을 강조 표시하십시오. 꼬리 재귀는 언어를 실제로 이해하기 위해 배우는 데 필요한 개념입니까? 언어가 문자열 조작을 전문으로하기 때문에 정규 표현식을 훨씬 잘 알아야 할 수도 있습니다. 또는 대수 개념에서 직접 언어 맵의 많은 개념이 표시되므로 대수학을 실제로 사용해야 할 수도 있습니다.

모르는 것을 배우는 데 도움이되는 좋은 자료를 얻으십시오

대수 공식에 대한 좋은 참고 자료를 원하거나 " Javascript, good parts " 를 구매하고 싶을 수도 있습니다 . 일부 학습 곡선의 경우이 작업은 이미 부분적으로 수행되었습니다. Java 배경에서 C #을 배우려는 경우 (또는 그 반대의 경우) 차이점을 설명하는 블로그 게시물 및 웹 사이트가 있으며 학습에 도움이되는 참조 / 자료가 포함되어 있습니다.

리소스가 참조 용이 아닌지 확인하십시오. 개념을 올바르게 학습했는지 평가하는 데 도움이되는 테스트 또는 연습이 포함되어 있는지 확인하십시오. 꼬리 재귀에 대해 읽는 것은 하나의 선택이며, 선택한 언어로 어떻게 구현되는지를 모색하는 것은 또 다른 것입니다.

진짜 무언가를 만드십시오

실질적인 목표를 염두에 두지 않으면 서 실제 학습을하는 것은 거의 불가능합니다. 이것은 응용 예술 분야에서 특히 그렇습니다. 이것은 프로그래밍 언어 사용입니다. 목표로 삼을 목표가 실제로 있는지 확인하십시오. 무언가를 만드는 것이 일반적으로 최선의 선택입니다.


1

프로그래밍 패러다임을 식별하십시오

나는 보통 언어의 주요 패러다임이 무엇인지 식별합니다. 패러다임에 따라 문제가 다르게 생각됩니다.

숙어 식별

모든 언어에는 숙어가 있습니다. 숙어의 크기와 범위는 코드를 구성하는 방법부터 특정 코드 조각까지 다양합니다. 항상 언어 관용구를 사용하십시오.

코드 작성

나는 보통 기능 코드를 작성한다. Primes Sieve에서 장난감 웹 앱에 이르는 모든 것. 내가 선택한 문제는 일반적으로 내가 사용하려는 언어에 따라 다릅니다.


1

그냥 뛰어 !!

언어가 매우 깊은 패러다임 전환을 초래하는 경우를 제외하고는 이미 여러 언어를 프로그래밍하고 알고있는 방법을 알고 있다고 생각합니다.

  • 당신을 운전할 애완 동물 프로젝트를 찾고
  • 사이드 프로그램에서 일부 퍼즐 꾼

학습, 실습, 적용 (만족할 때까지)

고전적인 99 프롤로그 퍼즐 (여기서는 스칼라99 퍼즐 ) 또는 프로젝트 오일러 (Project Euler) 는 작은 퍼즐 꾼을 다시 구현할 수있는 좋은 장소입니다. 또는 StackOverflow를 숨기고 대상 언어로 멋진 답변을 다시 작성하여 한 줄씩 다시 쓰지 말고 새로운 언어의 본질을 포착하는 것을 시도하십시오.

퍼즐 러와 함께 배우고, 측면에서 블로그와 에세이를 읽고, 언어에 대해 더 깊이 이해하고, 새로운 커뮤니티의 툴링과 거룩한 전쟁에 대해 느끼고, 새로운 발견 된 지식과 기술을 적용하기위한 테스트 프로젝트를 작성하십시오. 어떤 도로 범프가 있는지 확인하십시오.

공동체에 대해 말하기 ...

자신을 공유하고 노출 시키십시오. (그렇지는 않지만)

어쩌면 로컬 사용자 그룹을 방문하고 코딩 할 친구를 찾고 (건설적인 비판을 받고 특정 사고 방식에 빠지지 않기 위해) AST에 관한 이상한 단어를 놓는 무서운 IRC 채널 또는 메일 목록에 가입하고 싶을 수도 있습니다. 모나드가 모나드가 아닌 방법이상한 소녀를 만난 후에는 다시 갈 수없는 방법에 대한 나무와 철학적 조를 쓰십시오 .


0

나는 이것이 불충분하게 들린다는 것을 알고 있지만 어리석은 경우에도 무언가를 코딩하기 시작 하고이 패턴을 따르는 것에 많은 Google을 사용합니다.

[다른 언어]에서 [한 언어로 된 것]을 어떻게합니까

단어가 일반적인 경우 인용 리터럴을 사용하십시오.

더 이상 답변을 찾을 수없는 유일한 시간은 왜 그것을 할 수 없는지를 설명하는 페이지를 찾을 때입니다.


0

언어를 사용하는 것에 대한 구체적인 제안으로 :

버그 수정

  1. 대상 언어로 공개 버그 추적기, 적당히 활발한 개발 및 적절한 테스트 스위트를 갖춘 흥미로운 오픈 소스 프로젝트를 찾으십시오.
  2. 고칠 버그를 고르십시오. 실제로 프로그램을 사용할 때 성가신 버그를 선택하십시오.
  3. 프로그램이 왜 버그가있는 행동을 보이는지 파악하십시오.
  4. 문제를 해결하기 위해 테스트와 코드를 작성하십시오.
  5. 업스트림 패치를 제출하십시오.
  6. 업스트림 개발자가 만족할 때까지 패치를 수정하십시오.
  7. 1 단계 또는 2 단계로 돌아가십시오.

이 과정은 또 다른 완구 프로그램을 작성하는 것보다 더 이행하는 경향이 있지만, 자신의 전체 프로젝트를 처음부터 시작하는 것보다 훨씬 쉽습니다. 자연스런 맥락에서 일부 언어 관용구에 익숙해지고 좋은 코드가 어떤 것인지에 대한 누군가의 생각이 있습니다.

반면에, 특히 불쾌한 버그를 선택하거나 개발자가 이유를 제대로 설명하지 않고 패치를 거부하면 매우 실망 스러울 수 있습니다.

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