실험 언어를 배울 가치가 있습니까? [닫은]


25

저는 언젠가 프로그래머로 현장에서 일하기를 원하는 젊은 프로그래머입니다. Java, VB.NET 및 C #을 알고 있습니다. 나는 새로운 언어를 배우고 싶다 (프로그래머로서 내가 아는 것을 확장시키는 것이 가치가 있다는 것을 알고있다-당신이 다르게 생각하게하는 언어를 배우는 것은). 온라인에서 어떤 언어가 공통적인지 살펴 보았습니다. 모두 C와 C ++ (일반적으로 컴퓨터에 대해 거의 알지 못하는 머글)조차 알고 있으므로 C를 강요해야 할 것이라고 생각했습니다.

C와 C ++는 훌륭하지만 오래되었습니다. Haskell 및 Forth (등 등)는 오래되었으며 인기가 떨어졌습니다. 이 같은 이유로 C (또는 C ++)를 배우는 것이 두렵습니다. Java도 꽤 오래되었으며 JVM에 의해 실행되고 기본 코드로 컴파일되지 않기 때문에 느립니다.

저는 오랫동안 Windows 개발자였습니다. 나는 최근에 Java를 사용하기 시작했다. 그러나 그것은 더 다재다능하고 다른 곳으로 확산 될 수 있기 때문이다. 문제는 다음과 같은 이유로 사용 가능한 언어 처럼 보이지 않는다는 것입니다 .

  • 가장 많이 사용되는 목적은 웹 애플리케이션 및 휴대폰 앱 (특히 Android)입니다.
  • 실제 제품으로는 Netbeans, Eclipse (IDE는 언어 및 IDE, HTML / CSS / Javascript를 작성하기위한 웹 페이지를 만드는 것과 같은 IDE) 및 Minecraft 만 염두에 두어야합니다. 컴퓨터 사양만큼 재미 있지만 게으르고 양극성입니다. 지원하다.
  • 그 외에는 서버에 사용 되지만 서버 를 만들고 / 구성하고 싶지는 않습니다 .

그러나 .NET 언어는 훌륭합니다.

  • 진지한 대화에서 VB.NET 또는 C #을 언급하면 ​​사람들이 웃습니다.
  • MONO를 사용하지 않는 한 크로스 플랫폼이 아닙니다 (아직 개발 중이며 약간의 개선이 필요합니다).
  • JVM이있는 Java와 같이 CLR에서 실행 / 관리하기 때문에 하위 레벨이 부족합니다.

내 첫 번째 생각은 C와 같은 것을 배우고 그것을 C ++에 스프링 보드로 사용하여 (내가 강한 이해 / 기반을 갖도록하기 위해)했지만 이전에 말했듯이 분마다 점점 커지고 있습니다.


내가 본 것

팬텀 이 좋아 보인다. 그것은 내가 좋아하는 두 언어 사이의 훌륭한 중개인과 같으며 심지어 두 언어 사이에서 교환 가능하게 게시 할 수 있지만 원하는 것과 달리 CLR 또는 JVM (컴파일하는 내용에 따라 다름)은 완전한 컴파일이 아닌 컴파일됩니다 .

D 도 좋아 보인다. 그것은 매우 가능한 언어처럼 보인다에서멀티 포트이플의소스 실제로는 C / C ++보다 더 나은 것으로 보인다. 나는 그것으로 바로 뛰어들 것이지만, 현재로서는 분명히 주류가 아니기 때문에 여전히 성공 여부를 확신하지 못합니다.

웹 개발 및 Go by GOOGLE 과 같은 Opa 와 같은 다른 것들에 초점을 맞춘 멋진 모습이 몇 가지 있습니다 .


내 질문

이 "실험적인"언어를 배울 가치가 있습니까? 나는 끊임없이 언어를 배우지 않고 프로그래밍에 대한 올바른 사고 방식이 아닌 모든 언어에 개방적이라는 다른 질문을 읽었습니다. 나는 이것을 이해하고 있지만 여전히 그것을 얻지 못할 수도 있지만 실제로 언어가 주류가되지 않을 경우 다른 것을 배우는 데 시간을 보내야합니까? 오래된 프로그래밍 언어를 배우고 싶지 않습니다. 나는 많은 사람들이 이것을 중요한 것으로보고 있음을 알고 있습니다. 그러나 당신 중 실제로 FORTRAN을 고려한 사람이 있습니까? 저의 목표는 미래에 성공할 수 있도록 최신 상태를 유지하는 것입니다.


기권

예, 저는 젊은 프로그래머이므로 질문에 많은 순진한 말을했을 것입니다. 아무거나 수정 해주세요! 나는 어딘가에서 학습을 시작해야하므로 내 지식의 많은 부분이 내 생각에 잘못된 진술이나 결함을 야기 할만큼 충분히 스케치적임을 확신한다. 의견에 의견을 남겨주십시오.


