paint-brush
Sự trỗi dậy của Kotlin: Ngôn ngữ lập trình cho thế hệ tiếp theoby@David
48,469
48,469

Sự trỗi dậy của Kotlin: Ngôn ngữ lập trình cho thế hệ tiếp theo

David Smooke8m2018/07/05
Read on Terminal Reader
Read this story w/o Javascript

<em>Hãy chào đón nhà tài trợ hàng tuần của chúng tôi là</em> <a href="http://bit.ly/2lCXscm" target="_blank"><em>Pusher</em></a> <em>đến với Hacker Noon!</em> <a href="http://bit.ly/2lCXscm" target="_blank"><em>Pusher</em></a> <em>tạo ra các API thời gian thực cho phép các nhà phát triển trên toàn thế giới nhanh chóng thêm các tính năng giao tiếp và cộng tác vào ứng dụng của họ. Sản phẩm cốt lõi của họ cho phép các nhà phát triển dễ dàng tạo các tính năng như thông báo trong ứng dụng, luồng hoạt động, trang tổng quan thời gian thực, trình theo dõi trực tiếp, v.v.</em>

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coins Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Sự trỗi dậy của Kotlin: Ngôn ngữ lập trình cho thế hệ tiếp theo
David Smooke HackerNoon profile picture

Hãy chào đón nhà tài trợ hàng tuần của chúng tôi là Pusher đến với Hacker Noon! Pusher tạo ra các API thời gian thực cho phép các nhà phát triển trên toàn thế giới nhanh chóng thêm các tính năng giao tiếp và cộng tác vào ứng dụng của họ. Sản phẩm cốt lõi của họ cho phép các nhà phát triển dễ dàng tạo các tính năng như thông báo trong ứng dụng, luồng hoạt động, trang tổng quan thời gian thực, trình theo dõi trực tiếp, v.v.

Hôm nay chúng ta sẽ trò chuyện với Nhà truyền giáo Zan Markan , Nhà phát triển Pusher, để thảo luận về tình trạng của Kotlin, điều gì thúc đẩy anh ấy làm những gì anh ấy làm và điều gì khiến một cao bồi không gian trở thành cao bồi không gian.

David : Hãy bắt đầu với Trạng thái của Kotlin . Gần đây bạn đã thực hiện một cuộc khảo sát về Kotlin (xem thêm thông tin cơ bản tại đây ). Bạn đã khảo sát 2.744 người từ tháng 1 đến tháng 3 năm 2018 để nắm bắt nhịp đập của hệ sinh thái. Kết quả nào thách thức giả định của bạn? Kết quả nào đã xác nhận giả định của bạn? Và bài học sâu sắc nhất về những gì đang xảy ra với Kotlin là gì?

zan : Đúng rồi. Chúng tôi nhận thấy ngày càng có nhiều nhà phát triển sử dụng Kotlin khi xây dựng ứng dụng bằng sản phẩm của mình nên chúng tôi quyết định tìm hiểu sâu hơn và tìm hiểu động cơ thúc đẩy họ. Tôi phát hiện ra một vài điều đáng ngạc nhiên.

Trước hết, tôi thực sự ngạc nhiên trước sự yêu thích của sinh viên và ngày càng nhiều nhà phát triển cấp dưới dành cho Kotlin. Tôi đã mong đợi sự khác biệt lớn hơn giữa các nhà phát triển nhiều/ít kinh nghiệm hơn, nhưng đám đông mới đang thực sự quan tâm đến Kotlin kể từ khi Google đặt súng đằng sau cộng đồng.

Một điều khác làm tôi ngạc nhiên là có bao nhiêu người muốn dùng thử các tính năng được nhóm Kotlin gắn nhãn là thử nghiệm, cụ thể là coroutines và hỗ trợ cho các dự án đa nền tảng - mỗi tính năng khoảng 25–30%.

Kết quả của cuộc khảo sát ít nhiều đã xác nhận những nghi ngờ của tôi về mức độ lớn của Android - khoảng 80% theo dữ liệu khảo sát của chúng tôi. Một số khảo sát khác mà tôi từng thấy cho thấy ít hơn một chút về Android nhưng vẫn ở mức thoải mái trên mức 75%. Một số khác biệt đó có thể là do mạng của tôi chủ yếu tập trung vào Android, nhưng hiệu quả rõ ràng là không lớn bằng.

