배우기 위해“잘못된”언어를 선택하는 데 왜 많은 두려움이있는 것 같습니까? [닫은]


28

어쩌면 그저 나 일지 모르지만 현재 CS 학생으로서이 사이트와 다른 곳에서 "x에 어떤 언어를 사용해야합니까?" "언어를 계속 사용하는 사람이 있습니까?" 내 첫 번째 CS 수업은 Scheme에서 가르쳤으며, 실수하지 않으면 (적어도 Java, PHP, Python 등의 언어와 비교하여) 널리 사용되지 않습니다. 많은 반 친구들이 다시는 사용할 필요가없는 언어를 배워야한다는 생각에 헛소리를했지만, 덜 대중적인 언어를 배우는 것에 대한 두려움이 어디에서 왔는지 잘 모르겠습니다. 아니오, 나는 어떤 직업에 있어도 Scheme을 사용할 수는 없지만, 그것을 사용하는 법을 배운 것을 후회하지는 않을 것입니다. 이번 학기에는 검색 엔진 수업을 듣습니다. 이것은 Perl에서 이루어졌으며 다시 한 번 나는 언어 선택에 대해 불평하는 친구들을보고 있습니다. 나는 좋아하는 언어를 가지고 있고 다른 언어를 싫어하는 것을 이해할 수 있지만 어떤 사람들은 왜 처음부터 그것을 배우는 데 어려움을 겪습니까? 정말로 "틀린"언어를 배울 수 있습니까? Scheme 또는 Haskell과 같은 좋은 정신 운동을 배우지 않으면 다른 방법으로 문제를 해결하는 데 도움이됩니까?


흥미롭게도, 처음 2 년간의 CS 교육은 C #과 Java에만 관여했으며, 첫 번째 협동 배치에서 사용한 결과가 무엇일까요? 네 글자로 "P"로 시작합니다.
아논.

6
@ Shewbox, 당신 말이 맞아요, 틀렸어요. 교차 학습의 이점을 얻습니다. 이야기의 끝.
ocodo

7
그들은 채용 관리자와 함께 SEO (검색 엔진 최적화)를하고 있습니다.
rwong 2019

1
@rwong : 불행히도 우리 중 일부는 "XXX를 한 번 사용했는데 다시는 만지지 않을 것"이라고 말하지 않는 어려운 방법을 배워야했습니다. 일부 리큐 터는 키워드와 일치하는 스팸이기 때문입니다.

1
@JB : 99 %의 사람들이 다른 사람들이 키스하는 것처럼 보이게합니다.
Michael K

답변:


27

CS 학위의 요점은 C #과 Java를 가르치는 것이 아니라 스스로 배울 수 있습니다. 프로그래밍과 계산에 대해 알려줍니다. 언어는 단지 세부 사항입니다. 프로그래밍 분야에서 많은 언어를 사용하게됩니다. 오늘날은 Java 또는 C # 일 수 있지만 지금부터 10 ~ 15 년이지나 Erlang 또는 아직 발명되지 않은 것일 수 있습니다. 언어를 배우는 것보다 다른 프로그래밍 스타일과 문제를 공격하는 다른 방법을 배우는 것이 훨씬 중요합니다.


정확히-저의 학위는 Java 또는 C #은 물론 C ++보다 오래되었습니다. 우리는 주로 파스칼에서 배웠지 만 초기 단계부터 다양한 언어로 문제를 겪고 있었으며 두 번째 해에는 "이달의 언어"에 해당하는 과정을 겪었습니다. 비록 지금 어떤 시뮬 라 코드도 작성할 수있는 기회는 없지만 – 대부분 OOP 때문에 가르쳐주었습니다 (당시에는 몰랐지만)
Murph

17

다른 언어를 배우기 전까지는 모국어가 생각하는 방식을 결정하기 때문입니다.

만약 당신이 계산적으로 문맹자 (처음 프로그래머)이고 배우는 첫 번째 언어가 너무 "기본적"이라면, 객체 지향, 다중 디스패치, 상속, 퍼스트 클래스 함수, 메타 프로그래밍 등과 같은 고차 개념을 알지 못할 수 있습니다.

