Tổng quan và lựa chọn ngôn ngữ đầu tiên cho việc học lập trình?

Hiện tại, có rất nhiều bạn hiện đang rất phân vân về vấn đề nên chọn ngôn ngữ nào để học lập trình hay một số bạn trẻ bị tẩu hỏa nhập ma mất hết phương hướng trong vấn đề này, vì thế theo suy nghĩ và kinh nghiệm non nớt của mình, mình sẽ giúp cho các bạn có một cái nhìn tổng quan hơn về vấn đề này. Hi vọng sẽ giúp cho các bạn có thể định hướng tốt hơn về lập trình. 

Vậy để hiểu và biết được rằng chúng ta nên chọn hướng đi nào là đúng đắn thì mình muốn hỏi các bạn "TẠI SAO LẠI THEO LẬP TRÌNH?" sau khi trả lời xong câu hỏi thì chúng ta phải xác định rằng "HỌC LẬP TRÌNH ĐỂ LÀM GÌ?" Khi làm việc gì cũng phải có mục đích của nó, không thể nào cứ làm khơi khơi vậy được. Thế nên mới có 2 câu hỏi trước khi các bạn kéo xuống phần dưới... HeHe...!

Kết quả hình ảnh cho lập trình gì

Với 2 câu trả lời trên thì có một số bạn sẽ muốn học lập trình để trở thành một "Hacker", còn số còn lại thì muốn thành công trên con đường viết ứng dụng, hoặc web hoặc.....blabla..... Nói chung là suy nghĩ chia thành 2 hướng... (>o<) Và cái đích cuối cùng là kiếm tiền dù cho đó là đồng tiền lương thiện hay là tiền bẩn.

Có rất nhiều bạn, trong đó có cả mình luôn trăn trở rằng, học ngôn ngữ gì để có thể trở thành "HACKER"? Một số bộ phận bây giờ cũng thế, mình chắc chắn luôn. Muốn thực hiện tấn công một trang web nào đó, rồi "Deface" trang đó để lại cái tên "Checked by...", thông báo cho quản trị viên biết đã có người đặt chân vô trang web này và thông báo fix lỗi bla blaaaaa........ Vậy câu hỏi đặt ra:  Tại sao khi nghĩ tới khái niệm "Hacker" thì chúng ta liên tưởng rằng đó là một nhân vật lập trình rất cao siêu, cao siêu của cao siêu luôn?

Bản thân mình cũng từng trải cho tới khi mình học được ngôn ngữ đầu tiên thì mình mới giật mình và tự hỏi bản thân "HỌC NGÔN NGỮ NÀY THÌ GIÚP ÍCH GÌ CHO VIỆC TẤN CÔNG?"

Ngày xưa mình cũng chã biết gì về ngôn ngữ lập trình cả, nhưng vẫn có thể quẩy tanh bành một số site trong và ngoài nước, mình đơn cử một kỹ thuật tấn công là "Social engineering" đây là kỹ thuật mà chẵng hề cần đến lập trình, nó như là một kỹ năng của chúng ta về thu thập thông tin "victim" sau đó lập ra một "password list" và thực hiện "bruteforce" vào các thông tin tài khoản của "victim". Nếu như biết lập trình thì ta có thể viết công cụ để "bruteforce" tài khoản. Nhưng để làm gì? khi mà chỉ với một từ khóa trong 0,7 giây chúng ta đã có vài đường link down công cụ về? 

Hay đơn cử một ví dụ khác, chắc có lẽ trong mỗi con người chúng ta, ai cũng chơi "Keylog" rồi nhĩ? Vậy khi các bạn chơi con "keylog" đó các bạn có lập trình nên con "keylog" đó không? Hay là lại google rồi làm theo hướng dẫn. Nếu có thì chắc có lẽ một số anh em lập trình viên viết ra chương trình để nâng cao kiến thức, hơn là tấn công nhĩ, còn một số khác thì viết ra để bán ==". Cái khó của trò này là làm sao dụ được "victim" click vào chương trình ấy >"<, ngày xưa mình dụ quài mà chã ai dính (_._!) đâm ra chán luôn, chã thèm dùng nữa (! =.=) .
  
