Nên chọn ngôn ngữ nào để code backend?

Nhờ mọi người tư vấn cho em với. Em đang định chọn Ruby vs framework Rail hoặc là Python. Php thì nghe nói củ chuối quá nên chắc là không học

1 Like

How about JavaScript with nodejs :">

3 Likes

Quan trọng nhất Backend là xử lý nghiệp vụ (Business Requirement). Làm Backend cần nắm rõ kiến thức về lĩnh vực nghiệp vụ, không quan trọng là ngôn ngữ nào cả. Ví dụ về nghiệp vụ: bán hàng online, thanh toán ngân hàng, quản lý logistic, quản trị nội dung (CMS),…

OOP thích hợp cho Backend, vì mỗi class sẽ đại diện cho 1 đối tượng trong kiến thức nghiệp vụ. Khi đó code chỉ thao tác với các object nằm trong nghiệp vụ mà không quan tâm đến các vấn đề thuộc CNTT, như networking, database,… Ví dụ cụ thể app bán hàng: class Đơn hàng, class Sản phẩm, class Lịch sử giao dịch, class Danh mục, class Danh sách tỉnh, thành phố,…

3 Likes

Sao không phải là NodeJS, Java hay là C# :joy:

Cho em cái review nodeJS vs bác

Ý mình là tại sao lại là Ruby / Python mà không phải là một ngôn ngữ phổ biến khác :smiley:
Chứ mình thì chỉ mới code backend C# ở mức độ báo cáo môn học thôi :joy:

Nodejs nổi lên khi V8 xuất hiện. Performance tốt, xử lý realtime tốt ( mấy game kiểu slither.io agar.io cũng viết bằng nodejs ớ) npm với ty tỷ package hỗ trợ tận răng. Viết server bằng javascript, rất tiện để viết lên frontend như angular, react,… viết cả app mobile với ionic framework. … ty tỷ thứ hay về nodejs bạn nên than khảo :smiley:

3 Likes

Hi Trần Hoàn.
Backend ở đây đa phần là nói đến web -> tác vụ chính là sử lý văn bản thường là các ngôn ngữ kịch bản thích hợp cho việc này.
Trong trường hợp khác thì có thể dùng C/C++ java C# v.v.v… Cái nào phù hợp thì dùng cái đó.

slither server bằng node nguồn ở đâu vậy .

1 Like

Bác gg đi ạ :))) pr thêm thì paypal,uber, github, netflix, linkedin cùng nhiều hãng lớn khác đã chuyển sang nodejs.

Google thì thấy bảo kết hợp c++, java, node . Chứ single thread như nodejs sao xử lý cả trăm ngàn request đc.

  • Nếu muốn tốc độ và sức mạnh song hành thì có lẽ bạn nên dùng C++, java.
  • Chậm hơn 1 chút về mặt tốc độ thì bạn có thể chọn Golang, tôi nghĩ nó sẽ bùng nổ trong những năm tiếp theo.
  • Cuối cùng thì chắc là các ngôn ngữ như C#, python, Nodejs, … Những ngôn ngữ này theo đánh giá của tôi thì tốc độ của nó khá chậm.
    Well, lựa chọn cuối cùng thuộc về bạn vậy nên tôi nghĩ hãy chọn theo sở thích.
1 Like

Hai ngôn ngữ Ruby(rails) và Python(django) đều tốt để làm backend. Xem thử bạn thích ngôn ngữ nào mà làm cái đấy. Nodejs cũng là một lựa chọn không tồi.

Bạn nên chọn một ngôn ngữ hoặc platforms mình thích để làm thật tốt. Theo Đạt thấy thì Python dễ học, dễ dùng và là một ngôn ngữ hay. Thử Django trước đi cho dễ.

5 Likes

Nodejs có nhân là C++ :)) singlethreaded nhưng có thể xử lý trăm ngàn request nhờ event drivent, async , non-blocking IO. Handle lượng lớn request là sở trường của nodejs.