당신이 배우는 첫 번째 언어는 일반적으로 컴퓨터 사고에 대한 첫 번째 길과 관련이 있습니다. 누군가가 당신에게 A, B 및 C 기호로 구성되기 전의 세계인 Jimmy에게 말하면, 당신의 모든 생각은 A, B 및 C와 관련이있을 것입니다. 언젠가는 X를 알지 못하는 것에 대한 멋진 머저리 비웃음 , Y 및 Z 개념. ABC만을 아는 방법은 없습니다.

누군가의 모국어를 가장 염려하는 사람들은 아마도 어둠을 겪고있는 계몽 된 프로그래머 일 것입니다. 오, 이제 일급 함수가 무엇인지 알고 있습니다. 남자, 나는 2 년 전에 상속과 의존성 주입에 대해 알고 있었으면 좋겠다!

첫 번째 언어는 후속 언어에 대한 태도만큼 중요하지 않습니다. BASIC / C / Perl / PHP / etc 이외의 세계가 있다는 것을 당신이 훨씬 더 잘 볼 수 있다면, 당신은 게임보다 훨씬 앞서 있습니다. 그렇기 때문에 많은 사람들이 기능적 언어에 열광하는 이유가 있습니다.


1
그러나 우리 모두는 이러한 기본 개념부터 시작해야합니다. 누군가가 새로운 개념을 배우면 (디자인 패턴을 예로 들어) 어느 곳에서나 그것을 사용하는 경향이 있습니다 . 처음 5 년 동안 기본 학습 프로그램 구조와 프로그래머처럼 생각하는 방법을 프로그래밍하지 않았다면 OO에 도달했을 때 나는 집중할 수 없었던 절차 적 부분을 배우느라 너무 바빴을 것입니다 OO 부분. 그 존재는 '첫 번째 언어가 이후의 언어에 관해서 당신의 태도만큼 중요하지 않다', +1 말했다 와 개념 .
Michael K

나는 그것을 추가하는 것에 대해 생각했다. 나는 기본 언어가 그들의 자리를 가지고 있지 않다고 전혀 말하지 않았다. 실제로, 그들은 초기 학습 단계에서 그렇게합니다. 난 그냥 언급하지 않았습니다.
Mark Canlas

마이클, 당신의 편집은 훨씬 더 고급 스럽습니다.
Mark Canlas

OP의 급우들에 대해 Scheme이 배우기 어려운 언어라면 걱정하지 않아도 될 것입니다. :)
David Moles

일부 언어는 실제로는 단순하지만 (C 파생) 복잡한 구문을 가지고 있고, 다른 언어는 실제로는 복잡하지만 (Groovy) 간단한 구문을 가지고 있습니다. 즉, C / C ++ 또는 Objective-C에서 사물은 모든 활성 코드 범위 내에서 매우 선언적이고 절차 적이지만 Groovy와 같은 것에는 구문 설탕으로 "숨겨진"많은 것들이 있습니다. 초보자에게 제 제안은 일반적으로 컴퓨터가 실제로 작동하는 방식을 더 밀접하게 반영하는 어려운 구문 언어를 사용하는 것입니다. 그 지식은 다른 언어의 사용을 단순화하기 때문입니다.
dcgregorya

11

제가 대학에있을 때 저는 경제학을 전공하기로 결정한 많은 사람들이 특히 관심이 있거나 열정적 인 것이 아니라 좋은 직업을 얻게 될 것이라고 생각했기 때문에 많은 사람들을 알고있었습니다.

문학에 대한 나의 초기 관심의 부작용으로 취한 수업이 저를 사로 잡았 기 때문에 저는 동아시아 연구를 전공했습니다. 교환 프로그램을하고 싶었 기 때문에 독일에갔습니다. 대부분의 시간을 일본학과 신학 프로그램에 보냈습니다. 제가 가장 관심있는 것을 공부했습니다. 어린 시절에 이미 상당한 양의 해킹을 받았기 때문에 대학을 사용하여 컴퓨터 관련 문제를 연구하지 않기로 결정했지만 인터넷을 프로그래밍하고 이해하는 데 시간을 보냈으며, 아마도 아마도 , 나는 그 모든 관심사를 결합한 좋은 직업을 얻었습니다.

