새로운 프로그래밍 언어 학습에 관하여

내가 직업 생활을 시작했을 때'21일 안에 자습C'와'7일 안에 자바를 배운다'같은 책들이 인기가 많았다.사람들이 이런 책을 읽을 수 있다는 것은 나에게 깊은 인상을 남겼다.나는 내가 이렇게 짧은 시간 안에 새로운 언어를 배울 수 있을 것이라고 생각해 본 적이 없다.시간은 이미 지나갔다.나는 이런 상황에서 나 혼자만이 아니라는 것을 점차 깨달았다.이 책들은 마침 새로운 프로그래밍 언어를 배우는 정의를 넓혔다. 나는 매우 예의 바르다.이 문장에서 나는 학습에 대한 나의 정의를 상세하게 소개하고 싶다.

니콜라스 프랭클
@ 니콜라스 프랭클

- X 언어 문법 학습: 일 - X 년으로 관용 코드 작성 - 가장 유용한 API 및 라이브러리 이해: 수명
18:2017년 4월 30일 오후 54시

무엇이 새로운 언어를 정의했습니까?


첫 번째 프로그래밍 언어를 배우는 것은 어려운 도전이다.당신은 조건 평가, 순환 등 다양한 개념을 많이 배워야 합니다.!다음은 한 사람이 적어도 한 가지 언어를 알고 있다는 것을 고려해 봅시다.
문제는 이미 알고 있는 언어에 비해 새로운 언어가 얼마나 비슷한가 하는 것이다.위키백과에는 [초보적인 비교] [https://en.wikipedia.org/wiki/Comparison_of_programming_languages], 구체적인 기준이 있다.그러나 유사성에는 부족하다.나는 또한 나의 경험에 근거하여 약간의 힌트를 제공할 수 있다.
나의 학습 과정은 C와 C++를 포함한다.전반적으로 말하면 모두 몇 시간이 걸린다.이것은 결코 많지 않지만, 나에게 기본 개념, 예를 들어 지침을 가르쳐 주기에 충분하다.내가 일을 위해 자바를 배워야 할 때, 나는 문법 자체가 매우 비슷하다는 것을 똑똑히 기억한다.나는 다른 메모리 관리 시스템을 개의치 않는다.
마찬가지로 JavaScript를 작성해야 할 때 문법도 익숙합니다.비록 유형, 유형 등이 현저히 부족하지만 순환과 조건 평가는 같다.
내가 새로운 언어를 배우려고 시도했을 때 겪은 첫 번째 어려움은 Scala였다.언어의 일부 특징은 나에게 있어서 완전히 새로운 것이다. 예를 들어 유형 추정, 변이, 이해와 은밀한 매개 변수이다.나는 당시에 마지막 두 개가 매우 이상하다고 느꼈다.
주의, 비록 나는 지금Python의 이해를 이해했지만, 나는 여전히 스텔스 파라미터가 나쁜 생각이라고 생각한다.
Scala와 Java를 보면 Kotlin은 매우 간단한 길이다.그러나 내 입장에서 볼 때, 나는 모든 이 언어들이 많든 적든 관련이 있다고 생각한다.
그러나 내가 Clojure를 배우려 했을 때, 이런 간단해 보이는 연승은 멈추었다.

마하무드 벤 하신
@b\u e\u n\u a\u s

(나는) (일부) Clojure를 배우고 싶지만, [빠르게] (아니오) 나에게 어울린다는 것을 깨달았다.)
2020년 3월 30일 오전 00:12
Clojure는 LISP와 유사한 다른 구문을 가지고 있습니다. 이 구문은 function(param1, param2)가 아니라 (function param1 param2) 입니다.오랫동안 나는 링크를 해 왔다./focus/learning-clojure/[그것을 배우려고 시도했다^]. 그러나 오늘날까지 나는 자질구레한 clojure 코드를 읽을 수 없다.
한 사람이 특정한 시간 안에 언어를 배울 수 있다고 주장하는 것은 잘못된 것이다. 왜냐하면 이것은 당신이 어디서부터 시작하느냐에 달려 있기 때문이다.

뭐 공부 해요?


