C #을 모국어로 배우는 것은 실수입니까? [닫은]


26

나는 여기에 비슷한 질문이 있다는 것을 알고 있지만 최근에 Joel Spolsky 의이 게시물을 읽었습니다.

프로그래밍 경험이없는 밝은 사람에게 어떻게 프로그램을 가르 칠 수 있습니까?

그리고 그것은 나의 학습 방식과 그것이 장기적으로 실제로 해로울 지에 대해 생각하게했습니다.

나는 다양한 언어를 다루었지만 C #은 나의 첫 번째 심각한 언어이며 "Head First C #"을 읽고 몇 가지 프로젝트를 만들었습니다. 그러나 위의 게시물을 읽은 후 나는 그것이 잘못되었다는 것이 약간 실망 스럽습니다. 분명히 나는 ​​저를 조금 던지게 한 Joel의 의견을 존중합니다.

나는 읽기 목록에서 권장하는대로 "코드"를 읽기 시작했고, 즐거웠지만 꽤 힘들다는 것을 알았습니다. Visual Studio에서 "noobish hacking about"의 빛을 발산 한 것 같습니다.

이제 어떤 경로를 선택해야하는지 잘 모르겠습니다. 물러서서 Joel의 조언을 따라 읽고 읽어야합니까?

내 주요 목표는 다른 모든 사람들과 마찬가지로 좋은 프로그래머가되는 것 같지만, 내가 존경하는 의견을 가진 사람이 해롭다 고 생각할 때 .NET 언어를 배워서 나쁜 연습을하고 싶지는 않습니다.

생각?


4
CS를 배우는 것은 어려운 일이지만, 훌륭한 교사가있는 경우에만 가능합니다.
Job

5
C #은 VB.net이 처음 사용하는 언어가 아니므로 문제가 시작되는 방식이 아니라고 말할 수 있습니다. 나는 C #이 훌륭한 출발 언어가 될 것이라고 생각합니다. 왜 일이 그랬는지 항상 스스로에게 물어보십시오.
Daniel Little

23
아니요. 모국어로서의 언어는 컴퓨팅 과학 이론을 배우기에 좋습니다. 물론, 경력을 쌓기 위해 어떤 언어는 다른 언어보다 낫지 만, 학습 목적으로는 모든 것이 좋습니다. 내가 아는 최고의 프로그래머 중 일부는 C64, Apple II 또는 TI-99 / 4A에서 BASIC으로 시작했습니다. 그것은 그들의 두뇌를 썩지 않았지만, 다음 언어와 다음 언어로 그들을 촉구했다.
제시 C. 슬라이서

5
또한 그것은 당신이 그 지식으로 무엇을하려고하는지에 달려 있습니다. C #은 근무하는 일상 업무 문제를 해결합니다. 나는 20 년 동안 C를 경계로 보지 않았고, 필요할 때 icky를 느낀다.
Jesse C. Slicer 1

19
무언가를 배우는 것은 결코 실수 가 아닙니다 . 항상 배우지 않는 것보다 훨씬 낫다 .
SK-logic

답변:


80

나는 다양한 언어를 습득했지만 C #은 나의 첫 번째 심각한 언어이며 "Head First C #"을 읽고 몇 가지 프로젝트를 만들었습니다. 그러나 위의 게시물을 읽은 후 나는 그것이 잘못되었다는 것이 약간 실망 스럽습니다. 분명히 나는 ​​저를 조금 던지게 한 Joel의 의견을 존중합니다.

나는 Joel의 의견도 존중하지만, 그들은 단지 의견 입니다. C #을 시작 언어로 사용하는 데 아무런 문제가 없습니다.

내가 바를 수있는 가장 큰 조언은 (바닐라 C에서 시작하더라도) 프로그래밍 을 하는 사람 은 정체되지 말고 종교적이지 않아야한다는 것 입니다. 나는 당신이 시작 하는 프로그래밍 언어, 또는 그 언어가 얼마나 순수하거나 의로운 지 상관하지 않습니다. 오늘날, 당신은 프로그래밍 세계에만 앉을 여유가 없습니다.

예를 들어, 십대 때 PHP3로 프로그래밍을 시작했습니다. 작은 웹 응용 프로그램과 몇 개의 웹 사이트를 만들었습니다. 나는 천재 프로그래머라고 생각하고 PHP3로 무엇이든 할 수 있다고 생각했으며 ASP 나 BASIC에 관한 사람들에게 눈살을 찌푸 렸습니다. 소년, 내가 틀렸다.

나는 시야를 넓히고 다른 프로그래밍 언어와 개념을 공부하기 시작할 때까지 개발자로서 진정으로 꽃을 피우기 시작하지 않았습니다. 고등학교 기간 동안 RealBASIC을 배우고 나중에 Visual Basic을 배웠습니다. 비즈니스 스쿨 후에 전문 개발자가되었을 때 C #과 Javascript를 본격적으로 배우기 시작했습니다.

자, 여기서 오해하지 마십시오. 나는 당신 이 모든 거래의 잭이 되려고 노력한다고 주장 하지 않습니다 . 마음에, 그리고 무역에서, 나는 여전히 PHP 프로그래머입니다. PHP는 빵과 버터이며, 안팎으로 알고 있습니다. 그러나 내 PHP 기술은 단지 PHP를하는 것이되지 않았습니다. 다음은 전문적인 작업에도 불구하고 PHP에서 파악하지 못한 매우 중요한 개념입니다.

  • 자바 스크립트 : 폐쇄
  • jQuery (예, 별도) : DOM과 Ajax
  • Visual Basic : 객체 지향 프로그래밍
  • C # : 제네릭 및 클로저
  • Ruby (on Rails) : MVC 디자인의 힘

