Javascript dẫn dắt newbie đến những thói quen xấu trong lập trình?

Chào các bác,
Chả là em là một ngoại đạo muốn hướng sang học lập trình. Con đường em muốn theo là web dev. Nên em đang tự học Html, css, Javascript.
Html, css thì k có gì để nói nhưng Javascript thì em hơi lo ngại. Mọi người cứ nói là mới học mà học Js thì đúng là mất gốc. Rồi thì Js free style theo học rồi kiểu gì cũng giữ thói quen “lạc trôi” à chết “lạc lối” của nó mất.
Em đang học theo cuốn Data Structures & Algorithms with JavaScript (Michael McMillan), phần nào chưa hiểu em tham khảo 2 cuốn của O’Reilly là The Definitive Guide và JavaScript : The Good Parts .
Học được gần 2 tháng nay e cũng ngấm đc tý tư duy lập trình. Làm được 1 số phần AngularJs căn bản. Nhưng được mấy tiền bối cứ đá đưa như kiểu em đang học võ công tà đạo vậy :< Làm em cảm thấy khá hoang mang. Không biết giờ em có nên quay lại học programming language gốc rễ như C/C++ hay Java không. Mong các tiền bối chỉ dạy ạ :frowning:

Hi bạn!

Theo cá nhân mình thì HỌC là để LÀM. Bạn đã đặt ra một hướng đi cụ thể cho mình rồi thì bạn sẽ PHẢI học những ngôn ngữ, công nghệ, … cần thiết để tự tin trên đôi chân mình khi đi trên con đường mình đã chọn.

Cái gì nó cũng có 2 mặt của nó. Không phải ngẫu nhiên mà JavaScript là ngôn ngữ được ưu chuộng nhất hiện nay. Cái tốt của nó là sử dụng cho rất nhiều các loại ứng dụng khác nhau, tạo ra được trải nghiệm người dùng càng ngày càng tốt cho các web apps, (trước kia còn có cả desktop apps, extensions, … viết = JavaScript). Nhưng đúng như bạn nói là nó khá thoải mái trong cách viết code nên có thể sẽ bị rối cho người mới học hoặc mới tiếp xúc và làm việc với JavaScipt ở mức độ cơ bản.

