Bí Quyết Học Giỏi Lập Trình / 2023 / Top 14 # Xem Nhiều Nhất & Mới Nhất 12/2022 # Top View | Globaltraining.edu.vn

Làm Thế Nào Để Học Giỏi Lập Trình / 2023

Học kỹ và nắm rõ các điều căn bản trước trước tiên để học lập trình tốt thì bạn cần học kỹ và nắm vững những điều căn bản trước. nền tảng gốc rễ trước tiên khi mới học code mà bạn phải biết như hàm, biến, vòng lặp, mảng. bạn cần phải hiểu cách thức biến, phương thức tách hàm, mảng tàng trữ giá trị thì mới vận dụng được chúng để giải quyết vấn đề. khi bạn học sâu thì sau một thời gian bạn sẽ biết được có những thuật toán, cấu trúc dữ liệu ngoài mảng, những ưu và điểm yếu kém riêng.

Làm bài tập về thuật toán Lý thuyết thường chỉ là lý thuyết. Để nắm rõ những kỹ năng và kiến thức về thuật toán, lập trình thì bạn phải chăm chỉ làm bài tập về thuật toán nhằm mục tiêu áp dụng chúng. khi chúng ta giả được những bài tập này thì các bạn sẽ học được cách thức để vận dụng các cấu trúc tài liệu thực tế và cách thức viết code để chúng chạy thế nào.

Làm sản phẩm để có tư duy về dòng sản phẩm khi chúng ta giải những bài tập lập trình thì bạn sẽ rèn giũa được phương thức tư duy và cách giải quyết và xử lý những vấn đề nhỏ. dẫu thế khi làm việc các bạn sẽ gặp những luận điểm phức hợp hơn bởi vậy sẽ cần tư duy dòng sản phẩm. Tư duy đó sẽ giúp bạn bạn phát hiện được sản phẩm cần có các tính năng gì. chính vì thế, bạn phải làm dòng sản phẩm nhằm trau dồi khả năng về dòng sản phẩm. bạn sẽ quá bất ngờ về các năng lực mà chính mình học được.

Học rộng và học các thứ mà mình chưa biết một trong các các phương pháp một cách hiệu quả khiến cho bạn rèn luyện tư duy lập trình đấy là bạn cần học hỏi và giao lưu người khác về tư duy, học các thứ khác với những thứ chính bản thân mình dùng nhằm học cách tư duy.

nếu như lúc trước đến giờ bạn chỉ thao tác làm việc với ngôn ngữ static typing như C# hoặc Java mà bạn cần phải khai báo nhiều thứ như class, method căng thẳng mệt mỏi thì bạn hãy thử một lần những ngôn ngữ dymanic typing như JavaScript sida hay là Python để biết code rất có thể viết được ngắn gọn như thế nào.

hay như từ trước đến này bạn code thường dùng OPP tạo hàm và class, thừa kế thì bạn hãy một lần thử dùng Haskell hoặc JavaScript và code theo một phong cách khác theo dõi ra sao. không chỉ có gói gọn trong ngôn từ, khi bạn làm backend thì chúng ta có thể học thử front-end. khi bạn học một thứ gì đó mới hơn thì bạn sẽ có một cái nhìn tổng quát hơn và rộng hơn về ngành của mình cùng theo đó nó cũng giúp bạn mở mang đầu óc và sâu sát được năng lực chuyên môn tư duy.

Phương Pháp Học Giỏi Môn Lập Trình Pascal Dành Cho Học Sinh Phổ Thông / 2023

Vì sao môn Pascal lại khó

Theo thói quen của nhiều em học sinh, học môn tin là học những thao tác sử dụng như cách sử dụng internet, sử dụng hệ điều hành window, chương trình soạn thảo văn bản MS Word, chương trình soạn thảo trình diễn MS PowerPoint … Đây là những phần học không cần đòi hỏi tư duy, mà chỉ cần học kĩ và nhớ thao tác, thực hành nhiều lần thì sẽ thành thạo.

Nhưng khi học bộ môn lập trình Passal chương trình lớp 8 ở THCS và lớp 11 THPT thì hầu như các em bị “choáng” vì bộ môn rất “mới”, và cách học cũng “mới”. Học những thao tác và thực hành nhiều không còn tác dụng, học thuộc bài cũng không còn ổn nữa. Lúc này các em cần phải học cách tư duy logic, tìm thuật toán, và viết những dòng lệnh máy tính chính xác đến từng đấu chấm, dấu phẩy.

