Showing posts with label Lập trình là gì ?. Show all posts
Showing posts with label Lập trình là gì ?. Show all posts

Sunday, September 10, 2017

Kinh nghiệm học lập trình (2)

Việc học lập trình cần có thời gian, phải rất kiên nhẫn. Đừng cố gắng học gấp theo kiểu học trong 24 giờ như các quyển sách Beginning hay rút tít.
Đừng bao giờ cố nhồi nhét vì không thể nhồi được. Đầu óc bạn cần có thời gian để quen dần. Cũng như học ngoại ngữ, không thể thuộc ngay hàng ngàn từ chỉ sau một tuần.
Các khái niệm ban đầu rất khó khăn để hiểu. Khi tôi mới học, các khái niệm như phương thức là gì, đối tượng là gì quả không dễ. Cái dòng tạo đối tượng của Java như sau:
Activity doituong = new Activity();
Nhìn chữ Activity lặp lại hai bên tôi không hiểu nó là thế nào, cái chữ new tô màu kia nữa, là cái gì ớ, sao mà khó thế !
Rồi đến get, this, super, extends, override, động đến cái gì mới đều rối mắt lên, thấy khó nhá quá.
Sau khi hiểu bạn sẽ thấy rằng đó là cú pháp ngôn ngữ lập trình. Nó không là gì cả, chỉ là qui tắc cần như thế thôi ớ !
Con mắt của người mới học thấy khó hiểu vì cách tiếp cận không đúng. Thực tế bạn không cần nhìn đến các chữ đó. Bạn chỉ cần biết là cái dòng lệnh ấy dùng để làm gì thôi. Đừng bao giờ nhìn từng chữ mà hãy xem cả câu lệnh ấy để làm gì. Các chữ new, this, super, override nó nằm trong cả câu lệnh và câu lệnh ấy cần có chúng như một thủ tục, thế thôi. Và bạn sẽ không dùng riêng từng chữ mà dùng cả câu lệnh.
Nếu học sai, cố nhồi nhét để hiểu xem new, get, this, override nó là gì trong vài ngày thấy không xong, bạn rất dễ chán mà bỏ dở. Trong khi thực tế không cần biết nó là gì vẫn có thể làm được như thường.
Ai khi mới học đều có lúc chán ngán vì các khái niệm mới. Bạn có thể nghỉ vài ngày, sau đó quay lại. Vẫn những kiến thức đó nhưng khi bạn quay lại sẽ thấy nó quen hơn, dễ tiếp thu hơn. Đó là vì cơ chế người ta gọi là tiềm thức. Trí óc chúng ta không chỉ có ý thức, nó còn nhiều thứ sâu hơn như vô thức, tiềm thức. Ý thức lại yếu hơn vô thức, tiềm thức. Khi bạn nghỉ ngơi thì cái tiềm thức ấy nó tiếp thu, sắp xếp, làm cho mọi thứ trở nên quen hơn, nhẹ nhàng hơn. Vấn đề từ lơ mơ sẽ trở nên rõ hơn so với các ngày trước khi nó là hoàn toàn mới.
Nhưng đừng có nghỉ lâu quá hàng tháng, bạn dễ bị cuốn vào việc khác, hoặc thấy nghỉ ngơi, đi chơi dễ chịu quá rồi quên luôn việc học !
Thường sau khi nghỉ mà vẫn chưa hết chán, sẽ rất khó để bắt đầu lại. Kinh nghiệm là cứ ngồi vào bàn, gõ lại các dòng lệnh cũ, như mấy vòng lặp for để in ra các số chẵn, lẻ từ 1 đến 100 chẳng hạn, rồi chạy nó xem thử trên màn hình Console. Một lát như thế là có thể tiếp tục được.
Sau này, đến lúc gọi là qua ngưỡng, cũng như học ngoại ngữ vậy, bạn sẽ thấy nó trở nên bình thường, không còn chán nữa. Lúc đó ngồi vào bàn thì cũng như ngồi lướt web thôi, không phải lên gân cố gắng nữa.
Việc ghi chú khi mới học lập trình là rất cần thiết. Nên có một file word, học được gì thì ghi ra, lúc nào quên có thể nhanh chóng xem lại.
Tôi từng có các ghi chú như sau:
- Để chuyển từ số sang kiểu String.
String a= String.valueOf(number);
Hoặc String a = number + "";
- Lệnh for thì trong ngoặc phải là dấu chấm phảy ; for (int i=0; i<=10; i++)
Nó đơn giản thế thôi nhưng khi gõ lệnh nhìn vào bạn thấy ngay cái mẫu đúng.
Cố gắng code sao cho đơn giản. Tạo ra code đơn giản ai nhìn cũng hiểu mới khó chứ không phải là một mớ rối rắm chỉ có mình mới hiểu.
Khi bạn search tìm kiếm trên mạng, như ở trang StackOverflow, các câu trả lời đúng thường ngắn gọn, đơn giản. Cứ chọn những cái ngắn gọn, dễ nhìn để chạy thử. Câu trả lời có đánh dấu xanh bên trái thường là đã được thẩm định, nhưng không chắc 100% nó chạy đúng như bạn muốn!