차이는 커리어 스트와 학습을 위해 배우는 사람의 차이입니다. Careerist는 그들이 잘못된 것을 연구했을 것이고, 그것이 나를 직업으로 착륙시키는 것이 옳지 않기 때문에 그것을 후회할 것이라고 걱정합니다. 학습을 위해 배우는 사람은 비교적 관리 가능한 압력으로 모든 종류의 분야를 탐험하는 데 4 년이 걸린다는 것을 알고 있습니다. 전문가는 학교의 직업이 그들에게 무언가를 가르치는 것이라고 생각합니다. 학습자는 익숙하지 않은 영역에 도달했을 때 상황을 파악하고 자신에게 적합한 직업을 찾을 가능성이 높습니다. Careerist는 3 단계 회사에서 2 차 회계사를 작성하고 청구서를 지불하며 상사를 원망합니다.

그렇습니다. 이들은 원형이며, 모든 사람들은 실용주의와 열정의 균형을 이루어야합니다. 그러나 그것은 근본적인 차이입니다. 물론, 프로그래머 미학을 가진 사람도 그 질문을 할 수 있지만, "내 시간을 가장 낭비하는 사람은 누구인가"라는 맥락에서 더 많은 질문이있을 수 있습니다. 그러나 내 추측은 커리어 스트가 학습자보다 실수하는 것에 대해 훨씬 더 두려워하기 때문에 커리어리스트가 그 질문을 묻는 충동 적 충동이라고 생각하며, 학습자가 실수를 두려워하지 않기 때문에 학습자는 일반적으로 더 나은 프로그래머를 만듭니다. 프로그래머와 마찬가지로 학습자는 기술 추구에 실패합니다.


9

예, Scheme 및 Haskell과 같은 기능적 언어를 배우는 것은 기능성 프로그래밍에 대한 소개로 좋습니다. 반 친구가 Perl에 대해 불평하는 한 Perl은 예전처럼 인기가 없지만 비즈니스에서 여전히 널리 사용되는 언어입니다.

나는 실제 세계에서 사용되는 실용적인 언어를 배우고 자하는 반 친구들을 이해할 수 있지만, 일단 당신이 숙련 된 프로그래머가되고 여러 프로그래밍 패러다임에 노출되면 새로운 언어를 배우는 것이 대부분의 문제라고 생각합니다. 새로운 구문. 따라서 개념에 노출되어있는 한 최종 고용주가 선호하는 언어를 별 어려움없이 "전문화"할 수 있습니다.


5

아마도 사람들은 Edsger Dijkstra의 고전적인 트롤링과 같은 진술에 영향을 받았기 때문에 "BASIC에 사전 노출 된 학생들에게 좋은 프로그래밍을 가르치는 것은 실제로 불가능합니다. ( 링크 )

"잘못된"언어를 배우면 영구적 인 뇌 손상을 입을 까봐 걱정됩니다. Perl의 예는 놀랍지 않습니다. Perl은 종종 그런 비난 자들로부터 이와 같은 비판을 불러오는 언어 중 하나입니다.


5

