Hướng dẫn bắt đầu lập trình - Nền tảng sàn giao dịch tiền mã hóa số

Lời giới thiệu về lập trình

Lời mở đầu

Ngày nay, lập trình đã trở thành một kỹ năng ngày càng quan trọng: Là một nhà thiết kế, hiểu biết chút ít về lập trình có thể giúp bạn hiểu rõ hơn về nội dung công việc của chính mình; Là một người sáng lập khởi nghiệp, vai trò nhà sáng lập công nghệ sẽ khiến nhiều công việc của bạn trở nên dễ dàng hơn. Và với những người mới bắt đầu, khi đối mặt với biển thông tin trước mắt, có thể bạn hoàn toàn không biết bắt đầu từ đâu; sau khi vượt qua giai đoạn học tài liệu sơ cấp một cách dễ dàng, bạn nhận thấy việc học ngày càng khó khăn hơn, đường cong học tập dốc đứng khiến bạn chùn bước; bạn biết cách in ra một số dòng văn bản trên trang, nhưng không biết khi nào nên bắt đầu một dự án thực sự hữu ích; bạn không rõ còn những điều gì bạn chưa biết, thậm chí còn không rõ bước tiếp theo nên học gì.

Nội dung bài viết này không chỉ cung cấp một số lời khuyên định hướng, mà còn bao gồm một hướng dẫn nhập môn lập trình dựa trên nền tảng cốt lõi. Tất nhiên, lộ trình từng bước là không thực tế, và mỗi người đều có đặc điểm riêng, vì vậy hướng dẫn này chủ yếu nhằm kích thích suy nghĩ của độc giả, cuối cùng giúp bạn hình thành lộ trình học phù hợp với bản thân.

Nhưng cần lưu ý: Bài viết này dành cho những người thực sự muốn học lập trình — những người đang ấp ủ quyết tâm, nhất định phải tạo ra thứ gì đó thực sự, không bỏ cuộc cho đến khi thành công; chứ không phải những người chỉ nghe nói lập trình vui vui, theo tôi, những người này mãi mãi không thể bước vào cánh cửa lập trình, càng không thể tạo ra thứ gì đó xứng đáng.

Dù toàn bộ tinh thần của bài viết này theo phong cách “Ý kiến mạnh mẽ, giữ ít”, nhưng độc giả vẫn nên luôn hoài nghi mọi thứ, nghi ngờ độ chính xác của nội dung chúng tôi viết ra. Nếu có bất kỳ thắc mắc nào, hoan nghênh thảo luận công khai.

Điều chỉnh tâm thái

Xác định mục tiêu

Trước khi bắt đầu học lập trình, hãy suy nghĩ về mục tiêu của bạn, khi có mục tiêu cuối cùng, con đường sẽ rõ ràng hơn. Vậy bạn muốn viết gì? Trang web? Trò chơi? Ứng dụng iOS hoặc Android? Hay bạn muốn tự động hóa một số nhiệm vụ nhàm chán để có nhiều thời gian hơn ngắm cảnh ngoài cửa sổ? Có thể bạn chỉ muốn nâng cao khả năng cạnh tranh trong tuyển dụng. Tất cả những mục tiêu này đều có giá trị, chúng là một phần động lực thúc đẩy việc học lập trình của bạn, không có động lực, người ta sẽ không thể đi xa trong hành trình học tập dài hơi có phần nhàm chán này.

Có thể video này sẽ truyền cảm hứng cho bạn: “Hầu hết các trường học đều không dạy thứ này”

Đừng nóng vội

Lập trình dở thì dễ. Ngay cả người mới cũng có thể học trong 21 ngày. Lập trình tốt đòi hỏi suy nghĩ, nhưng ai cũng có thể làm được và ai cũng có thể trải nghiệm cảm giác cực kỳ hài lòng khi làm được.

Dù là sách offline hay online, đầy rẫy các cuốn sách cấp tốc kiểu “Học xong X trong 21 ngày”, chúng đều hứa hẹn giúp bạn học được công nghệ trong thời gian ngắn. Matthias Felleisen trong cuốn “How to Design Programs” đã chỉ rõ xu hướng “học nhanh” này và chế giễu nó.