Cũng như các môn học khác, nếu có năng khiếu bạn sẽ học dễ hơn người khác. Lúc đó hãy khiêm tốn, bởi bạn có thể làm rất xuất sắc, nhưng đến khi lên Google Play ứng dụng của bạn lại có rất ít lượt tải. Trong khi Flappy Bird không khó nhưng lại bùng nổ rất kinh khủng…

Kinh nghiệm học lập trình

Điều cốt yếu khi học lập trình là thực hành.
Phải thực hành ngay lập tức. Thậm chí cực đoan như phát ngôn phổ biến trên các diễn đàn lập trình: “Không cần hiểu, chỉ cần làm được”. Khi mới học, bạn sẽ nghĩ làm sao mà không hiểu lại có thể làm được. Thực tế đúng như vậy, cứ bắt tay vào làm một cái gì đó. Các khái niệm như phương thức, đối tượng, biến, mảng chỉ là cách gọi tên các mảnh ghép mà ta dùng khi lập trình.
Khi ta thực hành, chính là đang dùng các khái niệm đó, để ta quen với nó. Chỉ nhìn nó trong sách sẽ không nắm được cái gì cả. Thực hành là sử dụng để biến nó thành của ta.
Nói cho người chưa từng biết cái điện thoại về công nghệ rất khó. Hãy cứ đưa cho họ cái điện thoại để họ sử dụng rồi họ sẽ tự hiểu đấy công nghệ nó là như thế. Lập trình cũng y như vậy, các khái niệm luôn khó hiểu và vô nghĩa nếu bạn không tự tay mình thao tác y như cầm cái điện thoại mà dùng vậy.
Chỉ khi thực hành, chạy thử các ví dụ, các đoạn code bạn mới hiểu ra phương thức là thế này, đối tượng là thế kia. Khi ta gõ ra những dòng này chính là đang sử dụng biến, làm phương thức, tạo đối tượng, đang truy xuất biến nọ mảng kia.
Vậy hãy ngồi gõ ngay đoạn những đoạn code mẫu, như lọc các số chẵn trong khoảng từ 1-100, in ra màn hình. Rồi nghĩ cách in ra các số lẻ, hoặc các số chia hết cho 5, 6, 8 chẳng hạn.
Khi bạn làm điều đó, bạn sẽ hiểu về các cú pháp cơ bản nhất mà mọi ngôn ngữ lập trình đều dùng, đó là lệnh if, vòng lặp for, cách dùng mảng.
Cố gắng tự nghĩ cách làm các bài tập, chỉ có cách đó bạn mới hiểu được vấn đề. Chỗ nào vướng, nhờ thầy chỉ giúp hoặc hỏi bạn bè.
Ai cũng có thể biết cái gì đó người khác không biết. Không ai dám bảo tôi biết tất cả, làm được tất cả. Luôn chạy thử các dòng code để biết chắc nó đúng.
Đừng thấy ai đó tỏ ra ta khá mà vội tin. Người giỏi nhất thường chả nói gì cả. Người hay nói đế theo, gật gù ra vẻ hiểu rồi thường là người không học được. Người cái gì cũng thắc mắc hỏi thầy, thở than khéo mình đếch học được có khi rồi lại rất khá.
Khi đã nắm được một vài yếu tố cơ bản như đối tượng, phương thức, cách thiết kế giao diện, bạn có thể làm ngay cái gì đó, như ứng dụng đọc sách chẳng hạn. Không cần phải biết tất cả mới làm ứng dụng được, cứ vừa làm vừa học là tốt nhất.
Vì thế khi bạn đến lớp, có khi mới buổi đầu thầy dạy đã bắt mọi người đăng ký dự án tốt nghiệp để làm dần. Ai cũng phải nghĩ ra cái gì đó. Đó là cách để ép bạn tự tìm tòi thực hành chứ không chỉ trông chờ các bài học trên lớp…



Có thể tự học lập trình không ?

