Vì sao Ruby lại được nhiều người lựa chọn?

images (1)

Với vai trò là một lập trình viên của Microsoft trong nhiều năm. Tôi đã tự học được khá nhiều kiến thức về máy tính Microsoft cho bản thân mình, công việc mà tôi lần đầu được trả tiền là những việc liên quan đến Microsoft FoxPro, Microsoft Access, và Microsoft Visual Basic. Cũng nhờ đó mà tôi thấy được rõ hơn tương lai của ngành lập trình máy tính, và đó không đâu khác chính là những ứng dụng CRUD chạy trên Wintel boxes!

Đương nhiên, khi mọi người quyết định xây dựng Stack Overflow bằng .NET. Đó chính là lý do khiến nó vẫn chạy khá nhanh như hiện nay. Vậy đa phần những câu hỏi dành cho Discourse là gì:

Tại sao anh không xây dựng Discourse trên .NET?

Phải thú thật rằng, bản thân tôi rất yêu .NET. Một trong những giây phút ấn tượng nhất trong cuộc đời lập trình của mình chính là được đính sticker của Coding Horror lên tay của Anders Hejlsberg. Ander chính là người duy nhất đã xây dựng Turbo Pascal và Delphi. Cũng nhờ có sự hướng dẫn của Anders mà .NET đã trở thành một ngôn ngữ được thiết kế tốt nhất. Nó cũng đã trở thành một trong những ngôn ngữ có sức mạnh đáng nể so với những ngôn ngữ khác trên thị trường trong suốt 10 năm.

6a0120a85dcdae970b017d42306e26970c-800wi (1)

Tuy nhiên, tôi đã quyết định không sử dụng .NET cho dự án sắp tới của mình. Tôi cảm thấy thật sự hài lòng và nhẹ nhàng hơn cho quyết định của mình, nhờ đó có thể đưa ra những ý tưởng mới táo bạo hơn.

Tôi cũng đã từng đề cập đến vấn đề này 5 năm về trước.

Cũng như những lập trình viên “thực dụng” khác, tôi đã phải lựa chọn một công cụ phù hợp nhất để làm việc. Mặc dù rất yêu .NET nhưng nó sẽ là một lựa chọn không thật sự tốt cho một dự án 100% nguồn mở như Discourse. Vì sao ư? có 3 lý do chính sau đây.

1-Bản quyền: Chuyện mua bản quyền là một trong những chuyện rất đau đầu, bạn sẽ phải trả rất nhiều tiền để chắc chắn rằng tất cả các phần mềm của mình đều được trả tiền đầy đủ. Bạn còn phải xắc định rõ rằng người sở hữu bản quyền “level và “edition” mình đang sở hữu, server nào đang được sử dụng bản quyền. Và rất nhiều thứ lằng nhằng khác nữa.

Tôi không dám đưa ra những tuyên bố lớn nào cho tương lai của phần mềm. Nhưng tôi tin chắc rằng thứ sẽ giết chết những phần mềm thương mại sẽ không phải là những phần mềm nguồn mở.

2- Sự va chạm: Nếu muốn tăng tính khả thi khi thực hiện các phần mềm mã nguồn bạn cần tăng số lượng người tham gia đóng góp cho dự án, điều này đồng nghĩa với việc tăng sự va chạm đối với sản phẩm. Hãy coi sản phẩm của mình như một vật sống, nó cần sự trưởng dưỡng từ rất nhiều nguồn khác nhau. Nếu không sẽ có vô số lỗ hổng và lỗi sẽ xảy ra.

Stack Overflow đã dạy tôi rất nhiều thứ, đó chính là làm việc với các lập trình viên tài năng đến từ khắp nơi trên thế giới. Dù họ không nói cùng thứ ngôn ngữ như chúng ta, nhưng họ vẫn có thể code bằng cùng một loại ngôn ngữ chung. Họ chính là những người góp phần lớn đến sự thành công của những phần mêm nguồn mở.

Ví dụ như khi chạy Microsoft Stack gặp vấn đề, một lập trình viên ở Argentina, Nepal hay Bulgaria sẽ khó có thể giải quyết nếu không có sự trợ giúp của cộng đồng. Vì vậy văn hoá nguồn mờ đã trở thành một chuỗi công cụ cho các thế hệ lập trình viên khắp mọi nơi có thể giúp chúng ta có thể thay đổi thế giới

