Phương pháp làm chủ một ngôn ngữ lập trình mới

Có nhiều người hỏi mình rằng “ Để làm chủ một ngôn ngữ lập trình thì làm thế nào ? Làm sao để học tổng thể nhanh nhất ? ”
Trong quy trình học tập và thao tác, mình đã tìm ra một kinh nghiệm tay nghề để học những ngôn ngữ mới. Mô hình này sẽ xuyên suốt từ khi khởi đầu cho đến khi trở nên thành thạo ngôn ngữ đó .
Điểm mấu chốt ở đây chính là : cách bạn khái niệm hóa ( conceptualization ) một yếu tố .

Mình hy vọng qua bài viết này sẽ giúp các bạn thay đổi tư duy và áp dụng hiệu quả vào học một ngôn ngữ lập trình mới.

Khái niệm hóa là cách chúng ta định nghĩa, tổng quát hóa một vấn đề hoặc nhiều vấn đề. Từ đó, chúng ta có thể hình dung và có cái nhìn toàn diện hơn”

Trong bài viết này, mình sẽ chỉ đề cập những khái niệm tổng quan của ngôn ngữ lập trình. Còn chi tiết cụ thể hơn về kỹ thuật của từng ngôn ngữ, những bạn hoàn toàn có thể tìm hiểu thêm những bài viết hướng dẫn học lập trình của mình nhé .

cach hoc ngon ngu lap trinh moi

Ngôn ngữ lập trình là gì ?