Lập trình android là gì ? Lập trình ios là gì ? Lập trình có khó không ? Mình có thể tự học lập trình Android chăng ?
Đây là thắc mắc của rất nhiều bạn trẻ.
Và để trả lời, nhiều bạn lên mạng tải các bài học lập trình cơ bản về xem nó thế nào, mình có thể học được chăng. Sau khi xem qua thì 99% kết luận rằng khó quá, e là mình không học được, không hợp với mình đâu.
Chỉ khoảng 1% còn lại quyết định đến các trung tâm dạy lập trình học thử.
Đó là lý do vì sao tại nhiều trung tâm, bạn muốn đi học cũng không được, do không có lớp, chờ mãi không gom đủ người đến đăng ký !
Việc bạn tự tải tài liệu để xem rồi kết luận mình không học được người ta gọi là bạn học không đúng cách. Tự học ngoại ngữ cũng cần có tivi, đài casset, mạng internet hỗ trợ. Trong khi với lập trình những thứ bạn tải về không có vẻ gì là hỗ trợ cả.
Đó là tình trạng chung của nhiều người khi tự học. Nhảy xuống ao tự bơi được phải có năng khiếu, nếu không cần bắt chước người khác.
Bắt chước cũng chính là học. Khi đến lớp, những buổi đầu chưa biết gì bạn chỉ làm mỗi việc là gõ theo từng chữ của thầy dạy mà thôi. Đến lớp là để có bạn, có thầy, có thể hỏi về những lỗi ngớ ngẩn mà nếu tự học bạn không thể post các lỗi đó lên mạng mà hỏi được.
Hễ cứ thấy lỗi đỏ mà đi lên mạng hỏi e là không ai trả lời. Nếu trả lời người ta sẽ nói đây là lỗi sơ đẳng của người mới học, và khuyên bạn nên đến chỗ nào có thầy mà học thì hơn.
Tôi cũng vậy, tôi cũng khuyên bạn khi chưa biết gì cần đến các trung tâm để học.
Khi đó bạn có giáo trình, họ có lộ trình theo từng buổi để bạn học. Buổi đầu tiên sẽ học cái này, về nhà làm bài tập này. Buổi sau đến lớp kiểm tra, không làm được thì tại sao, chỗ nào cần hỏi cứ hỏi.
Việc đến lớp tạo ra áp lực để bạn buộc phải động đến cái máy tính, kỳ cạnh gõ những dòng lệnh đầu tiên của mình. Đến lớp để còn xem người khác học như thế nào. Các trung tâm lập trình thường tạo serve để học viên up bài thực hành của họ lên. Tải bài tập của người khác về xem là cách tuyệt vời để biết trình độ của mình so với số đông thế nào.
Sau khi xem cách làm bài của người khác, bạn sẽ biết tại sao so với buổi đầu tiên thì các buổi học sau số lượng học viên cứ ít dần. Buổi cuối có khi chỉ còn chưa tới nửa. Dù thầy có ra sức hô hào anh nào không làm được gì cũng cứ đến.
Muốn tự học được bạn phải rất có năng khiếu. Đến lớp học và tìm hiểu thêm trên mạng là cách học tối ưu.
Với blog này, nếu bạn chưa biết lập trình, cứ thử đọc để xem mình có thuộc dạng có năng khiếu không. Chỉ cần qua được các bài cơ bản, làm được ứng dụng như tôi hướng dẫn chi tiết thì bạn không cần đến trung tâm lập trình nữa. Ngồi nhà đọc ebook và search mạng cũng được rồi.
Nếu đang học lập trình, bạn có thể tìm thấy các bài viết của tôi theo kiểu đơn giản, dễ hiểu nhất. Thay vì vò đầu bứt tóc xem đối tượng theo định nghĩa bài bản nó thể hiện lớp kiểu gì, bạn chỉ cần làm theo cách học gõ code để hiểu của tôi. Gõ xong tự mình ngẫm ra, ấy nó là thế đấy. Ghi chú lại theo cách hiểu của mình. Không cần quan tâm đến định nghĩa kiểu sách vở.
Nếu bạn đã biết lập trình, bạn vẫn có thể tìm được cái gì đó trên blog này. Một cái bạn search mạng chưa ra, một đoạn code mẫu tôi đã dùng trong các ứng dụng thực tế. Hoặc là một lỗi nào đó chẳng hạn.

Việc học lập trình cần kiên nhẫn, phải có thời gian cho các kiến thức tích tụ dần. Bạn có thể xem thêm bài kinh nghiệm học lập trình, nơi tôi nêu ra vài vấn đề cụ thể.

Học lập trình có khó không ?