Điều đáng chú ý là Kotlin là một ngôn ngữ thú vị và là ngôn ngữ khiến các nhà phát triển hài lòng.

Điều đó khá hiếm (ít nhất là đối với một thứ gì đó chẳng hạn như ngôn ngữ lập trình chính thống) và đã tạo ra một cộng đồng sôi động và nhiệt tình được hình thành xung quanh toàn bộ hệ sinh thái Kotlin.

Sự phát triển chính của Kotlin là từ một nhóm lập trình viên JetBrains có trụ sở tại Saint Petersburg, Nga. Bạn có thể cho chúng tôi biết điều gì khác về sự thành lập của nó? Và lần đầu tiên bạn sử dụng Kotlin là khi nào?

Theo hiểu biết của tôi, lịch sử của Kotlin là JetBrains muốn có một “Java tốt hơn” cho các công cụ dành cho nhà phát triển của họ. Khả năng tương tác và năng suất được cải thiện là một số mục tiêu chính của họ và không có ngôn ngữ dựa trên JVM nào khác vào thời điểm đó thực sự phù hợp với yêu cầu đó — Scala đã đáp ứng được hầu hết các yêu cầu, nhưng công cụ thì không có ở đó và thời gian xây dựng quá chậm cho nhu cầu phát triển của JetBrains.

Ý tưởng chính xác về một Java tốt hơn và có khả năng tương tác cao là lý do tại sao điều này bắt đầu thu hút rất nhiều nhà phát triển Android (bao gồm cả tôi, người đã làm Android từ những ngày đầu).

Một vài năm trước, hệ sinh thái Android hầu như bị mắc kẹt với một phiên bản Java cũ - một sự kết hợp kỳ lạ giữa Java 7 và Java 6, không có các tính năng hay như lambdas và khá dài dòng. Vì vậy, mọi người bắt đầu thử nghiệm thứ mới này, thứ có vẻ tương tác tốt và mang lại năng suất cao hơn (đặc biệt là những lúc nó không phá vỡ mọi thứ 😅).

Đó cũng là điều đã lôi kéo tôi — lần đầu tiên tôi biết đến nó là vào năm 2014 và sau đó theo dõi chặt chẽ sự phát triển của Kotlin — bằng cách sử dụng nó khi rảnh rỗi hoặc sử dụng nó để nhanh chóng tạo nguyên mẫu cho mọi thứ. Tôi đã viết mã Kotlin sản xuất đầu tiên khi làm việc trên các sản phẩm Pusher ChatkitFeeds .

Bạn nghĩ tại sao Kotlin lại dành cho những nhà phát triển ít kinh nghiệm hơn? Và điều gì có thể ngăn nó trở thành mốt nhất thời?

Hà! Tôi không nghĩ rằng nó phục vụ cho các nhà phát triển ít kinh nghiệm hơn, trên thực tế, tôi thấy đây là một nhóm khá giống như chúng tôi đã thấy với kết quả khảo sát StackOverflow nên không có gì bất ngờ về cách ngành đang phát triển.

Chúng tôi cũng nhận thấy rằng nó lần đầu tiên được hầu hết các nhà phát triển có kinh nghiệm (đã làm việc) lựa chọn và chỉ gần đây mới bắt đầu được sinh viên và nhà phát triển trẻ áp dụng.

Tôi thấy Kotlin là một ngôn ngữ dễ học. Có những công cụ tuyệt vời cho phép chúng ta làm việc hiệu quả ngay cả khi không biết hầu hết về nó. Nó có thể tương tác với Java nên mọi quá trình chuyển hoặc di chuyển đều có thể diễn ra theo tốc độ của riêng bạn. Và cuối cùng, cả Google và JetBrains đều đang làm rất tốt công việc chuẩn bị tài liệu và tài nguyên hỗ trợ Kotlin.