Vậy xuất phát từ đâu mà chúng nghĩ rằng các "Hacker" đều là những lập trình viên đỉnh của đỉnh? Chắc có lẽ là từ các bộ phim truyền hình, ta thấy các diễn viên đều gõ "tạch tạch" "cạch, cạch" ra một đống bùi nhùi nên từ đó có lẽ khái niệm đó đã ăn sâu vào tâm trí của mỗi chúng ta.

Thực sự thì nếu như các bạn muốn theo đuổi lĩnh vực này thì mình khuyên các bạn nên học một khóa về "An toàn thông tin" hay hơn là bắt đầu từ một ngôn ngữ lập trình ="= . . .

Vậy chốt một câu thế này nhé: Hacker không nhất thiết phải biết lập trình, nhưng muốn tiến xa hơn trong thế giới này thì các bạn phải học lập trình. Nghe có vẻ ngược ngược và trái với những gì mình nêu phía trên nhĩ. Nhưng thôi cứ hiểu thế này "Học tấn công, Phòng thủ trước rồi học lập trình sau".

Rồi xong một hướng, quay lại với các bạn trẻ lập trình viên đối với các bạn này thì ngôn ngữ lập trình đầu tiên mà mình nghĩ chắc chắn các bạn sẽ học, cần phải học, ép buộc học, sống chết để qua môn đó là "PASCAL" >"< một ngôn ngữ lập trình mà các bạn cấp 2 hay cấp 3 phải trải qua, và kết quả chữ thầy trả trò, à không (~.~) chữ thầy trả thầy. (Trừ một số bạn trẻ nghỉ học, hoặc chú tâm vào pascal để được đi thi tin học thì mình không dám nói đến toàn boss >"< ).

Vậy nên lựa chọn ngôn ngữ lập trình nào để học?
Thì để trả lời cho câu hỏi này, các phải phải trả lời được câu hỏi "HỌC LẬP TRÌNH ĐỂ LÀM GÌ?"
Vì sao phải trả lời được câu hỏi này? Bởi vì đây là câu hỏi quan trọng nhất từ đó bạn sẽ có một hướng đi đúng đắn cho sự nghiệp sau này của mình.