Một cái thứ không dễ, ít người dám theo học, nhiều người thất bại, thế mà những người hàng đầu, giỏi nhất cứ luôn nói ai cũng có thể học được. Có vô lý không ?
Tại các lớp lập trình cơ bản, thường đến những buổi cuối, chỉ có khoảng nửa lớp còn đi học. Họ đóng tiền cho cả khóa nhưng đến giữa chừng thì bỏ dở. Có phải họ thấy mình giỏi quá không cần đến lớp nữa chăng ? Thực tế thì ngược lại, chán quá, không muốn học nữa nên thôi.
Cứ trong 10 người sẽ có 1, 2 người rất có năng khiếu, 4,5 người trung bình, 2- 3 người không thể học được.
Nếu không thử đi học, bạn sẽ không bao giờ biết mình thuộc nhóm nào.
Nếu bạn học được, lợi ích của nó là rất rõ ràng.
Tạo ra được những thứ tương tự như Nguyễn Hà Đông, bạn nói ra gì người ta cũng dỏng tai lên nghe.
Dù bạn chỉ làm được các ứng dụng đơn giản cho riêng mình, thì như thế vẫn hơn chán việc cả đời cứ đi dùng đồ miễn phí. Tự mình bôi ngang vẽ dọc tùy thích, biến lập trình thành một thú vui tao nhã thú vị không kém bất cứ trò giải trí nào.
Vượt qua khó khăn, nỗ lực để làm chủ được những thứ đã đẩy xã hội tiến lên mạnh mẽ, đó là trải nghiệm quý giá. So với thời chưa có máy tính, cuộc sống chưa bao giờ thuận tiện như bây giờ. Biết lập trình giống như tự mình cưỡi lên con sóng dẫn đầu. Nếu ứng dụng của bạn có hàng vạn, hàng triệu người dùng, cảm giác sẽ càng tuyệt diệu.
Bạn sẽ trở nên tự tin hơn. Giả sử nói trước đám đông với bạn là khó, thì sau khi học được lập trình, bạn sẽ thấy mình tự tin hơn nhiều. Đám đông có là gì đâu, bạn nói e là người ta ù tai không hiểu được ấy chứ, vậy có gì mà ngại.
Con gái có nên học lập trình không ?
Chắc chắn là có, rất nhiều bạn nữ học được lập trình. Nhưng có điều là học được rồi thì các cô đó thường rất kiêu, cứ như không còn ai giỏi bằng họ. Hiếm khi thấy các lập trình viên nam tỏ ra kiêu ngạo, ít ra là ngoài mặt. Nhưng mà nữ thì rất rõ. Có khi mới tiếp xúc đã muốn tránh ngay vì họ hình như đánh giá nam giới rất thấp. Điều đó có phần do họ đã thấy không ít các bạn nam cùng lớp không học được bằng mình. Và nếu anh không học được thì mau tránh xa tôi ra, đừng có nhắn tin vớ vẩn, kẻo bà đây giận bà code vài con virus thả vào điện thoại khóa máy bây giờ !
Một khi đã học được, bạn sẽ thấy đúng như các chuyên gia, nhưng người giỏi nhất hay nói, đó là ai cũng có thể học được lập trình. Rằng ban đầu có thể kém, nhưng cố gắng thì rồi cũng học được.
Nhưng sẽ thế nào nếu như bạn thất bại ?
Từng có lần tôi đi mua cái điện thoại Android để test ứng dụng. Bạn bán hàng khi biết tôi lập trình thì nói trước mình cũng từng học lập trình nhưng không học được. Tôi nói phải học Java trước rồi sang Android nó mới dễ. Bạn đó nói cũng học Java nhưng vẫn không được. Bạn đó chắc chắn đã học sai cách. Khi bạn không học được, thấy người khác làm được bạn sẽ tự nhiên thấy mình kém hẳn người ta. Nếu đối phương lại huyếch hoác lên mặt ra vẻ ta đây như Nguyễn Hà Đông thì bạn sẽ càng chết khiếp. Một điều bẩm anh thế này, hai điều bẩm anh thế kia !
Nhưng thà thất bại để biết rõ khả năng của mình còn hơn là ảo tưởng về bản thân. Thà thất bại mà biết được cái gì đó còn hơn là cả đời hiểu sai về nó.
Vậy có học hay không là do bạn.


Lập trình luôn có thể giúp bạn mở mắt, tìm thấy những điều mới mẻ mà nếu không thử bạn sẽ không bao giờ biết được.

Vấn đề sức khỏe khi làm lập trình