결과 ...

나는 놀라운 반응에 정말 놀랐습니다. 그들 중 대부분은 내 오해와 오판을 멋지게 지적했습니다. 나는 이것으로부터 꽤 많은 것을 배웠으며, 내가 배운 모든 것을 희망적으로 활용하게되어 기쁩니다! 합니다 (아마 하스켈 다음 학습을 시작합니다 하지 - 20 세 이상 임에도 불구하고 너무 오래된 언어, 하하하 ) 그리고 내 주변의 다른 옵션을보고 시작합니다.

감사


10
"파이썬, C / C ++, Java, Perl 및 LISP 5 개 모두 배우기"(Eric Raymond, 해커가되는 방법-> 기본 해킹 기술-> 1. 프로그래밍 방법 알아보기 )
gnat

7
단순히 "오래된"것은 기본적으로 "나쁜"을 자동으로 의미하지는 않습니다. 지금까지 가장 환상적인 프로그래밍 중 일부는 30 년 전에 C64에서 수행되었습니다.

8
FWIW 거의 모든 언어가 사용합니다. 누군가가 거의 모든 언어를 사용하여 웃으면 (자바는 느리고, .Net은 M $ 암캐, 하스켈은 비실용적이며, C ++은 너무 오래된 것입니다.) 작업에 맞는 도구;)
Martin

6
"Haskell and ...의 인기를 잃어 버렸습니다"는 어디서 얻었습니까?
leftaroundabout

13
젊은 프로그래머에게는 가정이 너무 많습니다. 그것들을 제거하십시오, 그들은 당신의 마음을 흐리게합니다.
Matthieu M.

답변:


29

극적으로 다른 언어를 배우는 것은 언어를 배우는 것이 아니라 문제에 대한 다른 접근법에 노출되는 것입니다. 도구 상자의 도구

주목해야 할 것은 Haskell은 특별히 오래되지 않았으며 실제로 주류 언어에만 익숙한 사람에게는 매우 적합한 후보입니다. Lisp와 같은 매우 오래된 언어조차도 사물에 미치는 영향으로 인해 배우는 데 매우 유용합니다.

또한 Java와 .Net은 해석되지 않으며 잘못된 레이블을 기반으로 잘못된 가정을하고 있습니다.


죄송합니다. 해석 된 문제에 대해 죄송합니다. 나는 거기에 두 개의 다른 oxymoronic 진술을 혼합하고있었습니다. 질문 자체에서 수정했습니다.
Freesnöw

19
그러나 Haskell 예를 들어 Java보다 오래되었습니다. 그러나 그렇다고 그것이 구식이라는 의미는 아닙니다. 실제로, 유형 시스템은 여전히 ​​Java보다 약 20 년 앞서 있습니다.
Jörg W Mittag

5
@ JörgWMittag : Haskell보다는 Java에 대해 더 많이 말합니다.
Tikhon Jelvis 5

1
나는 Haskell과 Java 로만 프로그램 하지만 ... 공평하게 말하면 주류 언어는 Haskell만큼 좋은 유형 시스템을 가지고 있지 않습니다 . (그리고 당신이 언급 한 것보다 OP ..._ lots_ 더 많은 것을 말해야합니다.)
Louis Wasserman

1
Haskell은 지금까지 20 년이 넘었으며 표준 Haskell은 표준 C ++만큼 오래되었습니다 (둘 다 1998 년부터).
fredoverflow

23

건강 유지 : 규칙적인 연습

연습은 완벽합니다.

당신이 더 많은 코드 쓰기읽기는 , 가까이 당신이 얻을 수있는 깨달음 / 숙달 프로그래머 / 개발자 / 소프트웨어 엔지니어 / 전문가 / 닌자 / 장인 / 해커 / 전문 용어-의-에 이상적인 장소입니다. 더 많은 코드를 읽고 읽는 것뿐만 아니라 새로운 코드 작성 방법을 시도함으로써 더 열린 마음을 가질 수 있습니다.

추천 자료 :

새로운 패러다임 및 언어 기능에 대한 학습

어쩌면 당신은 당신이 당신의 기업 - 언어 - Y에 새로운 슈퍼 언어-X에서 사용하는 것을 번역 할 수 없지만, 어쩌면 그것은 좋은 적합 있었을 때 인식 할 수 있습니다. 어쩌면 당신은 특정 목적에 맞게 프로젝트에 다른 기술이나 스택을 통합 할 때 알 수 있습니다. 또는 어쩌면 당신은 언어 X의 멋진 기능을 에뮬레이트하는 언어 Y의 기능을 사용하고, 그것으로부터 이익을 위해 코드를 리팩토링 (잠재적으로 길을 따라 다른 동료를 계몽)하는 방법을 알 수 있습니다.