Với tâm lí thông thường các em học sinh coi tin học là môn phụ không quan trọng nên nhiều em chủ quan không dành đủ thời gian để học nên không hiểu bài và dần bị mất căn bản. Đây cũng là lí do mà nhiều em bị điểm kém, thậm chí là thi lại, học lại bộ môn tin học mặc dù có thể các em học rất giỏi các môn học khác.

Tại sao lại học Pascal

Pascal là một ngôn ngữ lập trình cấp cao do Niklaus Wirth, giáo sư điện toán trường đại học Kỹ thuật Zurich ( Thụy sĩ) thiết kế và công bố vào năm 1971 và đặt tên là Pascal để tưởng niệm nhà Toán học và Triết học nổi tiếng Blaise Pascal. Đây là một ngôn ngữ lập trình có cấu trúc đơn giản, rõ ràng, cấu trúc chặt chẽ, dễ viết, dễ hiểu cũng như dễ sửa chữa, cải tiến. Do đó Pascal được nhiều quốc gia trong đó có Việt Nam đưa vào chương trình giảng dạy tin học ở các trường phổ thông và đại học như một môn học cơ sở, đại cương.

Ở trường phổ thông chúng ta không chú trọng học chuyên sâu về ngôn ngữ lập trình để tạo ra các phần mềm máy tính mà tập trung rèn luyện kĩ năng tư duy logic, tư duy hệ thống và sáng tạo không chỉ để giải quyết những vấn đề trong tin học mà đây còn là những kĩ năng vô cùng quan trọng để giải quyết nhiều vấn đề trong cuộc sống.

Học Pascal giúp cho ta hiểu được cách làm việc của máy tính, cách giao tiếp để ra lệnh cho máy tính làm việc theo sự điều khiển của con người thông qua ngôn ngữ lập trình. Các em có thể tạo ra các chương trình thú vị bằng cách sử dụng các câu lệnh Pascal. Cũng giống như những môn học khác như toán học, vật lý, hóa học … khi các em đã thực sự hiểu và yêu thích bộ môn tin học các em sẽ tìm thấy nhiều niềm vui, sự đam mê khi tìm hiểu và khám phá những điều mới mẻ nhưng đầy hấp dẫn trong bộ môn tưởng chừng như khô khan này.

Đừng sợ cú pháp các câu lệnh

Một số cú pháp và cấu trúc cần học và nhớ, nếu cần thêm có thể tham khảo ở các tài liệu, nhưng chỉ cần chừng này từ khóa thôi là đủ để viết hầu hết các bài tập pascal rồi.

Một số hàm thường dùng:

ClrScr: lệnh xóa màn hình;

Write, Writeln: ghi ra màn hình

Read, readln: đọc giá trị vào biến

Các phép toán thường dùng:

Phép cộng (+); Phép trừ (-); Phép nhân (*); phép chia (/);

Phép chia lấy phần nguyên (div); phép chia lấy phần dư(mod); Phép gán (:=),

Một số kiểu dữ liệu thường dùng: Interger, real, string, char, array, Boolean …

Các câu lệnh sử dụng thường xuyên

+ Lệnh ghép : BEGIN .. END

+ Lệnh chọn : IF .. THEN .. ELSE

CASE .. OF .

+ Lệnh lặp : FOR .. TO .. DO

REPEAT .. UNTIL

WHILE .. DO

Chúng ta thấy rằng cũng không có quá nhiều cấu trúc và cú pháp cần phải nhớ đúng không nào.

Gặp những lỗi về cú pháp thì rất dễ sửa, chương trình biên dịch Pascal sẽ báo cho ta chính xác lỗi gì? ở đâu? khi chúng ta chạy chương trình. Cho nên các em không nên tập trung nhiều vào cú pháp ngôn ngữ lập trình mà tập trung nhiều vào tìm thuật toán, tức là tìm tuần tự các bước để giải bài toán. Vì khi chúng ta đã tìm ra được thuật toán rồi thì việc chuyển nó thành chương trình máy tính sẽ không còn gì khó khăn nữa.

TẠO SỰ YÊU THÍCH KHI HỌC NGÔN NGỮ LẬP TRÌNH PASCAL

Lập trình là môn học hướng dẫn học sinh cách giải các bài toán bằng cách viết chương trình trên máy tính. Đây là môn học mới đối với học sinh nên phần đông các em không nắm bắt được kiến thức để vận dụng vào giải bài tập.

Về chương trình dạy lập trình Pascal ở trường phổ thông Ngôn ngữ lập trình đang giảng dạy trong các nhà trường phổ thông như Pascal đang gây khó khăn cho các học sinh mới bắt đầu tìm hiểu học lập trình. Pascal được chọn sử dụng để dạy ngôn ngữ lập trình cho học sinh phổ thông vì 30 năm trước nó không có đối thủ về mặt diễn tả thuật toán một cách trong sáng. Tuy nhiên, hơn 10 năm nay, Pascal mất ưu thế về mọi mặt và có một số nhược điểm so với một số ngôn ngữ khác như:

