Ai ở đây đang học đi? Có phải các công ty khác đang xem xét sử dụng nó? Nó có khả năng trở nên được sử dụng rộng rãi?
Ai ở đây đang học đi? Có phải các công ty khác đang xem xét sử dụng nó? Nó có khả năng trở nên được sử dụng rộng rãi?
Câu trả lời:
Khi nói đến ngôn ngữ lập trình, câu ngạn ngữ cũ, "không phải bạn là ai, đó là người bạn biết" chắc chắn đúng. C và C ++ được tài trợ bởi AT & T, Java được Sun mang đến cho chúng tôi, gia đình .NET ra khỏi Microsoft và tất cả chúng đều trở nên rất phổ biến rất nhanh. Sau đó, chúng tôi có Objective-C và Python, đã tồn tại khá lâu và vẫn thực sự tối nghĩa cho đến khi chúng được phát hiện và thổi phồng lên bởi Apple và Google, và rồi đột nhiên chúng thực sự cất cánh. Nhưng ngôn ngữ mà không có một nhà tài trợ chính có xu hướng mòn mỏi trong tối nghĩa, cho dù chúng tốt như thế nào.
Go được tài trợ bởi Google. Không khó để đi đến kết luận đúng ở đây. Cho nó năm năm và nó sẽ rất lớn.
Tôi thực sự không nghĩ rằng Go sẽ thành công như vậy. Một lý do tại sao nó sẽ không đạt được số lượng lớn là vì nó được dự định là một ngôn ngữ để lập trình hệ thống.
Có một nhu cầu thực sự cho một ngôn ngữ hệ thống với các tính năng hiện đại hơn. C và C ++ quá bị ràng buộc bởi mã kế thừa và khả năng tương thích ngược ở đây để cải thiện nhiều. Điều đó nói rằng, tôi không nghĩ Go hoàn thành vai trò đó ở dạng hiện tại. Thiết kế của nó quá tối giản. Mặc dù mô hình đồng thời của nó rất thú vị, nó mang lại một số tính năng khác từ các ngôn ngữ cấp cao hơn cho thế giới hệ thống. (Thời gian qua tôi đã kiểm tra, được thừa nhận là một thời gian trước đây, nó thậm chí không có trường hợp ngoại lệ.) Hơn nữa, ít nhất là trong phạm vi mà các Benchmark game máy tính Ngôn ngữ là một biện pháp tốt (đó là phải thừa nhận là một chỉ số rất thô), nó không gần như nhanh như một ngôn ngữ hệ thống "thực" cần phải có.
Tôi nghĩ rằng ngôn ngữ có cơ hội tốt nhất để lấp đầy khoảng trống của một ngôn ngữ hệ thống hiện đại hơn là D . D mạnh hơn về mặt kỹ thuật so với Go nhưng yếu hơn về mặt chính trị. Nó không được hỗ trợ bởi một tập đoàn lớn. Những gì nó thực sự cần là một số thư viện (điều này hiện đang được giải quyết nhanh chóng khi thông số ngôn ngữ ổn định) và một ứng dụng sát thủ.
foo, err := SomeFunc()
phổ biến. Đối với các vấn đề lớn, hoặc các điểm mà err không hoạt động tốt, bạn có thể sử dụng panic()
và recover()
. Tuy nhiên, những thứ này được sử dụng rất hiếm khi; không có cách nào để vượt qua ngoại lệ lên ngăn xếp nếu ngăn xếp rất ngắn và ngăn xếp ngắn là phổ biến nơi có nhiều luồng đồng thời.
Tôi đang học Go và vâng, nó được sử dụng hiệu quả bên cạnh Google và Heroku.
Go chắc chắn là một ngôn ngữ tốt đẹp cho lập trình hệ thống. Mã đơn giản như trong C, các cấu trúc mạnh mẽ như trong C ++ và các tính năng an toàn như trong Java. Vì nó là một ngôn ngữ rất trẻ, rất nhiều điều hay từ các ngôn ngữ khác đã được kế thừa:
i := 1
thay vì int i = 1
, func f(x, y, z int)
thay vì void f(int x, int y, int z)
, type Foo struct { a, b int }; bar := Foo{1, 2}
thay vìclass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
Xem xét tất cả những điều tốt đẹp này và sự an toàn và hiệu suất chỉ được biết đến từ các ngôn ngữ được nhập tĩnh, rất nhiều người từ cộng đồng ngôn ngữ động đã bắt đầu thích Go. Trong hầu hết các trường hợp, mã Go không dài hơn mã Ruby, nhưng trong mọi trường hợp an toàn hơn và có cấu trúc tốt hơn.
Nhưng cuối cùng, tôi đoán rằng đối số sát thủ cho Go là đồng thời. Đó là một ngôn ngữ giống như C có hỗ trợ đồng thời mạnh mẽ chỉ được biết đến từ các ngôn ngữ chức năng.
Tôi muốn nói rằng điều này chủ yếu phụ thuộc vào các thư viện / dịch vụ / phần mềm sẽ được tạo trong / cho / sử dụng Go. Mọi người sử dụng một cái gì đó trong ba tình huống (vấn đề theo thứ tự): khi thực tế họ không có lựa chọn nào khác (Objective-C), khi môi trường xung quanh họ sử dụng nó (FORTRAN), khi nó giúp cuộc sống của họ dễ dàng hơn (Ruby).
Có thể hơi muộn cho việc này, nhưng Go đang trở thành một ngôn ngữ phổ biến hiện nay và có khả năng sẽ đi vào dòng chính với việc Google đẩy nó về phía trước. Nó đang được thúc đẩy như là một ngôn ngữ được sử dụng cho các hệ thống và sản phẩm trong Google và đang được thúc đẩy như một ngôn ngữ để sử dụng với Google App Engine. Có một số người rất sắc sảo trong phần phụ trợ của việc xây dựng Go và tăng cường nó. Có một số người rất thông minh và giàu trí tưởng tượng làm việc trên các thư viện của bên thứ ba cho Go.
Đi vào chỗ trống mà các ngôn ngữ khác chưa hoàn toàn lấp đầy. Đối với tôi, tôi đã từng cố gắng lấp đầy khoảng trống đó bằng Perl và một loạt các cách giải quyết và thủ thuật. Tôi không tin đó là ngôn ngữ hoàn hảo cho mọi tình huống và mọi người, nhưng chắc chắn đây là một ứng cử viên cho khá nhiều tình huống. Ví dụ, nó hoạt động tốt cho các ứng dụng web đồng thời hoạt động tốt cho các ứng dụng trên máy tính để bàn hoặc ứng dụng dựa trên máy chủ. Nó thực hiện công việc tuyệt vời như vậy với HTTP và WebSocket (có nghĩa là bạn có thể bỏ qua Apache hoặc nginx hoàn toàn) trong khi cũng chạy rất tốt trên Windows, Linux và OS X cho cả daemon và cho các ứng dụng máy tính để bàn thông thường. Ngay bây giờ tình huống duy nhất mà nó thất bại đối với tôi là cho các ứng dụng Android, điều mà tôi hy vọng sẽ sớm được khắc phục. Tôi sử dụng nó cho các ứng dụng máy tính để bàn Windows, ứng dụng máy tính để bàn Linux và ứng dụng web dựa trên Linux.
Tôi tin rằng sẽ mất vài năm trước khi nó thực sự đạt được xu hướng, nhưng nó sẽ đến đó. Tôi nghĩ rằng nó cần phải xây dựng thêm các thư viện của bên thứ ba, giống như loại số và lựa chọn mà Perl có với CPAN. Nó sẽ đến đó.
Dù sao thì chính thống có nghĩa là gì? Không biết điều đó, thật khó để trả lời câu hỏi này. Chúng ta hãy nhìn một chút về điều đó.
Có rất nhiều định nghĩa có thể. Ở đây có một ít:
Quan điểm quản lý:
Quan điểm của nhà phát triển:
Quan điểm nghề nghiệp:
Với tất cả những điều trên, tôi cho rằng câu trả lời trung thực duy nhất có lẽ là quá sớm để nói với dạy nhưng tôi tin rằng chỉ số tốt nhất về tuổi thọ thực sự là số lượng nhỏdoanh nghiệp sử dụng ngôn ngữ. Các tổ chức lớn đều rất tốt - thậm chí họ có thể cần thiết cho sự phát triển của ngôn ngữ hoặc hệ thống công cụ vì quy mô đầu tư mà họ có thể áp dụng - nhưng họ khá dễ bị lỗi thời (với một vài ngoại lệ). Ngược lại, nếu một doanh nghiệp nhỏ tự xây dựng bằng cách sử dụng ngôn ngữ để phân phối sản phẩm và dịch vụ, họ rất có thể muốn đóng góp để đảm bảo rằng họ sẽ vẫn có thể làm như vậy trong tương lai. Họ cũng tạo thành nền tảng của một thị trường việc làm mạnh mẽ trong khu vực và nhu cầu về công cụ cũng vậy. Vui thay, đó là một số chỉ số về tính chính thống trong danh sách của tôi (có thể nhiều hơn, tùy thuộc vào ý thích của quản lý).
Vậy, có bao nhiêu người bên ngoài Google đang sử dụng Go cho công việc của họ? Tôi không có ý kiến. (Tôi thì không. Nhu cầu của tôi hiện đang được phục vụ tốt bởi hỗn hợp Java, C và Tcl. YMMV.)
Nó đã phổ biến hơn một số ngôn ngữ.
Có khả năng, Go là ngôn ngữ quan trọng nhất trong hơn 20 năm qua. Nó thực sự mang lại một số lợi ích tuyệt vời về bộ dữ liệu khổng lồ, mà các trang web truyền thông xã hội, điện toán đám mây, Tìm kiếm và Di động hiện diện.
Các trang web như Facebook, Twitter, Linkedin, YouTube và các mạng phân phát quảng cáo có nhiều sử dụng hơn cho Google Go so với Ruby On Rails, ít nhất là trong một số bối cảnh.
Tôi nhìn vào Go khi tôi nghe về nó. Là một người mới bắt đầu hoàn chỉnh, tôi vẫn đang học các ngôn ngữ mới bắt đầu (trong trường hợp của tôi là Java, C #, Python và Scheme), rất nhiều thứ để học, nhưng nếu tôi không mải mê với nhiều ngôn ngữ khác nhau, tôi sẽ nghiêm túc xem xét nó
Tôi nghĩ ở cấp độ của mình, sẽ không có hại gì trong việc giảm bớt những điều cơ bản trước khi nhảy vào bandwagons. Mặc dù, nếu tôi nhớ đúng, khi tôi đang tìm kiếm Go, tôi đã bị thu hút bởi Erlang vì một số lý do.
Tôi chỉ nhìn vào Go vì câu hỏi này vì vậy tôi thực sự không thể nhận xét liệu nó có cất cánh như một ngôn ngữ chính hay không, nhưng có một điều khiến tôi thực sự phấn khích:
http://golang.org/doc/go_spec.html#Channel_types
Lần đầu tiên tôi bắt gặp khái niệm Kênh trong Occam-pi và tôi phải nói rằng đó là một trong những khái niệm lập trình tốt nhất từ trước đến nay . Nó làm cho sự tương tranh dường như quá dễ dàng khi làm điều tương tự trong ngôn ngữ loại C đôi khi có thể là một nỗi đau.
Từ những gì tôi đã thấy (trong 10 phút tôi đã xem), Go dường như đang cố gắng kết hợp nhiều khái niệm lập trình khác nhau, nhưng điều đó có nguy cơ trở thành Jack của tất cả các giao dịch, không thành thạo.
Tôi nghi ngờ rằng liệu nó có trở thành xu hướng hay không sẽ phụ thuộc vào việc Google có sử dụng ngôn ngữ này như một ngôn ngữ được hỗ trợ cho appengine và / hoặc GWT hay không.
Tôi ước Go sẽ trở nên phổ biến.
Đó là cú pháp mạnh mẽ. (Tìm hiểu những lợi thế từ python, C, Java). Nó tốt cho CPU đa lõi. (Chức năng kênh tốt hơn nhiều sau đó lập trình luồng). Thiết kế ngăn chặn nhiều cạm bẫy của lập trình viên. (con trỏ sai, cùng kiểu mã hóa bởi công cụ gofmt, ngăn ngừa lỗi chưa được khởi tạo biến.
Nhưng, sau khi tìm hiểu sâu, tôi thấy nó có thể phù hợp để phát triển khả năng chịu lỗi và kiến trúc có thể mở rộng
after
để đi?