Hiện nay có rất nhiều ngôn ngữ lập trình như: java, php, database, c, python, perl,. . . Tại sao phải phát triển nhiều ngôn ngữ đến như vậy trong khi từng mảng ta có thể dùng một ngôn ngữ để khai thác. Như mảng kernel thì cần C. Database chỉ cần MySQL. Tại sao không đơn giản hóa nó đi và giúp cuộc đời lập trình viên đơn giản hơn?!
Tại sao lại có nhiều ngôn ngữ lập trình?
Nhiều ngôn ngữ lập trình thì mới giúp cuộc đời lập trình viên đơn giản hơn chứ nhỉ?
Người ta dùng một ngôn ngữ khi có nhu cầu nào đấy, với mấy thể loại dễ học dễ dùng như PHP hay JavaScript thì chỉ cần tập sử dụng vài giờ là có thể làm ra một project nhỏ nhỏ được rồi.
Thay vì học nhiều ngôn ngữ kiến thức mỗi ngôn ngữ càng nhiều và cấu trúc khác nên khó nhớ. Ta có thể gộp chung lại 1 ngôn ngữ cho riêng một mảng và tái cấu trúc cho nó đơn giản và như thế mọi người có thể lập trình trên 1 ngôn ngữ có cùng 1 cấu trúc. Như thế không đơn giản hơn sao ạ?
Đối với lập trình viên có chút ít kinh nghiệm và đã được trải qua các dự án thực tế, ngôn ngữ chẳng bao giờ là vấn đề, người ta phát minh ra là vì có nhu cầu thực sự chứ đâu phải cho vui.
Ngày trước mình cũng nghĩ là C# là ngôn ngữ siêu đa dạng, làm cái gì cũng được từ kernel, app, library, server, client, android, iOS, database… nên mình chỉ học mỗi C#, sau này nhận ra là dù nó làm cái gì cũng được nhưng có những cái nếu dùng C# thì vất vả quá, mà nếu cái gì cũng tích hợp C# thì cái framework lại to quá (.NET framework là một ví dụ), mà nếu chia thành nhiều framework khác nhau cho mỗi bộ phận trong dự án thì lại quá phức tạp, thà code riêng từng ngôn ngữ cho mỗi bộ phận còn dễ quản lý, đỡ nhầm lẫn.
tại sao đã có chén rồi mà lại còn có tô, tộ trong khi tất cả đều có thể đựng cơm canh
tại sao đã có nĩa rồi mà cón có nĩa lớn, nhỏ, giá lớn giá nhỏ, trong khi tất cả đều chỉ để múc cái gì đó?
tại sao quán cafe cái menu nó có thể lên chục trang nhưng tất cả cũng chỉ để người ta ngồi uống và chém gió
tại sao đã có bánh mì rồi mà nhiều quán ăn vẫn bán hủ tiếu, bánh canh trong khi tất cả chỉ là để ăn sáng
câu hỏi của bạn thể hiện trình độ lập trình của bạn, thay vì đi đặt ra câu hỏi tào lao thế này thì nên tự đi tìm câu trả lời cho bản thân đi
trên đời có 10 loại người: người luôn đặt câu hỏi cho những gì họ chưa hiểu biết và người luôn đặt câu hỏi khi họ đã có hiểu biết
why php, why c, why c++, php vs javascript …
bạn đã từng lên google search như vậy chưa?
chế lại cho nó phù hợp ngữ cảnh :))
Mình lại nghĩ đây là câu hỏi thú vị!
Chắc tại vì ngày xưa m cũng có câu hỏi tương tự. Sau đó m rút ra là càng câu hỏi tổng quát thì càng khó để trả lời. Khó ở đây có thể là 9 người 10 ý, có thể là ngay người trả lời cũng không có được đáp án hoàn toàn có lý. M thấy chẳng việc gì phải ngại đưa ra câu hỏi như vậy, cũng chẳng có gì tự hào để mà phản biện kiểu trêu tức.
Sợ nhất là trong đầu chẳng có câu hỏi nào cả thôi.
Vì mấy ông coder chỉ thích đọc code m viết nên chế ra ngôn ngữ thấy vừa mắt sau đó nhiều người có chung sở thích sẽ tụ lại và phát triển ngôn ngữ đó nên hiện tại chắc có khoảng 20 ngôn ngữ là phổ biến. Chứ thực sự chắc phải mấy trăm mấy nghìn ngôn ngữ đã từ tồn tại rồi.
Đúng là 1 câu hỏi rất chính đáng, và bạn ko phải là người đầu tiên hỏi như vậy
Ai cũng muốn thống nhất giang hồ để trở thành bá chủ, nhưng cuộc đời lại không đơn giản như thế !!
Ví dụ nhé:
- Mr. David Korn muốn thống nhât Bourne shell và C shell bằng 1 cái khác mạnh như csh nhưng dễ xài như sh <<< kết quả là có thêm ksh, trong khi csh/sh vẫn còn sống nhăn răng
- Hãng SUN (đã die) muốn tạo ra một ngôn ngữ lập trình thống nhất giang hồ (gống như chủ topic muốn) làm được nhiều thứ, chạy được trên nhiều cpu/os. <<< kp ai cũng biết, các ngôn ngữ khác ko mất đi, giang hồ lại có thêm Java !!
- Gần nhất là các bạn NoSQL, ông nào mới ra cũng tự phong mình là nhanh nhất, khỏe nhất, thay thế DBMS, sinh ra để cứu thế giới, … <<< kết quả là có thêm 1 đống NoSQL…
Tóm lại lạ cho dù có nhiều thứ, bạn cũng ko cần học hết (muốn cũng ko được ), chỉ cần trùm 1 món là kiếm cơm được rồi, các thứ khác học chơi cho biết thôi.
NoSQL ra đời một thời gian, lại có N1QL chạy trên NoSQL
Nói chung là kỹ năng rồi nó cũng thu về 1 cái gọi là “lập trình” thôi. Ngay cả trong cùng 1 ngôn ngữ cũng có trăm nghìn cách để code “Hello World!” thì nhiều ngôn ngữ cũng có vấn đề gì, cái gì có chỗ đứng tự khắc tồn tại.
Mà cái thằng Java, ừ thì nó đa năng đa nền tảng thật, mà code chả sướng tí nào, do công việc thì phải xài chứ nếu tự code cho bản thân thì chưa xài bao giờ.
Ông Google mấy năm nay lại đẻ ra thằng Dart code cả front-web, back-end, mobile đúng sở thích của chủ thớt đó.
Mong có ngôn ngữ nào hiện đại như C#, đa nền tảng như C, nhiều lib như C++ mà vẫn chưa có :))
Có rồi mà Python đó. Có điều chậm hơn C 50 lần nhưng chắc chắn hiện đại hơn C#, nhiều lib như C++, đa nền tảng “hơn” C. Từ webapp tới machine learning có tuốt
Python với Ruby thì lại chậm quá thể . Ngôn ngữ đáp ứng tất cả các yếu tố trên chắc do AI xây dựng và bảo trì quá
JavaScript
- Các chuẩn ES6, ES7, ES Next, (ES thập cẩm tào lao bí đao) cũng đủ hiện đại như C#
- Có đủ framework (nửa nạc nửa mỡ) từ front-end, backend, mobile, desktop.
- Nguồn libs dồi dào (đa phần ăn hại) từ NPM.
Tại mấy cha lập trình viên tham lam chứ ai.
Cái gì cũng muốn, cái gì cũng thèm. Thấy lạ là lại thêm vào, thấy thiếu thì lại đắp dô. Mà đắp vô thì nó phình ra thì lại kêu xấu xí, mập ú, nặng nề, bo xì không chơi nữa. Thế là ngôn ngữ mới ra đời để giải quyết đống đó. Mà chưa thấy giải quyết bao nhiêu thì lại lôi mớ của nợ về nhà. Thế là lại giải quyêt tiếp bằng cách đem con bỏ chợ đem con mới về nhà nuôi :v
Tuy nhiên không thể kể tới sự phát triển của công nghệ quá nhanh. Muốn con người tiếp cận nhanh -> phải đơn giản hoá đi nữa. Hoặc nhu cầu nhiều hơn, đòi hỏi phức tạp hơn. Thì khi đó những cái cũ có khi không phù hợp nữa. Phải có nhwuxng cái mới thay thế những cái cũ đi.
Như từ cái thời vua Hùng, FORTRAN ra đời như đấng cứu thế so với Assembly. Bây giờ thì Java, C#, C++, Rust, Golang, … uýnh nhau giành địa bàng tung toé
Hay website thì những năm 2000 thì PHP là một vị thần. Còn bây giờ thì là lại NodeJS, Ruby (on Rail), Elixir, Erlang, ASP …
iOS/Android thì trước kia buộc phải học Obj-C/Java/C++ còn không thì chơi với dế đi nhoé. Bây giờ thì swift/kotlin/react-native/dart đã phần nào chiếm được con tim của các dev.
Còn với MongoDB, thì bạn không cần phải làm bảng, làm quan hệ bla bla bla nữa. Bay vô set cái gì nó cũng nhận. Dễ ờm. Load ra phát có nguyên cái Javascript object luôn. Parse qua json một nháy một rồi send thẳng về thằng client mặt nồi ngay và luôn. Xịn vậy nên thôi, xin bo xì SQL.
Để ý thì những ngôn ngữ/nền tảng kia đều giúp dev tiếp cận cái họ muốn nhanh hơn. Gọn hơn so với cái cũ không ít thì cũng nhiều.
Thế nên, việc chuẩn hoá về một ngôn ngữ, một công nghệ, thì nó như giam chân sự phát triển lại thôi. Cứ để như vậy mà nó phát triển. Cái nào hợp lý, nhiều người đồng tềnh, thì sẽ tự coi nó như là một standard :3
E đang code mobile với RN mà vẫn ko thoát kiếp code Obj-C , Java . Đúng là js cái gì cũng nửa nạc nửa mỡ.
tuy nó chậm nhưng nó đẹp, cú pháp gọn. hiện đại như C# nhiều thư viện, ai nói C++ nhiều thư viện là sai lầm nhé. C# không nhiều à
Bạn có bằng chứng nào không? C++ được sử dụng nhiều để làm game, làm mấy thứ liên quan đến memory và thậm chí là làm tool hack game, bằng chứng thì ở trên mạng có đầy. Vậy liệu Python có phù hợp để làm mấy thứ liên quan đến memory, kernel không? Python bản chất là một ngôn ngữ thông dịch nên chuyện chậm hơn C, C++ là chuyện tất nhiên. Trình thông dịch của Python cũng được viết trên C đấy. Cách nói của bạn khá là chủ quan và hơi theo đạo Python giáo(dựa theo cách nói của Tôi đi code dạo). Để mở mang kiến thức thì tại sao bạn không thử search trên Google từ khoá Why Python sucks?
và Why C# sucks?
.
C# cũng nhiều nhưng tại sao nói C++ nhiều thư viện là sai là sao :V
1400+ thư viện cho Windows+Linux+Mac+ARM+UWP đây: https://github.com/microsoft/vcpkg/tree/master/ports, ko phải nhiều thì là gì :V Nỗi cái Qt ko cũng đủ gọi là rất nhiều rồi :V
GUI:
- Qt
- WxWidgets
- MFC
- GTK
- FLTK
… - Immediate mode:
- Dear ImGui
- Nuklear
- Terminal mode:
- ncurses, pdcurses
Container chung chung:
- Boost
- abseil
- folly
Parallel programming:
- OpenMP
- CUDA
Cryptography:
- OpenSSL, LibreSSL
- cryptopp
- botan
…
Test:
- Boost.Test
- GoogleTest
…
Game engine:
- Unreal Engine
- Cocos?
- irrlicht
- Tự chế:
- SDL2
- SFML
- GLFW
- Game pattern:
- EnTT
Computational geometry:
- CGAL
- Boost.Geometry
Xử lý/nhận dạng hình ảnh:
- OpenCV
- Tesseract
- ITK, VTK
2D graphics:
- Cairo
- Magick++
3D graphics:
- OpenGL: glut, glew, …
- Qt
- Ogre
Số lớn:
- gmp, mpir, mpfr
- Boost cpp_int, tom_int
Regex:
- Boost.Regex
- re2
- pcre2
…
Linear algebra:
- BLAS
- eigen
- armardillo
…
Serialization:
- msgpack
- protobuf
- Boost.Serialization
- JSON
- RapidJson
- nlohmann
…
Logging:
- spdlog
- Boost.Log
…
Web-server/framework/socket:
- Qt
- Boost.Beast
- Wt
- cpprestsdk
- cppcms
…
Networking:
- Boost.Asio
- POCO
- Qt
- curl + cpr (tác giả người Việt)
Misc:
- Audio, video: ffmpeg, x264, x265
- Nén: libwebp, woff2, zstd
C++ quá ít thư viện, cái gì cũng có 2-3 thư viện cạnh tranh :V :V Ở trên là list 1 vài thư viện nổi tiếng, còn cả ngàn thư viện open source ở trong vcpkg kia nữa, mà ở ngoài vcpkg còn cả trăm thư viện open source nữa, mà thư viện trả tiền thì chắc còn cả trăm thư viện nữa ko biết hết nổi :V :V