– Giao diện chương trình không thân thiện, dễ gây sự nhàm chán cho học sinh.

– Về mặt cú pháp nó chỉ dễ đọc đối với những học sinh các nước nói tiếng Anh. – Không có tính thực tiễn, nên không gây hứng thú cho học sinh, tạo sự yêu thích và kỹ năng lập trình cho học sinh .

Về chương trình Pascal hiện tại của học sinh lớp 11:

– Áp dụng công thức toán học quá nhiều. Học sinh phải có kiến thức tốt về toán học thì mới giải được các bài tập trong sách giáo khoa.

– Học sinh chưa hiểu được lập trình để làm gì ngoài việc tính toán với các con số.

– Học sinh sẽ tự hỏi lập trình Pascal có ứng dụng như thế nào trong thực tế. Học sinh sẽ rất khó hình dung được các ứng dụng mà lập trình có thể làm được trong thực tế nếu chỉ căn cứ vào lý thuyết thuần túy do giáo viên truyền đạt.

– Học sinh khó kiểm tra bài làm của mình sau khi lập trình là đúng hay là sai. Có thể trên lý thuyết là đúng nhưng thực tế có thể sẽ có những trường hợp thiếu chính xác, thường sẽ có một khoảng sai số nhất định nào đó.

Qua một thời gian giảng dạy ở trường, tôi nhận thấy khi học Pascal học sinh thường không thích thú với môn học này vì nhiều lý do như khó hiểu, tiếp thu chậm, đòi hỏi tư duy nhiều, … nên việc viết được một chương trình chạy được trên máy tính đối với các em rất khó khăn. Do đó để học tốt đòi hỏi học sinh phải có hứng thú. Cốt lõi của việc đổi mới phương pháp dạy học là giúp học sinh yêu thích, hứng thú với môn học, hướng tới việc học tập chủ động, chống lại thói quen học tập thụ động. Để khắc phục điều này thì chúng ta phải khắc phục được các trường hợp sau:

* Trường hợp 1: Học sinh chúng ta vừa đọc xong đề bài là kêu khó, không chịu tìm hiểu xem đề bài yêu cầu gì. Những vấn đề này các em đã được học việc xác định bài toán ở lớp 10 rồi. Sau khi đọc đề bài xong giáo viên hướng dẫn các em xác định rõ bài toán (xác định thành phần Input và Output của bài toán). Từ Inphut và Output của bài toán giáo viên yêu cầu HS gạch ra giấy chỉ ra từng bước để giải quyết bài toán rồi từ đó đưa ra các thuật toán, từng bước tinh chỉnh thuật toán tìm được thuật toán đúng đắn nhất cuối cùng là viết chương trình hoàn chỉnh.

VD: Khi yêu cầu HS viết chương trình tính và in ra diện tích và chu vi của hình chữ nhật có cạnh a,b là 2 số nguyên dương được nhập từ bàn phím. Đây là một bài tập dễ nhưng có nhiều HS vẫn không biết bắt đầu giải bài tập từ đâu.

– Để giải bài này GV yêu cầu HS xác định input và output của bài toán.

Input: 2 số nguyên dương a,b

Output: Diện tích và chu vi của hình chữ nhật

– GV yêu cấu HS gạch ra các công việc cần làm để giải quyết bài tập này ?

Các công việc cần làm để giải quyết bài tập này :

+ Nhập a,b

+ Tính diện tích hình chữ nhật

+ Tính chu vi hình chữ nhật

+ In ra diện tích hình chữ nhật

+ In ra chu vi hình chữ nhật

– Gv gợi ý yêu vầu HS nêu công thức tính diện tích và chu vi hình chữ nhật?

Diện tích S = a*b

Chu vi Cv = (a+b)*2

– Với những phân tích có được ở trên GV yêu cầu hãy sữ dụng những câu lệnh của NNLT Pascal để giải quyết các công việc đặt ra của bài tập và sau đó là hoàn thành chương trình.

* Trường hợp 2: Hầu như các em học sinh khi thực hành lập trình đều đùn đẩy cho nhau vì sợ mình sẽ không biết gõ gì vào máy tính. Khuyến khích các em cứ mạnh dạn, một lần sai, hai lần sai,… rồi từ từ các em sẽ gõ đúng câu lệnh. Lúc đầu giám sát quá trình làm việc của các em, sửa các lỗi sai, về sau để các em tự làm việc chỉ sửa lỗi khi các em gặp khó khăn thực sự, không giải quyết được bắt buộc cần có hướng dẫn của giáo viên. Khi các em tự gõ chương trình các em mới thực sự hiểu chương trình đó hoạt động thế nào chứ không thể nhìn mà hiểu được.

