여기서 누가 배우고 있습니까? 다른 회사에서 사용하고 있습니까? 널리 사용됩니까?
여기서 누가 배우고 있습니까? 다른 회사에서 사용하고 있습니까? 널리 사용됩니까?
답변:
프로그래밍 언어에 관해서는, "이것은 당신이 누구인지, 당신이 아는 사람이다"라는 오래된 속담은 분명히 사실입니다. C와 C ++는 AT & T의 후원을 받았으며, Java는 Sun에 의해 우리에게 제공되었으며, .NET 제품군은 Microsoft에서 출시되었으며, 매우 인기가있었습니다. 그런 다음 Objective-C와 Python을 사용했습니다. 이것은 꽤 오랫동안 주변에 있었고 Apple과 Google에서 각각 발견되고 과장된 다음 갑자기 실제로 벗어났습니다. 그러나 주요 후원자가없는 언어는 아무리 훌륭하더라도 모호한 경향이 있습니다.
Go는 Google이 후원합니다. 여기서 올바른 결론에 도달하는 것은 어렵지 않습니다. 5 년을 주면 거대해질 것입니다.
실제로 Go가 그렇게 성공할 것이라고는 생각하지 않습니다. 그것이 대중에게 도달하지 못하는 이유는 그것이 시스템 프로그래밍을위한 언어 가되기 때문입니다 .
보다 현대적인 기능을 갖춘 시스템 언어가 실제로 필요합니다. C와 C ++는 레거시 코드와 너무 밀접하게 호환되므로 이전 버전과의 호환성이 향상되었습니다. 나는 Go가 현재의 형태로 그 역할을 수행한다고 생각하지 않습니다. 디자인이 너무 미니멀하다. 동시성 모델은 흥미롭지 만 고급 언어에서 시스템 세계에 다른 기능은 거의 제공하지 않습니다. (마지막으로 확인한 것은 얼마 전까지 만해도 예외는 없었습니다.) 또한 적어도 컴퓨터 언어 벤치 마크 게임 이 좋은 척도 (매우 거친 지표 임) 만큼은 아닙니다. "실제"시스템 언어만큼이나 빠릅니다.
보다 현대적인 시스템 언어의 빈 공간을 채울 수있는 가장 좋은 기회는 D 라고 생각합니다 . D는 기술적으로는 Go보다 강력하지만 정치적으로 약합니다. 주요 기업의 지원을받지 않습니다. 실제로 필요한 것은 일부 라이브러리 (언어 사양이 안정적이므로 빠르게 해결되고 있음)와 킬러 앱입니다.
foo, err := SomeFunc()
일반적입니다. 주요 문제 또는 오류가 제대로 작동하지 않는 지점의 경우 panic()
및 을 사용할 수 있습니다 recover()
. 그러나 이들은 의도적으로 매우 드물게 사용됩니다. 스택이 매우 짧은 경우 예외를 스택으로 전달할 수 없으며 동시 스택이 많은 경우 짧은 스택이 일반적입니다.
나는 Go를 배우고 있습니다. 그렇습니다 .Google과 Heroku 외에도 생산적으로 사용됩니다.
Go는 확실히 시스템 프로그래밍에 좋은 언어입니다. C와 같은 간단한 코드, C ++과 같은 강력한 구조 및 Java와 같은 안전 기능. 아주 어린 언어이기 때문에 다른 언어의 많은 좋은 것들이 상속되었습니다.
i := 1
대신 int i = 1
, func f(x, y, z int)
대신 void f(int x, int y, int z)
, type Foo struct { a, b int }; bar := Foo{1, 2}
대신class Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
정적 유형 언어에서만 알려진 이러한 모든 장점과 안전 및 성능을 고려하면 동적 언어 커뮤니티의 많은 사람들이 Go를 좋아하기 시작했습니다. 대부분의 경우 Go-code는 Ruby 코드보다 길지 않지만 모든 경우 더 안전하고 체계적으로 구성됩니다.
그러나 결국 Go의 킬러 논쟁은 동시성이라고 생각합니다. 기능적 언어에서만 알려진 강력한 동시성 지원 기능이있는 C 유사 언어입니다.
조금 늦었을 수도 있지만 현재는 Go가 인기있는 언어가되고 있으며 Google이이를 추진하면서 주류에 진입 할 것입니다. Google의 시스템 및 제품에 사용되는 언어로 추진되고 있으며 Google App Engine과 함께 사용할 언어로 추진되고 있습니다. Go 건물의 백엔드에는 매우 날카로운 사람들이 있습니다. Go를 위해 타사 라이브러리에서 작업하는 매우 영리하고 상상력이 풍부한 사람들이 있습니다.
Go는 다른 언어로 채워지지 않은 공백을 채 웁니다. 나에게 나는 그 공백을 Perl과 많은 해결 방법과 트릭으로 채우려 고 노력했다. 나는 그것이 모든 상황과 모든 사람들에게 완벽한 언어라고 생각하지는 않지만 확실히 많은 상황의 후보입니다. 예를 들어 웹 앱에는 적합하지만 데스크톱 앱 또는 서버 기반 앱에도 적합합니다. 데몬과 일반 ol 데스크탑 앱 모두 Windows, Linux 및 OS X에서 잘 실행되는 동안 HTTP 및 WebSocket (아파치 또는 nginx를 모두 건너 뛸 수 있음)과 같은 환상적인 작업을 수행합니다. 현재로서는 실패한 유일한 상황은 Android 앱에 대한 것이며 곧 해결 될 것입니다. Windows 데스크톱 앱, Linux 데스크톱 앱 및 Linux 기반 웹 앱에 사용합니다.
나는 그것이 주류에 실제로 도달하기까지 몇 년이 걸릴 것이라고 믿지만 거기에 도착할 것입니다. 펄이 CPAN과 함께 사용하는 것과 같은 종류의 수와 선택과 같이 더 많은 타사 라이브러리를 구축해야한다고 생각합니다. 도착할 것이다.
"주류"는 무엇을 의미합니까? 그것을 알지 못하면이 질문에 대답하기가 너무 어렵습니다. 조금 살펴 보자.
가능한 정의가 많이 있습니다. 몇 가지가 있습니다 :
관리 뷰 :
개발자의 관점 :
경력보기 :
위의 모든 것을 감안할 때, 나는 정직한 대답은 아마도“말하기에는 너무 이른 것”이라고 주장하지만 실제 장수의 가장 좋은 지표는 작은 숫자라고 믿습니다.언어를 사용하는 비즈니스. 대기업은 모두 잘 운영됩니다. 적용 가능한 투자 규모 때문에 언어 또는 도구 시스템의 성장에 필수적 일 수도 있습니다. 반대로, 소기업이 제품과 서비스를 제공하기 위해 언어를 사용하여 구축 한 경우, 앞으로도 계속 그렇게 할 수 있도록하는 데 기여하고자 할 것입니다. 그들은 또한이 지역에서 고용 시장의 기반을 형성하고 도구에 대한 수요도 형성합니다. 놀랍게도, 그것들은 나의 목록에서 주류성을 나타내는 몇 가지 지표입니다 (관리의 기발함에 따라 더 많을 수도 있습니다).
그렇다면 Google 이외의 사람들 이 자신의 작업에 Go를 사용하고 있습니까? 나도 몰라 (아니요. 현재 Java, C 및 Tcl. YMMV가 혼합되어 있습니다.)
나는이 질문 때문에 Go를 보았으므로 주류 언어로 이륙할지 여부에 대해서는 실제로 언급 할 수 없지만 한 가지 사실은 나를 정말로 흥분 시켰습니다.
http://golang.org/doc/go_spec.html#Channel_types
내가 먼저 오캄-PI에서 채널의 개념을 가로 질러 와서 나는 그것이 최고의 프로그래밍 개념 중 하나라고한다 이제까지 . C 형 언어로 같은 일을하는 것이 때로는 고통 스러울 수있는 동시성을 너무 쉽게 보이게합니다.
내가 본 것 (10 분 동안 본 것)에서 Go는 많은 다른 프로그래밍 개념을 결합하려고 노력하고 있지만, 모든 거래의 잭이 될 수있는 위험이 있습니다.
그것이 주류가 될지 여부는 Google이 그것을 appengine 및 / 또는 GWT 지원 언어로 채택하는지에 달려 있다고 생각합니다.
Go가 대중화되기를 바랍니다.
구문이 강력합니다. (python, C, Java의 장점을 배우십시오). 멀티 코어 CPU에 좋습니다. (채널 기능은 스레드 프로그래밍보다 훨씬 낫습니다). 이 디자인은 많은 프로그래머의 함정을 방지합니다. (잘못된 포인터, 도구 gofmt에 의한 동일한 코딩 스타일, 변수 초기화되지 않은 버그 방지, 처음에는 파이썬 + C이지만 C의 1/2 속도에 가까운 속도로 처음 시도합니다.
그러나 깊이 배우고 나면 내결함성과 확장 가능한 아키텍처를 개발하는 것이 적합하다는 것을 알았습니다.
after
입니다.