Không có “con đường tắt” hay “bùa phép” nào tồn tại, các bậc trí giả đã nói, thành thạo một thứ cần 10 năm hoặc 10.000 giờ, chính là câu “mười năm rèn một kiếm” trong tiếng Trung, vì vậy đừng vội vàng, công sức bỏ ra sẽ không uổng phí.

Nuôi dưỡng đam mê

Hầu hết các lập trình viên giỏi làm việc không phải vì họ mong đợi được trả lương hay nhận sự ngưỡng mộ từ công chúng, mà vì lập trình thật sự vui.

– Linus Torvalds

Say mê lập trình, và lập trình còn vì đam mê. Đam mê là nguồn năng lượng bất tận thúc đẩy bạn. Giữ cho cảm giác đam mê luôn tràn đầy để bạn có thể dồn tâm huyết vào 10.000 giờ/10 năm học lập trình của mình. Lập trình thật vui, đó là niềm vui khám phá. Đó là niềm vui sáng tạo. Thấy sản phẩm do chính mình hoàn thành hiển thị trên màn hình thật thú vị. Người khác trầm trồ về mã của bạn thật vui. Người khác khen sản phẩm của bạn nơi công cộng, hàng xóm dùng thử, và truyền thông bàn luận về sản phẩm của bạn thật thú vị. Lập trình nên cực kỳ vui, nếu không, hãy tìm ra nguyên nhân khiến lập trình trở nên nhàm chán rồi khắc phục.

Bắt đầu học

Câu chuyện cảnh tỉnh

Khi mới học trung học cơ sở, tôi đã bắt đầu học lập trình, không may mắn thay, tôi đã đọc qua khá nhiều sách rác như “21 ngày thành thạo C++” thời đó, đọc xong cũng không sao, thậm chí còn viết được vài chương trình nhỏ. Nhưng khi phần mềm gặp lỗi, tôi không biết tại sao, các vấn đề lập trình phức tạp hơn thì không biết bắt đầu từ đâu, những thứ không thể làm trong thư viện hiện có thì đành bó tay. Dù ngày nào tôi cũng code, nhưng khả năng lập trình của tôi phát triển chậm đến mức đó, tôi chỉ hiểu rất hạn chế về “lặp lại” và “đệ quy”, có thể nói là chỉ coi máy tính như một chiếc máy tính để tính toán.

Sau khi vào đại học, tôi học chuyên ngành vật lý, ban đầu tôi cứ học thuộc lòng các công thức vật lý mà không hiểu chúng xuất phát từ đâu, mối liên hệ giữa chúng là gì, hoặc ý nghĩa của chúng. Tôi liên tục học cách tính toán giải các bài toán vật lý phổ biến, nhưng không hiểu “tại sao” đằng sau “làm thế nào”.

Khi tôi thử làm một số trò chơi máy tính dựa trên hành vi vật lý, tôi lại gặp những khó khăn trước đó: không biết bắt đầu từ đâu khi gặp vấn đề mới, nỗi sợ hãi khi đối mặt với vấn đề mới cứ tích tụ, tôi bắt đầu trốn tránh, không thực sự hiểu, mà chỉ nghĩ có thể sao chép dán mã từ Google để giải quyết. May mắn thay, một buổi học vào ngày cuối cấp đã hoàn toàn thay đổi phương pháp học của tôi. Đó là lần đầu tôi cảm nhận được “mắt trời mở ra”, tôi nhận ra rằng tôi chỉ có rất ít hiểu biết thực sự về một số môn học, bao gồm vật lý tôi đang học và khoa học máy tính tôi phụ trách.

Về buổi học đó: Lúc đó chúng tôi vừa học xong điện học và thuyết tương đối, giảng viên viết hai chủ đề này trên bảng đen, rồi vẽ một đường nối chúng lại. “Giả sử chúng ta có một electron di chuyển dọc theo dây dẫn với tốc độ gần bằng tốc độ ánh sáng…”, ban đầu giảng viên chỉ viết các công thức quen thuộc của điện học và thuyết tương đối, nhưng sau nhiều phép tính trên bảng đen, công thức từ trường xuất hiện một cách kỳ diệu. Dù vài năm trước tôi đã biết công thức này, nhưng lúc đó tôi hoàn toàn không biết mối liên hệ tiềm ẩn giữa các hiện tượng này. Sự khác biệt giữa từ trường và điện trường chỉ là “góc nhìn” của quan sát, tôi chợt tỉnh ngộ, từ đó tôi không còn chỉ tập trung vào “làm thế nào” (How) nữa, mà bắt đầu hỏi “tại sao” (why), quay lại học những phần cơ bản nhất, học những kiến thức mà trước đây tôi đáng ra nên học kỹ. Quá trình quay lại này thật đau đớn, hy vọng các bạn có thể tỉnh ngộ, đừng bao giờ làm những việc ngu ngốc như vậy.

