언어에 구애받지 않으려면 어떻게해야합니까?


52

이제는 asp.net 및 C #으로 작업합니다. Java에서도 괜찮은 작업을 수행했습니다. 언젠가는 언어에 구애받지 않는 방식으로 경력을 계획하고 있습니다. 무엇을 배워야합니까?

클래스 디자인에 대해 이야기 할 때 OOP 패러다임을 먼저 생각합니다. 다른 사람이 있습니까?


2
당신은 노력하고 있습니까 : 라벨을 피하고, 작업 유연성을 갖거나, 비전을 추구하고 있습니까?
JeffO

2
@ 제프 예! 라벨을 피하고 내 언어가 최고라는 것을 싸우지 않기 위해;)
Gopi

나는 내 의견에 동의하지 않는 강한 의견을 가진 사람을 고용 할 가능성이 더 큽니다. 그때 그는 자바를 쓸 수있었습니다.
Erik Reppen

당신이 그 일을했다면 채용 담당자는 이력서를 건너 뛸 것입니다.
gonzobrains

답변:


67

언어에 구애받지 않으려면 모든 일반적인 스타일과 언어 유형에 대한 경험이 있어야합니다.

  • 필수 언어 (당신은 단계별로 무엇을하도록 지시 예 -. C)
  • 선언적 언어 (당신은 그것을 당신의 목표를 말해, 그것은 무엇을 파악 예 -. SQL / HTML / 프롤로그)

또한:

  • 기능 언어 (기능은 피하고, 핵심 상태와 부작용이 목표입니다 예 -. 하스켈 / OCaml의 / 리스프 / F 번호)
  • 객체 지향 언어 (객체가 관련 데이터와 그들에 행동 방법을 캡슐화 아키텍처). 예 : Java / C #)

일부 타이핑 스타일 :

몇 가지 다른 런타임 스타일 :

저급 물건 :

  • 상당히 낮은 수준 (Eg-C)
  • 조립의 일부 방언 (예 : NASM)

또한 동시 프로그래밍이벤트 중심의 경험이 필요하다고 말합니다 . 또한 웹 프로그래밍 (클라이언트 및 서버), 풍부한 클라이언트 개발 / 데스크톱, 게임과 같은 다양한 도메인에 대해 알고 있어야합니다. 임베디드 프로그래밍 또는 전용 하드웨어 (게임 콘솔과 같은)에 대해 배우고 모바일 개발이 점점 더 중요한 영역이되고 있습니다.

다른 사람들은 또한 Generic ProgrammingMeta Programming 접근법에 대한 경험을 얻을 가치가 있다고 언급했습니다 .

이러한 패러다임을 배울 때는 구식을 익히고 구문을 배우지 마십시오. 많은 C # 개발자가 JavaScript를 정적으로 입력하는 것처럼 JavaScript를 작성하는 것을 보았습니다. 이렇게하지 말고 언어 패러다임을 배우고 받아들이십시오.

이 모든 작업을 수행하면 언어 간 차이가 크게 구문이 바뀌므로 전환은 새로운 구문을 배우는 상당히 간단한 연습이 될 것입니다.

현대 프로그래밍은 거의 항상 프레임 워크에 의존하므로 잊지 말고 배우는 각 언어에 대해 일반적이고 대중적인 프레임 워크를 익히는 것도 중요합니다. C #을 아는 것은 .net 없이는 관련이 없습니다.


9
주어진 의미에서 HTML은 어떻게 선언적입니까? "목표-> 행동"? 그것은하지 않습니다 정말 아무것도.
Felix Dombek

3
내가 볼만 추천 할 수있는 훌륭한 선언 언어는 Prolog입니다. 함수 (그러나 관계가있는 관계), 명시 적 제어 흐름 (통역사가 모든 것을 해결), 하나의 위대한 데이터 구조 (조건, 다른 것은 필요하지 않음)와는 다릅니다. 매우 빠릅니다. 그것이하는 일, 초당 수백만 번의 통일과 추론을 수행하고 무언가를 개발하는 데 필요한 시간은 C / C ++에 비해 Python만큼 짧습니다.
Felix Dombek

3
@Felix : HTML, goal = "라벨과 텍스트 상자를 원합니다". 액션 = 레이아웃 및 그래픽 엔진이 그리는 방법을 알아냅니다. 세부 사항은 개별 브라우저에 달려 있습니다. 당신은 당신이 그것을 원하지 않는 것을 정의합니다. 여기를 참조하십시오 . 그래도 동의합니다. 실제로 "언어"는 아닙니다. 프롤로그가 더 좋은 예입니다. 업데이트하겠습니다.
Simon P Stevens

1
+1 좋은 유형의 목록을 얻으려면 언어 선택이 패러다임과 약간 떨어져 있지만 전반적으로 우수합니다.
Orbling