Lập trình là công việc của đầu óc, đúng, nhưng nó lại cần rất nhiều sức lực. Đó là công việc nặng nhọc về thể lực chứ không phải gây đau đầu như mọi người tưởng.
Khi mới học, đúng là bạn phải vò đầu bứt tóc để cố gắng hiểu các khái niệm cơ bản của nó. Nhưng khi bạn đã làm được rồi, việc suy nghĩ không còn quá nặng nề mà lại chính là vấn đề sức khỏe. Việc ngồi lỳ nhiều giờ trước máy tính rất có hại. Khi lập trình thời gian trôi đi rất nhanh, bạn thường quên mất là mình đã ngồi lâu, rất lâu như thế.
Thời gian trong lúc lập trình trôi nhanh y như khi bạn làm bài thi đại học. Nhoáng cái đã vài tiếng đồng hồ. Có lần tôi luộc rau và trong lúc đó ngồi vào máy tính làm một tý. Một lát ngửi thấy mùi thơm liền nghĩ rằng không biết nhà ai nướng gì mà thơm thế, bay sang cả nhà mình. Đến khi thành mùi cháy khét mới nhớ ra đó là nồi rau của mình, nó đã sôi cạn hết nước. Nghĩ có tý thôi nhưng đã hơn nửa tiếng.
Trên mạng từng có chuyện chết vì quá cố sức làm lập trình. Bạn đó thức khuya, làm việc vất vả và đến lúc đột quỵ. Cũng giống như những người chết vì chơi game quá lâu, họ hầu như quên mất thời gian, để cơ thể mình lao lực đến lúc kiệt sức.
Những lời khuyên kiểu như cứ một giờ lại đứng lên đi lại năm bảy phút sẽ không bao giờ được thực hiện. Vì thế có những nơi người ta thiết kế bàn làm việc để đứng, đó là tư thế tối ưu khi bạn làm lập trình.
Khi mới học thì chắc chắn là ngồi sẽ tốt hơn, nhưng khi đã làm được thì đứng là tốt nhất. Nếu không có bàn chuyên dụng thì cố gắng kê máy tính cao lên để đứng. Lâu dần quen sẽ rất dễ chịu, lúc nào cần nghỉ thì mới ngồi xuống một lát.
Lập trình cũng có thể gây nghiện, y như chơi game. Khi đang tập trung, có xúm vào hò dô ta để kéo dứt ông ra ông cũng không chịu. Thời gian thực sự bị quên mất. Nên cứ đứng làm là tốt nhất. Ắt đến lúc mỏi chân phải ngồi nghỉ.
Lập trình viên thường cố đẩy nhanh tốc độ làm việc. Tôi từng bị đau rã rời cánh tay phải khi trong một tháng liên tục tôi cố làm nhanh một ứng dụng mà lẽ ra cần ít nhất hai tháng. Các ngón tay cũng đau và tôi phải chuyển sang dùng chuột tay trái để cho tay phải nghỉ. Sau vài ngày thì quen và giờ tôi luôn dùng chuột tay trái và thấy rằng tay trái mình có thể làm nhiều thứ gần như tay phải. Việc thỉnh thoảng đổi chuột để tay thuận nghỉ là việc rất nên làm.

Cuối cùng, vận động vẫn là cách tốt nhất cho cả thể chất lẫn tinh thần. Điều này chắc bạn tự hiểu, tôi không cần nói thêm.

Có cần uống cà phê khi học lập trình ?

Trong các ảnh minh họa về lập trình thường thấy trên mạng, bạn hay bắt gặp cảnh một anh hay một cô rất chảnh ngồi cạnh cái laptop, thường là Macbook với một cốc cà phê đang bốc khói để bên cạnh. Nếu vào quán cà phê mà thấy anh nào như thế thì hẳn bạn sẽ nghĩ thôi mau ngồi xa xa ra. Tránh voi chẳng xấu mặt nào, có thể nó biết lập trình, ngồi gần nhỡ nó nói gì mình không hiểu thì sượng mặt !
Thực tế thì các anh ngồi khoe mẽ kiểu đó lại thường không biết lập trình. Có khi mới mua được cái máy tính Mac. Để ở nhà e không ai biết nên phải đến nơi công cộng mở ra, mong chuyển màn hình sang giao diện như Windows cho dễ dùng !
Khi học lập trình điều bạn cần nhất là tập trung tinh thần để hiểu vấn đề. Không được quan tâm tới bất cứ cái gì khác. Việc tỏ ra ta đây là dân lập trình lại càng không nên nghĩ đến. Tập trung là mấu chốt để hiểu được các khái niệm, cấu trúc thuật toán của lập trình.
Việc cứ tý tý lại nhấm chút cà phê có thể làm bạn mất tập trung. Ở chỗ đông người thì như thế đúng là có vẻ pro thật. Nhưng bạn cần hiểu biết thực sự hay chỉ cần ra vẻ ta đây pro ? Việc ăn uống trong khi lướt mạng là bình thường, nhưng với lập trình nó làm bạn gần như là đang làm hai việc cùng lúc. Não vừa phải chỉ huy bộ tiêu hóa vừa nghĩ ngợi về các cú pháp. Không hay gì so với chỉ làm một việc.
Cà phê đúng là có tác dụng kích thích tinh thần. Tôi đã thử và thấy nó làm mình tỉnh táo hơn vào buổi tối, nhưng không chắc nó làm tôi suy nghĩ tốt hơn. Cái chưa nghĩ được không nhờ uống cà phê mà nghĩ ra. Cái nghĩ ra thì chỉ vì tập trung chứ không do uống cái gì cả.
Vậy hãy uống nếu bạn thực sự thích cà phê hoặc bạn cần thức để làm việc. Bạn uống để mà thức chứ không phải mong nó làm mình sáng suốt hơn.
Thực ra nếu bạn đã qua ngưỡng, có thể làm được cái gì đó, tự bạn sẽ biết các cái ảnh minh họa thì như vậy còn thực tế việc có uống gì hay không chả quan trọng. Bạn tự tìm được cái thích hợp cho mình.