Suy nghĩ tỉnh ngộ

Bức tranh này lấy cảm hứng từ tác phẩm của Douglas Hofstadter: “Gödel, Escher, Bach”. Mỗi chữ cái trong đó đều được tạo thành từ các chữ cái nhỏ hơn. Ở cấp cao nhất, chúng ta thấy “MU”, chữ M được tạo thành từ ba khái niệm HOLISM (toàn thể), U thì được tạo thành từ một REductionism (giảm thiểu), mỗi chữ cái của cái trước đều chứa toàn bộ của cái sau, và ngược lại. Ở cấp thấp nhất, bạn sẽ thấy chữ cái nhỏ nhất lại chính là “MU” lặp lại.

Mỗi cấp độ trừu tượng đều chứa đựng thông tin, nếu bạn chỉ đơn thuần áp dụng toàn thể hoặc giảm thiểu một cách ngây thơ, thì chỉ nhận được “MU” (ở một số vùng ngôn ngữ, mu có nghĩa là không có gì). Vấn đề là, làm thế nào để thu thập được nhiều thông tin nhất có thể từ mỗi cấp độ? Hay nói cách khác, làm thế nào để học các lĩnh vực phức tạp (như lập trình) với nhiều kiến thức khác nhau?

Trong quá trình giáo dục và học tập, thường tồn tại một vấn đề then chốt: người mới bắt đầu thường quá chú trọng vào toàn thể mà bỏ qua nền tảng, ví dụ phổ biến là học sinh rất muốn làm robot, nhưng lại không hiểu các mô hình vật lý đằng sau, hoặc liên hệ giữa chúng, hoặc ý nghĩa của chúng. Họ liên tục học cách tính toán giải các bài toán vật lý phổ biến, nhưng không hiểu “tại sao” đằng sau “làm thế nào”.

Và khi tôi cố gắng làm một số trò chơi máy tính dựa trên hành vi vật lý, tôi lại gặp những khó khăn trước đó: không biết bắt đầu từ đâu khi gặp vấn đề mới, nỗi sợ hãi khi đối mặt với vấn đề mới cứ tích tụ, tôi bắt đầu trốn tránh, không thực sự hiểu, mà chỉ nghĩ có thể sao chép dán mã từ Google để giải quyết. May mắn thay, một buổi học vào ngày cuối cấp đã hoàn toàn thay đổi phương pháp học của tôi. Đó là lần đầu tôi cảm nhận được “mắt trời mở ra”, tôi nhận ra rằng tôi chỉ có rất ít hiểu biết thực sự về một số môn học, bao gồm vật lý tôi đang học và khoa học máy tính tôi phụ trách.

Về buổi học đó: Lúc đó chúng tôi vừa học xong điện học và thuyết tương đối, giảng viên viết hai chủ đề này trên bảng đen, rồi vẽ một đường nối chúng lại. “Giả sử chúng ta có một electron di chuyển dọc theo dây dẫn với tốc độ gần bằng tốc độ ánh sáng…”, ban đầu giảng viên chỉ viết các công thức quen thuộc của điện học và thuyết tương đối, nhưng sau nhiều phép tính trên bảng đen, công thức từ trường xuất hiện một cách kỳ diệu. Dù vài năm trước tôi đã biết công thức này, nhưng lúc đó tôi hoàn toàn không biết mối liên hệ tiềm ẩn giữa các hiện tượng này. Sự khác biệt giữa từ trường và điện trường chỉ là “góc nhìn” của quan sát, tôi chợt tỉnh ngộ, từ đó tôi không còn chỉ tập trung vào “làm thế nào” (How) nữa, mà bắt đầu hỏi “tại sao” (why), quay lại học những phần cơ bản nhất, học những kiến thức mà trước đây tôi đáng ra nên học kỹ. Quá trình quay lại này thật đau đớn, hy vọng các bạn có thể tỉnh ngộ, đừng bao giờ làm những việc ngu ngốc như vậy.