Điều gì đã khiến Kotlin khác biệt với các ngôn ngữ lập trình khác mà bạn cho rằng đã thúc đẩy việc áp dụng nhanh chóng nó? Và tổng quát hơn, bạn nghĩ điều gì phân biệt giữa các ngôn ngữ lập trình được chấp nhận với các ngôn ngữ lập trình gặp khó khăn trong việc được chấp nhận?

Sự hỗ trợ từ Google và JetBrains chắc chắn đã giúp ích. Mặt khác, Google quyết định chỉ chính thức hỗ trợ Kotlin trong Android SAU sự thúc đẩy mạnh mẽ từ cộng đồng nhà phát triển, do đó cũng đã có sự thúc đẩy đáng kể từ phía bên kia.

Tôi thực sự nghĩ rằng đó là ngôn ngữ xuất hiện đúng lúc, đúng cộng đồng — cộng đồng Android, khi nó trưởng thành và mọi người muốn công cụ mới ngày càng hiệu quả hơn. Kotlin đã ở đó, chắc chắn rằng nó có những sai sót, nhưng nó vẫn ở đó và đủ tốt để mọi người có thể làm đúng.

Bạn thấy Kotlin cạnh tranh và bổ sung hiệu quả cho các ngôn ngữ và kiến trúc hiện có trong khoảng 5 năm tới như thế nào?

Nếu chúng ta bắt đầu với điều hiển nhiên thì Java khá dễ dàng và Kotlin đã bổ sung rất tốt cho nó. Tôi tin rằng chúng ta chắc chắn sẽ thấy nhiều điều hơn thế, đặc biệt là khi công cụ này hợp nhất và một số công cụ “tiêu chuẩn vàng” xuất hiện. Một trong những công cụ này là Arrow, một bộ công cụ lập trình chức năng dành cho Kotlin, được phát triển từ sự hợp tác của nhóm Funktionale và Kategory để tạo ra thứ gì đó tốt hơn, hoàn thiện hơn. Tôi nghĩ đó sẽ là xu hướng.

Đối với các ngôn ngữ lập trình khác - trên JVM, chúng ta sẽ xem điều gì xảy ra với Scala và các ngôn ngữ khác, còn bên ngoài thế giới JVM thì vẫn còn quá sớm để nói, nhưng tôi đã thấy một số ý tưởng đầy hứa hẹn về Kotlin/Native và Kotlin cho đa ngôn ngữ. các dự án nền tảng - cả hai đều vẫn còn mang tính thử nghiệm, nhưng đã có một số bằng chứng về khái niệm, đang hoạt động và khá thú vị.

Khi Kotlin Functors, Applicatives, And Monads in Pictures ” của Alberto Ballano được đưa lên Hacker News , nó đã gợi lên một cuộc thảo luận thú vị… Bạn nghĩ Kotlin là một loại thuốc cửa ngõ cho điều gì?


Điều đó nghe có vẻ bất chính! Đó là liều thuốc mở cửa cho các ngôn ngữ lập trình hiện đại — những ngôn ngữ giúp chúng ta vừa làm việc hiệu quả vừa hạnh phúc. Nó chắc chắn sẽ giúp một số người tiếp cận với lập trình chức năng — đặc biệt là với những thứ như Arrow, và điều đó có thể cho phép một số người chuyển sang FP cốt lõi hơn ngôn ngữ dễ dàng hơn.

Một vài điều khác mà nó có thể làm là thúc đẩy một nhóm nhà phát triển Android tham gia phát triển web hoặc phát triển gốc, với tất cả sự hỗ trợ đa nền tảng của nó, đồng thời, khi ngày càng có nhiều nhà phát triển chọn nó làm ngôn ngữ lập trình đầu tiên của họ, họ chắc chắn sẽ coi Kotlin như một chuẩn mực mà họ so sánh với tất cả các ngôn ngữ khác và điều đó cũng khá thú vị.

Trong ngôn ngữ học, phải mất một thời gian rất dài để một ngôn ngữ, như tiếng Anh hoặc tiếng Tây Ban Nha, được chấp nhận. Và chúng có nhiều phương ngữ, nhưng việc sử dụng một ngôn ngữ nói hoàn toàn mới hẳn là ít nổi bật hơn việc sử dụng các ngôn ngữ phần mềm mới. Bạn có nghĩ rằng chúng ta sẽ đạt đến điểm trưởng thành của ngành khi tỷ lệ ngôn ngữ phần mềm mới giảm xuống không? Hay nhiều ngôn ngữ phần mềm mới sẽ tiếp tục xuất hiện?