상술한 책 중의 또 다른 문제는 독자가 무엇을 배울 것인가이다.
지난 절에서 나는 문법에 관한 내용을 많이 썼다.이를 감안하면 C, JavaScript, Scala와 Java는 매우 비슷하다.문법을 배우는 것은 단지 며칠의 일이다.하지만 더 많아요.
이외에도 라이브러리에 대한 이해가 필요합니다. 모든 비평범한 응용 프로그램은 날짜 형식, HTTP 클라이언트 등 많은 공공 유틸리티를 필요로 합니다. 언어 문법은 그 중 일부 유틸리티를 제공할 수 있지만 API는 나머지 부분을 처리할 수 있습니다.이 API는 기존 JavaHttpClient, 표준 라이브러리 Kotlin의 stdlib 또는 제3자 라이브러리에서 제공할 수 있습니다.
언어의 생태계에 따라 약간의 차이가 존재한다.Java는 C보다 더 많은 타사 라이브러리 선택을 제공합니다.Java보다 JavaScript에서 변경이 잦습니다.
어쨌든 초보자로서 새로운 언어를 배우는 것은 다음과 같다.
  • API 이해
  • 어떤 기능을 제공하는지
  • 각자의 장단점 파악
  • 자신에게 가장 적합한 항목을 선택한 사람
  • 다음 차원은 더욱 복잡하다.Java가 기업계에서 유행하기 시작했을 때 일부 C 개발자들은 이 비약을 시작했다.코드 세션을 읽으면 작성자가 새로운 Java 개발자인지 이전의 C 개발자인지 확인할 수 있습니다.새 대사의 괄호가 단서다.
    그러나 최종 단서는 메서드가 끝날 때 로컬 변수에 대한 참조를 취소하는 것입니다.
    public void foo() {
      Object foo = new Object();      <1>
      // Work with foo
      foo = null;                     <2>
    }
    
  • 을(를) 할당합니다.
  • 더 이상 인용하지 않음foo 실례
  • 사람들은 언어 디자이너의 의도에 따라 코드를 작성하려고 노력해야 한다.상술한 코드 세그먼트는 결코 그렇지 않다.관용 방식 코드를 어떻게 작성하는지 배우는 것은 문법을 배우는 것보다 훨씬 복잡하다.이것은 두세 주가 아니라 대량의 연습이 필요하다.
    그 밖에 모든 언어 주위에는 도구 생태계가 있다.'진짜 개발자는 디버깅을 하지 않는다'고 하지만 이것은 내가 새로운 언어를 사용할 때 배운 첫 번째 일이다.JVM 언어와 클라이언트 JavaScript에서 이 작업을 수행하는 방법을 알고 있습니다.내 코드에 인쇄 문장을 추가하지 않는 한 디버깅을 배우기 위해 파이썬 코드를 충분히 작성하지 못했다.
    그 밖에 도구는 디버깅에 그치지 않는다.포함 및 이에 국한되지 않음:
  • 이 언어 개발에 가장 적합한 IDE는 무엇입니까?익숙하지 않은 IDE를 사용하는 데는 확실히 시간이 오래 걸린다.
  • 메모리를 방출해야 합니까, 아니면 이 언어에 쓰레기 수집 도구가 있습니까?
  • 코드는 어떻게 실행합니까?실행할 때 직접 해석하시겠습니까? 이 파일을 이 컴퓨터의 실행 가능한 파일로 컴파일하시겠습니까? 아니면 중간에 JVM이나 Microsoft의 바이트 코드 같은 것이 있습니까?
  • 한 언어를 배우는 데는 여러 가지 측면이 있다.
  • 구문
  • 도서관 부분
  • 관용 코드 작성
  • 주위의 생태계.
  • 어떤 기능 수준입니까?


    마지막 문제는 한 사람이 도달해야 할 기술 수준에 관한 것이다.2년 전, 나는 Python Flask 응용 프로그램에 작지만 중요한 업데이트를 해야만 했다.평생 파이썬을 한 번 만났고 15년 전이었지만 구글 검색 덕분에 제 목표를 이룰 수 있었습니다.복습 과정에서 제 동료는 상투적인Python 습어를 사용하고 linter의 경고를 복구해 달라고 했습니다.파이썬 알아요?하나도 안 그래.그럼에도 불구하고, 나는 몇 주 내에 학습 없이 기존의 응용 프로그램을 업데이트하려고 노력했다.
    이제 다른 배경을 상상해 보세요.작업은 처음부터 새로운 응용 프로그램을 만드는 것입니다.이런 상황에서 공부는 책이든 아니든 몇 주 이상 걸릴 수 있다.
    몇 주 동안 언어를 배우면 새로운 응용 프로그램을 개발하기 시작할 수 없다.

    결론


    현실에 맞지 않는 시간 범위 내에서 새로운 프로그래밍 언어를 배우는 것을 선전하는 책들을 조심해라.너는 기존 지식의 기초 위에서 공부한다.이것은 수년의 투자가 필요할 것이다.너는 다른 문법이 배운 문법과 비슷한 언어를 이해함으로써 지속 시간을 단축시킬 수 있을 것이다.많지 않다.
    2020년 10월 4일 기준A Java Geek

    좋은 웹페이지 즐겨찾기