– Trường hợp 4: Học sinh thường rất lười không chịu học bài. Các em phải học bài thì mới làm bài được, đó là lẽ đương nhiên. Tất cả các bài lý thuyết chính là cái mà chúng ta cần để thực hành, vì vậy phải nắm thật tốt lý thuyết ví dụ như các thủ tục read hay readln, write hay writeln dùng để làm gì? tại sao phải sử dụng các thủ tục đó, không có nó có được không,…, cấu trúc rẽ nhánh thì có mấy dạng, khi nào dùng dạng thiếu, khi nào dùng dạng đủ, khi nào dùng cấu trúc lặp với số lần chưa biết trước, khi nào dùng cấu trúc lặp với số lần biết trước… Thực ra để học tốt lập trình thông qua ngôn ngữ lập trình Pascal không phải là quá khó vì pascal là ngôn ngữ học đường thông dụng nhất, nó rất gần với tư duy tự nhiên vì vậy chỉ cần các em chịu khó học lý thuyết sau đó làm bài tập là có thể đạt được điểm cao. Ngoài các nguyên nhân khách quan, quan trọng nhất vẫn là nguyên nhân chủ quan từ phía học sinh đó là khó tạo sự yêu thích, đam mê từ môn học này mà không đam mê thì rất khó học Pascal một cách tốt nhất, dễ dẫn đến tình trạng học cho qua ngày, học đối phó.

Để có thể giúp tạo sự yêu thích bộ môn, từ đó học sinh sẽ học hiệu quả hơn môn lập trình Pascal: phương pháp truyền đạt, hệ thống bài tập, hình thành kỹ năng lập trình.

Hệ thống bài tập: Vấn đề quan trọng và quyết định đến việc tạo hứng thú cho học sinh là hệ thống bài tập. Hệ thống bài tập cần gần gũi, phù hợp kiến thức, nội dung phong phú đa dạng, ngôn từ tạo sự yêu thích và kỹ năng lập trình cho học sinh dễ hiểu,… Bài tập hay sẽ giúp các em hiểu rõ bài học hơn, biết áp dụng các kiến thức đã học để giải bài tập, từ đó nâng dần mức độ tư duy ở học sinh. Hệ thống bài tập bao gồm các dạng bài tập từ dễ đến khó, từ cơ bản đến nâng cao phù hợp với từng đối tượng học sinh. Với tất cả các bài tập, hướng dẫn các em đọc thật kĩ đề bài, xác định đúng bài toán, tìm thuật toán,sau đó giáo viên có thể phân tích, trình bày thêm, sửa những thiếu sót, hướng dẫn một cách tường minh, mạch lạc, để từ đó học sinh hiểu, hình thành các bước giải và hoàn thành bài toán trong thời gian nhanh nhất. Cho các em tự viết chương trình theo thuật toán đã đưa ra, sau khi viết chương trình xong cho các em thử với nhiều bộ test khác nhau, như vậy các em sẽ hiểu rõ hoạt động của chương trình hơn. Ngoài ra, còn một ý nữa đó là mỗi khi dịch chương trình mà còn có lỗi đừng hỏi thầy, cô ngay mà hãy tự tìm hiểu xem đó là lỗi gì và thử khắc phục, sau một vài lần như vậy các em sẽ không thấy sợ các dòng đỏ báo lỗi nữa.