예를 들어, 흥미로운 FP 원칙을 발견하고이를 의도적으로 FP가 아닌 Java에 적용하려고 할 수 있습니다 .

추천 자료 :

모든 거래의 잭이 되세요 ... 일부의 주인?

"실험"단계에있을 때 어떤 언어가 메인 스트레인이 될지 모르므로 그 중 하나에 베팅하는 것에 대해 너무 걱정하지 않아도됩니다. 다른 사람들이 같은 베팅을 할 것이며, 이력서에 이러한 것들이 나타날 때 흥미로울 것입니다. 하나의 공구를 벨트에 추가하십시오. 우리의 경우, 결국 무게가 얼마나 나가는 지에 대해서는 큰 문제가 없습니다.

물론 모든 거래의 주인이 될 수는 없습니다. 그러나 당신은 하나의 주인이 될 수 있으며 나머지는 꽤 잘합니다. 당신은 공예를 배우고 있으며, 우리는 다각적입니다. 정기적 인 운동, 워크샵 참석, 책 잡기, 새로운 애완 동물 프로젝트 작성 및 기타 유사한 것들이 우리 분야의 점점 더 빠른 속도의 변화를 따라갈 수있는 방법입니다.

추천 자료 :

적응 가능

적응하는 법을 배우지 않으면 필요할 때 적응하기가 어렵습니다. 끊임없이 새로운 것을 배우면 새로운 과제를 선택할 때마다 더 나은 결과를 얻을 수 있습니다.

등 그것은이다 "스테이 영" 오아시스의 노래가 간다 : 스테이 젊은 무적을 .

적응할 수 있다면 살아남을 수 있습니다.

추천 자료 :

눈에 보이는 상태 유지 : 모집 기관의 레이더 이해

키워드와 기술을 확인란으로 사용합니다. 우리는 그것들을 마음이없는 모집자를위한 허니팟으로 사용합니다.

두 가지 방식으로 작동합니다. 당신이 정말로 당신의 물건을 알고있는 한, 이력서에 많은 물건을 갖는 것이 좋습니다. 적응성과 폭 넓은 지식을 보여줍니다. 또한, 실제로이 중 몇 가지를 습득하고 다른 몇 가지로 괜찮다면 다른 직책과 직무에 따라 이력서의 다른 버전을 조정할 수 있습니다.


다른 유용한 SE 주제


Paul Graham의 Beating the Average (또는 프로그래밍 문제에 대해 쓴 다른 내용)를 읽으려면 소금 한 덩어리로 가져 가십시오. 프로그래밍 실습에 관해 그가 말해야 할 많은 것들이 50 % 옳고 50 %가 위험하다.
메이슨 휠러

@MasonWheeler : 잘 알려진 업계 "거대"에서 찾을 수있는 많은 것들과 마찬가지로 논란의 여지가 있습니다. 많은 사람들이 다른 사람들과 마찬가지로 Zed Shaw의 글을 승인하지 않을 것입니다. 나는 모든 것을 비판적인 마음으로 접근해야한다. 나는 그것을 어떤 것에 대해서도 주어진 것으로 생각하고이 수준의 사람들도 그렇게 생각한다. 많은 작가들이 특정 상황에 비추어 주제를 발표하지만 모든 사람에게 적합하지는 않습니다. 사실, 당신은 여기에서도 매일 답변을 볼 수 있지만 "인기"힘으로 "최고의"답변으로 존경받을 것입니다. 여전히 정보를 제공합니다.
haylem

8

Telastyn의 답변을 확장하기 위해 실제로 다른 프로그래밍 패러다임에 대한 노출에 관한 입니다. 예를 들어, 그것은 논리 프로그래밍을 배우는 것이 아니라 다음을위한 것입니다.

  • 배우는 학습 (새로운 기술을 배우는 실습)
  • 새로운 방식으로 생각하도록 두뇌 훈련
  • 소수의 사람들이 가지고 있고 쓸모가있을 수있는 덜 대중적인 (또는 난해한) 지식을 얻는 것
    • 또는 적어도 당신의 기술 지식으로 그들을 감동하십시오 :)
  • 물론 귀중한 기술적 통찰력을 제공합니다. 왜 C #이 D보다 인기가 있습니까? C ++가 D가 할 수있는 모든 것을 할 수 있습니까? D가 더 많은 것을 할 수 있습니까, 아니면 구문 설탕과 더 비슷합니까?

http://skilldrick.co.uk/2011/02/why-you-should-learn-brainfuck-or-learn-you-a-brainfuck-for-great-good/