Trước khi bàn tới những khái niệm to tát và xa xôi, mình sẽ quay lại khái niệm cơ bản nhất .
Vậy ngôn ngữ lập trình là gì ?
Đúng như tên gọi của nó, ngôn ngữ là phương tiện đi lại để tiếp xúc giữa hai thực thể. Nếu là tiếp xúc giữa con người với con người thì gọi là ngôn ngữ tiếp xúc con người. Còn ngôn ngữ để tiếp xúc giữa con người và máy tính. Hay nói đúng mực hơn là phương tiện đi lại để con người hoàn toàn có thể truyền tải ý muốn cho máy tính hiểu và triển khai .
Nó cũng trải qua quy trình tăng trưởng từ rất lâu rồi. Từ ngôn ngữ máy đơn thuần, đến ngôn ngữ bậc cao ( Java, C #, PHP … )

Các ngôn ngữ lập trình

các ngôn ngữ lập trình

Ngày nay, có rất nhiều ngôn ngữ lập trình sinh ra. Mỗi ngôn ngữ lập trình lại có thế mạnh riêng của nó .
Chắc hẳn bạn đã nghe đến Java, PHP, Javascript, C # … Nhưng cũng có những ngôn ngữ mà mình tin chắc bạn chưa khi nào nghe tới : lolcode, Glass, Brainfuck …
Tuy nhiên, để những bạn đỡ lạc lối trên con đường học lập trình và lựa chọn cho sự nghiệp coder sau này. Mình sẽ liệt kê 5 ngôn ngữ lập trình thông dụng và nên học nhất :

  • Java
  • Javascript
  • C#
  • Python
  • Runy

Để khởi đầu một ngôn ngữ lập trình mới ? Hãy mở màn với Java

Giống như hầu hết những người tăng trưởng ứng dụng đã học lập trình tại những trường học vào những năm 2000 .

Phương pháp lập trình đầu tiên mà bạn được tiếp xúc là lập trình hướng đối tượng (OOP). Với ngôn ngữ lập trình đầu tiên thường sử dụng là Java. (Tham khảo ngay bài viết lập trình hướng đối tượng Java)

Việc học ngôn ngữ Java là khá nực cười. Bây giờ nghĩ lại, mình vẫn thấy thực sự khâm phục bản thân vì đã nỗ lực và không bỏ cuộc vào thời gian đó .
Mình đã mất khoảng chừng ba tháng để học Java từ sơ cấp đến nâng cao, và cuốn sách mình học là “ Deitel : Java how to program “ .
Với cuốn sách này, tác giả Deitel đã viết một cách khá cụ thể, với chủ đề chính là những đối tượng người dùng ( Object ) hoặc sự thừa kế ( Inheritance ) .
Tác giả kiến thiết xây dựng sơ đồ chi tiết cụ thể để lý giải về đối tượng người tiêu dùng, về nguyên tắc lập trình hướng đối tượng người tiêu dùng. Mình rất thích những ví dụ của tác giả như dùng hình tượng sư tử để lý giải về tính thừa kế ( inherited class ) .

# Mình đã thu được điều gì từ việc học Java

học lập trình java cơ bản

Qua cuốn sách, Deitel muốn truyền đạt một điều rằng: Để học nhanh một ngôn ngữ, đừng có tìm hiểu chi tiết mọi thứ của ngôn ngữ đó. Thay vào đó, bạn cần phải biết cách khái quát những chi tiết.

Chẳng hạn, mình sử dụng chồng đĩa để giải thích cấu trúc dữ liệu ngăn xếp (stack).

Khái niệm tựa như như vậy được sử dụng để tiến hành những stack-frame khi thực thi chương trình. Và tất yếu back-stack trong Android cũng tựa như .
Ý tưởng chung là như nhau, cứ back-stack thì là vào sau ra trước ( Last in – First out ). Do đó nên hiểu khái niệm trước khi tìm hiểu và khám phá cụ thể về cách triển khai .

Để làm chủ một ngôn ngữ lập trình, hãy thử áp dụng “khái niệm hóa”

Sau khi khái niệm hóa những thứ trong tâm lý, điều tiếp theo bạn làm là vận dụng khái niệm này vào việc học .
Bài viết này của mình chính là khái niệm hóa những ngôn ngữ .
Đầu tiên, tất cả chúng ta chia ngôn ngữ thành những thành phần cơ bản nhỏ hơn. Thành phần tiên phong là câu ( sentence ). “ Câu ” được khái niệm hóa là khối kiến thiết xây dựng của tổng thể những ngôn ngữ, cả ngôn ngữ nói / viết và ngôn ngữ lập trình .
Nếu bạn hoàn toàn có thể xâu chuỗi vài câu lại với nhau thành một đoạn văn có nghĩa. Điều đó có nghĩa bạn đã thành thạo trong ngôn ngữ nói / viết .
Quy tắc này cũng được vận dụng cho những ngôn ngữ lập trình. Nếu bạn hoàn toàn có thể xâu chuỗi vài dòng mã lệnh với nhau để xử lý một bài toán nào đó, thì bạn được coi là thông thuộc, giỏi ngôn ngữ lập trình đó ( đây là chỉ quan điểm của cá thể mình thôi )

# Sử dụng 5 thành phần chính của câu

Với ngôn ngữ nói / viết, một câu nói thường gồm những thành phần như :

  1. Danh từ (Noun) / Đại từ (Pronoun): Có thể là chủ thể hoặc đối tượng của câu.
  2. Động từ (Verb) – đóng vai trò là hành động đang được thực hiện.
  3. Cụm từ (Phrases) / Biểu thức (Expression): Đóng vai trò như các phần của một câu (cũng là các phần của một dòng mã lệnh).
  4. Cú pháp (Syntax) / Ngữ nghĩa (Semantics): Đóng vai trò như cấu trúc và quy ước để diễn đạt các câu (cũng như các cấu trúc để viết các dòng mã lệnh).
  5. Đặc tả ngôn ngữ (Language Specifics): Các đặc trưng đối với ngôn ngữ đó.

Đây là 5 thành phần của một câu trong ngôn ngữ nói / viết thường thì nhưng nếu hiểu kĩ và vận dụng nó vào lập trình thì bạn sẽ thấy có nhiều nét tương đương .

Dưới đây là 5 rào cản mà mình đã vượt qua để đi từ cơ bản đến nâng cao khi bắt đầu học một ngôn ngữ lập trình mới: ( Trước đó bạn có thể tham khảo top 5 ngôn ngữ lập trình Android mình đã viết ở bài trước)

1. Các danh từ / đại từ

Các danh từ và đại từ được sử dụng trong tiếng Anh để xác lập những thực thể ( chủ ngữ / đối tượng người tiêu dùng ) của một câu .
Ngôn ngữ lập trình cũng diễn đạt những đối tượng người dùng tựa như như vậy. Trong những khối mã lệnh tất cả chúng ta gọi đó là định danh ( Identifier ). Ví dụ như tên biến, tên hằng số …
Rào cản tiên phong là xem cách định nghĩa những định danh trong ngôn ngữ. Nghĩa là một định danh như thế nào là hợp lệ trong ngôn ngữ đó .

int myNumber = 12; // java
let myNumber = 12 // F#
my_number = 12 # python

2. Các động từ

Trong một câu, động từ dùng để chỉ hành vi. Có thể hành vi đó đã được triển khai hoặc chưa được thực thi .
Với ngôn ngữ lập trình, tất cả chúng ta cũng định nghĩa hàm hay phương pháp tương tự như như vậy .
Như vậy rào cản thứ hai để bạn giỏi ngôn ngữ lập trình là phải khám phá cách định nghĩa những hàm bằng ngôn ngữ .

// Java
public void addNumbers() {
  	//… add numbers
}
// JavaScript
function addNumbers() {
	//…add numbers
}
# Python
def add_numbers():
  #…addd numbers

3. Các cụm từ / biểu thức

Các cụm từ và biểu thức là một tập hợp con của một câu, nó hoàn toàn có thể đứng như một đơn vị chức năng riêng của chính nó, mang đến cấu trúc cho câu .
Điều này đồng nghĩa tương quan với biểu thức ( expression ) hoặc câu lệnh ( statement ) trong ngôn ngữ lập trình, gồm có cả luồng điều khiển và tinh chỉnh ( control-flow ) .
Như vậy rào cản thứ 3 mà bạn phải khám phá là những câu lệnh hoặc biểu thức hợp lệ
Biểu thức và câu lệnh xác lập luồng để thực thi, gọi là luồng tinh chỉnh và điều khiển ( control-flow ), gồm có ternary-expression, if-else, for, while và do-while … Điều suôn sẻ là khái niệm này giống nhau so với toàn bộ những ngôn ngữ lập trình .

>> Tham khảo thêm: Code “đẹp trai” và code “xấu gái” – có gì hay ho?

4. Cú pháp và ngữ nghĩa

Cú pháp cho biết phương pháp để định nghĩa một câu đúng, được thực thi bằng cách nhìn nhận chuỗi những ký tự hoặc chuỗi những từ .
Chẳng hạn như trong tiếng Anh, bạn có những thứ như dấu chấm câu và viết hoa. Ví dụ, xhfrst không phải là từ hợp lệ nhưng cherish là từ hợp lệ, ‘ we you cherish ‘ không phải là một câu hợp lệ, nhưng ‘ we cherish you ’ thì lại là câu hợp lệ .
Các ngôn ngữ lập trình cũng tương tự như như vậy. Có những thứ làm cho một dòng mã lệnh trở nên không hợp lệ, ví dụ như thiếu dấu chấm phẩy hoặc sử dụng ký tự sai cho định danh .
Rào cản thứ 4 là nhìn nhận một dòng mã lệnh hợp lệ trong ngôn ngữ lập trình ( tức là cú pháp của ngôn ngữ ) .

int myNumber$ = 12; // Java: syntax error - invalid token '$'
var myNumber$ = 12 // JavaScript: valid identifier
my_number = 12; # Python: syntax error - invalid token ';'

Đối với ngữ nghĩa, thì đó là sự tương quan đến ý nghĩa ngữ cảnh của câu hoặc công bố được đề cập đến .
Sau khi nhìn nhận về cú pháp, cần nhìn nhận ý nghĩa trong ngữ cảnh. Chẳng hạn ‘ The tree climbed the boy ’ có một cấu trúc hợp lệ hoặc cú pháp đúng mực, nhưng lại sai về ý nghĩa .
Lập trình cũng vậy, hầu hết những ngôn ngữ đều có những ngữ nghĩa riêng và việc học nó trở thành rào cản thứ tư so với bạn .

// java 
int myNumber = 12;
myNumber = "12"; // error
# python
my_number = 12
my_number = "12" # valid expression

5. Các đặc tả ngôn ngữ giúp bạn giỏi ngôn ngữ lập trình

Các đặc tả ngôn ngữ là những thứ tương quan trực tiếp đến một ngôn ngữ đơn cử .
Chẳng hạn như : danh từ trong tiếng Pháp được chia giới tính. Nhưng điều này lại không có trong tiếng Anh .
Các ngôn ngữ lập trình cũng có những cái riêng gắn liền với nó. Bao gồm những lớp ( Class ), những kiểu tài liệu ( Data Type ) và những cấu trúc tài liệu ( Data Structure ) …
Chẳng hạn trong JavaScript có khái niệm về Prototype ( nguyên mẫu ). Nhưng trong Java thì không. Vì vậy, rào cản thứ năm là bạn phải hiểu và khái niệm hóa những đặc tả về ngôn ngữ .
Vì tương quan đến từng ngôn ngữ đơn cử nên hoàn toàn có thể mất nhiều thời hạn để khái niệm hóa hơn. Đặc biệt nếu là khái niệm trọn vẹn mới như ngôn ngữ F # .

Tạm kết

Việc trừu tượng hóa sẽ giúp bạn thấy được sự giống nhau giữa những biểu lộ khác nhau .
Khi bạn hiểu được và thực thi được 5 quy tắc trên, bạn sẽ thuận tiện học và làm chủ một ngôn ngữ lập trình mới .

Việc lặp lại quá trình này sẽ khá khó khăn trong lần đầu tiên, nhưng đừng nản chí vội.  Bạn cứ lặp lại vài lần thì nó sẽ trở thành bản năng đối với bạn.

Nếu bạn đang muốn học lập trình thì đừng bỏ lỡ những bài viết này nhé .

Qua bài viết này, mình hi vọng sẽ giúp các bạn có nhìn khác về việc học lập trình. Từ đó thay đổi tư duy và cách học để nhanh chóng thành thạo, giỏi ngôn ngữ lập trình mới. Ý kiến của bạn về cách học lập trình như thế nào? Để lại bình luận bên dưới nhé.