Hình thành kỹ năng lập trình: Điều cốt yếu khiến một con người trở thành chuyên gia trong lĩnh vực này chính là lòng đam mê. Lòng đam mê khiến chúng ta luôn tìm tòi học hỏi, vì vậy mà chúng ta mới có được kiến thức sâu về lập trình và trở thành chuyên gia lập trình. Lòng đam mê cũng sẽ giúp chúng ta khám phá ra được cách sử dụng thành thạo máy tính. Học lập trình thì điều cốt yếu là học: – Lập thuật toán để giải quyết vấn đề (nhập dữ liệu; xử lý dữ liệu; Kết xuất dữ liệu – kết quả, Lưu trữ dữ liệu). – Sử dụng ngôn ngữ lập trình để viết lệnh cho máy tính thực thi. – Kiểm tra kết quả. Bởi vậy ngoài thời gian học trên lớp, nghe giảng lý thuyết về thuật toán, kỹ thuật lập trình… thì để hình thành kỹ năng lập trình học sinh phải tự học và rèn luyện là chính. Những lúc không có máy tính thì có thể học lập trình trên giấy. Giáo viên cần hướng dẫn các em cách lập trình trên giấy và chạy thử chương trình trên giấy bằng tay. Bước đầu cho học sinh lập thuật toán trên giấy, sau đó viết chương trình trên giấy, tự mình hoặc nhờ giáo viên thực thi tập lệnh đã viết ra để kiểm tra kết quả. Cách học này tuy vất vả tốn nhiều công sức nhưng cũng rèn luyện cho các em cách tư duy giải quyết vấn đề kỹ càng, trọn vẹn trong các mối tương quan, rèn luyện được tính cẩn trọng, tỉ mỉ, nếu làm được việc này thì chương trình sẽ chính xác, rất ít khi bị lỗi khi chạy thật trên máy và áp dụng vào thực tiễn. Ngày nay máy tính đã rất phổ biến nên người học lập trình có thể sử dụng luôn máy tính để viết, dịch, debug và chạy thử chương trình trên máy vi tính sẽ thuận tiện hơn

Làm Thế Nào Để Học Giỏi Ngôn Ngữ Lập Trình, Thành Thạo Nhanh? / 2023

Có nhiều người hỏi mình rằng “Làm thế nào để bạn biết tất cả các ngôn ngữ lập trình?”

Trong quá trình học tập và làm việc, mình đã tìm ra một mô hình để học các ngôn ngữ. Mô hình này sẽ xuyên suốt từ khi bắt đầ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 vấn đề.

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 việc học tập giỏi ngôn ngữ lập trình.

“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 các khái niệm tổng quan của ngôn ngữ lập trình và làm thế nào để học giỏi ngôn ngữ lập trình. Còn chi tiết hơn về kỹ thuật của từng ngôn ngữ, mình sẽ đề cập ở bài viết sau.

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.

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ì đã cố gắng và không bỏ cuộc vào thời điểm đó.

Mình đã mất khoả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”.

Tác giả xây dựng sơ đồ chi tiết để giải thích về đối tượng, về nguyên lý lập trình hướng đối tượ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ử để giải thích về tính thừa kế (inherited class).

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

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ương tự như vậy được sử dụng để triển khai các stack-frame khi thực thi chương trình. Và tất nhiên back-stack trong Android cũng tương tự.

Ý 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 chi tiết về cách thực hiện.

Sau khi khái niệm hóa các thứ trong suy nghĩ, điều tiếp theo bạn làm là áp 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 các ngôn ngữ.

Đầu tiên, chúng ta chia ngôn ngữ thành các thành phần cơ bản nhỏ hơn. Thành phần đầu tiên là câu (sentence). “Câu” được khái niệm hóa là khối xây dựng của tất cả các ngôn ngữ, cả ngôn ngữ nói/viết và ngôn ngữ lập trình.

Nếu bạ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 áp dụng cho các ngôn ngữ lập trình. Nếu bạn có thể xâu chuỗi vài dòng mã lệnh với nhau để giải quyết một bài toán nào đó, thì bạn được coi là thông thạo, giỏi ngôn ngữ lập trình đó(đây là chỉ quan điểm của cá nhân mình thôi)

#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 các thành phần như:

Danh từ (Noun) / Đại từ (Pronoun): Có thể là chủ thể hoặc đối tượng của câu.

Động từ (Verb) – đóng vai trò là hành động đang được thực hiện.

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).

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).

Đặ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ường nhưng nếu hiểu kĩ và áp dụng nó vào ngôn ngữ lập trình thì bạn sẽ thấy có nhiều nét tương đồng.

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

Các danh từ và đại từ được sử dụng trong tiếng Anh để xác định các thực thể (chủ ngữ/đối tượng) của một câu.

Ngôn ngữ lập trình cũng mô tả các đối tượng tương tự như vậy. Trong các khối mã lệnh 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 đầu tiên là xem cách định nghĩa các đị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; let myNumber = 12 my_number = 12 # python

2. Các động từ

Trong một câu, động từ dùng để chỉ hành động. Có thể hành động đó đã được thực hiện hoặc chưa được thực hiện.

Với ngôn ngữ lập trình, chúng ta cũng định nghĩa hàm hay phương thức tương tự 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 tìm hiểu cách định nghĩa các hàm bằng ngôn ngữ lập trình.

