Ngôn ngữ lập trình
22/09/2018
Có nhiều ngôn ngữ lập trình máy tính tồn tại ngày nay, một số được thiết kế để phục vụ một chủ định hay nền đặc biệt trong khi những ngôn ngữ khác có thể được dùng trong hầu hết bất kì ứng dụng. Nếu các em bị hoang mang về cần học ngôn ngữ lập trình nào, thầy sẽ cho các em một số lời khuyên:
Là sinh viên đại học, bất kể các em chọn lĩnh vực học tập nào, các em đều cần biết ít nhất một ngôn ngữ lập trình vì sớm hay muộn, các em sẽ cần nó trong việc làm của các em. Để bắt đầu, thầy khuyên rằng các em học Java. Đây là ngôn ngữ phổ biến nhất ngày nay và được dùng trong mọi ngành công nghiệp khắp thế giới. Các em cũng có thể học Java trực tuyến, có nhiều bài học rất hay trên YouTube và MOOCs. Nếu các em làm chủ ngôn ngữ Java, các em có thể học các ngôn ngữ khác một cách dễ dàng. Java cũng được sử dụng trong nhiều hệ thống Dữ liệu lớn, như MapR với OJAI API và JSON.
Nếu các em là sinh viên Khoa học máy tính hay Kĩ nghệ phần mềm, các em có thể xem xét học Python. Hiện thời, trong các đại học Mĩ, Python là phổ biến hơn Java. Có thể Python sẽ thay thế Java làm ngôn ngữ lập trình chính. Python được dùng trong nhiều hệ thống Dữ liệu lớn, Học máy, và các ứng dụng Trí tuệ nhân tạo. Bên cạnh Python, các em cần học SQL (Structured Query Language – Ngôn ngữ truy vấn có cấu trúc) và NOSQL cũng như các công cụ như PIG, HIVE, Impala, v.v. vì nhiều vị trí phân tích dữ liệu và nhà khoa học dữ liệu được yêu cầu về những kĩ năng này.
Nếu các em là sinh viên về toán hay thống kê nhưng muốn làm việc trong các khu vực Big data hay Trí tuệ nhân tạo, các em có thể học ngôn ngữ R. R là ngôn ngữ lập trình tính toán thống kê và đồ hoạ được thiết kế đặc biệt cho tính toán thống kê. Các em có thể phát triển các mô hình toán học và bản mẫu để chứng minh các giả thuyết hay nhận diện hình mẫu hay xu hướng nào đó từ khối lượng dữ liệu bao la. R là cực tốt trong việc giúp các nhà khoa học và nhà toán học thăm dò và hiểu xu hướng trong dữ liệu thống kê.
Nếu các em là sinh viên về toán và muốn làm nghiên cứu, có thể các em cần học MATLAB. Đây là ngôn ngữ lập trình được dùng chủ yếu cho tính toán số. MATLAB là tương tự như Python và C++. Nếu các em giỏi trong MATHLAB, dễ dàng học các ngôn ngữ khác.
—English version—
Programming Languages
There are many computer programming languages exist today, some are designed to serve a specific purpose or platform while others can be used in almost any application. If you are confused about which language to learn, I would like to give you some recommendations:
As college students, regardless of which field of study that you select, you need to know at least one programming language because sooner or later, you will need it in your job. To start, I recommend that you study Java. This is the most popular language today and being used in every industry around the world. You can also learn Java online, there are several excellent tutorials on YouTube and MOOCs. If you master the Java language, you can learn other languages easily. Java is also being used in many Big Data systems, such as MapR with the OJAI API and JSON.
If you are a Computer Science or Software Engineering students, You may consider learning Python. Currently, in U.S. universities, Python is more popular than Java. It is possible Python could replace Java as the main programming language. Python is being used in many Big data systems, Machine learning, and Artificial Intelligence applications. In addition to Python, you need to learn SQL (Structured Query Language) and NOSQL as well as tools such as PIG, HIVE, Impala, etc. as many Data analyst and Data scientist positions are required these skills.
If you are students in mathematics or statistics but want to work in Big data or Artificial intelligence areas, you may want to learn the R language. R is a statistical computing and graphics programming language specifically designed for statistical computing. You can develop math models and prototypes to prove hypotheses or identify certain patterns or trends from the vast amount of data. R is excellent in helping scientists and mathematicians to explore and understand trends in statistical data.
If you are students in mathematics and want to do research, maybe you want to learn MATLAB. This is a programming language used mostly for numerical computing. MATLAB is similar to Python and C++. If you are good in MATHLAB, it is easy to learn other languages.
https://science-technology.vn/?p=6008
===
Cải tiến kĩ năng viết mã
03/01/2015
Một sinh viên viết cho tôi: “Bạn gái của em học cách viết chương trình chỉ trong vài ngày rồi cô ấy viết thẳng mã ngay nhưng em phải mất ba tuần chỉ viết được vài dòng mã. Chúng em hiện đang học JavaScript và với em dường như cứ mãi mãi chỉ hiểu những điều cơ bản. Làm sao người khác có thể học các thứ nhanh thế còn em lại chậm quá? Em bối rối và thậm chí còn ghen tị với cô ấy. Có kĩ thuật nào nhờ đó em có thể cải tiến việc lập trình của em cho nhanh hơn không?
Đáp: Mọi người học các thứ một cách khác nhau. Chừng nào em đang học cái gì đó, không thành vấn đề nhanh hay chậm thế nào. Có thể bạn gái của em có nền tảng vững mạnh hơn ở trường trung học cho nên cô ấy có thể học các thứ nhanh hơn nhưng em cần biết rằng chính vấn đề là chất lượng chứ không phải tốc độ. Với lí do này điều quan trọng là học qua hành rồi suy ngẫm về công việc của em và cải tiến nó. Em có thể hội tụ vào viết vài câu lệnh một lúc và chắc chúng là đúng rồi em sẽ thấy dễ học cấu trúc của ngôn ngữ hơn vì nó có liên quan tới kinh nghiệm thực tại. Một trong những cách tốt nhất để giữ cho mã nhất quán và có tổ chức là gộp nhóm chức năng với nhau. Chẳng hạn, thay vì tống mọi JavaScript của em vào một tệp main.js, em có thể gộp nhóm chúng vào trong các tệp tách biệt dựa trên tính chức năng, rồi gắn chúng lại một khi em đạt tới bước dựng.
Sau khi viết mã, em nên để thời gian kiểm điểm lại công việc riêng của em hay đề nghị bạn khác kiểm điểm nó lại cho em. Việc kiểm mã là đưa mã của em cho vài người bạn xem để cho em có thể giải thích điều em đã viết, tại sao em làm nó theo cách đó và dựa trên ý kiến phản hồi của họ, em học cách viết tốt hơn. Mục đích của kiểm điểm mã là để tìm ra lỗi và học cải tiến kĩ năng viết mã của em. Tất nhiên, nếu em không muốn xem mã của em, em có thể dùng các công cụ như jslint hay SCSSlint để kiểm mã của em để tìm lỗi. Cách khác để cải tiến kĩ năng viết mã của em là đọc mã của người khác, xem xét cấu trúc dữ liệu và thuật toán của họ và tự hỏi bản thân em tại sao họ làm theo cách đó? Bằng việc kiểm điểm mã tốt, em sẽ học nhiều và khá hơn với mã riêng của em và sẽ tạo khả năng cho em viết tốt hơn trong tương lai.
Việc học ngôn ngữ lập trình yêu cầu thực hành; em càng viết nhiều mã kĩ năng của em càng tốt hơn. Khi em đã làm nó đủ lâu, em sẽ biết mọi cấu trúc của ngôn ngữ đó và nó sẽ trở thành dễ hơn. Về căn bản, em học làm chọn lựa nào từ tri thức riêng của em cũng như các ngoại lệ. Bằng việc có những kĩ năng này thì em có thể viết mã chất lượng cao nhanh hơn. Vài năm trước, một người bạn nhạc sĩ nói với tôi rằng việc học ngôn ngữ lập trình là tương tự như chơi nhạc cụ. Bạn bắt đầu chậm để chắc rằng bạn học mọi điều cơ bản rồi bạn học chơi tương ứng để phát triển kĩ năng của bạn trước khi bạn có thể chơi cùng người khác trong ban nhạc. Anh ấy bảo tôi rằng sau khi bạn đã chơi đủ lâu, bạn biết mọi kiểu nhạc thì bạn có thể chơi chúng theo cách khác và là một nhạc sĩ giỏi.
Lời khuyên cuối cùng của tôi: Đừng so sánh bản thân em với người khác, đặc biệt với bạn gái. Cứ là bản thân em nhưng kính trọng người khác vì em vẫn còn đang học và trưởng thành.
—English version—
To improve coding skills
A student wrote to me: “My girlfriend learns how to program in just few days then she write code right away but it takes me three weeks just to write a few lines of code. We are currently learning JavaScript and for me it seems to be taking forever just to understand the basics. How can others learn things so fast and I am too slow? I am so embarrassed and even envy with her. Is there any technique by which I can improve my programming faster?
Answer: People learn things differently. As long as you are learning something, it does not matter how fast or slow. Maybe your girlfriend has stronger foundation in high school so she may learn things faster but you need to know that it is the quality that counts, not the speed. For this reason it is important to learn by doing then reflect on your work and improve it. You may focus on writing few sentences at a time and make sure they are corrected then you will find it easier to learn the structure of a language because it relates to an actual experience. One of the best ways to keep code consistent and organized is to group functionality together. For example, rather than dumping all your JavaScript into one main.js file, you may want to group them into separate files based on functionality, then concatenating them once you reach your build step.
After write code, you should take time to review your own work or ask other friends to review it for you. The code review is to show your code to few friends so that you can explain what you have written, why you do it that way and based on their feedbacks, you learn how to write better. The goal of code review is to find errors and learn to improve your coding skills. Of course, if you do not want others to see your code, you may use tools such as jslint or SCSSlint to check your code for errors. Another way to improve your coding skills is to read others’ codes, examine their data structures and algorithms and ask yourself why they are doing that way? By review more good code, you will learn more and get better with your own code and will enable you to write better in the future.
Learning programming language requires practice; the more you write codes the better is your skills. When you have been doing it long enough, you will know all the structures of that language and it will become easier. Basically, you learn which choices are made from your own knowledge as well as the exceptions. By having the skills then you can write high quality codes faster. Few years ago, a musician friend told me that learning programming language is similar to playing an instrument. You start slow to make sure that you learn all the basics then you learn to play accordingly to develop your skills before you can play with others in a band. He told me that after you have played long enough, you know all types of music then you can play them in different ways and be a good musician.
My last advice: Do not compare yourself with others, especially with your girlfriend. Be yourself but respect others as you are still learning and growing.
https://science-technology.vn/?p=4646
===
Học lập trình
05/07/2013
https://science-technology.vn/?p=2065
Một sinh viên viết cho tôi: “Em thích công nghệ và muốn theo đuổi bằng cấp trong khoa học máy tính nhưng em không giỏi toán. Có cần biết giỏi toán để làm lập trình không? Có thể là người lập trình mà không có toán không?”
Đáp: Không nhất thiết phải rất giỏi toán để là người lập trình. Theo ý kiến tôi, lập trình giống như học “ngoại ngữ” như tiếng Anh hay tiếng Pháp. Bạn có thể học nói chỉ đủ để nói cho mọi người khi bạn du hành, hay bạn có thể học nó giỏi để diễn thuyết hùng biện. Cùng điều này cũng áp dụng trong lập trình. Nếu bạn chỉ muốn xây dựng website hay lập trình ứng dụng công nghệ thông tin, toán học cơ sở là đủ tốt. Nếu bạn muốn viết mã cho chương trình máy tính, ứng dụng nhúng, hay phần mềm phức tạp thì bạn cần nhiều kĩ năng toán học hơn.
Cũng giống như ngoại ngữ, lập trình là kĩ năng yêu cầu thực hành. Bạn càng làm nó nhiều, bạn càng trở nên giỏi hơn. Cách tốt nhất để học lập trình là bắt đầu viết cái gì đó đơn giản rồi học từ sai lầm bạn phạm phải. Bạn đi từ dễ rồi tới khó hơn, mỗi lúc bạn học cái gì đó mới và trong vài tuần, bạn có thể lập trình. Bạn phải biết các khái niệm logic cơ sở và cú pháp ngôn ngữ để bắt đầu.
Nó không khó như bạn nghĩ. Ý tưởng chính là thực hành và không sợ phạm sai lầm.
Một khi bạn có kĩ năng cơ sở thì bắt đầu đọc các sách lập trình nào đó để bạn có thể làm cho mình tiến bộ sang mức tiếp. Cuốn sách ưa thích của tôi là “Code Complete” của Steve Mc Connell. Nó dễ đọc, rất thực tế, và có nhiều hướng dẫn hữu dụng. Tôi khuyên bạn đọc nhiều sách lập trình để bạn có thể xây dựng tri thức của bạn theo chiều sâu và là người lập trình giỏi hơn. Nhiều sinh viên thích học “lối tắt” hay “thủ thuật” để làm cho chương trình chạy. Đây không phải là cách tốt để học lập trình. Tôi đã thấy nhiều người không thiết kế mã tốt mà dùng kiểu “Brute-force” (không dùng thông minh để làm đơn giản vấn đề mà dùng những cách thức đơn giản nhưng tốn thời gian và năng lực tính toán), không dễ sửa, không dễ bảo trì bởi vì người lập trình không có đủ nền tảng lí thuyết để xây dựng tri thức của họ và biến điều đó thành kĩ năng. Xin nhớ rằng ngôn ngữ chỉ là công cụ. Điều làm cho người ta thành người lập trình giỏi không phải là người đó biết bao nhiêu ngôn ngữ, người đó biết bao nhiêu “thủ thuật”, mà người đó hiểu rõ thế nào về khái niệm để người đó có thể áp dụng điều đó vào công việc của mình.
Cách thức tốt khác để học lập trình là làm việc với những người giỏi hơn bạn. Ở trường hay ở chỗ làm việc, có nhiều người có thể giúp bạn, hướng dẫn bạn, kèm cặp bạn trong ngôn ngữ lập trình. Một người có kinh nghiệm có thể dạy bạn không chỉ những điều căn bản, mà cả tri thức chiều sâu trong vài tháng mà người khác có thể mất nhiều năm để học.
—-English version—-
Learning programming
A student wrote to me: “I like technology and want to pursue a degree in computer science but I am not very good in mathematics. Is it necessary to know math well to do programming? Is it possible to be a programmer without math?”
Answer: It is not necessary to be very good in math in order to be a programmer. In my opinion, programming is like to learn a “foreign language” such as English or French. You can learn to speak just enough to talk to people when you travel, or you can learn it so well in order for you to give a speech eloquently. The same thing also applies in programming. If you just want to build websites or program information technology applications, basic math is good enough. If you want to write code for computer games, embedded applications, or sophisticated software then you do need more mathematics skills.
Just like foreign language, programming is a skill that requires practice. The more you do that, the better you become. The best way to learn programming is to start to write something simple then learn from the mistakes that you made. You go from easy then to more difficult, each time you learn something new and in few weeks, you can program. You must know basic logic concepts and language syntax to start. It is not as difficult as you think. The main idea is practice and do not afraid of making mistake.
Once you have the basic skills then start reading some programming books so you can advance yourself to the next level. My favorite book is “Code Complete” by Steve Mc Connell. It is easy to read, very practical, and has many useful tips. I highly recommend you to read more programming books so you can build your knowledge in depth and be a better programmer. Many students like to learn “Short cut” or “tricks” just to make the program works. This is not a good way to learn programming. I have seen many not well designed code that use “Brute-force”, not easy to fix, not easy to maintain because programmers do not have enough theoretical foundation to build their knowledge and turn that into skills. Please remember that language is only a tool. What made a person a good programmer is not how many language he knows, how many “tricks” he know, but how well he understands the concept so he can apply it to his work.
Another better way of learning programming is to work with people who are better than you. In school or in work place, there are many people who could help you, guide you, tutoring you in programming languages. An experienced person can teach you not only the basics, but the in-depth knowledge in few months that other may take years to learn.

.png)



0 Comments