Về cảnh tỉnh sau đó

Bức tranh này lấy cảm hứng từ tác phẩm của Douglas Hofstadter: “Gödel, Escher, Bach”. Mỗi chữ cái trong đó đều được tạo thành từ các chữ cái nhỏ hơn. Ở cấp cao nhất, chúng ta thấy “MU”, chữ M được tạo thành từ ba khái niệm HOLISM (toàn thể), U thì được tạo thành từ một REductionism (giảm thiểu), mỗi chữ cái của cái trước đều chứa toàn bộ của cái sau, và ngược lại. Ở cấp thấp nhất, bạn sẽ thấy chữ cái nhỏ nhất lại chính là “MU” lặp lại.

Mỗi cấp độ trừu tượng đều chứa đựng thông tin, nếu bạn chỉ đơn thuần áp dụng toàn thể hoặc giảm thiểu một cách ngây thơ, thì chỉ nhận được “MU” (ở một số vùng ngôn ngữ, mu có nghĩa là không có gì). Vấn đề là, làm thế nào để thu thập được nhiều thông tin nhất có thể từ mỗi cấp độ? Hay nói cách khác, làm thế nào để học các lĩnh vực phức tạp (như lập trình) với nhiều kiến thức khác nhau?

Trong quá trình giáo dục và học tập, thường tồn tại một vấn đề then chốt: người mới bắt đầu thường quá chú trọng vào toàn thể mà bỏ qua nền tảng, ví dụ phổ biến là học sinh rất muốn làm robot, nhưng lại không hiểu các mô hình vật lý đằng sau, hoặc liên hệ giữa chúng, hoặc ý nghĩa của chúng. Họ liên tục học cách tính toán giải các bài toán vật lý phổ biến, nhưng không hiểu “tại sao” đằng sau “làm thế nào”.

Và khi tôi cố gắng làm một số trò chơi máy tính dựa trên hành vi vật lý, tôi lại gặp những khó khăn trước đó: không biết bắt đầu từ đâu khi gặp vấn đề mới, nỗi sợ hãi khi đối mặt với vấn đề mới cứ tích tụ, tôi bắt đầu trốn tránh, không thực sự hiểu, mà chỉ nghĩ có thể sao chép dán mã từ Google để giải quyết. May mắn thay, một buổi học vào ngày cuối cấp đã hoàn toàn thay đổi phương pháp học của tôi. Đó là lần đầu tôi cảm nhận được “mắt trời mở ra”, tôi nhận ra rằng tôi chỉ có rất ít hiểu biết thực sự về một số môn học, bao gồm vật lý tôi đang học và khoa học máy tính tôi phụ trách.

Về buổi học đó: Lúc đó chúng tôi vừa học xong điện học và thuyết tương đối, giảng viên viết hai chủ đề này trên bảng đen, rồi vẽ một đường nối chúng lại. “Giả sử chúng ta có một electron di chuyển dọc theo dây dẫn với tốc độ gần bằng tốc độ ánh sáng…”, ban đầu giảng viên chỉ viết các công thức quen thuộc của điện học và thuyết tương đối, nhưng sau nhiều phép tính trên bảng đen, công thức từ trường xuất hiện một cách kỳ diệu. Dù vài năm trước tôi đã biết công thức này, nhưng lúc đó tôi hoàn toàn không biết mối liên hệ tiềm ẩn giữa các hiện tượng này. Sự khác biệt giữa từ trường và điện trường chỉ là “góc nhìn” của quan sát, tôi chợt tỉnh ngộ, từ đó tôi không còn chỉ tập trung vào “làm thế nào” (How) nữa, mà bắt đầu hỏi “tại sao” (why), quay lại học những phần cơ bản nhất, học những kiến thức mà trước đây tôi đáng ra nên học kỹ. Quá trình quay lại này thật đau đớn, hy vọng các bạn có thể tỉnh ngộ, đừng bao giờ làm những việc ngu ngốc như vậy.


Hy vọng bản dịch này giúp bạn có cái nhìn rõ ràng và đầy đủ về nội dung gốc!

Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Đăng lại
  • Retweed
Bình luận
0/400
Không có bình luận
  • Ghim