Còn nếu mới đang học, không nên để bất cứ thứ gì khác làm bận trí mình.

Học lập trình có cần giỏi toán ?

Nhiều bạn muốn đi học lập trình nhưng ngại mình không giỏi toán lắm, không biết có học được không ?

Nói luôn là lập trình không giống toán, nó là ngôn ngữ cho máy tính nên giống ngoại ngữ hơn.
Với toán, cách xử lý vấn đề là dùng các công thức, biểu mẫu để tính toán, biến đổi về các dạng quen thuộc để có kết quả. Tức là sẽ luôn có các bài toán mới mà trong đó cần đến các kiểu biến đổi mà bạn cần học mới làm được. Dù bạn giỏi toán đến đâu, luôn có các bài toán đối với bạn là khó. Dù bạn nhớ được hết các công thức, bạn có thể vẫn không giải được bài toán rất bình thường nhưng nó là dạng mới chẳng hạn.
Lập trình không như vậy, nó là ngôn ngữ nên có hữu hạn các cú pháp, các qui tắc, thao tác để học. Một khi đã nắm được cơ bản, bạn luôn có thể nghĩ ra cách làm nào đó.
Bạn phải tuân theo các bước nhất định, hiếm khi phát sinh các yêu cầu xử lý mới đến mức bạn không thể tìm đâu ra lời giải như với các bài toán khó. Các thao tác khi làm ứng dụng đều giống nhau. Đưa chữ ra màn hình, đưa hình ảnh ra màn hình, chỉnh cỡ chữ, tô màu nọ màu kia. Đó là thao tác như thợ sắp chữ chứ không phải là suy nghĩ tính toán.
Nên nhiều khi người ta gọi các lập trình viên là “công nhân lập trình”. Họ có nghĩ gì đâu, cứ làm đi làm lại các thao tác đã quen tay thôi. Các Freelancer, tức những người làm nghề lập trình tự do có khi gọi công việc của họ là “code dạo”, cứ thấy việc ở đâu thì làm ở đó.
Vậy lập trình có điểm nào giống toán không ?
Có, đó là tư duy logic, tất nhiên. Bạn không thể chỉ có các thao tác như thợ sắp chữ. Sẽ có lúc phải nghĩ rất nhiều. Nhất là khi mới học. Giả dụ như cần phải xem trong mảng 100 phần tử có số nào bị âm không chẳng hạn. Bạn phải nghĩ ra đoạn code để chạy kiểm tra, và trông nó sẽ như sau:
int kiemtra=0;
for(int i=0;i<100;i++){
if(array[i]<0){
kiemtra=1;
}
}
Khi mới học luôn có những chỗ phải tự nghĩ như thế này. Và nó không hề khó như một bài toán có dấu sao.Bởi vì lúc học bạn đã gặp những thứ tương tự, khi làm bạn chỉ việc thay đổi cú pháp một chút là được. Không có các thứ kiểu như vẫn là giải hệ phương trình nhưng người ta chỉ đổi đi một tý là bạn không thể làm được.
Sau khi học được lập trình, bạn sẽ thấy toán quả thực là khó hơn. Những người giỏi toán rất ít. Học toán không phải cứ cố mà được. Toán không thể dạy cho người từ không biết gì chỉ sau 6 tháng là thành giỏi được.
Nhưng lập trình thì có thể. Nếu cố gắng ai cũng học được. Sau 6 tháng nếu không giỏi thì ít ra bạn cũng thấy rằng mình khá hơn mình tưởng. Ai cũng nghĩ ra được cái gì đó hay ho, các dòng code chả thiên vị ai hết.
Nếu giỏi toán, bạn chắc chắn sẽ học lập trình nhanh hơn những người khác. Còn nếu bạn học khối C, chỉ biết có Văn, Sử, Địa thì cũng không sao. Hãy nghĩ tới môn ngoại ngữ với danh từ, động từ, các câu mẫu ngữ pháp. Lập trình cũng tương tự như vậy.