Chúng ta đã thấy nhiều ngôn ngữ lập trình xuất sắc nhanh chóng được áp dụng nghiêm túc và trong những năm gần đây - Swift, Go, TypeScript và Rust đã xuất hiện trong tâm trí. Mỗi người trong số họ được hỗ trợ bởi một (hoặc nhiều) tổ chức kỹ thuật lớn với nguồn lực đáng kể và cộng đồng nhà phát triển hiện có đằng sau nó.

Mỗi người trong số họ cũng giải quyết được một vấn đề cụ thể trong tổ chức của mình và nếu nhiều nhà phát triển khác chia sẻ vấn đề đó thì việc áp dụng sẽ xảy ra và một ngôn ngữ sẽ phát triển, cho phép nó đạt được “khối lượng tới hạn”. Đó là những gì đã xảy ra với từng ngôn ngữ mà tôi đã đề cập - Ví dụ: Go bắt đầu khi Google muốn thực hiện tốt hoạt động đồng thời và một trong những mục tiêu của Rust là không bao giờ gặp sự cố.


Về tương lai, tôi nghĩ chắc chắn sẽ có những mô hình điện toán mới, những ý tưởng mới đang được phát triển (ai biết được, có thể một ngày nào đó Blockchain sẽ thực sự trở thành hiện thực ) — điều đó sẽ không quá hữu ích với công cụ hiện có của chúng ta. Một số ví dụ khác là lượng tử máy tính hoặc AI.

Mặc dù hầu hết các ngôn ngữ ngày nay đều tuyên bố là có mục đích chung, nhưng điều đó vẫn không có nghĩa là chúng phù hợp như nhau cho mọi mục đích. Chúng ta sẽ thấy những mục đích mới đòi hỏi những ngôn ngữ mới.

Hãy nói về con người Zan. Hai từ đầu tiên của tiểu sử trên trang web cá nhân của bạn có nội dung “Space Cowboy”. Có ai gọi bạn là gangster tình yêu không? Người khác có gọi bạn là Maurice không? Bạn có phải là hiện thân của sự hào hoa của tình yêu?

Ha, tôi thích bài hát đó! Có lẽ là gangster của tình yêu, vì tôi không nghĩ có ai có thể viết sai chính tả Zan thành Maurice, kể cả nhân viên Starbucks. Tôi cũng yêu thích tên lửa và vẫn thương tiếc sự mất mát của Firefly, vì vậy đó cũng là một chủ đề cao bồi không gian.

Câu chuyện thực sự đằng sau “danh hiệu” đó là cách đây vài năm, khi tôi vẫn đang điều hành một công ty khởi nghiệp, tôi đã thành lập cùng một vài người bạn ngoài trường đại học. Để trông hợp pháp hơn một chút khi xin tiền người lạ (tức là huy động vốn đầu tư), chúng tôi đã làm danh thiếp cho mỗi người.

Tôi không quan tâm nhiều đến các tựa game, đặc biệt là các tựa game C khi mọi người đang làm khá nhiều thứ, vì vậy tôi quyết định đi theo con đường khác và chọn Space Cowboy gần như chính xác (trong) như mọi thứ. Ít nhất tôi nghĩ đó sẽ là một khởi đầu tốt cho cuộc trò chuyện.

Việc bạn hỏi về điều đó chỉ chứng tỏ nó thực sự là một cách bắt đầu cuộc trò chuyện tốt như thế nào.

Bạn được cho là thích IPA theo phong cách Bờ Tây. Bây giờ tôi đang ở Colorado và nhớ Laguinatis. 3/5 IPA bờ biển phía Tây hàng đầu của bạn là gì?

Tôi thích chúng mạnh mẽ và tàn nhẫn.