나는 계속해서 며칠 동안이 사이트의 다른 많은 사람들도 그렇게 할 수있었습니다. 필자는 PHP 프로그래머이지만 다른 모든 멋진 개념을 나와 함께 매일 수행하는 작업으로 가져올 수있었습니다.

내 요점이 뭐야? C #을 배우십시오. C # 의 주인 이 되십시오 -당신은 오래되고 성공적인 경력을 쌓을 것이며 아마도 놀라운 일들을 성취 할 것입니다. 그러나 스스로 구멍을 뚫지 마십시오 . 여행, 다른 언어와 환경 및 개념을 맛보십시오.


+1 : @toleero-C # 또는 Java는 학습을 시작하기에 완벽합니다. Joel and Paul Graham Beating the Averages 는 개발자들이 자신이 선택한 언어로 정체되는 점을 극복하려고 노력했습니다.
Justin Shield

또한 Objective-C는 MVC를 가르치지 만 덜 표준화되어 있습니다.
Moshe

4
+1. 내 의견으로는, 다른 언어를 배우고 놀지 않고서도 훌륭한 개발자이자 주요 언어의 마스터가 될 수는 없습니다. 이것이 당신의 지식을 넓히고 모국어의 강점을 진정으로 이해하는 가장 좋은 방법입니다.
Niklas H

3
+1. 이것에서 중요한 것은 그가 대담하기로 선택한 단어입니다. Java 나 C #, 심지어 C와 같은 것을 배우기에는 항상 쉬운 방법으로 코드를 작성하는 데 10 년의 시간을 보냅니다. 자신을 밀고 매년 새로운 언어를 배우십시오. 당신이하는 일에 의문을 제기하고 더 나은 방법을 찾으십시오. 그리고 가장 중요한 것은 프로그래머와 StackOverflow에 계속 참여하십시오.
Andrew T Finnell

C #에서 이러한 모든 예제를 수행 할 수 있습니다. Dom / ajax : C # xml 및 ajax 라이브러리. 객체 지향? 검사. MVC? Asp.net MVC 프레임 워크.
Carra

21

의견을 존중하는 사람은 그것이 해롭다 고 생각할 때.

이것은 Richard Feynman과 관련된 이야기를 떠올리게합니다. Caltech의 한 학생은 저명한 우주 론자 Michael Turner에게 자신의 "바이어스"가 암흑 물질을 구성하기위한 후보로 어떤 종류의 입자를 선호하고 있는지 물었고 Feynman은 "왜 자신의 편견 을 알고 싶 습니까? ... 당국에주의를 기울이지 말고 스스로 생각하십시오. "

프로그래머는 모든 단계에서 나옵니다. 자바는 오늘날 많은 고등학교와 대학에서 가르치고 있지만 Joel Spolsky가 학교에있을 때는 아직 발명 되지 않았습니다 . 좋은 프로그래머가 되려면 "진정한 길"이 없습니다. SICP와 같은 일부 고전은 대부분의 프로그래머가 어느 시점에서 우연히 발견하지만 단단하고 빠른 표준은 없습니다. 가장 중요한 것은 어딘가에서 시작하여 건축 개념에 집중하는 것입니다. 위대한 프로그래머는 한 번 다음과 같이 말했습니다.

나쁜 프로그래머는 코드에 집중하고, 좋은 프로그래머는 알고리즘에 집중합니다.

C #은 좋은 언어라고 생각하지만 Visual Studio에주의를 기울여야한다고 경고합니다. 그것은 엄청난 IDE,하지만 당신은 드래그하는 경우 DropDownList와 바인드 GridViewA와 ObjectDataSource와 사용하는 Button컨트롤을 만들기 위해 DropDownList기반 검색, 다음 작업의 대부분이 IDE에 의해 수행되며, 당신이 정말로 프로그래밍을하지 않을입니다. IDE 도구를 활용하되 항상 개념을 구축하고 지식을 개발하십시오.


멋진 답변입니다.
Yasir

3
먼저 "좋은 프로그래머는 알고리즘에 중점을 둡니다"라고 말한 다음 "작업은 IDE에서 수행되며 실제로는 프로그래밍이 아닙니다"라고 말합니다. 무엇 이니? 프로그램을 작성하고 작업 흐름을 올바르게 수행하고 GridView 및 DropDown과 같은 "구현 세부 사항"에 신경 쓰지 않습니다 (적절한 것을 선택하기에 충분히 알고 가정하고 올바르게 구현하는 방법). 나머지 질문에 +1하지만 IDE를 사용한다고해서 훌륭한 프로그래머가되는 것은 아닙니다.
WernerCD

@WernerCD- "IDE가 작업을 수행했습니다"라고 말했을 때, 내가 준 구체적인 예를 언급하고있었습니다. 코딩을 한 적이없는 아이를 데리고 IDE에서 단계별 지침을 따르도록하면 작업 페이지가 생성되지만 프로그래밍은 아닙니다. IDE는 프로그래밍 작업에 매우 유용하다고 생각하지만 완전한 초보자는 컨트롤을 드래그하는 대신 재귀가 무엇인지 배우는 것이 좋습니다.
BlackJack

2
@Graham-죄송하지만 동의하지 않습니다. 그는 IT 나 소프트웨어 개발을 배우려고하지 않고 프로그래밍을 배우려고합니다. 내 생각에 IDE 도구는 실제로 유능한 프로그래머가 된 후에 나중에 가장 잘 유지됩니다.
BlackJack