모국어는 구문이나 관용구가 아닌 개념에 중점을 두어야합니다. 이를 지침으로 사용 :

  • 은 특별한 변수와 비전 구문을 많이 찾는 것을 의미합니다.
  • PHP 는 유기적 성장으로 인해 개념을 혼합하는 것을 의미합니다.
  • Java 는 모든 것이 실제로 객체 가 아니기 때문에 약간의 혼란을 의미 합니다.
  • Assembly / C / C ++ 는 수많은 저급 요소를 의미합니다. 임베디드 시스템 개발을 원하지만 상위 개념에서 벗어나면 좋습니다.
  • SQL 은 자연 언어를 코드 및 데이터 구조에 매핑 할 수있는 방법과 볼 수없는 방법을 확인하는 데 유용합니다.
  • Visual Basic for Applications 는 특수 목적의 버림받은 항목에 중점을 두므로 적절한 오류 처리 및 리팩토링과 같은 중요한 개념을 너무 쉽게 건너 뛸 수 있습니다.
  • LISP 는 간단한 구문처럼 보이지만, 너무 많은 속기 표현이 너무 많기 때문에 전체 이름에 대한 자세한 지식 없이는 의미가 없습니다.
  • Haskell은 종종 수학과 매우 유사하지만 구문 수프로 빠르게 변질 될 수 있습니다.
  • 파이썬 ... 실제로, 파이썬은 초보자들에게 진지한 반대 의견을 찾을 수없는 유일한 언어입니다. 어쩌면 내가 배운 마지막 언어이기 때문에 어쩌면 다음 언어는 내 길의 오류를 가르쳐 줄 것입니다.

C # 또는 VB.Net에 대해 아무것도 쓰지 않았습니다.
HK1

4

반원들에게 언어를 사용하지 않은 경우 언어가 "틀렸다"는 것을 어떻게 알 수 있는지 물어보십시오. 다양한 언어를 사용하여 원하는 것을 파악할 수 있습니다.

많은 반 친구들이 다시는 사용할 필요가없는 언어를 배워야한다는 생각에 헛소리를 쳤지 만 덜 대중적인 언어를 배우는 것에 대한 두려움이 어디에서 왔는지 잘 모르겠습니다.

그들을 알지 못하면 나는 왜 이런 식으로 느낄 것이라고 확신 할 수 없다. 아마도 게으른 것일 수도 있습니다. 어쩌면 그들은 이전에 언어를 사용했지만 좋아하지 않았을 것입니다. 아마도 그들은 다른 언어를 시도하는 것을 두려워 할 것입니다. 누가 알아. 내가 아는 것은 CS 학생, 연구원, 산업 분야에서 일하면서 다양한 언어를 잘 아는 것이 큰 자산 이며, 당신이 무엇을 사용할 것인지 전혀 알지 못한다는 것입니다. 예 : 내가 처음 C를 배울 때 선생님이 같은 스크립트 및 명령 줄 유틸리티 쉘 우리를 소개 grep하고 awk. 내 친구들은 이것들을 어느 정도의 역량으로 배우려고하지 않았다. 나는 이제 매일 직장에서 사용합니다.

이번 학기에는 검색 엔진 수업을 듣습니다.이 수업은 Perl에서 이루어지며 다시 한 번 급우들이 언어 선택에 대해 불평하는 것을 보게됩니다.

Perl은 매우 강력하며 사용 방법을 알고 있으면 인생을 훨씬 쉽게 만들 수 있습니다. 또한 Python과 비슷하며 Python은 CS 학생의 최고 채용 담당자 중 하나 인 Google에서 많이 사용됩니다. 반 친구들도 이것을 먹어야합니다. FWIW, 나는 펄과 파이썬을 중급 수준 (초급이 아니라 전문가가 아님)으로 알고 있습니다.

나는 좋아하는 언어를 가지고 있고 다른 언어를 싫어하는 것을 이해할 수 있지만 어떤 사람들은 왜 처음부터 그것을 배우는 데 어려움을 겪습니까?

젊고 헛된? 나도 그랬어 그러나 나의 "불쾌감"은 수학의 영역에서 더 많았습니다. 그래서 그 경험을 통해 새로운 것을 배우는 것을 좋아하지 않거나 새로운 언어를 배우기가 어렵 기 때문에 그들에 대해 연구했습니다. (그러나, 알만한 가치가있는 것은 무릎에 떨어지지 않을 것입니다.)

정말로 "틀린"언어를 배울 수 있습니까? Scheme 또는 Haskell과 같은 좋은 정신 운동을 배우지 않으면 다른 방법으로 문제를 해결하는 데 도움이됩니까?

첫 문장으로 : 아니오, 그러나 당신은 + cough + Lisp + cough + =를 원하지 않는 언어를 확실히 배울 수 있습니다