3-Hệ sinh thái: Khi tôi còn ở Stack Exchange, chúng tôi cố gắng để tạo ra càng nhiều cơ sở hạ tầng cho nguồn mở càng tốt. Đó cũng là một trong những tiêu chí hoạt động lúc bấy giờ. Ý tường này đã nhận được rất nhiều góp ý phản hồi của công chúng từ khắp nơi trên thế giới, tuy nhiên Stack Exchange không phải là cái đích cuối cùng, giá trị mà ý tưởng này đem lại chính là một thứ mà tất cả chúng ta có thể cùng đóng góp và sở hữu.

Bạn hoàn toàn có thể xây dựng một phần mềm nguồn mở từ.NET. Rất nhiều người đã và đang làm điều đấy. Nhưng nó không thật sự tự nhiên, vì không ai chấp nhận bản vá với lõi thư viện là .NET, cho dù bạn có cố gắng thế nào đi chăng nữa. Việc này ví như bạn đang phải bơi ngược dòng, vì chúng ta đang sống trong một thế giới mà hầu như không một công ty nào muốn chia sẽ phần mềm .NET của họ với tất cả mọi người. Đó chắc chắc chắn không phải là một phần của văn hoá Microsoft .NET, thứ văn hoá chia sẽ mã nguồn, đặc biệt là những phần mềm hay có giá trị. Nguồn mở sẽ là một sự lựa chọn tốt nếu bạn muốn có những sự phản hồi sâu sắc và hữu ý từ cộng đồng lập trình khắp nơi trên thế giới.

Vậy kết quả là, với mỗi task trong .NET mà bạn có, nếu may mắn, bạn sẽ tìm được một vài lựa cho trong thư viện. Trong khi những nguồn mở phổ biến khác lại có rất nhiều sự lựa chọn cho cùng một task. Dù cho phần nhiều trong số đó bị hỏng hoặc không dùng được. Nhưng những nguồn mở này vẫn cho bạn đến hơn ba sự lựa chọn, người chiến thắng vẫn là bạn.

Như đã đề cập ở trên, quan niệm của tôi là thực dụng. Thời điểm hiện tại tôi chọn sống trong một thế giới bao phủ bởi Microsoft, nhưng tôi không phải không quan tâm đến số còn lại. Chắc chắn sẽ có nhiều hơn một cách khi bạn làm việc gì đó, tôi chọn một hướng đi thì không có nghĩa rằng đó sẽ là con đường duy nhất. Bạn nên tìm gặp những nhà phát triển đang không đang làm những thứ như bạn, hãy xem các công cụ mà họ hay dùng. Có khi những người ấy lại đang làm tốt hơn bạn và dĩ diên bạn sẽ muốn gia nhập cùng họ.

Tôi đã không còn sống trong thế giới chỉ có Microsoft từ lâu, tốt xấu hay hiệu quả như thế nào, tất cả đều tập trung vào những gì mà chúng tôi muốn xây dựng trong thời gian tới

6a0120a85dcdae970b017c38010328970b-800wi

Tuy nhiên, tôi cũng phải nói rằng , chúng tôi tin tưởng rằng những dự án mà chúng tôi xây dựng trên Discourse sẽ đại diện cho đại đa số các phần mềm trong tương lai. Chỉ cần nhíu mắt lại một tí bạn sẽ thấy rằng, tương lai không nằm xa quá những gì mà .NET đã và đang làm

Nhưng tại sao lại là Ruby? Câu trả lời của tôi cũng không có gì quá khó khăn, vì người đồng sáng lập của tôi, Robin Ward đã xây dựng những phần mêm lớn từ Rails từ năm 2006.

Tôi đã luôn bị hấp dẫn bởi sự quyến rũ của Ruby, chủ yếu là vì những lời khen ngợi từ Steve Yegge người đã cho ngôn ngữ đã sống lại vào năm 2006. Một ngôn ngữ tưởng chừng đã bị lãng quên từ lâu.

Phần lớn, Ruby lấy các quy trình xử lý chuỗi của Perl và Unix intergration as-is, có nghĩa là cú pháp giống hệt như Perl, vậy là bạn đã có được một phần tốt nhất của Perl, đó là một sự khởi đầu rất tuyệt vời.

Tuy nhiên sau đó Matz đã lấy phần tốt nhất của công đoạn xử lý danh sách từ Lisp, và phần tốt nhất từ OO của Smalltalk và những ngôn ngữ khác, kể cả vòng lập từ CLU, và đương nhân là lấy những phần tốt nhất của những phần mềm khác.