16
핵심은 훌륭한 개발자 가 마술을 믿지 않는다는 것입니다 . IDE (또는 다른 도구)가 수행 한 작업은 편의성, 지름길이지만 이해를 위한 대체품은 아닙니다 .
Bevan

7

나는 단지 주니어 일 뿐이지 만, 더 많은 경험을 가진 사람들에 대한 모든 겸손과 존경으로, 나는이 태도도 얻지 못한다고 고백해야합니다.

한 프로그래머가 조엘의 대답은 아래에 댓글을 달았습니다 : " 매우 자신의 C #을 능력을 권장 온 프로그래머"이상 책상에 머리를 세게했다 사람으로 "하지만 같은 간단한 것들을 할 수 없었던 매우 잘 문서화 기본 클래스 구현을 찾기 C 및 C ++ 프로그램에서 메모리 누수 " ...

그러나 C ++ 응용 프로그램에서 메모리 누수를 찾는 것이 왜 C ++ 을 모른다고 주장한 적이 없는가? :) 이해가 안 돼요. 치과 의사의 기술이 부족하다고 심리학자를 비판하는 것과 같습니다. 나는 확실히 좋은 프로그래머가 아니에요,하지만 난 C ++를 알 수 없기 때문에이없는 느낌 - 나는 충분히 내가 프레임 워크 및 언어를 모르기 때문에 그것의 하고 사용합니다.

"매우 잘 문서화 된 기본 클래스 (...)를 구현하는 것과 같은 간단한 일을 할 수 없었거나 자체적으로 문제를 파악하거나 적당한 속도로 새로운 아이디어를 배울 수 없었습니다."

그러나 상관 관계가 인과 관계를 의미하는 것은 아니며 일반적인 프로그래밍 기술이 부족하다는 것이 언어 선택 의 결과 라고 가정하는 이유는 무엇 입니까?

아니면 C #이 첫 번째 언어 선택의 영향입니까?