brainf * ck를 배우는 또 다른 좋은 이유는 Turing-complete 프로그래밍 언어가 얼마나 기본적인지 이해하는 것입니다. 프로그래머가 언어를 비교할 때 일반적인 주장은“모두 튜링이 완료된 것”입니다. 이는 한 언어로 할 수있는 모든 것이 다른 언어로 할 수 있다는 것을 의미합니다. 당신이 brainf * ck를 배운 후에, 당신은 Turing-complete 언어를 사용하는 것이 얼마나 어려운지, 그리고 그 주장이 물을 가지고 있지 않은 방법을 이해할 것입니다.

http://norvig.com/21-days.html (피터 노르 비그)

최소한 6 개의 프로그래밍 언어를 배우십시오. 클래스 추상화 (예 : Java 또는 C ++)를 지원하는 언어, Lisp 또는 ML과 같은 기능적 추상화를 지원하는 언어, Lisp와 같은 구문 추상화를 지원하는 언어, 선언적 사양 (Prolog 또는 C ++ 템플릿과 같은)을 지원하는 언어, 하나 아이콘 또는 구성표와 같은 코 루틴과 Sisal과 같은 병렬 처리를 지원하는 코 루틴을 지원합니다.


7

내 첫 번째 생각은 C와 같은 것을 배우고 그것을 C ++에 스프링 보드로 사용하여 (내가 강한 이해 / 기반을 갖도록하기 위해)했지만 이전에 말했듯이 분마다 점점 커지고 있습니다.

글쎄, 이것은 거대한 오류 더미입니다. C를 아는 사람들은 C ++을 배우는 데 어려움을 겪 습니다. 언어를 사용하는 방법에 대해 알고 있다고 생각하는 모든 것이 잘못되어 있기 때문입니다. 원격으로 좋은 C ++ 인 관용적 C는 사실상 없습니다. C ++을 처음부터 처음부터 배우는 것이 좋습니다. 도움을 다른 사람에게 자신의 시간을 자원 봉사 자신과 같은 사람들은 C가 지출 ++ 배울 거대한 자신의 C 습관을 드롭 가르치는 사람들에 노력하고 그것의 비율을.

인기에 관해서는, C ++ 최근에 약간의 재발을 경험하고 있습니다. 사람들은 실제로 성능 중요하고 모든 구성 요소를 관리되는 구성 요소로 실행하는 것을 피할 수 없으며 Modern C ++ (특히 C ++ 11 사용)는 생각했던 C 쓰레기와 완전히 다릅니다. 실제로 그렇게 나쁘지는 않습니다. 실제로 나이가 들지는 않습니다. 점점 새로워지고 있습니다. 새로운 표준은 방대한 업그레이드이며 현재 C ++가 사용되는 많은 영역에서 현재 또는 파이프 라인에 적합한 대체 언어가 없습니다. C ++ 상호 운용성 (예 : C ++ 자체)이있는 언어가 없기 때문에 기존 C ++ 코드베이스에서 마이그레이션하기가 어렵습니다.

진지한 대화에서 VB.NET 또는 C #을 언급하면 ​​사람들이 웃습니다.

새로운 사람들을 사귀십시오. AFAIK, VB.NET은 VB6에서 마이그레이션하는 것을 돕는 것을 제외하고 어떤 이유로 든 실제로 존재하지 않으며 자체적으로 가치있는 목표는 아니지만 C #은 실제 언어입니다. 실제 언어 기능과 멋진 라이브러리를 추가했다는 점을 제외하면 Java와 비슷합니다. C #을 빨아하지 않습니다 VS에서 아주 좋은 도구로 매우 인기있는, 잘 지원되는 언어 인 것을 심하게하고 배울 수있는 고체, 그렇지 않은 경우 뛰어난, 것입니다.

MONO를 사용하지 않는 한 크로스 플랫폼이 아닙니다 (아직 개발 중이며 약간의 개선이 필요합니다).

MONO는 꽤 안정적입니다. 또한 궁극적으로 데스크톱 소비자의 90 % (또는 80 %)가 지금 Windows를 실행합니다. 데스크톱 응용 프로그램을 개발하려는 경우 크로스 플랫폼 언어를 사용하더라도 Windows 사용자가 아닌 사용자가 지원할 가치가 있는지 여부에 대한 공개 질문입니다.

궁극적으로 C ++이나 Haskell과 같은 언어를 배우면 많은 시간을 할애 할 수 있으며, 이는 대규모 런타임보다는 강력한 컴파일러 기술에 중점을 둡니다.

PHP를 선택하지 마십시오. 그로부터 배울 수있는 유일한 것은 언어를 구축하지 않는 방법입니다.