2
그건 그렇고, 웹, 대화 형 웹, 데스크탑 툴, 데스크탑 게임, 퍼시 스턴트 게임은 하드웨어와의 거리와 거리가 다르기 때문에 언어를 선택하는 것과 같은 방식으로 구축되지 않습니다. 또는 존재)) 그것이 불가지론적인 것이 무엇인지 이해하고자하는 사람에게는 더 명백하다.
Klaim

4

나는 당신이 진정한 언어 불가지론자가 될 수 있다고 생각하지 않습니다. 현재 언어 (현재 C #)로 "생각"한다는 것을 알았습니다.

그러나 특정 언어가 아닌 의사 코드로 생각하여 실제로이 형식으로 작성하여 코드에서 디자인을 분리 할 수 ​​있다고 생각합니다. 이를 통해 현재 언어로 구현하기보다는 디자인 및 아키텍처 결정에 집중할 수 있습니다. Simon이 지적한 것처럼 단점은 궁극적으로 사용하는 언어와 프레임 워크가 필연적으로 디자인에 영향을 미친다는 것입니다. 따라서 디자인이 개발됨에 따라 언어 및 프레임 워크에 점점 더 연결될 것입니다.


"정말 언어에 구애받지 못한다"는 +1 그러나 나는 두 번째 단락에 동의하지 않습니다. 사용할 언어 및 프레임 워크를 디자인하는 것이 중요하다고 생각합니다.
Simon P Stevens

@Simon-프레임 워크 디자인에 대한 좋은 지적이 있습니다. 답변을 업데이트하겠습니다.
ChrisF

3

당신의 질문과 일부 답변을 읽으면 "지구상의 모든 패러다임을 아는 것"과 "언어 불가지론"과 같은 인상을 줄 수 있습니다.

존재하는 모든 패러다임을 알고 있거나 여러 가지 언어를 아는 것은 여러 패러다임과 언어 유형에 걸쳐 "언어에 구애받지 않음"인지 확실하지 않습니다.

그것은 모든 종교를 실천 한 것이 자신을 종교적으로 무관심하게 만드는 것과 같습니다.

프로그래밍 언어에 관한 언어에 구애받지 않는 사람은 어떤 언어로 프로그래밍하는 법을 전혀 모르거나 프로그래밍을 요구하는 언어를 신경 쓰지 않는 사람이어야한다고 생각합니다.

그러나 어떤 사람들은 진정한 프로그래머가 해당 언어의 문서에 액세스 할 수있는 모든 언어로 프로그래밍 할 수 있다고 말합니다.

이것이 "언어 불가지론"의 의미라면, 거의 모든 숙련 된 프로그래머가 언어 문서에 액세스 할 수있는 경우, 작업 할 수있는 모든 언어로 프로그래밍 할 수 있습니다.

어쩌면 "언어 다신 론자"가되고 싶을 수도 있습니다.

나 자신도 여러 언어 패러다임에 능숙하지만 적용 할 때 OOP를 선호합니다. 그래서 나는 무의식적이지 않은 것 같아요.

선택의 자유가 주어진 특정 패러다임이나 언어를 선호하지 않는 사람은 거의 찾을 수 없습니다.


0

그것은 언어뿐만 아니라 Java 자체도 너무 많은 모드를 가지고 있기 때문에 몇 년 동안 모두를 배울 수 있습니다. 당신은 배울 수 있습니다 :

  • 메시징 및 지속성 및 다양한 서버와 같은 J2EE 기능
  • jsp 및 Apache 지향 툴킷
  • 개미, 메이븐 및 기타 빌드 시스템 (언어 자체).
  • Groovy / Grails 세계 전체
  • 모든 아파치 커먼즈 API
  • 테스트 시스템 (Mocking, JUnit)
  • Swing, GWT와 같은 GUI 빌더 ...

그리고 내가 놓친 백 가지-Java 내에서 JUST.

폭을 다룰 때 (모든 언어를 배우는 데) 몇 년을 보내면 어느 언어에서든 효과적으로 일할 수있는 깊이를 얻는 데 어려움을 겪을 수 있습니다.

나는 새로운 언어를 배우는 것이 결코 문제가되지 않는다고 말하는 것이 아닙니다. 당신은 적극적으로 그렇게해야합니다! 나는 내가 배울 수있는 것 (내가 아직하지 않은 것)에 기초하여 다음 직업을 고르려고 노력하지만, 나는 종종 임의의 언어를 고르지 않고 더 이상 배우지 않습니다. 다소 겸손한 상태로 ...


하기 위해 "전체 멋져요 / Grails의 세계는" 당신이 추가 할 수 있습니다 "전체 스칼라 /!이 세계 전체 JRuby를 / 레일 세계를 재생, 전체 Clojure의 / 노아 세계".
Vorg van Geir

1
나는 웹 프레임 워크 중 하나를 골라서 가져갈 수도 있지만, 얼마 전에 글을 쓰고 내 머리 위로 물건을 꺼내고 있다는 것에 동의한다.
Bill K
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.