나머지 : 네! 당신이 좋아하는 것을 찾고 지평을 넓히려면 가능한 한 많은 언어를 배워야합니다. 이 그들 모두를 마스터 할 필요는 없지만, 실무 지식을 가진 것은 항상 도움. 배우는 데 시간 낭비라고 생각한 언어가 언제 유용한 지 알 수 없습니다 .


1
Lisp의 문제점은 무엇입니까?!?! :)
Michael K

1
'가능한 한 많은 언어를 배우십시오'에 +1. 다양한 언어를 알고 있다면 주어진 작업에 대해 하나를 선택하는 것이 쉽지 않습니다.
Michael K

1
@Michael : 또한 이미 대부분의 개념을 알기 때문에 새로운 것을 쉽게 배울 수 있습니다.
David Thornley

@ 마이클 : Lisp =)에 아무런 문제가 없습니다. 나는 기능 프로그래밍 언어가 아닙니다. 게다가, 많은 괄호! 그러나 Lisp에서 매우 우아한 솔루션이 구현 된 것을 보았습니다. Scheme과 Lisp 전문가에 대한 많은 존경.
아쿠아

3

프로그래머를 고용하는 것은 임의적이고 변덕스러운 과정이기 때문에 잘못된 사실을 선택하면 자신 이 dodo의 길을 가고 있음을 알 수 있습니다.

언제든지 첫 페이지에서 다음과 같은 신념에 대한 종교적 열의를 보게 될 것입니다.

  1. 좋은 프로그래머가 되려면 컴퓨터 과학의 대학 학위가 필요합니다.
  2. 컴퓨터 과학 석사 학위는 사람들을 나쁜 프로그래머로 만듭니다.
  3. 경력을 쌓기 위해서는 반드시 자격증이 필요합니다.
  4. 인증은 잘못된 프로그래머를 나타내는 적기입니다.
  5. 컴퓨터 과학 이외의 분야 의 대학 학위 는 최고의 프로그래머가되기 쉽습니다.
  6. 저녁과 주말에 프로그래밍하지 않으면 좋은 프로그래머가 아닙니다.
  7. 그리고 그것에 간다.

그 중 하나 는 회사의 99 % 가 Y 기술 에 대해 X 년의 경험 을 갖기를 원한다는 것입니다 . 그리고 한 사람이 너무 많은주기를 사용할 수 있기 때문에, 그주기에 대해 소비하는 것은 매우 중요합니다.


2

배우기 위해“잘못된”언어를 선택할 때의 두려움은 주로 정보 부족지도력 부족 때문이라고 생각합니다 .

  • 은 총알의 오류 . 직업, 환경 또는 프로젝트에 적합한 언어가 있다는 오해. 잘못된 것을 고르면 건배됩니다.
  • 프로그래밍이 언어를 능가 한다는 것을 이해하지 못한다 . 언어는 타자기 나 컴퓨터 대 작가와 같은 도구 일뿐입니다. 도구의 뉘앙스 (구문)를 배우는 것이 아니라 도구가 사용자가 만들 수있는 것 (개념, 추상화 등)에 관한 것입니다.

그렇기 때문에 Scheme은 훌륭한 교수 언어입니다. 프로그래밍은 추상화와 재사용의 두 가지입니다. Scheme에는 함수 추상화와 함수 호출 (즉, 재사용)이라는 두 가지 기능이 있습니다. 도대체 구문이 없습니다!
Jörg W Mittag

2

우리는 더 많은 의견에 노출되어 있습니다.

과거에 어떤 일이 있었는지에 비해, 우리는 더 많은 의견에 노출되어 시간을 어떻게 보내는 지에 대해 더 많은 추측을합니다. 그런 까다로운 주제는 누구나 정당화 할 수 있습니다 .

빠르게 변화하는 생활 방식으로 인해 모든 사람들은 시간을 낭비 할 우려가 있습니다. 잘못된 언어를 배우는 것에 대한 강조된 두려움은 사람들이 수많은 의견에 쉽게 노출 된 결과 일뿐입니다.


1