1
기존 C ++ 결함을 패치하기 위해 C ++ 표준에 최근에 추가 한 것의 상당 부분 (예 : 상당한 시간의 추가 수)과 같이 존재합니다. 예를 들어, Rvalue 참조는 복사 생성자와 관련된 많은 성능 및 복잡성 문제를 해결하기 위해 추가 복잡성을 추가합니다. C ++에서는 객체를 100 % 완전히 잘못 된 값 유형으로 사용할 수 있기 때문에 존재합니다. 다른 어떤 OO 언어도 그렇게하지 않는 좋은 이유.
메이슨 휠러

@MasonWheeler 최소한 C #, D 및 Eiffel은 값 형식으로 개체를 허용합니다. 그리고 RAII 는 시스템 프로그래밍에 아주 좋습니다!
fredoverflow

@MasonWheeler : Rvalue 참조 완벽한 전달 및 이동 전용 유형을 가능하게합니다. 성능은 도입의 세 가지 주요 원인 중 하나 일뿐입니다. 값 형식의 개체는 괜찮습니다. 물론 C ++로 자신 만의 참조 유형 객체를 작성할 수 있습니다.
DeadMG

또한 모든 성능 문제가 있더라도 C ++이 여전히 가장 빠른 언어였습니다.
DeadMG

1
@FredOverflow : C #에서 모든 객체는 참조 유형입니다. Structs는 값 유형이 될 수 있지만 객체는 그렇지 않습니다. 이는 매우 좋은 이유입니다. 만약 객체가 값 유형으로 사용되면 거대한 원숭이 렌치를 상속과 다형성으로 던져서 모든 종류의 추한 해킹을 사용해야합니다. 자손 객체를 부모 유형 변수에 할당 (또는 전달)하여 실제로 해당 객체를 할당하지 않는 복사 생성자와 같습니다. 처음부터 OOP를 사용하는 전체 지점 인 Liskov 대체를 완전히 망칩니다. 그것은 끔찍한 아이디어이며, 나는 그것이 결코 잡지 않았기 때문에 기쁘다.
메이슨 휠러

6

당신이 말한 것에 대한 몇 가지 의견 ...

1) 모든 프로그래머는 낡은 C라도 배워야합니다. 기계에 접근하기에 좋은 언어입니다. Joel의 조언부터 CS 학생들까지 ....

졸업하기 전에 C를 배우십시오

2 부 : C. C ++에 대해서는 언급하지 않았습니다. C는 점점 더 희귀 해지고 있지만 여전히 작업 프로그래머의 언어입니다. 그들은 서로 통신하는 데 사용하는 언어이며, 더 중요한 것은 ML, Java, Python과 같은 대학에서 가르치는 최신 유행의 쓰레기에 관계없이 "현대"언어보다 기계에 훨씬 더 가깝습니다. 일. 기계에 가까워 지려면 최소한 한 학기를 보내야합니다. 그렇지 않으면 더 높은 수준의 언어로 효율적인 코드를 만들 수 없습니다. 최고의 프로그래밍 작업 중 하나 인 컴파일러 및 운영 체제에서는 작업 할 수 없습니다. 대규모 프로젝트를위한 아키텍처를 만드는 것은 결코 신뢰할 수 없습니다. 나는 당신이 연속과 폐쇄, 예외 처리에 대해 얼마나 알고 있는지는 중요하지 않습니다. 이유를 설명 할 수 없다면 while (* s ++ = * t ++); 문자열을 복사하거나 그것이 세상에서 가장 자연스럽지 않은 경우 글쎄요, 내가 염려하는 한 미신에 기초한 프로그래밍입니다. 기본 해부학을 모르고 전달하는 의사 제약 회사 판매 아기가 말한 것에 근거하여 처방전을 내야합니다.

2) 언어는 일반적으로 사용되지 않더라도 사고 방식을 배우는 데 도움이 될 수 있습니다. 기능적 프로그래밍이 최신이 아닌 경우에도 Scheme (또는 LISP)을 통해 기능적 프로그래밍을 이해하십시오. 에서 이 보드의 다른 게시물 .

축하합니다. 컴퓨터 과학을 가르치려고 남은 몇 안되는 학교 중 하나에가는 것처럼 들립니다. 모국어로서의 학습 계획은 (IMO) 매우 좋습니다. 아니요, 다른 많은 사람들만큼 상업적인 것은 아니지만 컴퓨터 과학의 본질을 배우기위한 훌륭한 언어입니다. – Jerry Coffin 10 월 20 '11시 3:32

C, C ++ 및 Java는 컴퓨터 과학의 산업 부산물입니다. 체계의 전체 뿌리는 컴퓨터 과학에 있습니다. 상업적으로 사용되는 언어는 맥도날드가 요리와 관련하여 컴퓨터 과학과 관련이 있습니다. – JasonTrue 10 월 20 일 11시 5:30