m có deploy 1 bản clone agar viết bằng node tại đây http://45.76.184.152:3000/ , b chơi và tự cảm nhận độ lag với phiên bản gốc
Nguồn
https://kipalog.com/posts/Tu-hoc-Go-trong----vai-ngay---Tap-1

Khái niệm non-blocking được giới thiệu từ lúc NodeJS được công bố, và cũng là kiến trúc chính của 1 app viết bằng NodeJS. Kĩ thuật non-blocking giúp NodeJS có thể xử lý nhiều request cùng một lúc so với cách tạo 1 thread cho 1 request truyền thống. Vì vậy, lúc NodeJS ra đời, NodeJS tỏ ra vượt trội so với các Web framework khác. Ngoài kĩ thuật non-blocking ra thì NodeJS cũng chẳng có gì, thiết lập route, lập trình MVC buộc phải dùng libs do cộng đồng cung cấp, bản thân NodeJS core không hỗ trợ kiến trúc đó.

NodeJS ra đời cũng khá lâu rồi, các ngôn ngữ lập trình khác cũng bắt đầu vay mượn và hiện thực cơ chế non-blocking. PHP có Nginx với kiến trúc 1 master cho core và nhiều worker, J2EE 7 cải tiến servlet hỗ trợ non-blocking, Web package của Spring Framework hỗ trợ thêm annotation cho non-blocking, chỉ cần đổi tên annotation là source code cũ có thể thay thế mô hình truyền thống sang mô hình non-blocking. Và còn nhiều nữa. Nhiều benchmark cũng đã test cho thấy ngôn ngữ compiled language (Java, C#,…) chạy nhanh hơn so với interpreter language khi sử dụng non-blocking. (PHP, JavaScript,…)

Nếu bây giờ làm web thì bạn nên chọn ngôn ngữ nào hỗ trợ OOP. Vì OOP hỗ trợ tốt cho việc diễn đạt nghiệp vụ, vốn là trái tim của toàn bộ hệ thống. Mình theo JavaScript hơn 2 năm nhưng cũng không khuyến khích dùng, vì JavaScript hỗ trợ kém về khoảng OOP, dù ES6 có cải tiến. Tuy nhiên, phạm vi project nhỏ thì bạn vẫn dùng được JavaScript.

Django của Python, Golang mình chưa đụng nên mình không nhận xét.

4 Likes

tào lao, Golang nhanh hơn Java hoặc chí ít là bằng.
1 thằng là interpreted/semi-compiled, 1 thằng là fully compiled, khỏi check cũng biết thằng nào nhanh hơn.
Go còn trẻ, GC còn có thể optimize đc tốt hơn nữa ở tương lai.

Java nhiều năm gầy đây ngày càng mất vị thế do dành dòng văn tự, performance thì bị nhiều thằng vượt mặt.
Nodejs còn nhanh hơn Java ở 1 số bài test.

Tiệm cận với C,C++ thì có Rust. Trade off là code cũng khá loằng ngoằng, learning curve dài hơn.

Ở mức vừa phải , xử lý trăm ngàn request như bạn An ở trên thì Go là lựa chọn hoàn hảo.
Python, Ruby và ngay cả cả Node đều chậm để xử lý lượng request lớn như vậy.


check benchmark nhé, gần đây có swift làm server side cũng ngon. đủ cho các anh hít khói.
compiled, llvm ở lower level than jvm nên cũng nhanh hơn java

1 comment thôi bạn, không cần dùng 2 comment liên tiếp.
Ý kiến của bạn @ngvandung thì khá là vô lý, nghe cứ như quảng cáo dầu nhớt vậy.
C# và Java, đều sử dụng máy ảo, đều là ngôn ngữ biên dịch, đều cache opcode, lẽ ra tốc độ phải tương đương nhau, đây lại Java > Golang > C# :expressionless:

Đọc thấy Go xếp sau Java mà hết cả hồn

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?