public void addNumbers() { } function addNumbers() { chúng tôi 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ó có thể đứng như một đơn vị riêng của chính nó, mang đến cấu trúc cho câu.

Điều này đồng nghĩa với biểu thức (expression) hoặc câu lệnh (statement) trong ngôn ngữ lập trình, bao gồm cả luồng điều khiển (control-flow).

Như vậy rào cản thứ 3 mà bạn phải tìm hiểu là các câu lệnh hoặc biểu thức hợp lệ trong ngôn ngữ lập trình.

Biểu thức và câu lệnh xác định luồng để thực hiện, gọi là luồng điều khiển (control-flow), bao gồm ternary-expression, if-else, for, while và do-while… Điều may mắn là khái niệm này giống nhau đối với tất cả các ngôn ngữ lập trình.

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

Cú pháp cho biết cách thức để định nghĩa một câu đúng, được thực hiện bằng cách đánh giá chuỗi các ký tự hoặc chuỗi các từ.

Chẳng hạn như trong tiếng Anh, bạn có các thứ như dấu chấm câu và viết hoa. Ví dụ, xhfrstkhô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ư 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 giá 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; var myNumber$ = 12 my_number = 12; # Python: syntax error - invalid token ';'

Sau khi đánh giá về cú pháp, cần đánh giá ý 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 chính xác, nhưng lại sai về ý nghĩa.

Ngôn ngữ lập trình cũng vậy, hầu hết các ngôn ngữ đều có các ngữ nghĩa riêng và việc học nó trở thành rào cản thứ tư đối với bạn.

int myNumber = 12; myNumber = "12"; # 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

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 các lớp (Class), các kiểu dữ liệu (Data Type) và các cấu trúc dữ 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ữ.

Việc trừu tượng hóa sẽ giúp bạn thấy được sự giống nhau giữa các implementations khác nhau.

Khi vượt qua 5 rào cản này, bạn sẽ dễ dàng học và thành thạo bất kì ngôn ngữ lập trình mới nào.

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.

Làm Sao Để Trở Thành Một Lập Trình Viên Giỏi? / 2023

“Để phát triển tại công ty product, một developer giỏi không nhất thiết phải biết nhiều ngôn ngữ… Kiến thức nền tảng và niềm đam mê mới là cái cốt lõi để bạn tiến xa hơn trong công việc.”

Cùng đọc bài phỏng vấn của ITviec với anh Nguyễn Xuân Huy – Tech Architect của Cybozu Vietnam – để nghe anh chia sẻ về:

Kinh nghiệm để trở thành lập trình viên giỏi cho công ty product

Thử thách và khó khăn cùng những bài học mà anh học được trên con đường phát triển sự nghiệp của mình

Xem việc làm Developer chất trên ITviec

Tiểu sử: Sau khi tốt nghiệp trường NIIT năm 2005, anh Huy làm việc cho Cybozu đến nay (thời điểm viết bài phỏng vấn này là tháng 6 năm 2015).

Cybozu là một công ty IT của Nhật Bản làm về 1) phần mềm groupware gọi là Cybozu Office chạy trên nền tảng web, 2) Cybozu Garoon, 3) kintone (chữ “k” viết thường), và một số sản phẩm khác.

Việc làm Developer tại TPHCMViệc làm Developer tại Hà Nội

Anh có thể chia sẻ quá trình làm việc và phát triển tại Cybozu được không?

Tất nhiên. Anh bắt đầu với vị trí developer. Khoảng 4-5 năm đầu tiên, anh làm các dự án PHP. 5 năm trở lại đây, anh chuyển sang làm SharePoint.

1-2 năm đầu, do không biết gì về sản phẩm, anh phải học nhiều từ trainer của anh, đặc biệt là việc: ở vị trí junior developer, anh cần hoàn thành tốt công việc của mình trước, rồi mới tính đến những công việc khác. Và một trong những công việc khác mà anh nên làm trong thời gian rảnh, chính là RESEARCH.

Có nhiều thứ cần research. Là junior developer cho một công ty product, anh nhận ra rằng hiểu biết cặn kẽ về sản phẩm của công ty giúp anh thăng tiến rất nhanh, vì vậy anh dành nhiều thời gian research sản phẩm của công ty, đặc biệt là sản phẩm anh đang đảm nhiệm.

Cái cần research thứ hai chính là các vấn đề kỹ thuật. Khi vừa vào công ty, anh làm về PHP, vì vậy anh research công nghệ PHP. Anh hướng mình đến là một Full-stack Developer cho công ty Product, vì vậy không chỉ research về Programming, anh còn tìm hiểu thêm về modeling, cách vận hành hệ thống, UI/UX.

Là một developer của công ty product, bạn không nên chỉ biết lập trình, mà phải xây dựng được sản phẩm trên các môi trường khác nhau. Ban đầu, anh không rành về các hệ điều hành dành cho môi trường server, ví dụ như môi trường Linux, Windows Server, nên dành thời gian tìm hiểu về cách vận hành các hệ điều hành này.