이 사람들은 맞습니다. Dijkstra가 말했듯이, 망원경과 컴퓨터 공학은 천문학과 망원경 구조를 혼동하는 것과 같습니다. 체계는 컴퓨터 과학의 기본 개념을 배우기위한 최고의 언어에 관한 것입니다. 컴퓨터 과학 학위를 취득하는 것이 Java로 업무용 응용 프로그램을 작성하는 방법을 배우는 것에 관한 것이라면, 잘못된 프로그램에 등록되었을 수 있습니다. – Eric Lippert 10 월 20 '11시 7:40

내가 아는 거의 모든 개발자는 스스로 C / C ++를 배웠습니다. 당신은 그것을 위해 대학이 필요하지 않습니다. – mouviciel 10 월 20 '11시 7:48

동물학 코스가 코끼리 마구간을 제거하는 방법보다는 진화 생물학, 해부학 및 동물 행동을 가르치는 것과 같은 이유로 – jk. 10 월 20 일 '11 일 7:58

이제는 원래 전제를 공격했지만 호기심을 표명해야한다고 생각합니다. 호기심이 부족하여 너무 많은 사람들이 쓸모 없게됩니다. 개인적인 발전을 이용한다는 것은 잘 발달 할 것이라는 큰 신호입니다. 가장 많이 배우는 사람들은 일이 어떻게 작동하는지 계속 기꺼이 묻습니다.


1
"내가 아는 거의 모든 개발자가 스스로 C / C ++를 배웠습니다.이를 위해 대학이 필요하지 않습니다.": 동일합니다. 우리 대학에서 그들은 C로 과제를 주었지만 C 코스는 우리에게주지 않았습니다. 그들은 단지 우리에게 컴퓨터 과학 학생들이 책을 가지고 배우기를 기대했습니다.
Giorgio

1
C를 배우는 것은 상당히 고문입니다. 동정.
DeadMG

2
실제로 C를 배우는 것이 쉬운 부분이었고, 실제 고문은 C ++로 옮겨야 할 때 시작되었습니다. ;-)
조르지오

3

배우는 언어는 앞으로 5 년 안에 변경 될 것입니다. 당신이 생각하는 언어를 배우는 것이 아니라 배우는 법을 배우는 것입니다. 언어를 배우는 것에 더 많은 노출과 그 언어를 배우는 과정은 장기적으로 엄청난 도움이 될 것입니다!

내가 일한 마지막 회사는 자체 언어를 사용했습니다. 비주얼 베이직과 비슷하지만 같지는 않았습니다. 다른 언어를 알고 있다는 사실 때문에 다른 직원보다 훨씬 빨리 언어를 선택할 수있었습니다.

C ++, BASIC, Pascal을 배운 후 일본어를 배웠으며 컴퓨터 언어와 외국어를 배우는데도 같은 기술이 필요하다고 말할 수 있습니다. 이러한 기술은 상실되거나 날카 로워 질 수 있습니다. 드라이브가 있다면 계속 진행하고 새로운 언어를 배우십시오!

(PS. FORTRAN 또는 어셈블리 학습에 관해서는, 나는 적어도 한 학기 이전의 언어를 복용하는 것이 중요하다고 생각합니다. 새로운 언어, 플래그, 메모리 할당 등과 같은 것들에서 당연하다고 생각하는 것들에 대해 생각하게합니다. .)


3

프로그래머가되고 싶다면 최대한 많은 "오래된"언어를 배우는 것이 좋습니다. Lisp로 시작하고, Forth를 잘 이해하고, 모든 Wirth 언어의 진화, Fortran의 진화, 프롤로그의 상승 및 하락에 대해주의를 기울이고 비밀 아이다 생태계에 몰래 들어가고 Occam을 배우면 비밀 무기를 얻을 수 있습니다. "주류"를 쫓는 것은 야심 찬 프로그래머가 할 수있는 가장 어리석은 일입니다.


+1 : 전적으로 동의합니다. Haskell, Scheme, Scala, SML 등과 같은 주류가 아닌 언어를 실험하면서 얻은 많은 흥미로운 아이디어
Giorgio

2

나는 사물의 노출 부분에 동의합니다. 비록 Java, C, C ++, Javascript, Python, Ruby 및 약간의 .NET을 알고 있지만 (주로 M $ <-개인적인 의견을 싫어하기 때문에) D로 프로그래밍하는 것을 정말 좋아한다고 말해야합니다.