Học lập trình có cần giỏi tiếng Anh ?

Với đa số chúng ta, việc học ngoại ngữ là không dễ. Hàng ngàn từ mới không dễ bám chặt trong đầu bạn. Hơi lơ đi một thời gian là quên ngay cả loạt. Rồi còn chia động từ, dùng ngữ pháp khi nói, viết nữa. Đa số sau thời gian học ở trường phổ thông tiếng Anh chỉ đủ để đọc hiểu những thứ đơn giản.
Nhưng thế là quá đủ để học lập trình. Cú pháp lập trình trông như tiếng Anh nhưng bạn không cần nhớ từng chữ. Tức là lúc nào quên bạn chỉ việc tìm lại cú pháp mẫu mà copy đoạn lệnh đó là xong. Đến bây giờ khi làm ứng dụng tôi vẫn thường copy các đoạn code chứ không ngồi cố nhớ, như thế chậm hơn là copy roạt cái được ngay cả 10 dòng.
Không cần có trí nhớ đặc biệt là ưu thế vượt trội của lập trình. Bạn cần chút tư duy logic, không nhiều như toán, kiểu như qui tắc tam suất là đủ.
Bạn sẽ học bằng tiếng Việt, class thì gọi là lớp, method gọi là phương thức. Không biết tiếng Anh vẫn học được, mọi thứ trao đổi là tiếng Việt bình thường.

Nhưng sẽ đến lúc bạn cần tìm kiếm trên mạng cái mình chưa biết. Hầu như sẽ chỉ có trả lời bằng tiếng Anh. Đây là minh họa một đoạn trả lời trên trang Stackoverflow.



Nếu không biết tiếng Anh vẫn có thể copy các hướng dẫn đó vào chạy thử. Nhưng nếu biết sẽ tốt hơn nhiều. Vì dưới câu trả lời hay có comment của những người đã chạy thử. Nếu đọc thấy nhiều comment phản đối, bạn bỏ câu trả lời đó đi, chọn câu khác khỏi mất công.
Do người ta cũng chỉ dùng tiếng Anh cơ bản nên dù bạn chỉ bập bõm vài từ cũng vẫn có thể hiểu được. Như cái comment thứ 3.
“works for me, thank you so much!!!”.
Toàn những từ rất đơn giản, bạn học tiếng Anh ở trường phổ thông bao nhiêu năm chả lẽ không hiểu được câu đó viết rằng “nó chạy được với tôi, cám ơn nhiều”.
Biết chút tiếng Anh cũng có lợi khi cần đọc các ebook dạy lập trình rất nhiều trên mạng. Các kiến thức trong đó đôi khi có thể gỡ bí nhanh hơn đi search Google.
Sau một thời gian học lập trình, vì nhu cầu tìm kiếm trên mạng buộc phải đọc tiếng Anh nên dần dần trình độ ngoại ngữ của bạn cũng sẽ lên theo khả năng lập trình. Đến lúc làm được cái gì đó, post lên Google Play hoặc Itunes Connect xong là có thể vỗ ngực tự xưng ta đây biết lập trình di động. Rồi vác hồ sơ đi xin việc. Người ta hỏi bạn biết tiếng Anh không, cứ nói em đọc hiểu được, lúc học đã đọc mấy quyển ebook dạy lập trình bằng tiếng Anh rồi. Vậy là xong, vào tới giai đoạn code thử mà được nữa là ổn.
Không ai cần bạn nói viết như máy để đi giao dịch với Tây hoặc Nhật. Nhưng nếu nói viết được thì lại rất tốt, tất nhiên. Sau khi đi làm bạn có thể sẽ buộc phải học thêm ngoại ngữ, lúc đó mới cố nhồi nhét cũng được.
Vậy đừng nghĩ kém ngoại ngữ thì sẽ không học được lập trình.
Ban đầu tất cả dân lập trình cơ bản đều kém ngoại ngữ. Nhưng học được lập trình rồi thì ngoại ngữ chỉ là con tép !

Lập trình không phải là 0 và 1