Trong thời gian rảnh, ngoài việc research, anh còn làm gì nữa để phát triển bản thân?

Ở Cybozu có một hoạt động mà anh rất thích, chính là Research & Development (R&D). Nghĩa là mình tự nghĩ ra những ý tưởng hay tính năng mới cho sản phẩm rồi làm prototype, tức là sản phẩm mẫu, để 1) tự học hỏi, 2) áp dụng những kiến thức mình research.

Nếu ở công ty product mà các bạn đang làm không có hoạt động này thì anh khuyên các bạn cũng nên rủ một vài đồng nghiệp và tự mình thực hành điều này vào thời gian rảnh của các bạn. Tuy nó không phải là một project chính thức để release, nhưng lại là một project hữu ích để mình tự phát triển trong nội bộ.

Theo anh, ngôn ngữ lập trình có phải là yếu tố quan trọng nhất để phát triển sự nghiệp của một developer trong công ty product?

Ngôn ngữ lập trình không phải là yếu tố quan trọng nhất. Ngôn ngữ lập trình chỉ là công cụ mình phát triển sản phẩm. Cái quan trọng là tư duy để xây dựng sản phẩm.

Muốn xây dựng sản phẩm, ngoài lập trình, mình cần phải có kiến thức UI/UX để xây dựng giao diện giúp người dùng sử dụng thoải mái, dễ chịu; phải có kiến thức hệ điều hành để deploy sản phẩm. Mình cũng phải là người biết cài đặt và vận hành các môi trường ảo hóa như VMWare, VirtualBox v.v…

Trong quá trình phát triển, anh từng học được bài học nào tâm đắc nhất?

Làm lập trình viên, công việc chính là viết code. Khi mới bắt đầu, anh cũng hơi tùy tiện, viết theo đủ kiểu A, B, C. Có khi xem code cũ rồi viết lại, anh cũng không biết là nó tốt hay không. Trong quá trình làm, anh dần nhận ra cách viết code của mình không thống nhất và không hiệu quả nên anh tìm hiểu cách viết tốt hơn. Đây cũng chính là điều anh tâm đắc nhất trong cả sự nghiệp của mình.

1) Readability – phải dễ đọc, dễ hiểu

2) Mantainability – những người viết code tiếp theo của anh phải dễ dàng chỉnh sửa code anh đang viết

3) Security – phải đảm bảo không gây ra lỗ hổng về bảo mật ( vulnerability)

4) Performance – phải đạt hiệu suất tốt

Việc làm Senior Developer tại TPHCMViệc làm Senior Developer tại Hà Nội

Công việc hàng ngày của anh là gì ạ?

Ngoài việc là developer chính cho dự án SharePoint mà anh chia sẻ ở trên, hàng ngày anh còn review code cho các bạn. Anh không review code ở mức chi tiết, mà chủ yếu là xem code có đáp ứng đủ 4 coding standard mà anh chia sẻ ở trên chưa.

Tùy thời điểm khác nhau, anh sẽ có những công việc khác nhau. Thỉnh thoảng, anh training cho các bạn về sản phẩm hoặc về các công nghệ mới, hay mà anh nghiên cứu được. Gần đây nhất, anh training về kiến thức lập trình cho QA, để họ ứng dụng trong việc thực hiện automation test cho sản phẩm. Thỉnh thoảng, anh tham gia vào quá trình tuyển dụng lập trình viên mới cho công ty.

Anh từng tham gia vào quy trình tuyển dụng lập trình viên, vậy tiêu chí tìm người mới cho một công ty product là gì?

Kiến thức nền tảng là cái cốt lõi để một developer nói chung tiến xa hơn trong công việc.

Một thử thách mà mọi Tech Architect đều phải trải qua khi đã vào nghề là gì vậy anh?

Theo anh, đó là việc đưa ra quyết định chọn giải pháp phù hợp. Một vấn đề có nhiều giải pháp, và một giải pháp có thể là hay nhất nhưng chưa chắc là phù hợp để giải quyết vấn đề nhất.

Ví dụ anh phát hiện team A viết code chưa tốt, cài đặt hệ thống chưa tốt. Giải pháp tốt nhất là viết lại tất cả và cài đặt lại toàn bộ hệ thống để quá trình bảo trì và nâng cấp sau này được dễ dàng hơn. Tuy nhiên, việc này sẽ tốn nhiều thời gian, không phù hợp với hoàn cảnh là cần giao hàng cho khách hàng đúng hạn. Anh đã đưa ra phương án khác, sửa lại cách viết code một chút và chỉnh lại việc cài đặt hệ thống. Tuy phương án này không hoàn thiện bằng phương án kia, nhưng lại phù hợp với tình huống lúc bấy giờ.