D에는 정말 멋진 기능 세트가 있습니다 (대부분은 C ++ / Java (클래스 추상화가있는 언어)로 구현됩니다). 그러나 내가 가장 좋아하는 것은 제네릭과 대리자입니다 (콜백을 쉽게 구현할 수있게 해줍니다). 그 외에도 C ++과 비교할 때 훨씬 간단한 구문을 얻을 수 있습니다. D에는 실제로 효율적인 가비지 수집기가 있지만 메모리를 직접 처리하도록 선택할 수 있습니다 (특히 C / C ++ 모듈과 인터페이스 할 때). D에는 진입 장벽이되어서는 안되는 많은 사용자 기여 모듈이 없습니다. 기존 C / C ++ 라이브러리 (pleanty)와 쉽게 인터페이스 할 수 있으므로 모듈이 필요하지 않으므로 중복 될 수 있습니다.

D에는 모든 일반적인 프로그래밍 문제에 대한 요구를 충족시키는 자체 표준 라이브러리 (Phobo)가 있습니다. Phobos 또는 자체적으로 사용할 수 있는 대체 라이브러리 ( Tango-D2 )도 있습니다. 웹 개발자이고 이벤트 기반 서버를 작성해야하는 경우 Tango에는 Selector 추상화 (select (), poll (), epoll ()에 대해서만 tango.io.Selector)가 있습니다. 나는 그것이 libev보다 더 나은 성능을 발견했습니다.


나는 D를 배우는 것에 동의하지 않을 것이 아니라, 정적으로 타이핑 된 OO와 절차 적이며 저수준이 아닌 언어를 이미 알고있는 사람에게는 다른 패러다임을 강조하거나 금속에 조금 더 가까운 언어를 배우는 것이 더 가치가 있습니다. D에 대한 실험도 많지 않습니다.
leftaroundabout

1
동의했다. 저는 OP의 질문이 "실험적"이라는 것에 초점을 맞추고 있지만 아직 안정적이지 않은 / 기업 지원 / 주류가 아닌 지원이라고 생각합니다. 그리고 다른 패러다임을 구현하는 "실험적"으로가더라도 패러다임이 거의없는 것 같습니다. 그리고 대부분의 언어는 하나 또는 다른 언어를 구현합니다. 그런 다음 우리는 어떤 언어가 현재 작업에 더 좋고 / 빠르고 / 쉬운 지 / 사용하기에 가장 좋습니다. 이러한 요소는 프로그래머마다 다릅니다.
Shripad Krishna

1

언어는 어떤 종류의 영역에서 문제를 해결하기 위해 개발되었습니다 (최소한 처음에는). 당신이 편한 방법으로 도구로 해결할 수없는 문제에 직면하지 않았다면 목수가 될 것으로 예상되는 나무 판자를 망치게 될 것입니다. 언어가 해결하려고하는 문제의 종류를 이해하려고 노력하십시오. "실험적인"언어와 새롭고 멋진 사람 언어 사이의 유일한 차이점은 예를 들어 구글과 다트의 Go와 같은 언어를 지원하는 돈입니다. 그들이 내 뒤뜰에서 개발 되었다면 아마도 일부 포럼에서 죽을 것입니다. 그들은 그들이 해결하려고하는 문제를 잘 설명 할 경우에만 살아남습니다. 또는 Perl 및 C ++와 같은 다른 방법으로 문제를 해결하여 생존을 유지하는 데 능숙합니다. 루아를 배우는 것이 좋습니다. 프로그램에 내장하기 위해 만들어진 언어는 매우 빠르고 가벼우므로 Java와 같은 일부 언어로는 해결할 수없는 크고 작은 문제를 해결할 수있는 도구를 제공합니다. 일본어를 예로 들어 구문, 문법 및 알파벳을 배우고 문화를 무시하면 문화가 왜 그렇게 복잡한 지 이해하지 못하고 결국 모든 것을 잊어 버릴 것입니다. 당신을 위해 아무것도 해결하지 않습니다.


1

여러 언어를 배우면 프로그래밍에 대한 폭 넓은 시각을 얻을 수 있습니다. "다른"에 중점을 둡니다. 예를 들어 C #과 Java를 배우면 그중 하나만 배우는 것 이상을 가르치지 않습니다. 그러나 C # 또는 Java를 배우면 기능적 언어 (예 :)가됩니다.

젊은 프로그래머라면 다른 유형의 언어를 둘러 보는 것보다 한 언어를 실제로 이해함으로써 더 많은 가치를 얻을 것이라고 생각합니다. Java, VB.NET 및 C #을 얼마나 잘 알고 있는지는 확실하지 않습니다. 위의 언어 중 하나를 사용하여 프로젝트를 공격 한 경우 병목 현상이 언어에 대한 지식이 아니라 프로젝트 자체가 될 것이라고 확신하십니까? " 언어로 어떻게하면 되나요?" 라고 스스로에게 더 많은 시간을 보내려면 실제 문제에 대해 생각하는 것보다 현재 언어 중 하나에 더 집중해야 할 것입니다.