유용성이 의심되는 것을 배우는 것은 일반적으로 싫어합니다. 사람들이이 수업을하고 싶어하고 여전히 쓸모 없다고 생각하는 것을 배우기 때문에 여기에서 찌르기가 더 나빠지는 것을 알 수 있습니다. 나는 콜라주를하려고한다면 현실에서 사용할 수있는 것을 배우고 싶을 것입니다.

내가 다른 사람들과 의견을 달리 할 수있는 유일한 부분은 언어를 많이 사용하고 있고 언어를 배우기 위해 거품 밖으로 나가고 싶지 않은 경우입니다. 그래야만 불평이 의미가 없습니다.


1

왜 '두려움'입니까? 나는 당신이 원하지 않거나 중요하다고 느끼지 않는 무언가를 강제로 먹여 왔다는 것을 적극이라고 부릅니다. 잘못된 언어는 없지만 사물에 집중할 시간이 제한되어 있습니다. Java로 CS 클래스를 수행해야했지만 그것에 만족하지 않았습니다. Java가 잘못된 언어가 될까봐 두려운 것이 아니라 내 경력의 초점이 아니 었습니다.

이제 Java가 유용합니까? LOL 누구나 Java를 배웁니다. 그것은 당신이 경쟁하고 싶지 않은 것입니다. 이력서는 Java를 알고있는 최근 CS 졸업생과 함께 1000의 스택에 있습니다. 실제로 현명한 학습 스키마를 사용하는 것이 더 나을 것입니다. 스키마는 일부 지역 사회 대학이 아닌 엘리트 대학에 갔다는 비밀 신호입니다.

또한 이런 종류의 적대감은 일반적으로 CS보다 훨씬 넓지 만 일반적으로 고등 교육을 나타냅니다. 강사가 Perl을 알고 있고 쉽게 등급을 매길 수 있으며 학생들이 오히려 배울 새로운 언어를 배우는 것을 두려워하기 때문에 강사가 Perl을 선택했다고 확신합니다. 나는 당신 자신의 교육을 생각하며 자신의 성공에 필요한 기술을 설명 할 수 있어야합니다.

(PS MIT는 스키마를 포기하고 파이썬으로 전환했습니다)


Scheme을 포기하는 것에 대해 슬프게도 SICP는 모든 프로그래머가 읽어야 할 것입니다. 나는 매번 그것을 홍보하는 경향이 있습니다.
Zachary K

이것은 나의 대학 시절을 생각 나게한다. 내가 시작한지 ​​몇 년 후, CS 부서는 주요 교육 언어로 C ++에서 Java로 전환했습니다. 2 년 후 (데이터 구조 자습서를 가르치려고 할 때), 아무도 메모리 할당에 대해 이해하지 못했습니다 (예 : 스택 대 힙에서 완전히 손실 됨). 결과적으로, 우리가 가르치려고하는 데이터 구조에 대한 기본 조작을 파악하지 못했습니다. 얼마 지나지 않아 C ++은 다시 선호되는 언어가되었습니다.
smithco

실제로 프로그래밍을 이해하면 새로운 언어를 쉽게 배울 수 있습니다. 사람들은 C와 같은 언어를 권장합니다. 포인터를 선언하고 메모리를 할당하고 포인터에 대한 쓰기 액세스를 보호해야하기 때문에 ...이 용어로 생각할 때 이미 모든 것을 고려하기 때문에 다른 모든 것이 매우 쉽습니다. 더 추상적 인 언어로 시작한 다음 발생하는 모든 기본 사항을 이해하는 경험을 구축하는 것은 그 반대의 경우가 더 어렵습니다.
dcgregorya

1

시간은 현실 세계로 빠져 나간 후 가장 희귀 한 상품이며, 아무도 그들에게 실질적인 이익을주지 않는 기술에 시간을 낭비하고 싶어하지 않습니다.

즉, 배울 수있는 '잘못된'언어가 없다고 생각합니다.하지만 PHP에서 고급 작업을하는 데 어려움을 겪지 않고 몇 년 전에 루비를 발견했으면합니다 ...

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