Em trichs lại post cũ cho thím nào chưa đọc.
guide line dưới là do em tự tổng hợp cho các thím nào đang muốn và sẽ theo hướng C++
các thím có kiinh nghiệm gì cứ share, em sẽ update lên để các thím khác tiện theo dõi
1: Hệ điều hành
Windown hoặc Linux, windown thì quá quen thuộc rồi em nói qua về Linux
Linux: cái này các thím tìm hiểu qua cho biết, sau dùng nhiều ắt sẽ quen
+kiến thức về nhân linux (kernel, shell,...)
+quản lý, phân, cấp quyền các kiểu
+command line trong linux
+nên dành thêm thơi gian hoc lập trình shell, sau dùng khá nhiều
2. Cấu trúc dữ liệu và giải thuật
cái này rất quan trọng, các thím nên dành nhiều thời gian cho phần này để hiểu sâu hơn về lập trình. Học thật kỹ vào, khi nắm chắc phần này rồi thì em nghĩ học các phần khác không thành vấn đề, và sẽ học nhanh hơn
+cấu trúc dữ liệu cơ sở (struct, class, basic dât type)
+cấu trúc list, stack, queue, hash, tree, map, ....
+thuật toán: sắp xếp, đệ quy, quy hoạch động, DFS, BFS, backtracking,...
+duyệt đồ thị, cây nhị phân,...
+đánh giá độ phức tạp của thuật toán
phần này em hay lên SPOJ luyện, trang này khá ok và nhiều bài, chia làm nhiều dạng, có test case có commit code các kiểu cho các thím
nói chung các thím phải kiên trì, bài trên này cũng khá khó nhằn
3. C++
các khái niệm về hướng đối tượng (class, object, inheritance, interface, astract, ..). cấu trúc dự liệu cơ bản: con trỏ, struct, linklist,...
nói chung C++ có khá nhiều cái để học và có rất nhiều nguồn để học, em hay lên learncpp.com xem theo guide line
à quên các thím nên học design pattern nữa, trong các dự án thực tế luôn luôn dùng các pattern này
4. Framework
C++ có hai framework support lập trình giao diện mạnh mẽ là MFC của microshop và Qt open source. tùy các thím muốn theo hướng nào thì học framework ý. nói chung cũng không khó để tiếp cận, cứ làm thì quen thôi
Giờ em thấy theo hướng QT có vẻ nhiều hơn, các thím có thể làm nhúng hoặc app đều được
Chia sẻ của em khá là cơ bản, các thím trong nghành có nhiều kinh nghiệm thì chia sẻ thêm cho mọi người với
Mà em khuyên các thím muốn tay ngang sang lập trình thì cứ dành thời gian học mấy cái em bảo, nếu thấy ok thì chuyển, không là vỡ mặt đấy
lập trình không ngon như bọn trung tâm dạy lập trình trên mangh\j quảng cáo đâu, dạo này lươt FB hay gặp mấy bọn trung tâm quảng cáo "nếu bạn lương thấp hãy chuyển sang lập trinh, chỉ với khóa học 6 tháng blablalbalbal ..." nghe chuối đéo chịu được
------------------------------------------------------------------------
posted by FinalDevil
Mấy cái thím list ra thì chủ yếu là dành cho bất cứ lập trình viên nào chứ cũng không hẳn là dành cho C++ developer.
Mình chỉ trích ra một ý chỗ bạn nói là map, tree... C++ có map và unorered_map, thì khi sử dụng cũng nên biết là map dùng red-black tree, không hash key, còn unordered_map sẽ sử dụng hash nên key cần phải hash ra. Biết khi nào sử dụng map, unordered_map cũng sẽ mang lại tối ưu rõ rệt.
Nếu muốn nhấn mạnh C++ thì phải nói đến những thứ như là preprocessor, compiler, loader, linker, STL, GSL, Boost, profiling application, debuging, optimization, memory model, RAII...
C++ không chỉ có mỗi OOP, mà nó còn là procedural, functional, generic, template meta programming. Hay còn gọi là ngôn ngữ đa mô hình. Biết cách sử dụng mỗi mô hình khác nhau thậm chí là trong một project thì sẽ mang lại hiệu quả rất cao. Không hẳn OOP khi nào cũng là tốt nhất.
Học C++ cũng phải nắm được những idioms/pattern riêng mà chỉ C++ mới có, như là Pointer to Implementation, CRTP, SFINAE, Traits...
Và cái quan trọng nhất vẫn là vận dụng một cách linh hoạt những hiểu biết của mình vào các bài toán thực tế.
------------------------------------------------------------------------
posted by bribnt
Bên trong C++ có đến 4 ngôn ngữ lập trình khác nhau: C++ "thường", Template metaprogramming, constant expression và macro. TMP thì là functional rồi.
C++ "thường" nếu học cơ bản thì thấy dễ cũng bình thường vì nó giống nhiều ngôn ngữ khác. Functional khó vì kiểu tư duy nó khác. Search "imperative programming" và "declarative programming" để biết thêm chi tiết.
Mà C++ là multiparadigm, thích functional thì có thể dùng Boost Phoenix nó cho viết code y như functional. https://www.boost.org/doc/libs/1_72_...tml/index.html
guide line dưới là do em tự tổng hợp cho các thím nào đang muốn và sẽ theo hướng C++
các thím có kiinh nghiệm gì cứ share, em sẽ update lên để các thím khác tiện theo dõi
1: Hệ điều hành
Windown hoặc Linux, windown thì quá quen thuộc rồi em nói qua về Linux
Linux: cái này các thím tìm hiểu qua cho biết, sau dùng nhiều ắt sẽ quen
+kiến thức về nhân linux (kernel, shell,...)
+quản lý, phân, cấp quyền các kiểu
+command line trong linux
+nên dành thêm thơi gian hoc lập trình shell, sau dùng khá nhiều
2. Cấu trúc dữ liệu và giải thuật
cái này rất quan trọng, các thím nên dành nhiều thời gian cho phần này để hiểu sâu hơn về lập trình. Học thật kỹ vào, khi nắm chắc phần này rồi thì em nghĩ học các phần khác không thành vấn đề, và sẽ học nhanh hơn
+cấu trúc dữ liệu cơ sở (struct, class, basic dât type)
+cấu trúc list, stack, queue, hash, tree, map, ....
+thuật toán: sắp xếp, đệ quy, quy hoạch động, DFS, BFS, backtracking,...
+duyệt đồ thị, cây nhị phân,...
+đánh giá độ phức tạp của thuật toán
phần này em hay lên SPOJ luyện, trang này khá ok và nhiều bài, chia làm nhiều dạng, có test case có commit code các kiểu cho các thím
nói chung các thím phải kiên trì, bài trên này cũng khá khó nhằn
3. C++
các khái niệm về hướng đối tượng (class, object, inheritance, interface, astract, ..). cấu trúc dự liệu cơ bản: con trỏ, struct, linklist,...
nói chung C++ có khá nhiều cái để học và có rất nhiều nguồn để học, em hay lên learncpp.com xem theo guide line
à quên các thím nên học design pattern nữa, trong các dự án thực tế luôn luôn dùng các pattern này
4. Framework
C++ có hai framework support lập trình giao diện mạnh mẽ là MFC của microshop và Qt open source. tùy các thím muốn theo hướng nào thì học framework ý. nói chung cũng không khó để tiếp cận, cứ làm thì quen thôi
Giờ em thấy theo hướng QT có vẻ nhiều hơn, các thím có thể làm nhúng hoặc app đều được
Chia sẻ của em khá là cơ bản, các thím trong nghành có nhiều kinh nghiệm thì chia sẻ thêm cho mọi người với
Mà em khuyên các thím muốn tay ngang sang lập trình thì cứ dành thời gian học mấy cái em bảo, nếu thấy ok thì chuyển, không là vỡ mặt đấy
lập trình không ngon như bọn trung tâm dạy lập trình trên mangh\j quảng cáo đâu, dạo này lươt FB hay gặp mấy bọn trung tâm quảng cáo "nếu bạn lương thấp hãy chuyển sang lập trinh, chỉ với khóa học 6 tháng blablalbalbal ..." nghe chuối đéo chịu được
------------------------------------------------------------------------
posted by FinalDevil
Mấy cái thím list ra thì chủ yếu là dành cho bất cứ lập trình viên nào chứ cũng không hẳn là dành cho C++ developer.
Mình chỉ trích ra một ý chỗ bạn nói là map, tree... C++ có map và unorered_map, thì khi sử dụng cũng nên biết là map dùng red-black tree, không hash key, còn unordered_map sẽ sử dụng hash nên key cần phải hash ra. Biết khi nào sử dụng map, unordered_map cũng sẽ mang lại tối ưu rõ rệt.
Nếu muốn nhấn mạnh C++ thì phải nói đến những thứ như là preprocessor, compiler, loader, linker, STL, GSL, Boost, profiling application, debuging, optimization, memory model, RAII...
C++ không chỉ có mỗi OOP, mà nó còn là procedural, functional, generic, template meta programming. Hay còn gọi là ngôn ngữ đa mô hình. Biết cách sử dụng mỗi mô hình khác nhau thậm chí là trong một project thì sẽ mang lại hiệu quả rất cao. Không hẳn OOP khi nào cũng là tốt nhất.
Học C++ cũng phải nắm được những idioms/pattern riêng mà chỉ C++ mới có, như là Pointer to Implementation, CRTP, SFINAE, Traits...
Và cái quan trọng nhất vẫn là vận dụng một cách linh hoạt những hiểu biết của mình vào các bài toán thực tế.
------------------------------------------------------------------------
posted by bribnt
C++ "thường" nếu học cơ bản thì thấy dễ cũng bình thường vì nó giống nhiều ngôn ngữ khác. Functional khó vì kiểu tư duy nó khác. Search "imperative programming" và "declarative programming" để biết thêm chi tiết.
Mà C++ là multiparadigm, thích functional thì có thể dùng Boost Phoenix nó cho viết code y như functional. https://www.boost.org/doc/libs/1_72_...tml/index.html