Giống như thợ săn thì không thể mua cái "CƯA" để "BẮN" sư tử. Lập trình viên cũng thế thôi, Bạn thích viết một ứng dụng trên thiết bị di động mà đi học HTML & CSS thì ai coi ( À không đoạn này đáng ra phải ném trong try{} catch{} mới đúng bởi vì học lập trình di động mà học HTML & CSS trước thì thầy cô trong trường coi ==" bởi vì mình phải chạy theo chương trình thôi, trách ai bây giờ trách mình thôi T_T, còn vài cái catch{} khác thì thôi mình không nói đến nhé...!) 
Ở đây mình không nói là học ứng dụng di động thì không cần học HTML & CSS, nhưng nếu bắt đầu bằng ngôn ngữ này thì các bạn khá mất thời gian cho giai đoạn này, sau khi trải qua giai đoạn này thì các bạn bắt đầu vào chuyên môn, vào chuyên môn thì nhận ra nó chã có gì liên quan tới 2 thằng kia, sau khi vô chuyên môn một thời gian thì tới lúc các bạn cần đụng tới 2 thằng trên, lúc đó kiến thức cũng mai một, lại mất thời gian để ôn lại. Đấy thôi thì học ứng dụng di động thì vô thẳng chuyên môn luôn cho rồi hehe......!!

Thì hiện tại chúng ta có khoản hơn 500 loại ngôn ngữ lập trình đã được sử dụng trên thế giới @@, viết tới đây thì mình bắt đầu suy nghĩ, "Cái quái gì mà lớn thế nhĩ (=.=") ". Nhưng chung quy lại thì chúng ta có 3 mảng chính về thị trường việc làm cho dân IT chúng ta đó là: "Lập trình web", "Lập trình nhúng", "Lập trình di động".


  • Về lập trình web thì các bạn phải có kiến thức "front-end" đó là HTML & CSS tiếp theo là Javascript. Tiếp theo các bạn chọn một ngôn ngữ về "back-end" là Php, java hoặc C#. 
    • Mình giải thích luôn, có một số bạn thắc mắc là "front-endvới "back-end" là gì? Nên học về "front-end" hay là về "back-end"
    • Thì để trả lời cho câu hỏi này, các bạn có thể lên google search....... bla bla la la la....Sau khi đọc xong vài tờ A4 thì suy nghĩ "What the f*ck you are talking about...!" Kiến thức khi nào cũng trừu tượng, thì thôi mình nói thế này cho các bạn dễ hình dung. KHI NHÌN MỘT EM CHÂN DÀI SEXY MẶC BỘ VÁY MỎNG MANH THÌ CÁC BẠN THÍCH NGẮM VẺ BÊN NGOÀI (FRONT-END) HAY MUỐN LỘT LUÔN ĐỂ NGẮM NHÌN PHÍA BÊN TRONG (BACK-END)?
    • Đối với mình thì câu hỏi này thực sự khó, cơ mà nếu là cho mình lựa chọn thì mình chọn cả 2 =]]z. Thưởng thức vẻ bên ngoài (front-end) sau đó tiến tới quoàm, à không mình nhầm không phải quoàm mà là thưởng thức bên trong (back-end) hí hí . . . . :">.
  • Về mảng di động thì các bạn có thể học lập trình về ứng dụng trên nền tảng "Android" trước bởi vì thị phần về ứng dụng trên  "Android" là khá nhiều. Nếu không thích thì các bạn có thể học về "IOS" với tên gọi thân thương và triều mến "Ông vua không ngai vàng". Thì để học về "Android" thì các bạn có thể lựa chọn ngôn ngữ "Kotlin" hoặc "Java" để đặt nền tảng. Còn nếu lựa chọn "IOS" thì các bạn sẽ học về "Swift" hoặc là  "Objective-C". Học gì cũng được miễn đừng bỏ cuộc là được hehe.
  • Cuối cùng là lập trình nhúng thì các bạn có thể học C, C++ hay java cũng được. Mảng này yêu cầu trình độ khá cao đấy hehe....! Nhưng nếu học kỹ và nắm chắc nó sau này vươn lên IOT hay AI thì khá giàu đấy = ="


Vậy đó, chọn hướng đi nào là tùy thuộc ở các bạn nhưng mà mình nói luôn, các yếu tố xoay quanh hệ mặt trời đó là sao thổ, sau thủy.....!!! À à không :)) không phải yếu tố xoay quanh hệ mặt trời mà là yếu tố xoay quanh về một ngôn ngữ lập trình đó là: "Nền tảng" - "Thời gian" - "Chi phí" - "Tính hiệu quả" - "Độ tin cậy".

Cuối cùng thì mình nghĩ, học ngôn ngữ lập trình nào để chọn nó thành nền tảng cũng được. Nó không quan trọng, cái quan trọng là bạn phải biết cách nắm bắt và vận dụng kiến thức lập trình nền tảng để có thể học qua các ngôn ngữ khác. Bởi vì chung quy lại thì sau khi học xong ngôn ngữ lập trình thì các bạn sẽ nắm bắt được những kiến thức như sau:
  • Cấu trúc dữ liệu và thuật toán.
  • Thiết kế, truy vấn cơ sở dữ liệu.
  • Khả năng design.
  • Ngoài ra nếu như học tốt thì bạn còn có khả năng về "Design pattern" nữa.

Thế đó, việc chọn một nền tảng như trên thì sẽ giúp cho các bạn có một con đường ngắn hơn để đi tới một cơ hội có tên là "VIỆC LÀM" nhanh hơn mà thôi.

Suy nghĩ đơn giản thôi, cái quan trọng trong việc học lập trình là đừng bỏ cuộc giữa chừng các bạn nhé...!
Bạn và tôi hãy cùng nhau cố lên nhé, vật lội với cuộc sống để đi tới thành công.

Cảm ơn các bạn đã đọc bài viết...!

Bài viết được viết bởi thanh niên ngáo ngơ "Lê Sỹ Tài"

Nhận xét

Bài đăng phổ biến từ blog này

[Bài 6] Ép kiểu trong kotlin