그리고 개인적으로 나는 당신이 어느 것을 결정하는 데 실용적인 접근 방식을 취해야한다고 생각합니다. Java는 Android 앱에 사용됩니까? Android 앱을 만드는 것이 관심이 있다면 좋습니다. 그렇지 않으면 관련이 없습니다. C #은 Windows 이외의 개발에 적합하지 않습니까? 리눅스 개발에 관심이 있다면 나쁜 소식이다. 그렇지 않으면 관련이 없습니다. 등등.

그리고 당신이 언급 한 "실험적인"언어? 실용적으로 다른 사람들과 일할 때 적합하지 않을 것입니다 .Fantom을 알고있는 모든 사람들에게 C # 또는 Java를 아는 수천 명의 사람들이있을 것입니다. 개인 프로젝트의 경우 이것이 반드시 문제는 아닙니다. 귀하의 목표가 귀하의 고용 가능성을 높이는 것입니다.


1

Postscript 또는 APL과 같은 언어로 프로그래밍하는 법을 배우는 것은 아마도 그 지식을 사용할 가능성이 거의 없기 때문에 시간 낭비라고 말할 수 있습니다. 그러나 같은 맥락에서 루비와 파이썬은 아무것도 사용하지 않는다면 시간 낭비라고 주장 할 수 있습니다.

그러나 Lisp를 Postscript로 작성해야 할 가능성이 있지만 Lisp를 배우는 것이 낭비라고 말하는 사람은 거의 없습니다. 그러나 Lisp을 배우면 문제에 대해 다르게 생각하도록 (바람직하게) 배우게되므로 대부분의 프로그래머가 시간이 가치가 있다고 말할 것입니다.

그래도 필요한 시간 투자는 실제로 1 시간에서 4 시간 밖에 걸리지 않기 때문에 새로운 언어를 배우고 싶지 않습니다. 그리고 루아와 같은 언어의 사용은 가장 특이한 장소에서 팝업 , 당신은 예제를 통해 실행 몇 시간을 소비하지 않았다면 당신은 그들을 인정하지 않을 것입니다.

새로운 언어가 보이면, 유용한 언어를 조금 읽어보십시오. 틈새 시장에서 좋아하는 언어가 너무 잘 포함되지 않으면 기본 사항을 배우는 데 하루가 걸립니다. 학사 시즌 17을 보는 것보다 확실히 시간이 오래 걸리 거나 그렇지 않으면 시간을 낭비 할 수 있습니다. 그런 식으로, 당신이 그것을 사용한다면, 그것은 떠오를 수 있고 더 자세한 정보를 얻을 수있는 곳을 알고 있습니다.

개인적으로 Go를 살펴 보는 것이 좋습니다. 필자는 C 또는 C ++에서 3 일과 13 개의 타사 라이브러리보다 더 나은 성능을 발휘하는 단일 페이지 프로그램을 작성하는 데 사용했으며 Python, C #, Ruby 등에서는 불가능했습니다. 정말로, 정말로, 정말로 그들의 것을 알고있는 사람들에 의해.


-1

다른 유형의 것을 선택하십시오. 기능별로 그룹화하고 각 그룹에서 하나씩 선택하십시오. 전문적으로이 작업을 수행하려면 사용되는 것을 선택하십시오 (따라서 템플릿 메타 프로그래밍을 사용하여 정적으로 형식화 된 컴파일 된 언어의 경우 C ++보다 D).

열악한 D는 좋은 언어이지만 C ++에는 킬러 앱이 없습니다 .C #의 경우 1 번 언어와 거의 완벽하게 호환됩니다 (C ++의 경우 C). 멋지지만 그 중요한 작은 사실은 아마도 역사 책에서 D를 사이드 쇼 상태로 관련시킬 것입니다.


-2

C는 오래되었지만 여전히 매우 강력하고 흥미 롭습니다. C를 배우면 "프로그래밍"미래에 많은 도움이 될 것입니다.

Java는 느리지 않습니다. 누가 자신에 대해 말하고 있는지 모른다고 말하면 Java는 OOP에 대해 많은 것을 배울 것입니다.

파이썬으로 시작한 다음 C 나 다른 것을 시도해 보지 않겠습니까?


C는 마이크로 컨트롤러 의 언어 이기도합니다 (4K 만 있으면 8K 런타임을 감당할 수 없습니다). 그 공간만으로도 C는 그보다 10 년 더 적극적으로 사용하고 있습니다.
TMN

Java는 느리게 사용되었습니다. 처음 몇 년 동안 속도 악마보다 적은 것을 기억합니다. 어떤 사람들은 성능이 향상되지 않았다고 생각합니다.
MetalMikester
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.