Tựu lại thì bạn nên theo mục đích của mình để học. Nếu bạn cảm thấy chưa vững kiến thức cơ bản thì bạn có thể quay trở lại các ngôn ngữ như: C/C++, Java, … để học lấy cái nền tảng. Còn JavaScript là sự lựa chọn duy nhất cho bạn để làm Web apps nói chung cũng như là Front-end nói riêng. (Không thể dùng Java, C#, C/C++, … để làm những thứ mà JavaScript làm được cả và ngược lại trong miền ứng dụng của nó)

Nói chung thì mỗi ngôn ngữ có một chức năng và mục đích riêng khi được tạo ra. Cho nên việc bạn học một ngôn ngữ, công nghệ nào mới thì đều tốt cả.

P/s: Chưa vững based thì mình khuyên bạn nên ĐỌCLÀM thật nhiều thì sẽ thấy mọi thứ được tạo ra là có mục đích của nó. :slight_smile:

3 Likes

Không nên suy nghĩ lung tung, tưởng tượng như bạn đang trên đảo hoang, chỉ có mỗi Javascript, không hề có C++ hay Java nào hết. Đi đến tận cùng sẽ thành chánh quả, suy nghĩ quá nhiều sẽ lãnh hậu quả, mà hậu quả lớn nhất chính là phí thời gian, cuối cùng ko làm đc gì cả.

2 Likes

Hi, cám ơn mọi người đã góp ý.
Em cũng ráng theo con đường này mà. E đã vạch sẵn con đường của mình rồi. Html/css/js rồi đến angular,nodejs/express. Đúng là js giờ đang rất thịnh và sẽ còn thịnh nên em hi vọng quyết định của mình sẽ k sai :joy: À nà có thể mn hiểu nhầm ý em. Em nói quay lại học c/c++/java ý em là quay đầu để học ấy. Chứ em chưa từng học ngôn ngữ nào trước trong 3 cái kia cả. :frowning: e chỉ biết cú pháp Java và hiểu các tính chất của OOP, làm mấy bài tập về Java như làm quản lý tiền công cho công nhân hay, quản lý danh mục sản phẩm của cửa hàng,… thôi. Có mỗi JS là em học tường tận. Kiểu như tại sao lại không so sánh các số kiểu float với nhau. Khai báo mảng không kèm indices lợi hơn như thế nào. Object đấy inherit thằng nào thì thừa hưởng nhiều tính năng hơn. Em muốn hiểu tường tận về 1 ngôn ngữ nên em quyết sống mái với Js do em đang học khối kinh tế muốn tự thân vận động chuyển ngành nên em muốn học trước nền tảng để theo học trung tâm tránh việc không theo được.
Như vậy liệu JS có thể là một ngôn ngữ tốt đầu tiên mà em học không ạ. Cám ơn mn.:pray:

1 Like

KHÔNG.

Vì JS có rất nhiều thứ sida và rất dễ gây rối cho các bạn mới học. Hệ thống phân tách module, OOP của nó hoàn toàn không giống các ngôn ngữ chuẩn OOP như Java, C#. Các khái niệm như callback, closure, execution context, scope, hosting v…v của nó cũng khá là phức tạp kể cả những người rành lập trình.

https://toidicodedao.com/tag/series-javascript-sida/

Nếu muốn học bài bản thì tốt nhất em nên học Java (C++ có phần memory management hơi phức tạp). JS có thể lập trình được nhiều thứ hơn, nhưng mới đầu nhảy vào học JS ngay sẽ dễ ngộp, dễ hổng kiến thức. Bằng chứng là các trường đại học hầu như không trường nào dùng JS để dạy sinh viên lập trình cả (Một số bootcamp thì có vì nó dễ bắt đầu, dễ làm sản phẩm)

3 Likes

Dạ vâng cám ơn anh. Trước em có học Java nhưng không đến nơi đến chốn. Có khi vậy thôi. Lại phải vất vả cày lại chứ biết làm sao :slight_smile: Anh có cuốn sách nào về java dạy bài bản và hay như mấy cuốn DS&A with js. The definitive guide hay js the good parts k? Mấy cuốn đó rất căn bản và dễ hiểu ạ. Cám ơn anh nhiều :heart: :smile:

sao lại là java mà ko phải là c# anh nhỉ

Trong series lập trình trên Lynda, thì họ dùng JavaScript làm ngôn ngữ dành cho người bắt đầu, đủ để hiểu được cốt lõi của lập trình nhưng không quá phức tạp.
Nếu muốn phức tạp hơn, chặt chẽ hơn, nhưng vẫn đi con đường của JavaScript, bạn có thể tìm hiểu một superset của nó là TyperScript.

Nên đọc:
You Don’t Know JS
Airbnb JavaScript Style Guide

Còn nhiều sách miễn phí khác, được tổng hợp tại đây.

1 Like

Em có thể dùng trang này để học
https://www.ntu.edu.sg/home/ehchua/programming/java/J3a_OOPBasics.html

1 Like

E cũng vừa tìm hiểu lúc nãy ạ. Hình như Học typescript áp dụng được vào Angular2 khi mà nó ra chính thức và bắt đầu phổ biến.

1 Like

Tài liệu và hướng dẫn cho Angular 2 thì hầu hết là TyperScript, nếu bạn theo Angular thì gần như bắt buộc phải học nó rồi.

Mình nghĩ bạn nên học thẳng ES6 vì ES6 đã hỗ trợ OOP rồi.

1 Like

Được chứ ạ? Ôi sao web nó lắm công nghệ thế. Thôi em Pick 1 cái rồi học chứ nãy giờ nhìu thứ quá ạ :< Em cần 1 ngôn ngữ để phát triển căn bản thôi ạ. Nhiều thứ quá loạn tẩu hỏa nhập ma mất :v

bạn cho hỏi các es6 này cái mảng của nó có như kiểu c# hay java ko hay cứ một thằng kiểu gì cũng được à vd var a cho vào string hay float đều được hay chỉ được một trong hai cái

Vậy bạn vẫn chưa hiểu bản chất của javascript rồi. Javascript từ trước đến giờ vẫn là Object oriented programming language dù nó không có “class”. Ở ES6 cũng vậy, có thêm class chỉ là cú pháp thôi, còn về bản chất nó vẫn là prototyped-based object oriented.

JavaScript classes introduced in ECMAScript 6 are syntactical sugar over JavaScript’s existing prototype-based inheritance. The class syntax is not introducing a new object-oriented inheritance model to JavaScript. JavaScript classes provide a much simpler and clearer syntax to create objects and deal with inheritance. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes

Nhưng học ES6 thì viết OOP sẽ dễ dàng và “like” C#, Java hơn mà

ukm, nhìn code có vẻ đẹp hơn. nhưng thực ra khai báo class trong es6 chỉ là syntax sugar - tức là viết là vậy nhưng khi javascript engine nó complie thì nó vẫn hiểu là dùng prototype :smiley:

3 Likes

Theo mình thì java hay C# cũng đều được. Nhưng nếu có thời gian thì nên học C/C++ trước, sẽ giúp người học hiểu rõ hơn về bộ nhớ và quản lý bộ nhớ, biết cách tổ chức dữ liệu. Vì bản thân ngôn ngữ C/C++ không “support” nhiều như java/C#, bạn sẽ phải làm việc với phần nền tảng nhiều hơn, giúp cho người học nắm vững kiến thức hơn.

Ngôn ngữ không có lỗi, lỗi là do thằng học, mỗi ngôn ngữ sinh ra có mục đích của nó. Mình thấy học js không có thói quen xấu gì cả, ngược lại còn thấy nó tiện lợi vl, không rắc rối khó hiểu như Rust, lên mạng search bụp bụp là có lib dùng.

2 Likes

nhưng mình nghĩ jav học trước thì vẫn chuẩn hơn là c# mặc dù mình rất thích c# bạn à

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