Bất cứ khi nào tôi đến thăm Bờ Tây, tôi đều đảm bảo có Pliny the Elder by Russian River, và tất nhiên là Stone IPA - rõ ràng là cả hai đều là bản nháp. Khi ở gần nhà hơn, tôi sẽ chọn Jack Hammer của Brewdog.

Điều gì tạo nên một nhà truyền giáo giỏi cho nhà phát triển? Bạn đã tiến bộ hơn thế nào trong công việc của mình? Điều gì khiến công nghệ Pusher đáng được truyền bá?

Điều quan trọng nhất đối với một nhà truyền bá phát triển (bất kỳ người quan hệ với nhà phát triển nào nói chung) sẽ là niềm đam mê thực sự để giảng dạy và chia sẻ kiến thức. Trên thực tế, có lẽ điều quan trọng hơn là phải chân thật. Dấu chấm. Các nhà phát triển là những người phát hiện BS bẩm sinh, những người ghét bị bán đồ.

Đó cũng là một cảm giác tuyệt vời khi bạn biết mình đã giúp ai đó trở thành một nhà phát triển giỏi hơn.

Một trong những điều đầu tiên tôi phải cải thiện là quản lý thời gian. Xuất thân từ nền tảng nhà phát triển, việc bạn phân bổ nhiều thời gian cho một số nhiệm vụ nhất định là điều phổ biến hơn. Công việc hiện tại của tôi năng động hơn thế rất nhiều, và lúc đầu tôi không mong đợi sự thay đổi hay điều chỉnh đó nên khá choáng ngợp. Bài luận xuất sắc của Paul Graham về lịch trình của người sản xuất và người quản lý đã giúp tôi rất nhiều.

Một kỹ năng hữu ích khác mà tôi đã học được là quản lý dự án — chẳng hạn như với State of Kotlin, phần lớn công việc của tôi xoay quanh việc thiết lập khảo sát và tạo nội dung lúc đầu, sau đó chuyển sang quản lý dự án cổ điển hơn, như phối hợp với các nhóm khác có liên quan, chẳng hạn như thiết kế và phát triển (họ đã thực hiện công việc đó, không phải tôi, cảm ơn một lần nữa - bạn biết bạn là ai), và cuối cùng là quảng bá trên nhiều ấn phẩm khác nhau, thực hiện các cuộc phỏng vấn trên Web.

Công nghệ của Pusher nổi tiếng về tốc độ tích hợp nhanh chóng cũng như thực tế là “nó hoạt động bình thường”.

Như vậy, thật dễ dàng để truyền giáo. Tôi thậm chí còn có người đến gặp tôi tại một hội nghị phát triển thiết bị di động và nói với tôi rằng đồng nghiệp của họ trong nhóm web sử dụng Pusher đã bảo họ cho tôi biết sản phẩm Kênh của chúng tôi tuyệt vời như thế nào - điều đó thật thú vị 😁

Nói chung, Kotlin phù hợp ở đâu để hiện thực hóa tầm nhìn dài hạn của Pusher?

Chúng tôi đã đặt cược vào Kotlin là ngôn ngữ phát triển chính cho SDK Android của mình. Chúng tôi đã bắt đầu với SDK cho các sản phẩm mới — Beams , ChatkitFeeds và hiện tại chúng tôi khá hài lòng với điều đó.

Chúng tôi cũng tin rằng Kotlin có một trong những cộng đồng thú vị và gắn kết nhất, đồng thời đó cũng là một phần lý do khiến chúng tôi quyết định tạo bản khảo sát Trạng thái Kotlin và báo cáo cho cuộc khảo sát đó. Chúng tôi thực sự hy vọng rằng Kotlin sẽ tiếp tục làm cho các nhà phát triển hài lòng và làm việc hiệu quả, đồng thời Bang Kotlin sẽ giúp thúc đẩy việc áp dụng Kotlin hơn nữa!

Pusher , nhà tài trợ hàng tuần của chúng tôi, tạo ra các API giao tiếp và cộng tác hỗ trợ các ứng dụng trên toàn thế giới, được hỗ trợ bởi SDK dễ tích hợp cho web, thiết bị di động cũng như các ngăn xếp phụ trợ phổ biến nhất. Bắt đầu.