Việc làm Software Architect tại TPHCMViệc làm Software Architect tại Hà Nội

Anh thường ra quyết định một mình hay còn tham khảo ý kiến của người khác?

Anh không bao giờ quyết định chủ quan. Khi gặp vấn đề, anh luôn có ý kiến của mình và nói chuyện với mọi người để tham khảo ý kiến của họ, mục đích là luôn luôn cùng nhau tìm ra những vấn đề đang tồn tại và tìm cách cải thiện tốt hơn.

Lấy ví dụ project của một sản phẩm mà anh đang phụ trách phát triển. Trong lần nâng cấp sản phẩm từ version 1.x lên version 2.0.0, anh đã quyết định redesign lại một số phần trong source code và UI.

Ví dụ, trong source code của version cũ, một số chức năng chưa được thiết kế tốt để có thể tái sử dụng được (reusable); phần business logic code có khi bị gắn chặt (coupling) với phần controller; một số component dùng chung cũng chưa thực sự tiện lợi về cách sử dụng; phần code CSS, các CSS rule được định nghĩa cũng khá rối rắm.

Khi thực hiện redesign lại, các thành phần như controller, business logic code, UI control, javascript… đã được phân tách thành những component riêng biệt.

Sau này, khi thực hiện develop cho những phiên bản nâng cấp tiếp theo, anh nhận thấy quyết định của mình tại thời điểm trước đây là hợp lý. Chẳng hạn như ở lần nâng cấp sản phẩm để cung cấp thêm chức năng API (web service), anh có thể tái sử dụng được phần code đã được redesign lại từ version 2.0.0.

Kết quả là thời gian phát triển API được rút ngắn, số lượng vấn đề phát sinh ở những version tiếp theo nữa cũng giảm đáng kể.

Đặc biệt, qua dự án trên, anh cũng rút ra một bài học là: luôn tự đánh giá những điểm chưa tốt trong hiện tại và tìm hướng cải thiện. Khi có cơ hội thực hiện sự cải tiến, hãy thực hiện nó ở mức tốt nhất có thể.

Anh từng mắc phải sai lầm nào và anh học được gì từ nó?

Lúc trước, khi đi học, anh tò mò muốn tìm hiểu về Linux nên cài đặt thử. Sau một hồi chật vật thì cũng thành công, nhưng tất cả dữ liệu thì cũng… đi hết trơn. Kể từ đó, anh rút ra bài học là: trong mọi thứ, mình cần biết rõ mình đang làm gì, có rủi ro gì không, và phải backup mọi thứ trước khi thử một thứ gì mới.

Anh có lời khuyên nào dành cho bạn muốn phát triển bản thân mình tại một công ty product?

Anh có 3 lời khuyên.

1) Khi bắt đầu, các bạn cần hoàn thành công việc của bản thân trước.

2) Phải có niềm đam mê và không đầu hàng. Vì khi nghiên cứu, có thể bạn chưa thấy hiệu quả trước mắt, nhưng tương lai sẽ có. Lúc trước, anh làm sản phẩm chính là PHP, nhưng do thích JavaScript, nên khi rảnh thì anh tìm hiểu. Thời điểm đó anh cũng chưa dùng đến JavaScript, nhưng sau này, JavaScript được sử dụng trong sản phẩm ngày càng nhiều hơn, anh dùng kiến thức đã tích lũy được để chia sẻ, hỗ trợ team, giúp mọi người viết code tốt hơn, ví dụ như viết như thế nào để có performance cao hơn.

Tìm hiểu thêm: 20+ Tài liệu JavaScript cơ bản đến nâng cao hay nhất

3) Nên chia sẻ kiến thức với mọi người. Xem việc chia sẻ là niềm vui. Một mình bạn không thể tìm hiểu hết mọi thứ. Việc mọi người chia nhau tìm hiểu rồi chia sẻ lại giúp tiết kiệm thời gian mà vẫn học được nhiều kiến thức mới.

Anh có thường xuyên tham khảo sách và resources nào trong suốt sự nghiệp của mình?

Có một vài quyển sách tác động sâu sắc đến suy nghĩ của anh.

1) Clean Code và Maintainable JavaScript. Hai quyển sách này giúp anh xây dựng coding standard. Nó hướng dẫn developer cách suy nghĩ để viết source code.

2) Patterns of Enterprise Application Architecture. Đây là sách về pattern để thiết kế hệ thống.