나는 다른 그럴듯한 설명을 볼 수 있습니다 (아마도 C # 그냥 유행, 따라서 그것은 초보자의 많은 매력 ... 대부분의 사람들은 누구를 위해 C #을 매우 긴 프로그래밍되어 있지 않은 최초의 언어 모두에서 , 그것은 더 핸디캡이다 다른 언어 등으로 프로그래밍하지 않는 것 자체의 권리 등).


전동 공구 만 사용할 수있는 목수를 비난하는 것과 같습니다. 가비지 수집 언어에서도 변수가 얼마나 오래 걸려야 하는지를 아는 것은 근본적인 기술입니다. 당신 free이 얼굴을 똑바로 쳐다 보면서 변수의 의도 된 수명 을 인식 할 수 없다면, 그러한 단서가없는 언어로 작성된 프로그램에서 어떻게 그것을 인식 할 것입니까?
Karl Bielefeldt

1
너의 의도를 알 겠어. 나는 (내가 매일 C #으로해야합니다 같은 단지에 대한 많은 : 범위, 변수 '일생의 가장 기본을 알고 using, IDisposable이벤트 핸들러가 청취자 등 참조),하지만 난 심지어 심각하게 메모리를 진단하지 수 구문에 익숙하지 않기 때문에 C ++ 응용 프로그램에서 누수가 발생합니다! 별표가 무엇을 의미하는지 모르겠습니다.
Konrad Morawski

5

한 언어를 배우고 그 언어를 고수 하는 것은 어떤 언어로 시작해야하는지 결정하는 것보다 실수가 더 큽니다. 물론 배우기가 더 쉬운 언어도 있지만, 많이 사용하는 언어를 배우려고 시도하는 것이 좋습니다 (학교에서는 언어 선택이 이미 학교에서 결정합니다). 언어를 제대로 배우고 몇 달 후에 적극적으로 사용한 후에는 다른 프로그래밍 언어에 익숙해 져 비교해야합니다.

.NET에서 그것은 당신이 (갈 수 있도록 쉽게 정렬의 당신은 Visual Basic 및 C #을 전환 할 수 있기 때문에) 서로 다른 프로그래밍 언어. 따라서 Visual Basic을 배우고 차이점이 무엇인지 확인할 수 있습니다. 이 레벨에서는 세 가지 기본 프로그래밍 구조를 사용하여 기본 절차 적 코딩에 능숙해야합니다. 모두 독창적 일 수 있고 (변수 사용 방법을 알고있는 경우) 훌륭한 프로그래머가 되려면 다음과 같이하십시오.

  • 순서-코드는 지정한 방식으로 서로 뒤 따르는 단계 순서로 작성됩니다 ( "점프", 단계별 및 단계 정의).
  • 조건부-코드에 의사 결정 지점이있을 수 있습니다 (if 문, 스위치 케이스 문 정의).
  • 루핑 / 반복-코드는 어떤 결정이 주어지면 스스로 반복 될 수 있습니다 (위의 두 가지 모두의 확장이며 for-, do-while-loop를 정의합니다)

2 차 프로그래밍 언어가 가장 활발한 지 여부는 중요하지 않습니다. 프로그래밍 언어 (특히 동일한 패러다임을 따르는 경우)는 서로 매우 유사하며 작은 뉘앙스가 실제로는 길다는 사실 만 알고 있습니다. 소프트웨어 프로그래밍 작동 방식을 이해할 수 있습니다.

적어도 일년에 한 번, 다른 프로그래밍 패러다임 을 따르는 새로운 프로그래밍 언어를 배우 십시오 . 새로운 언어를 완전히 따라 잡을 필요는 없지만 다른 패러다임을 알고 있으면 몇 가지 이점이 있습니다. 몇 가지 패러다임이 있으며 일부 프로그래밍 언어는 여러 언어를 혼합합니다 (C #에는 실제로 다음 세 가지 하위 세트가 있음에 유의하십시오).

많은 프로그래밍 언어가 고유 한 관용구와 기본 API를 따른다는 사실을 알아야합니다. 따라서 새로운 언어를 배울 때 그 관용구와 API를 잘 배우고 물건을 만들 때 괜찮을 것입니다. 한 가지 좋은 이유는 프로그래밍 문제를 디자인하고 해결하는 데 더 능숙 해지기 때문입니다. 한 언어로 된 일부 관용구는 주요 언어의 문제를 해결하는 방법에 대한 통찰력을 제공 할 수 있습니다.

또한 가장 많이 사용하는 주요 언어 이외의 다른 프로그래밍 언어를 배워야하는 또 다른 이유도 있습니다. 취업 기회가 훨씬 더 큽니다.


5

귀하의 질문과 여기에 많은 답변의 초점은 C #에 있습니다. 에서 위키 백과 :

C # 언어는 단순하고 현대적인 범용 객체 지향 프로그래밍 언어입니다.

이를 바탕으로 뇌에 장기적인 손상을주지 않으면 서 C #을 제 1 언어로 배울 수 있다고 말하는 것이 안전합니다. 나는 Joel이 다음같이 썼을 때 전체 언어를 정죄하고 있다고 생각하지 않습니다 .

C # 및 ASP.NET에서 시작하는 것과 같이 지금 바로 배우고 자하는 정확한 내용을 바로 익히고 바로 학습하려고합니다.

문제는 언어가 아니고 지름길입니다. 사람들은 너무나 자주 단계별 자습서를 따르거나 "24 시간 안에 모든 것을 배우십시오"책을 통해 최종 목표를 빠르게 달성하려고합니다. "내 인생에서 코드를 한 번도 작성하지는 않았지만 iPhone을 사용하고 있습니다. 내가 원하는 것을 정확하게 수행하기위한 단계별 지침을 알려주시겠습니까? 감사합니다! " 나는 당신이 그 접근법을 취하고 있다고 말하는 것이 아니라, 당신이 경계해야 할 것입니다.

견고한 프로그래밍 기술을 개발하려면 기본 기술을 배우는 것으로 시작해야합니다. OOP 및 GUI 응용 프로그램으로 바로 이동하려고하면 이러한 기본 사항을 놓칠 수 있습니다. 요엘이 지적한 책은 참으로 좋습니다. 난 단지를 통해 미끄러 져 한 C # 옐로우 북 (PDF),하지만 같은 외모는 아마 내가 상점에서 볼 수있는 C #을 책의 대부분보다는 프로그래밍에 더 소개합니다.


문구가 "C #을 배우지 않음"이 아니라 "C # ASP.NET"(강조 추가) 이라는 점을 지적하고 싶습니다 . 저는 C # 프로그래머는 아니지만 .NET과 CLR은 학습을 시작하기에 좋은 플랫폼입니다.
forivall

5

나에게, 그 기사의 내용은 약간의 엘리트 주의자가되었다. 그렇습니다. SICP 는 실제로 더 나아지기를 원하는 진지한 개발자들에게 권장 되지만 "정상"을 넘어서 깊은 마법을 배우려는 사람들에게만 권장 됩니다. 실제로 수년간 SICP 는 표준 MIT 신입생 프로그래밍 텍스트였습니다. 그러나 많은 탄탄한 일을하는 프로그래머들은 그 훌륭하지만 값 비싸고 고도로 선택적인 기관에 다닐 기회가 없었습니다.

그래서 무엇을 나는 당신의 질문에 대답, 추천? 당신이 가진 것부터 시작하고 특정 언어를 배우기보다는 프로그래머처럼 생각하는 법을 배우십시오.

C # 구현을 사용할 수 있다면 Java, JavaScript, Python, Ruby, Scala, Scheme 및 기타 많은 언어와 같이 나와 같은 뻣뻣한 사람들에게 완벽하게 훌륭한 언어라고 말할 수 있습니다. 수년에 걸쳐 배웠습니다. 결국, 특정 작업에 적합한 언어와 도구를 선택하려고합니다. 즉, 모자와 같은 언어를 전환해야합니다.

Why 's Poignant Guide and Shoes 를 통해 Ruby에 접근하는 것과 같이 재미있는 학습 방법을 사용하는 데 아무런 문제가 없습니다 ( 최근 다른 게시물 에서 추천 한 것처럼 ). SICP로 가는 길 에 The Little SchemerThe Seasoned Schemer 를 상대로 머리를 두드리는 것과 같은 신비 롭고 신비로운 길이 있습니다. 많은 현대의 사상가들은 당신이 모든 오래된 학문과 "엔터 프시"를 건너 뛰고 대신 자바 스크립트, JQuery, HTML5로 직접 뛰어 들게합니다. 시작하는 방법에는 여러 가지가 있으므로 너무 많은 시간을 낭비하지 마십시오. 하나만 골라 코딩하십시오!

현실적으로 요즘에는 일하는 전문가가 거의 없기 때문에 어셈블러 또는 C / C ++를 먼저 배우기 위해 거꾸로 보낼 것입니다. 솔직히 그들이 그렇게한다면 나는 그들이 당신에게 많은 봉사를하고 있다고 믿지 않습니다.

따라서 "당신이 가진 것부터 시작"에 대해 조금 더 꾸미기 위해 세 가지 조언이 더 있습니다.

  • 자신에게 멋진 프로그래밍 언어와 이해하기 쉬운 하나의 학습 방식을 선택하고 모든 것을 제공하십시오. 선택한 언어로 글을 읽습니다. 관리 할 수있는만큼 좋은 코드를 읽으십시오!
  • 키보드로 바로 손을 잡고 배우면서 코딩을 시작하십시오. 프로그래밍 책의 모든 기본 연습을 직접 수행하고 손가락으로 클릭하여 찾을 수있는 모든 자습서를 실제로 클릭하여 실제로 작동하도록하십시오. 코드는 작동해야하지만 그렇지 않은 데모의 오류를 수정하는 동안 얻을 수있는 기술의 수에 놀랄 것입니다!
  • 좋은 프로그래머가 문제를 극복하는 방법을 배우는 데 대부분의 노력을 기울이십시오. 복잡한 문제와 시스템을 분석하고 분해하여 실제로 이해할 때까지 분류하는 방법을 배웁니다. 그런 다음 자동화 된 솔루션을 합성하고 설계하는 방법을 배우고 지구상에서 일부 인간이 작업을 쉽게 수행 할 수 있도록 구축하십시오.

나는 FORTRAN IV와 QBASIC으로 시작했고, 그것들이 나를 망치지 않으면 C #도 당신을 해치지 않을 것입니다! 행운을 빕니다. 배우는 동안 즐겁게 지내십시오!


Abelson & Sussman의 오리지널 강의는 여기에서 찾을 수 있습니다 : groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures
BlackJack

4

사람들이 "어떤 언어를 배워야합니까?"라고 물어 보면 내가 본 것 중 최고의 조언이라고 생각합니다. 좋은 프로그래머는 모든 언어로 작업 할 수 있습니다.

나는 그 말에 반대하는 주장이 있지만, 요점은 언어 전문가가 아닌 좋은 프로그래머가되는 법을 먼저 배우는 것입니다. 건축업자는 정확히 하나의 토지를 건설하는 것을 전문으로하지 않으며, 거래 기술을 배우고 필요한 토지에 적용합니다.


+1하겠습니다. 그것은 오토바이를 만드는 일반적인 평소와 비슷합니다. 조립 라인에서 작업하고 책을 따르면 괜찮은 오토바이를 만들 수 있지만 정말 멋진 빌더는 자전거의 내장을 안팎으로 알고있는 초퍼이며 결과적으로 놀라운 물건을 얻습니다.
Jarrod Nettles

3

때때로 나는 선택의 언어가 우리의 인격과 더 많은 관련이 있다고 생각하며, 우리가 연결되어있는 방식과 우리가 인정하고자하는 것보다 실제적 또는 학업 적 고려와는 훨씬 덜 관련이 있다고 생각합니다.

즉, 새로운 것을 배우는 것은 결코 해롭지 않습니다. 모든 것이 매뉴얼을 가지고 있음을 깨닫기 시작할 때 진화하거나 깨질 수있는 두뇌 (내가 생각하는 모든 관점)로 한계를 넘은 날을 알게 될 것입니다. 재능이 있고 프로그래머가되기보다는 실제로하는 일에 관심이 있다면 궁극적으로 원하는 모든 것을 할 수 있습니다.

적어도 파이썬과 JavaScript로 혼란스러워하십시오. IDLE과 같은 파일 I / O 액세스 가능 콘솔 환경이나 브라우저와 같은 샌드 박스 환경에서 코드를 작성하고 바로 실행하는 것을 실제로 볼 수 있다는 것은 확실한 학습 이점입니다. C #과 Java에 대해 싫어하는 점은 동료 또는 지나치게 제한적인 컴파일러를 행복하게 유지하기 위해 무의미한 래퍼로 간단한 함수를 작성하는 경우에도 모든 것이 클래스에 국한되기를 원한다는 것입니다. JS와 Python에서 내가 좋아하는 또 다른 점은 실제로 자신의 패러다임을 설정할 수 있다는 것입니다. 많은 개발자의 선호에 의해 약간 유연합니다. 나는 여전히 기본 연산자 오버로드의 지혜에 대해 어떻게 생각 해야할지 모르겠지만 옵션을 허용하는 데 Python을 좋아한다고 확신합니다.

또한 직업 목록이 가장 많은 기본 언어를 선택하는 잔인한 거짓말에 빠지지 마십시오. 모든 구직 활동을 일치하는 과정보다 복권으로 바꾸는 주로 엉뚱한 피할 수없는 물고기 무리의 일원보다 중간 정도의 물에서 큰 물고기를 좋아하는 것이 좋습니다.


저의 직장에서 무적의 무리를 고용 한 사람으로서 저는 동의해야합니다. 이 토론에는 정말 유용한 피드백이 많이 있습니다. @toleero가 유용하고 낙담하지 않기를 바랍니다. 요엘은 천재이지만, 누군가가 복음이라고 말하는 모든 것을 받아들이지 말아야합니다 . 그가 추천 한 책은 유용하다. 그러나 매일 코딩하고 실제적인 경험을 얻고 있습니다. 소수의 언어 (예 : C # 및 C와 비슷한 것-기본, 어쩌면 파이썬 또는 루비)로 그렇게하면 최소한 많은 사람들처럼 좋은 개발자가 될 것입니다 : o)
Owen Blacker

3

C #은 상당한 확장으로 Java만큼 나쁘지 않습니다. 함수형 프로그래밍, 일반 프로그래밍, 결정 론적 파괴 및 값 유형, 연산자 오버로드 등과 같은 많은 개념을 더 잘 지원합니다. 이러한 기능에 대한 지원은 물론 많은 작업을 수행 할 수 있지만 Java보다 훨씬 낫습니다. C ++이 아닙니다.

둘째로, 나는 당신이 Joel의 말을 잘못 읽고 있다고 생각합니다. 포인터와 재귀를 마스터 할 있다면 현재 사용중인 언어는 중요하지 않습니다. 가장 중요한 것은 작은 unsafe코드 를 사용하고 , unsafe quicksort무언가 를 잡은 다음 정상적인 C #으로 돌아가는 것입니다.

아, 그리고 읽기 :)


2

나를 위해 생산적인 첫 번째 언어는 C #이었습니다. 학교 시간에 Foxpro와 대학에서 약간의 C를 보냈지 만. C #은 누구에게나 아주 좋고 좋은 출발점입니다. 그것은 강력한 타이핑, 캡슐화, 상속 등과 같은 프로그래밍의 일반적인 기본 사항을 따르며, 사용 여부에 관계없이 항상 배워야한다고 생각합니다. 나중에 기본 프로그래밍의 표준화를 따르지 않는 Python과 같은 다른 언어로 언제든지 이동할 수 있습니다.

사람들이 C #의 학습 측면에 실제로 추가하지 않는 또 다른 추가 요소는 내가 본 언어 중 최고의 IDE를 사용할 수 있다는 것입니다. Eclipse IDE도 좋지만 Visual Studio를 사용하면 Microsoft에 감사드립니다.

C보다 C #이 향상되어 미리 다른 언어를 배울 필요가 없습니다. 10여 년이 넘는 모든 언어는 C의 특성, 심지어 JAVA에서 진화했습니다.

따라서 C #은 미래에 다른 언어를 빨리 배울 수있는 훌륭한 출발점입니다.


Eclipse는 Visual Studio보다 나에게 훨씬 좋습니다. 그러나 나는 당신에게 동의합니다. C #은 특히 훌륭한 언어가 될 것입니다. 특히 레드몬드의 어두운 대 군주를 파괴하는 사악한 독점 표준에 의해 소유되어 있지 않은 경우에 특히 그렇습니다 .
Thomas W

2

조만간 제 2 언어 학습을 시작하고 시작하는 한, C #을 제 1 언어로 학습하는 것은 실수가 아닙니다. 훨씬 더 중요합니다. 그 두 번째 언어가 C #과 다소 다르면 더 좋습니다 (자바 스크립트 또는 루비는 그 점에서 Java보다 좋습니다). 모든 언어에는 장단점이 있으며, 장기적으로 더 나은 프로그래머가 될 수있는 차이점이 있습니다.


1

많이 난 당신이 (같은 다른 제안 할) 많은 언어를 배우고 조언을 당신이 배울 언어 (들) 당신이 (몇)를 알고 있는지 확인으로 아주 잘.

많은 언어를 아는 위험은 실제로 문제를 해결하려고 할 때 좌절감을 일으키는 언어를 전혀 배우지 못할 수 있다는 것입니다.

for-loop 구성을 아는 것은 많은 언어가 재미 있지만 그중 하나에서 오류를 처리하는 방법을 모른다면 쓸모가 없습니다.


1

먼저 C #을 배우게되었다는 것에 대해 걱정하지 마십시오. 첫 발을 왼발이나 오른발로 밟는 것이 걱정되는 것과 비슷합니다. 관리되는 언어를 먼저 배우는 것의 유일한 차이점은 포인터와 자세한 메모리 관리를 배워야 할 때 지연되는 것입니다. C를 배울 때가되면 걱정할 유일한 것은 메모리 관리뿐이므로 제어 구조, 함수의 개념 등을 배우려고 애 쓰지 않아도되기 때문에 실제로는 유리하게 작용할 수 있습니다. 포인터와 메모리 관리에 전적으로 집중할 수 있습니다.

고정 관념은 그 두 번째 부분을 수행하지 않고 C 및 C ++을 배우지 않고 C 및 C ++ 작업에 적용한 관리 언어 프로그래머가 있기 때문에 존재합니다.

악기를 배우는 것과 같습니다. 첫 번째는 필기 음악을 읽는 메커니즘과 악기를 원하는대로하는 물리적 인 메커니즘을 배우려고하기 때문에 어렵습니다. 두 번째 및 그 이후의 계측기에서는 이미 알고있는 것과 다른 계측기의 구성 요소에만 집중할 수 있습니다.


1

의심 할 여지없이 초보자에게는 힘들다. vb, javascript, PL / SQL, T-SQL, Uniface 및 약간의 C #을 수행했습니다.

이전에 누군가 Visual Basic에 대해 객체 지향 프로그래밍에 대해 배웠으며 솔직히 말하면 VB.NET은 내가 본 모든 언어의 구문을 가장 쉽게 이해할 수 있습니다. 가장 좋은 기능은 키워드가 자세히 설명 된 개념과 일치한다는 것입니다.

예를 들어, 함수 myHandler ()는 myButton.click을 처리합니다.

또는 Class Human Extends 포유류가 IntelligentLifeform을 구현 함

진심으로, 당신이 초보자 일 때의 가독성을 위해 구문이 어떻게 보이길 원하십니까?

속성과 메서드 (및 서브와 함수 사이의 문자열 분리)를 찾고 있다면 VB에서 훨씬 쉽게 읽을 수 있습니다.

마찬가지로 변수를 선언 할 때

Dim myString As string-명백한 유형이며 어느 것이 인스턴스인지

C # 대 / 소문자 구분은 나에게 무엇이 나쁜 습관인지를 권장합니다. 클래스와 인스턴스의 이름이 대문자이고 하나가 낮습니다.

예 :

인간 인간

  • 유어 어휘에 너무 적은 단어가있어 기존 단어를 대문자로 재사용해야합니까?

human.think를 호출하면 클래스의 인스턴스를 착각하기 쉽고 정적 메서드를 한 번에 호출한다고 생각할 수 있습니다. 그리고 글 랜싱은 종종 코드를 인식하는 방법이며, 모든 요소를 ​​마우스로 가리켜 편집자가 어떤 일을하는지 알려줄 시간이 없습니다.

C #에는 몇 가지 장점이 있지만 입력을 저장하더라도 시작하기가 훨씬 어렵습니다. 그렇기 때문에 두 언어를위한 장소가 반드시 있어야합니다.


인간의 경우 +1 기존 코드에 대한 경험이 많지 않고 책을 통해 제 2 언어 (빵과 버터 = 델파이)로 C #을 사용하면 항상 뇌가 아프게됩니다. 내가 정말로 좋아하는 언어의 일부가 있지만 C에서 대소 문자 구분을 드래그하는 것은 큰 실수 IMHO입니다.
Matt Allwood

물론 Dim myHuman as Human훨씬 낫기 때문에 ? : D
scrwtp

0

내가 볼 수있는 가장 큰 단점은 Visual Studio 및 관련 도구가 매우 훌륭하다는 것입니다. 지능형 및 코드 완성과 같은 것이 쉽게 목발이 될 수 있습니다. 나는 일반적으로 환경이 너무 좋고 지원 적이 어서 텍스트 편집기에서 루비 코드를 해킹해야 할 때 약간의 손실을 느끼는 경향이 있다고 주장합니다. 아, 그리고 당신은 일반적으로 linq 같은 것들을 그리워합니다.


0

C #은 프로그래밍을 시작하기에 완벽합니다.

그것은 Java의 Hello World, 기본 로고 및 스크래치의 일부를 제외하고는 다른 어떤 것에도 손을 대지 않아도 시작하라는 말입니다.

전반적으로 어려울 수 있습니다-직관적으로 보이지 않는 많은 것들이 있으며 한계가 있지만, 좋은 코딩을 장려하고 중단되면 훌륭합니다. 내 말은, 그것은 당신에게 더 많은 힘을 제공하고 파이썬 (보통 제안되는)보다 조금 더 전문적입니다. 심지어 구문 수준에서도 매우 큰 장애물이 될 것입니다.

또한 Mono 형식으로 크로스 플랫폼을 잘 지원합니다 (Mono가 큰 문제가 아니라고 생각하는 사람들을 위해 Unity Game Engine을 사용하면 버전으로 코딩 할 수 있습니다). 또한 게임 스크립팅이든 웹 디자인이든 Windows 응용 프로그램이든 대부분의 경우에 매우 유용합니다. 물론 일부 언어는 특정 라인에 더 좋을 것이므로 웹 방향으로 가고 있다면 예를 들어 일반적인 방향에 따라 달라집니다. 예를 들어 웹 방향으로 가고 있다면 C # (ASP.NET)은 확실히 좋은 생각. 게임에 참여할 계획이라면 C ++에 대해 생각해야합니다.

결국, 파이썬의 단순성이나 자바의 고풍 적 특성 (자바의 릴리스주기가 매우 느리기 때문에)을 선호하여 그것을 사용하지 않더라도 학습 할 가치가 있습니다. 초보자가 배우기에는 너무 복잡하지는 않습니다.


이 게시물은 읽기 어렵습니다 (텍스트의 벽). 더 나은 형태로 편집 하시겠습니까 ?
gnat

1
방법 것입니다? 아직도 읽기 힘들거나 괜찮습니까? 길을 내 주셔서 감사합니다.
Sbspider

-1

프로그래머가 되려면 열정이 필요합니다. 내가 아는 프로그래머는 업계 변화를 배우고 알아 차리는 길을 벗어난 프로그래머입니다. 나는 Commodore Vic 20 (기존 예)을 기초로 프로그래밍을 시작했고 계속해서 다른 새로운 언어로 넘어 갔다. 저의 프로그래밍 기간 중 일부에는 COBOL도 포함되었습니다. 또한 일부 언어는 특정 프로세스와 다른 프로세스에서 가장 잘 작동했습니다. 귀하에게 제 조언은 언어를 배우고 루프, 방법, 비교와 같은 기본 프로그래밍 개념을 이해하는 것입니다. 대부분의 언어는이 세 가지 개념을 지원합니다. "이것은 가장 좋은 방법입니다"라고 말하지 말고 "어떻게 개선 할 수 있습니까?"라고 말해서는 안됩니다. 마지막 문장에서 가장 나쁜 점은 엔지니어링에 대해 스스로를 잡을 수 있다는 것입니다. 프로그래밍은 재미 있고 재미있게 만드세요! 인터넷은 오늘날 정보에 대한 액세스 수준이 엄청 나기 때문에 프로그래밍을 경험할 수있는 완전히 새로운 방법을 열었습니다. 인터넷 전에는 선반에 가서 GRAY IBM 프로그래밍 서적을 풀고 배워야했습니다. 오늘 당신은 간단하게 구글과 whammo에 물건을 입력 할 수 있습니다.


2
이 게시물은 읽기 어렵습니다 (텍스트의 벽). 더 나은 형태로 편집 하시겠습니까 ?
gnat

-3

와우 많은 답변. 여기 내 관점이 있습니다.

C #은 컴퓨터 과학을 배울 수있는 곳이 아닙니다. 나는 그것을 매우 나쁜 생각으로 본다. 아래에 몇 가지 우려 사항을 나열하겠습니다.

  • C #은 Microsoft 언어입니다. 내가 여기서 MS를 판단하고있는 것이 아니라, MS 세계 밖에서는 거의 흡수되지 않는 것입니다. MS 하드웨어를 프로그래밍하고 싶다면 컴퓨터 과학에 대한 견고한 접근 방식을 보지 못합니다.
  • 저는 관리되는 언어로 프로그래밍하는 법을 배우는 열렬한 팬이 아닙니다. 프로그램 메모리를 관리하고 데이터 구조를 구축하는 방법을 배우는 데있어 가치가 있다고 생각합니다.

다른 언어를 빨리 고르기에 너무 피곤합니다.


당신이 MS에 자신을 묶는 것이 당신의 경력에 ​​나쁜 것이라고 생각한다면 이해할 수 있습니다. 그러나 이것이 컴퓨터 과학을 배우는 것과 어떤 관련이 있습니까? CS는 플랫폼 또는 기업과 관련이 없습니다.
svick

-3

C # 또는이 세 가지 핵심 요소를 제공하는 언어를 추천합니다.

완전 타입 컴파일 및 완전 객체 지향 ..

이 세 가지 핵심 언어를 제공하는 첫 번째 언어는 프로그램 흐름, 구문 및보다 체계적인 방식으로 문제 해결 방법에 대해 많은 정보를 제공합니다. 나는 이러한 속성을 가지고 있지 않은 많은 훌륭한 언어들 안에서 살고 숨을 쉬지 만 누군가에게 언어를 가르치고 있다면이 세 가지 요구 사항을 가진 언어를 선택할 것입니다.


-6

아니요, 그 대답은 끔찍합니다. 왜? 글쎄, 그는 당신이 정의해야 할 좋은 책을 처방하지만, 교실 작업과 랩 (컴퓨터 실) 작업이 없으면 길을 잃고 좌절하게됩니다. 그 책에있는 것 이외의 것을 배우는 것이 너무 많기 때문에 많은 다른 새로운 프로그래머와 실험해야합니다. BSCS에 가야한다고 말하지는 않지만 컴파일러 문제, 환경 구축과 같은 모든 순간이 잘못 될 수있을 때 지식이 풍부한 강사에게도 액세스해야합니다. 진공 청소기로 작업하는 프로그래머는 많지 않습니다. 반 정도의 학교를 선택하는 한, 코스에 필요한 책은 충분합니다.

따라서 일부 수업에 등록하면 훨씬 더 재미있을 것입니다! 또한 프로그래머로 취업하려는 경우 연결이 필요하며 캠퍼스 등에서 채용하는 회사에 대한 모든 소문을들을 수 있습니다.

마지막으로, 프로그래밍은 사물이 모든 수준 (hw / sw)에서 어떻게 작동하는지 이해하기 위해 많은 이론적 배경 지식이 필요하므로 사물을 고치는 방법을 알아낼 수 있기 때문에 공식 교육은 매우 중요합니다. 거의 모든 것이 블랙 박스이므로, 왜 무언가가 그 방식대로 행동하는지 파악할 수 있어야 어둠 속에서 다음 논리적 찌르기를 취할 수 있습니다. 최소한 2 년의 프로그래밍 학위가 없다면 (당신이 부르는 것이 무엇이든) 불리 할 것입니다.

추신 : Java를 경험할 때까지 .Net 또는 C # 근처에 가지 않습니다. C #은 눈을 즐겁게하지 않습니다. 지저분하고 깔끔하게 보이는 코드입니다. .Net IDE는 믿기 어려워합니다. IDE 표준의 어두운 시대에 있습니다. Java : C # ~ 데이터 : Lore


10
나는 마지막 단락까지 당신과 함께 있습니다. 그것은 C #의 미학에 대한 당신의 의견을 염증성 방식으로 나타내지 만 그렇지 않으면 좋은 대답에 속하지 않는 것처럼 보입니다.
Adam Lear

9
마지막 단락 이전에도 대부분은 말이되지 않습니다. 어떤 사람들은 교실 환경에서 잘 배우지 만 다른 사람들에게는 시간 낭비입니다. 이론적 배경을 배우는 것이 중요하지만, 반드시 교실이나 정규 교육이 필요하지는 않습니다. 일부 사람들을 도와 주지만 모든 사람에게 가까이 있지는 않습니다.
Jerry Coffin

의견은 바로 그 것입니다. 사실의 진술이 아닙니다. 따라서 기분이 상하지 않습니다.
Tom Jones

YOu는 공식 학교에 대한 추천을 오해했습니다. 실험실에서 질문을하고 동료들과 협력 할 수있는 장소가 필요합니다. 협업이 핵심 개념입니다. 당신이 C # 사용자라면 미안한 기술자들에게는 불가능할지라도 당신을 화나게했다면 미안합니다.
Tom Jones

1
Stackoverflow는 대학에 진학 할 수 없지만 커뮤니티 지원을 원하는 많은 사람들에게 "랩"이되었습니다. 수업과 같은가요? 당연히 아니지. 충분합니까? 당신은 내기.
BlackJack
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.