Con đường học tập lập trình của đa số mọi người bắt đầu từ lượt tìm kiếm Google lúc đêm khuya.
Thông thường là “Learn _______”
Nhưng làm sao mà ta quyết định nên tìm kiếm thứ ngôn ngữ nào?
“Tôi hay nghe câu nói đùa về Java ở Silicom Valley. Chắc là tôi nên học thứ này.”
Hoặc:
“Haskell. Dạo này rất hot. Haskell.”
Hay:
“Con chuột Go dễ thương quá trời quá đất.”
Và rồi đa phần chúng ta, chắc cũng đã từng search những câu hỏi:
“Tôi nên học ngôn ngữ lập trình nào trước đây?”
Không phải câu hỏi nào cũng được tìm kiếm nhiều đến mức phải có riêng một infographic trả lời. Đây là một trong số đó:
Quyết định ngôn ngữ lập trình đầu tiên luôn là một trải nghiệm lý thú — giống như kiếu mấy câu trắc nghiệm tính cách vậy “Bạn là nhân vật nào trong Game of Throne?”
Trước khi bạn nhảy nhanh vào Ruby vì hồi bé thích chơi đùa với Play-Doh, tôi muốn nhắc nhở bạn: nguy cơ bỏ cuộc rất cao đấy.
Bạn sẽ mất đến hàng trăm tiếng đồng hồ học tập để có thể “đại khái” thành thạo đôi chút với ngôn ngữ lập trình đầu tiên của mình.
Vậy nên bạn cần xem xét những yếu tố sau:
- Ngôn ngữ có dễ học hay không
- Bạn có thể xây dựng kiểu project nào trong quá trình học (và chia sẻ với bạn bè để duy trì động lực)
Mỗi năm lại có những ngôn ngữ mới xuất hiện, và đi kèm với chúng, là những tài liệu học thuật mới, cùng cả web comics mới. Thật đấy. Mới tháng trước đây này:
Khi phải chọn ngôn ngữ lập trình đầu đời, bạn sẽ không bao giời thiếu lựa chọn. Để thu hẹp hơn một chút, sau đây là những lượt tìm kiếm thông dụng nhất trên Google liên quan đến học lập trình trong 12 năm gần đây:
Python dần dần lớn mạnh và trở thành lựa chọn phổ biến nhất.
Trước khi nói về những ngôn ngữ lập trình này, tôi cần nói rõ rằng:
- Tôi không nói rằng ngôn ngữ này (về khách quan) tốt hơn ngôn ngữ khác.
- Tôi đồng ý rằng lập trình viên trước sau gì cũng nên học nhiều hơn một ngôn ngữ.
- Theo tôi, trước hết họ cần học tốt một thứ ngôn ngữ trước đã. Và — như bạn có lẽ đoán được từ phần text lộn ngược trên tiêu đề — bạn nên học JavaScript trước tiên.
Trước hết, hãy tìm hiểu xem tại sao ngôn ngữ này lại được giảng dạy rộng rãi đến vậy.
Nhiều trường đại học đã và đang giải dạy lập trình dưới cái tên khoa học máy tính, bản thân môn học này là một nhánh của toán học, hoặc phần nào gắn với kỹ sư điện.
Tất nhiên, các bạn chắc cũng đã nghe qua:
“Giảng dạy về khoa học máy tính không thể biến bất cứ ai thành chuyên gia lập trình; cũng giống như học về cọ và màu chả biến người đó thành siêu họa sĩ vậy.” — Eric S. Raymond
Đến năm 2016, nhiều trường đại học vẫn giảng dạy lập trình như thể là môn khoa học máy tính vậy, và môn khoa học máy tính chả khác gì toán học.
Bởi lẽ đó, nhiều khóa học lập trình vỡ lòng thường tập trung xoáy vào các ngôn ngữ có độ trừu tượng thấp như C, hoặc các ngôn ngữ trọng tính toán như MATLAB.
Và các trưởng khoa lại thường giữ nguyên con đường đầy khó khăn, hướng đến các ngôn ngữ lập trình ở đầu bảng xếp hạn như TIOBE Index, hoặc bảng xếp hạng dưới đây từ IEEE:
Đa phần những bảng xếp hạng này sẽ thấy rất ít sự thay đổi dù đã… 10 năm trôi qua.
Nhưng sự thay đổi vẫn có diễn ra, trong hay ngoài giới học thuật cũng vậy.
Năm 2014, Python chiếm ngôi Java trở thành ngôn ngữ giảng dạy nổi tiếng nhất trong các chương trình Khoa Học Máy Tính hàng đầu tại Mỹ.
Và một sự thay đổi nữa hiển nhiên… sớm hay muộn… cũng sẽ xảy ra.
Vì nếu bạn nhìn vào các ngôn ngữ thực sự được người lao động sử dụng, đây lại là một bức tranh hoàn toàn khác:
JavaScript từ trước đến giờ là ngôn ngữ phổ biến nhất, được đến 49.397 lập trình viên phản hồi lại bài khảo sát 2016 của Stack Overflow sử dụng.
Hơn nửa số lâp trình viên có sử dụng JavaScript. Đây là ngôn ngữ chủ chốt trong lập trình web front-end và ngày càng dấn thân vào lập trình back-end. Và đang ngày càng mở rộng nhanh chóng sang lập trình game và IoT.
Các tin tuyển dụng cũng nhắc đến JavaScript thường xuyên hơn bất cứ ngôn ngữ nào khác (ngoại trừ Java):
Không còn nghi ngờ gì nữa, JavaScript là con đường nhanh nhất đến công việc lập trình đầu tiên của bạn. Nhưng liệu JavaScript có phải đúng là ngôn ngữ cho bạn? Nó có xứng đáng là ngôn ngữ lập trình đầu tiên của bạn không? Hãy cùng khám phá những nhân tố tôi đã nhắc đến trước đó nhé.
Nhân tốt #1: Thị trường việc làm
Nếu bạn đang học lập trình chỉ vì tò mò kiến thức, cứ việc bỏ qua phần này. Nhưng nếu bạn — như phần lớn những ai học lập trình — muốn dùng kỹ năng này để tìm việc, đây là một yếu tốt\ cân nhắc quan trọng đấy.
Như tôi đã nói đấy, Java được nhắc đến trong nhiều tin tuyển dụng hơn bất cứ ngôn ngữ lập trình nào khác. Và JavaScript chạy sát theo sau.
Nhưng lại có sự thật thế này về JavaScript: tuy đã xuất hiện được 20 năm trời, nhưng chỉ mới gần đây nó mới trở thành một công cụ nghiêm túc cho ứng dụng của các công ty lớn như Netflix, Walmark, và Paypal.
Bới vậy, nhiều công ty đang tuyển lập trình viên JavaScript, nhưng số lượng cung lại thấp hơn lượng cầu rất nhiều.
Có đến 2,7 lập trình viên tranh nhau một vị trí Java đang tuyển dụng. Tình hình cạnh tranh với PHP và iOS cũng chả khá hơn là bao.
Nhưng với mỗi vị trí JavaScript đang tuyển, chỉ có 0,6 bạn lập trình viên mà thôi.
Factor #2: Hướng đi về lâu về dài
Trung bình, dự án JavaScript nhận đến gấp đôi số pull request của project Java, Python, hoặc Ruby. Hơn nữa, JavaScript đang phát triển nhanh hơn bất kỳ ngôn ngữ nào khác
Hệ sinh thái JavaScript cũng thu được nhiều lợi ích trước lượng đầu tư về tài chính và nhân lực khổng lồ từ các công ty như Google, Microsoft, Facebook, và Netflix.
Ví dụ như, TypeScript (superset của JavaScript) có đến hơn 100 người đóng góp nguồn mở, đa số là nhân viên Microsoft và Google được trả tiền để hoàn thiện sản phẩm này.
Kiểu liên kết đa công ty như thế này sẽ khó tìm thấy ở Java. Oracle (chủ sở hữu Java sau khi mua lại từ Sun Microsystems ) thường kiện các công ty cố gắng mở rộng trên đó.
Factor #3: Khó học
Đa phần lập trình viên đều đồng ý rằng các ngôn ngữ scripting cấp cao thường dễ học hơn. JavaScript thuộc vào kiểu ngôn ngữ này, cùng với Python và Ruby.
Tuy các trường đại học vẫn giảng dạy những ngôn ngữ như Java và C++ làm ngôn ngữ đầu tiên, nhưng chúng là các ngôn ngữ khó học hơn.
Factor #4: Các project bạn có thể xây dựng với Java
Đây là thế mạnh to lớn của JavaScript. JavaScript chạy trên bất cứ thiết bị có trình duyệt nào. Bạn có thể xây dựng hầu như mọi thứ với JavaScript và chia sẻ chúng đi khắp mọi nơi.
Bởi sự xuất hiện của JavaScript ở khắp mọi nơi, Jeff Atwood, đồng sáng lập Stack Overflow đưa ra một quy luật lý thú:
“Bất kỳ ứng dụng nào có thể viết được bằng JavaScript, đến cùng cũng được viết bằng JavaScript mà thôi.”
Và theo thời gian, Quy luật của Atwood càng được chứng thực.
Java cũng đã từng đưa ra lời hứa là sẽ chạy ở mọi nơi. Chắc bạn vẫn nhớ Java Applets chứ nhỉ. Oracle đã chính thức giết chết công cụ này mới năm nay.
Python cũng đang hứng chịu những vấn đề tương tự:
“Tôi đưa game mới làm sang cho người bạn nhứ thế nào ấy nhỉ? Hơn nữa, tôi đưa game này lên điện thoại và khoe với mấy đứa nhó mà không phải cài đặt được không?” — James Hague in Retiring Python as a Teaching Language
Ngược lại, dưới đây là một số ứng dụng được xây dựng trên trình duyệt trong CodePen. Bạn có thể click vào và chạy ngay trên trình duyệt của mình:
Học cho tốt một ngôn ngữ trước đa. Rồi mới học cái thứ hai.
Nếu bạn cứ liên tục nhảy từ ngôn ngữ này sang ngôn ngữ khác, bạn sẽ chẳng đi xa được đâu.
Để vượt qua mức căn bản, bạn cần phải học tốt một ngôn ngữ trước đã. Sau đó ngôn ngữ thứ hai sẽ trở nên dễ dàng hơn rất nhiều.
Từ đây, bạn có thể phân nhánh, phát triển thành một lập trình viên toàn diện hơn thông qua việc học tập nhiều ngôn ngữ:
- C là ngôn ngữ giúp bạn hiểu được cách làm việc của máy tính, đặc biệt là quản lý bộ nhớ, và rất hữu dụng trong phép tính hiệu năng cao
- C++ phù hợp lập trình game
- Python hoàn hảo cho khoa học và thống kê
- Java lại quan trọng nếu bạn muốn làm việc tại các công ty công nghệ lớn.
Nhưng hãy học JavaScript trước tiên.
Được rồi, giờ tôi sẽ cố gắng làm thử điều không tưởng —tôi sẽ thử và dự đoán phản đối ở dưới phần comment.
Objection #1: Nhưng mà không phải JavaScript chạy chậm lắm ư?
JavaScript, với đa số mục đích thực tiễn, là một ngôn ngữ có hiệu năng cao.
JavaScript (Node.js) nhanh hơn chút đỉnh so với Python, Ruby, và PHP.
Ngôn ngữ này cũng gần nhanh bằng các ngôn ngữ hiệu năng siêu cao như C++, Java, và Go.
Sau đây là kết quả của bảng benchmark toàn diện đa ngôn ngữ gần đây:
Objection #2: Nhưng mà JavaScript không phải typed tĩnh
Giống Python và Ruby, JavaScript typed động, thật tiện lợi. Nhưng bạn có thể gặp nhiều vấn đề. Ở đây tôi dự định dùng exampleArray làm array. Tôi set giá trị của nó, sau đó kiểm tra độ dài—nghĩa là số thành tố nó chứa đựng.
Nhưng sau đó tôi lại tình cờ chỉ định nó thành string.
Những lỗi như thế này xảy ra mọi lúc trong các ngôn ngữ typed động. Đa số lập trình viên chỉ việc ngưng check lại, và viết test tương tứng.
Nếu bạn bắt buộc phải có typing tĩnh trong ngôn ngữ lập trình đầu tiên của mình, tôi vẫn đề nghị học JavaScript trước. Sau đó bạn có thể nhanh chóng dùng TypeScript sau đó.
“Typescript không dễ lắm, nhưng nếu đã biết trước JavaScript thì khác.”—Alex Ewerlöf on TypeScript
Objection #3: Nhưng tôi thật sự muốn tạo ứng dụng di động
Tôi vẫn đề nghị học JavaScript trước.
JavaScript hỗ trợ nhiều công cụ giúp phát triển native mobile app, như Angular Cordova và React Native.
Để tạo điểm nhấn cho ứng dụng di động của mình, bạn sẽ cần đến backend phù hợp, từ đó cần đến một framework lập trình web phù hợp, như Node.js + Express.js.
Hơn nữa, cần chú ý là
Trước hết, tuy nhiều người dùng ứng dụng di động như vậy, nhưng gần nửa số công việc lập trình yêu cầu lập trình web. So với con số 8% không đáng kể của số công việc liên quan đến lập trình ứng dụng di động.
Số liệu nghề nghiệp của 49,525 developers, dựa trên 2016 Stack Overflow survey
Thời kỳ của tầm nhìn “Làm gì cũng phải có ứng đụng” qua đi lâu lắm rồi. Thay vào đó, đa số người dùng di động lại không muốn tải thêm ứng dụng mới.
Tất nhiên rồi— Họ vẫn sử dụng ứng dụng. Hầu hết là Facebook, Google Maps, và nhiều ứng dụng tiện lới khác. Bởi vậy, nhu cầu tuyển dụng lập trình app chỉ tập trung ở một số nhà tuyển dụng lớn mà thôi.
Nguồn Medium