Lập trình là gì?
Hãy tưởng tượng bạn đang làm việc tại một công ty đa quốc gia và sắp có buổi họp với đối tác Trung Quốc. Bạn là người Việt và hoàn toàn không biết tiếng Hoa. May thay cả bạn và đối tác đều có thể nói tiếng Anh, vậy nên cả hai quyết định dùng tiếng Anh để giao tiếp và thỏa thuận.
Tương tự như vậy HTML, CSS, JavaScript, Java, v.v… là một dạng ngôn ngữ trung gian giúp bạn và máy tính có thể giao tiếp được với nhau.
Ngôn ngữ nguyên bản của máy tính là hệ nhị phân (binary): đó là các chuỗi ký tự chỉ chứa hai số là 0 và 1. Người bình thường khó có thể đọc và viết bằng hệ nhị phân, vậy nên các ngôn ngữ lập trình ra đời như một giải pháp trung gian giúp chúng ta có thể giao tiếp với máy tính.
Tuy nhiên, khác với con người, máy tính không có khả năng nắm bắt hàm ý trong giao tiếp mà chỉ hiểu mọi thứ theo nghĩa đen. Nếu bạn yêu cầu thực hiện một điều gì đó, máy tính sẽ thực thi chính xác những gì bạn nói. Về cơ bản, máy tính không có khả năng ra quyết định và sẽ không thể hiểu nội dung thông tin nếu bạn không giao tiếp theo nghĩa tường minh. Học cách đưa ra yêu cầu chính xác là yếu tố quan trọng khi giao tiếp với máy tính.
Chẳng hạn, khi được nhờ làm một chiếc bánh mì kẹp, bạn sẽ hỏi xem nhân bánh mình muốn cho những gì, và có muốn bánh nướng giòn hay không. Chỉ một vài câu hỏi cơ bản là bạn sẽ đủ thông tin để làm ra một chiếc bánh ngon lành. Tự bạn có thể suy luận hoặc giả định dựa trên kinh nghiệm cho những chi tiết nhỏ còn thiếu.
Chúng ta đều hiểu đầu tiên cần phải quết sốt mayonnaise lên hai lát bánh mì, sau đó kẹp thịt nguội và phô mai vào giữa, rồi bỏ bánh vào lò nướng. Tuy nhiên, nếu chỉ nói với máy tính rằng bạn muốn một cái bánh với thịt nguội và phô mai được nướng giòn cùng sốt mayonnaise, thành phẩm bạn nhận được có thể sẽ hoàn toàn khác với tưởng tượng.
Nhưng làm sao để máy tính biết những điều này?
Khi bạn nói với máy tính rằng bạn muốn: “một cái bánh mì với thịt nguội và phô mai được nướng giòn cùng sốt mayonnaise”, máy tính sẽ thực hiện theo đúng trình tự bạn đưa ra. Chúng sẽ đặt hai lát bánh mì ở dưới, đặt thịt nguội và phô mai lên trên, nướng bánh rồi rưới sốt mayonnaise lên…
Chẳng phải máy tính thông minh lắm sao?
Bởi máy tính chỉ tiếp nhận thông tin theo nghĩa đen, bạn sẽ cần giải thích cụ thể từng bước và chỉ rõ trình tự sắp xếp nguyên liệu. Với bánh mì kẹp, ai cũng hiểu phần nhân phải đặt ở giữa. Tuy nhiên máy tính không có khái niệm này – chúng chỉ thực hiện một cách máy móc theo đúng chỉ dẫn của bạn.
Đây cũng là lý do tại sao chúng ta chưa thể giao tiếp với máy tính bằng ngôn ngữ của con người. Ngôn ngữ của chúng ta quá mơ hồ và nhập nhằng đối với máy tính. Khi con người giao tiếp, từ và câu thường mang nghĩa khác nhau tùy theo văn cảnh. Máy tính chẳng thể suy luận điều này và sẽ cần chúng ta đưa ra thông tin một cách tường minh.
Thực ra máy tính chẳng thông minh chút nào, chúng chỉ xử lý thông tin nhanh hơn chúng ta mà thôi.
Lập trình viên là ai và công việc của họ là gì?
Bạn không thể yêu cầu máy tính thực hiện những gì mình muốn bằng tiếng Việt, vậy nên điều bạn cần là một lập trình viên có thể đóng vai trò “phiên dịch”. Lập trình viên là người truyền đạt ý tưởng và chỉ dẫn của bạn cho máy tính, giúp tạo ra các website, trò chơi, và các chương trình khác.
Lập trình viên còn được gọi là polyglot (người biết nhiều ngôn ngữ) với kỹ năng chuyên môn là giao tiếp với máy tính. Họ biết phải nói gì và làm thế nào để máy tính hiểu những gì họ nói. Nếu đã từng học ngoại ngữ, bạn chắc sẽ biết mỗi ngôn ngữ đều có hệ thống từ vựng, văn phạm và các quy tắc riêng. Tương tự, ngôn ngữ máy tính cũng có những nguyên tắc riêng được gọi là cú pháp.
Trong giao tiếp, nếu bạn phát âm sai vài từ, chia không đúng động từ hay sử dụng văn phạm không chính xác, thường người nghe vẫn có thể đoán và hiểu ý của bạn. Nhưng giao tiếp với máy tính lại hoàn toàn khác. Chỉ cần sai một lỗi cú pháp, máy tính sẽ chẳng thèm nghe bạn nữa và ngừng chạy chương trình luôn.
Thô lỗ nhỉ!
Bạn có thể làm gì khi có kỹ năng lập trình?
Nếu đã từng sử dụng máy tính, coi video trên mạng hoặc chơi game, bạn có tin tất cả những thứ bạn thấy đều được tạo ra từ một loạt các chuỗi ký tự và biểu tượng. Khả năng xử lý hàng ngàn dòng lệnh mỗi giây là điểm mạnh của máy tính, giúp chúng có khả năng làm theo những chỉ dẫn phức tạp và thực hiện được những điều tuyệt vời.
Dưới đây là danh sách những điều tuyệt vời bạn có thể làm với kỹ năng lập trình:
- Tạo và thiết kế websites
- Phát triển ứng dụng di động
- Phát triển chương trình cho máy tính để bàn (desktop)
- Phát triển trò chơi
- Tạo lập và bảo trì dữ liệu
- Tự động hóa công việc
- Xử lý những vấn đề phức tạp
- Phát triển trí thông minh nhân tạo (AI)
- Thực hiện phân tích thống kê
- Và còn nhiều nữa…
Nếu bạn quan tâm đến bất kỳ lĩnh vực nào trong danh sách kể trên và muốn phát triển sự nghiệp thì học lập trình là một điều thiết yếu.
Điều gì khiến việc lập trình trở nên hữu ích và đâu là lợi ích mà nó mang lại?
Trong cuộc sống hàng ngày, chúng ta càng phụ thuộc vào máy tính thì tầm quan trọng của các phần mềm và việc lập trình càng trở nên rõ ràng.
Những năm trở lại đây, hầu hết mọi lĩnh vực đều có mối liên hệ với máy tính, vậy nên việc biết lập trình sẽ đem đến cho bạn lợi thế nghề nghiệp. Chẳng hạn bạn có thể sử dụng kỹ năng lập trình trong việc viết lách, phân tích, quản lý, cơ khí, phát triển phần mềm và nhiều lĩnh vực khác nữa.
Những người yêu lập trình cho rằng chúng ta cần dạy lập trình như một kỹ năng phổ thông, giống như kỹ năng đọc, viết hay thực hiện những phương trình tính toán cơ bản. Chính phủ nhiều nước trên thế giới cũng chia sẻ suy nghĩ này và bắt đầu đưa lập trình vào chương trình học bên cạnh những môn cơ bản.
Cũng giống chúng ta, chính phủ các nước cũng coi lập trình như chìa khóa giúp tăng sức cạnh tranh trên thị trường toàn cầu.
Mình biết kỹ năng lập trình rất hữu ích, nhưng chưa hiểu lắm về công việc của lập trình viên?
Một ngày bình thường của lập trình viên không hào nhoáng như trong phim hay các chương trình truyền hình.
Công việc lập trình yêu cầu tập trung, kiên nhẫn và tự chủ. Nếu không thể ngồi một chỗ và tập trung hàng giờ, bạn nên cân nhắc lại việc theo đuổi nghề này.
Một vài công việc liên quan tới lập trình sẽ yêu cầu bạn làm việc theo thời gian biểu thất thường và sẵn sàng chữa lỗi (bugs) cũng như giải quyết vấn đề ngay lập tức. Trong khi các trường hợp còn lại chỉ yêu cầu bạn làm việc từ 9 giờ sáng đến 5 giờ chiều như những công việc thông thường.
Tuy nhiên trở thành lập trình viên thường giúp bạn có thời gian linh hoạt hơn so với công việc hiện tại. Nhiều lập trình viên nhận những công việc làm từ xa, có nghĩa là bạn có thể viết code khi đang ở nhà, ngồi quán cafe hay khi nằm phơi nắng ngoài bãi biển – miễn là bạn có wifi.
Nghề lập trình có thực sự phù hợp với mình?
Đây là lúc bạn cần nghiêm túc cân nhắc ưu và nhược điểm của nghề lập trình. Bạn có thể có những ý tưởng trên trời về nghề lập trình, nhưng cũng giống mọi công việc khác, thứ mà bạn cần vẫn là chăm chỉ làm việc. Nếu đáp ứng được những điều dưới đây, rất có thể bạn sẽ yêu thích công việc này.
Dấu hiệu cho thấy công việc lập trình không dành cho bạn:
- Bạn chỉ quan tâm đến thu nhập và chẳng thích thú gì với máy tính
- Bạn không thích ngồi yên một chỗ trong một khoảng thời gian dài
- Mắt bạn nhòe đi mỗi khi nhìn vào màn hình code
- Bạn đánh máy chậm và thường mắc các lỗi đánh máy
Dấu hiệu cho thấy công việc lập trình đúng là DÀNH cho bạn:
- Bạn thấy bản thân vừa phân tích tốt vừa sáng tạo
- Bạn chú ý đến từng chi tiết
- Bạn thấy thoải mái khi làm việc cùng người khác và làm việc một mình
- Bạn có nền tảng cơ bản và có thể đọc hiểu tiếng Anh
- Bạn thích giải quyết các vấn đề
- Bạn luôn luôn học hỏi những điều mới mẻ
- Bạn thích ứng với việc thay đổi
- Bạn thích tổ chức thông tin và tự động hóa các quy trình
Mình nên chọn ngôn ngữ lập trình nào và phải bắt đầu từ đâu?
Hãy trở lại với ví dụ về cuộc họp cùng đối tác Trung Quốc.
Dù tiếng Anh có thể hữu dụng trong công việc, bạn nhận thấy vẫn cần học thêm một vài ngôn ngữ phục vụ cho các lĩnh vực khác. Ví dụ, bạn muốn học tiếng Pháp cho công việc ngoại giao, tiếng Hy Lạp cho triết học và tiếng Đức cho ngành cơ khí. Tùy thuộc vào lĩnh vực làm việc, bạn sẽ chọn một ngôn ngữ cụ thể nhằm đáp ứng nhu cầu của mình.
Chúng ta thường không có khả năng và thời gian để học tất cả các ngôn ngữ lập trình hiện có. Bạn nên cân nhắc những ngôn ngữ mà mình sẽ học. Đầu tiên, bạn cần xác định rõ mục đích và tìm ra những ngôn ngữ bạn cần học để đạt được mục tiêu.
Về mặt kỹ thuật, HTML và CSS không phải là ngôn ngữ lập trình. Mặc dù vậy, đây vẫn là hai ngôn ngữ tuyệt vời cho những ai mới bắt đầu tìm hiểu về lập trình. HTML và CSS là “ngôn ngữ đánh dấu siêu văn bản”, được sử dụng trong thực tế để định dạng và sắp xếp văn bản. Nếu không có HTML hay CSS, trình duyệt sẽ không thể xác định những từ đang hiển thị là tiêu đề, đoạn văn hay phần cuối trang. Trình duyệt của bạn cũng sẽ không biết được những từ này phải tô đậm hay in nghiêng v.v…
Khi viết bài hướng dẫn này, mình cũng dùng HTML và CSS để giúp bạn và trình duyệt của bạn hiểu những gì mình muốn nói.