01/10/2018, 09:59
Liệu C và C++ có bao giờ bị thất sủng không?
Chào mọi người trong diễn đàn, em là người mới bập bẹ mới học lập trình và em đang theo dõi bài học C của anh đạt được vài ngày. Em có 1 thắc mắc là hiện tại Go nó đang được mọi người xem là C thế kỉ 21 thì liệu C nói riêng và C++ nói chung thì nó có bị thất sủng không ạ?
Bài liên quan
Kế bên Go là còn Rust nữa. Nhưng C là C, kể cả tốc độ compile (các loại C compiler nói chung) và tốc độ thực thi đều nhỉnh hơn hơn Go và Rust. Rust cũng nhỉnh hơn Go nhưng hơi phức tạp nên hơi flop đâu được ông lớn Google lăng xê đâu.
Nhưng nếu bạn học Go được thì cứ học đi, đâu nhất định phải học C/C++ trước. Chúc bạn thành công.
Bạn thấy thời gian nó ra đời và tồn tài thì các bạn đã biết. C nó rất gần với ngôn ngữ máy. Chúng ta dễ dàng kiểm soát bô nhớ, 2 ngôn ngữ này là bá chủ trong lập trình nhúng bạn à. Nhắc tới nhúng thì người ta nhắc tới C/C++.
Học tốt một ngôn ngữ thì học ngôn ngữ mới sẽ nhanh hơn (chắc đâu đó tầm 1 tháng) nên ko phải lo đâu. Cứ học tốt C/C++ đi bạn. Năm nào chả có ngôn ngữ mới ra đời mà có thấy nó chết đâu
c/c++ sẽ thất sủng khi không còn linux OS mà không còn linux thì internet cũng …
hỏi tào lao quá, cứ lao vào học đi. không thừa đâu
Khi nào có ngôn ngữ có cú pháp đơn giản và thực thi nhanh hơn cả C thì C mới chết. Mà còn lâu lắm bạn. Nên bạn cứ học đi
Câu này mình nói thật: có thể thế giới không thất sủng, ở VN thì thất sủng đấy, vì CNTT ở VN toàn là đi làm dịch vụ web không à
Mình thấy ở vn hiện tại đa số là theo web và gia công phần mềm.
=> Ngôn ngữ càng bậc cao càng được trọng dụng.
Ngành web hiện nay thì đổ xô về PHP, Nodejs có nhưng không nhiều.
Phần mềm thì C#, kéo thả,…
Những ngôn ngữ bậc thấp hoặc bắt đầu liên quan tới linux, cài đặt hệ thống này nọ thì ít được chú trọng, hầu như chỉ có cá nhân tự mày mò, những cá nhân này sau khi có kinh nghiệm thì đa số không còn ở trong nước mà hầu hết ra nước ngoài lập nghiệp/cống hiến.
dạ cảm ơn mọi người trả lời. Em cũng thích cái C này lắm lúc có thử python được 1-2 tuần nhưng thấy C nó thú vị sao sao nên quay qua C học. Em chỉ hỏi vậy thôi chứ em biết C vẫn là nên tảng cho lập trình sau này mà:)
Cái này hay à nha, lần đầu có người khen C thú vị hơn Python đó
hehe. Em cũng chả biết nữa. Hồi trung học có học sơ qua pascal, sau đó e lên mạng xem 1 số ngôn ngữ lập trình, nghe nói game hay chơi đều lập trình bằng C/C++ nên e mới có cảm giác thích (em mê game) :))
Cứ đến lúc làm thật mới biết thích thằng nào hơn thằng nào
Lúc đấy lại chả khóc hết nước mắt chứ tưởng
em cũng chuẩn bị sẵn tâm lí rồi. Có gì thì nhảy thôi a :))
Mình học Python theo các video của anh Đạt. Sau đó lên FPT Polytechnic học Java. Cũng nhờ biết được OOP bên Python mà thấy Java dễ học hơn nhiều so với lúc tiếp xúc ban đầu. Sau này nghiên cứu .NET Framework và cũng thích thú vì khá giống Java
Tuy nhiên quay lại C/C++ thì không biết mô tê gì cả. Đọc Document trên mạng cũng chả hiểu gì cả (cách viết Document bên C khác với Java và C# quá) Mà học lại từ đầu thì hơi ngán + mất thời gian, mình cũng chưa rảnh để học C cho nó đàng hoàng nên thôi
Sau thời gian học tí tí C++, mình xin xác nhận điều mình thấy khó chịu nhất là khai báo mảng :))
kiểu dữ liệu là
int[]
mà khai báoint a[10]
. Bó tay.Quen rồi lại thấy tiện hơn đó bạn êy. Cách khai báo này làm cho chương trình chạy nhanh hơn, tiết kiệm bộ nhớ hơn, song bị hạn chế về kích thước mảng, C++ còn có cách khai báo mảng động dựa trên con trỏ nữa, cách khai báo này chính là cách khai báo mà Java hay dùng.
Đó chính là cái mà bạn phải lo đó, mình nè, hồi chưa học C/C++ thì chỉ có biết PHP, học xong rồi biết thêm Java, Python và vài ngôn ngữ khác nữa. Hồi đó thích học mấy ngôn ngữ hiện đại lắm, nhưng sau này quen C/C++ rồi thì lại thấy học C/C++ hứng thú hơn
Cứ thoải mái đi! C và C++ phổ biến lắm. C và C++ tốc độ thực thi nhanh hơn nhiều thứ khác thì cứ dùng đi nhé. C và C++ làm game và làm desktop app thì mượt mà lắm. Mình từng làm rồi
…
20 characters
Chỉ đơn giản là quen thôi, nhưng cú pháp như vậy là không nhất quán. Rõ ràng
a
có kiểu dữ liệu làint[]
, lẽ ra cú pháp như vậy phải là SAI.Các ngôn ngữ hướng đối tượng mình biết thì array là class nên không khai báo mảng trên stack như C/C++ được. Một đối tượng mảng buộc phải khai báo trên heap thông qua toán tử
new
hoặc các array object khác. Nhưng cách khai báo như vậy tuân thủ quy định chung về cú pháp khai báo:<kiểu dữ liệu> <TênBiến>;
hoặc<kiểu dữ liệu> <TênBiến> = <đối tượng>;
(ví dụint[] a = new int[10];
) (Đây mới là cách Java hay dùng)C++ đi lên từ C, trong C thì mảng chẳng phải struct cũng chẳng phải class, chỉ đơn giản là một kiểu dữ liệu. Thế nên khai báo tầm bậy cũng chả chết ai, khai báo mảng 10 phần tử xong truy cập đến phần tử thứ 15 cũng ok.
Việc khai báo trên stack chẳng nhanh hơn so với khai báo trên heap là bao nhiêu, chỉ đảm bảo ứng dụng không bị memory leak. Tuy nhiên stack cung cấp cho mỗi ứng dụng là có hạn, tuỳ theo kiến trúc hệ điều hành (64 bit/32 bit…), trong khi heap thì vô tận, chừng nào RAM còn chỗ. Chính việc khai báo các biến trên stack mới chiếm chỗ bộ nhớ, nếu như LTV có khả năng quản lý tốt cấp phát động. Hoặc như các ngôn ngữ hướng đối tượng phổ biến như Java, C# thì sẽ có GC lo liệu.