Bằng một cách nào đó, anh đã tích hợp tất cả những yêu tố đó hoạt động mượt mà cùng với nhau mà bạn không hề hay biết. Tôi đã học Ruby nhanh hơn 40 ngôn ngữ khác. Với 8 năm hacking trên Pearl, Ruby đã tốn khoảng 3 ngày của tôi để có thể cảm thấy thoải mái khi sử dụng. Nó cho bạn thấy rõ rằng cái gì sẽ hoạt động, và bạn sẽ đoán đúng hầu hết rất nhiều trường hợp. Đây là một trong những ngôn ngữ rất vui và thực tiễn mà mọi người có thể dễ dàng nắm bắt được.

Steve là một trong những nhà lập trình đa ngôn ngữ mà tôi vô cùng ngưỡng mộ. Tôi luôn lấy những ý kiến của ông và coi chúng như những minh chứng rõ ràng nhất.

Xin lỗi Steve vì phải đến 7 năm sau tôi mới tìm ra Ruby, có lẽ sự chờ đợi ấy cũng là một nhân duyên:

Ruby vận hành khá tốt, nhưng bạn cần phải có phần cứng mạnh để vận hành nó, đó là một điểm mà nó giống với nhiều ngôn ngữ thông dịch khác, tôi đang nói về caching, là database, network, v.v. Chúng tôi đã tạo ra Discourse trên những CPU mạnh nhất tại thời điểm đó trên máy chủ, 4.0 Ghz Ivy Bridge Xeons, và đương nhiên nó vận hành cực kỳ tốt.

-Tôi phải nói rằng, tôi đã bị JIT compiled performance của .NET làm cho hư người. Vì nó là những gì mà tôi đã quen dùng trong một thời gian rất dài. Thỉnh thoảng tôi cũng quay về với thói quen cũ của những ngày .NET khi chúng tôi có thể xây nhiều trang chỉ trong tích tắc mà không cần nghĩ quá nhiều về chúng. Ngôn ngữ thông dịch thường không thể đạt được tốc độ như vậy. Tôi vẫn không thể hiểu được vì sao Ruby lại có thể đạt được tốc độ nhanh như vậy trong thời điểm cách đây 5 năm khi mà tốc độ của CPU chậm hơn gấp 5 lần so với thời điểm hiện tại.

-Ruby đang chuyển hoá thành ngôn ngữ 2.0, điều này xảy ra không quá 1 tháng trước khi Discourse được công bố. Vậy nên, phần nhược điểm của Ruby chính vẫn là tốc độ. Tuy nhiên, vẫn có rất nhiều tiềm năng để cải thiện điều này trên vùng đất màu mỡ của Ruby. Chúng tôi đã cái thiện được đến 20% tốc độ của Discourse khi nâng cấp lên phiên bản Ruby 2.0, và thậm chí chúng tôi gần như tăng tốc độ khi tăng tốc độ default của Ruby garbage collection limit. Với góc nhìn về tốc độ, tương lai của Ruby đang cực kỳ sáng lạng.

-Code Ruby không còn “ngầu” như xưa nữa. Mọi người đã dần chuyển sang Scala và Node.js từ nhiều năm trước. Dự án của chúng tôi cũng không ngầu như xưa, chỉ toàn là một đống Ruby code lạnh lẽo. Cá nhân tôi nghĩ rằng Ruby đã đủ trường thành để có thể tự tồn tại mà không cần những nhân vật “xuất chúng” trợ giúp và cách tân. Điều này cũng đồng nghĩa chúng ta sẽ có nhiều thời gian hơn để xây dựng nhiều thứ khác hơn là tập trung vào phát triển ngôn ngữ này.

Và đương nhiên cộng đồng Ruby cũng rất tuyệt vời, rất nhiều người đóng góp những thông tin bổ ích, theo ý kiến của tôi đây là thời điểm vàng để bạn học Ruby.

Dù cho nó có tốt như thế nào đi nữa, thì việc thay đổi hoàn toàn ngôn ngữ mà bạn đã sử dụng trong 5 năm vẫn không phải là một ý kiến hay. Tôi nghĩ một lập trình viên giỏi là người biết học cách “yêu” nhiều hơn một ngôn ngữ. Tôi cũng hy vọng rằng dự án Discourse là một cơ hội cho nhiều người được cùng tham gia và chia sẻ những điều tốt đẹp.

Content must not be empty

Related Blog