Khi xem các chương trình công nghệ thông tin trên tivi bạn hay thấy có minh họa các dòng số 0, 1 lê thê chạy ngang chạy dọc. Nếu từng xem chương trình “Hồ sơ bí ẩn của Nasa” trên kênh Discovery bạn sẽ biết có một tập trong đó một vệ tinh đã bị lỗi do một số 0 đã bị ai đó hoặc cái gì đó sửa thành 1 trong mã máy tính của nó.
Điều này khiến nhiều người tưởng rằng lập trình là 0 và 1.
Thực tế không hề như vậy. 0 và 1 là mã nhị phân, hai trạng thái cơ bản này được dùng để tạo ra mã code cho máy tính. Những mã đó do trình biên dịch của những người đẻ ra ngôn ngữ lập trình thực hiện.
Còn là lập trình viên, bạn không bao giờ động đến nó cả. Việc bạn làm chỉ là gõ code của ngôn ngữ lập trình đó.
Đây là một đoạn code Java.
public static void main(String args[])
{
      String name="Nguyen Van A";
      int age=20;
      System.out.println( name + " is "+ age + " years old!");
}
Còn đây là đoạn code trong Android.
    TextView t;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.baidoc);   
           t = (TextView)findViewById(R.id.t);           
           String a = “Hello World!";
           t.setText(a);
}
Đây mới chính là cái bạn sẽ thường xuyên nhìn thấy khi học lập trình chứ không phải là các số 0, 1. Thực tế bạn không bao giờ nhìn thấy các số này, mà chỉ có các dòng lệnh như trên mà thôi.
Khi xem clip trên mạng về các lập trình viên chuyên nghiệp, bạn thường thấy họ gõ code ra rào rào như mưa. Hình như họ suy nghĩ cực nhanh, kinh khủng thật, e là mình không bao giờ làm được !
Thực tế thì không hẳn như vậy. Trong lập trình bạn có phần mềm để hỗ trợ, không cần phải gõ từng chữ như Word. Bạn gõ vài chữ rồi enter nó sẽ bung ra cả đoạn lệnh thậm chí đến 10 dòng. Và khi đã làm quá quen thuộc, lập trình viên có thể gõ code ra nhanh hơn là đi copy.
Phần mềm hay dùng với Android là Eclipse hoặc Android Studio, với Ios là Xcode. Trong các phần mềm này có chỗ để gõ lệnh, chỗ để thiết kế giao diện. Khi làm xong, để tạo ra gói ứng dụng cài đặt vào điện thoại, phần mềm lập trình cũng làm luôn cho bạn. Bạn chỉ cần điền tên version, nhập password, tìm vị trí lưu ra. Với Android, file tạo thành có đuôi .apk, bạn upload file này lên Google Play chờ duyệt, sau vài tiếng ứng dụng đã sẵn sàng để người dùng tải về.
Vậy có thể coi lập trình là việc viết ra các dòng lệnh dựa trên một nền tảng ngôn ngữ có sẵn, trên một phần mềm máy tính có sẵn. Không có các nền tảng này, bạn không thể lập trình được.
Vì là ngôn ngữ nên nó có các từ đặc biệt gọi là từ khóa, các khái niệm riêng gọi là phương thức, đối tượng, kiểu dữ liệu, biến, hằng…
Trong ngoại ngữ, bạn phải học đánh vần các chữ cái, rồi các câu, từ đơn giản nhất. Lập trình cũng vậy, bạn học từng khái niệm, cú pháp, từng lệnh của nó từ đơn giản đến phức tạp.
Nhưng lập trình khác ngoại ngữ là bạn không cần khả năng nhớ thật nhiều từ.
Có không nhiều lắm các từ chuyên môn, các câu lệnh. Bạn cũng không cần cố ghi nhớ làm gì. Cú pháp mẫu có sẵn, nếu quên thì copy là xong. Sau một thời gian quen thì tự nhiên sẽ nhớ.
Lập trình cũng không giống toán. Nếu có tính toán bạn chỉ gõ lệnh rồi máy tính sẽ thực hiện.
Ví dụ, để nhân hai số a, b với nhau ra số c bạn sẽ gõ:
int c = a*b;
Kết quả c bạn không biết là gì nhưng cứ dùng đi, máy tính đã tính cho rồi. Với toán thì bạn phải tự làm dần cho đến khi ra kết quả cuối cùng. Lập trình là gõ lệnh để máy tính tự làm. Bạn có thể xem thêm bài viết có cần giỏi toán để học lập trình.
Rốt cuộc không có chỗ nào bạn thấy 0 và 1 như người ta minh họa, chỉ có các đoạn lệnh theo cú pháp mẫu. Cũng không cần phải biết gõ code rào rào như mưa.
Thực tế khi bạn bắt đầu học lập trình, thầy dạy sẽ không nói rõ như tôi đang viết đây. Bạn cứ học vài buổi, làm theo thầy rồi tự biết à đấy, lập trình nó là như thế.

Vậy nếu sau này bạn có đến lớp học, hãy thử hỏi thầy xem sao em không thấy có 0 và 1 như tivi hay minh họa. Lúc đó thầy dạy sẽ nói cho bạn về trình biên dịch, máy ảo Java. Những thứ bạn không cần biết nó là gì cũng vẫn học lập trình được như thường.