Bạn nên học ngôn ngữ lập trình nào trước? ʇdıɹɔsɐʌɐɾ: ɹǝʍsuɐ

Hầu hết mọi người đều hướng tới việc học lập trình bắt đầu bằng một tìm kiếm Google vào đêm khuya.

Thông thường đó là một cái gì đó giống như Tìm hiểu ____

Nhưng làm thế nào để họ quyết định tìm kiếm ngôn ngữ nào?

Họ luôn nói đùa về Java trên Thung lũng Silicon. Tôi đoán tôi nên học điều đó.

Hoặc là:

Cúc Haskell. Thật nóng bỏng ngay bây giờ. Haskell.

Hoặc là:

Gopher mà đi thì dễ thương quá.

Và sau đó là phần còn lại của chúng tôi. Có lẽ chúng ta sẽ tìm kiếm một cái gì đó như:

Tôi nên học ngôn ngữ lập trình nào trước?

Một số câu hỏi thường được hỏi đến mức họ được điều trị bằng đồ họa thông tin đầy đủ. Nhưng đây là một trong số đó:

Tín dụng hình ảnh

Quyết định về ngôn ngữ lập trình đầu tiên của bạn có thể là một quá trình thú vị - giống như một trong những nhân vật mà Quentin Tarantino là bạn? câu đố cá tính.

Nhưng trước khi bạn chạy đi học Ruby vì bạn rất thích chơi với Play-Doh khi còn bé, hãy để tôi nhắc bạn: tiền cược ở đây khá cao.

Bạn sẽ mất hàng trăm giờ luyện tập để trở nên có năng lực từ xa với ngôn ngữ lập trình đầu tiên của bạn.

Vì vậy, bạn nên xem xét các yếu tố sau:

  • thị trường việc làm cho ngôn ngữ
  • triển vọng dài hạn cho ngôn ngữ
  • ngôn ngữ dễ học như thế nào
  • những dự án nào bạn có thể xây dựng trong khi bạn học (và chia sẻ với bạn bè để bạn có thể duy trì động lực)

Mỗi năm mang đến những ngôn ngữ lập trình mới, và với chúng, những bài báo học thuật mới. Và truyện tranh web mới.

Nghiêm túc. Kiểm tra đá quý này từ tháng trước:

Khi nói đến việc chọn một ngôn ngữ lập trình đầu tiên, không thiếu các lựa chọn. Để thu hẹp nó xuống một chút, đây là những tìm kiếm phổ biến nhất của Google liên quan đến học lập trình, trong 12 năm qua:

Java đã có những thăng trầm.

Python đã dần dần tăng lên để trở thành sự lựa chọn phổ biến nhất.

Nhưng ẩn giấu bên dưới những thứ này là Động cơ nhỏ có thể, dần dần trở nên phổ biến trong vài năm qua. Và công cụ đó là JavaScript.

Trước khi tôi nói về các ngôn ngữ lập trình này, hãy để tôi làm rõ:

  • Tôi không tranh luận rằng bất kỳ một ngôn ngữ nào là khách quan tốt hơn bất kỳ ngôn ngữ nào
  • Tôi đồng ý rằng các nhà phát triển cuối cùng nên học nhiều hơn một ngôn ngữ
  • Tôi lập luận rằng trước tiên họ nên học tốt một ngôn ngữ. Và - như bạn có thể đoán từ văn bản lộn ngược trong tiêu đề của tôi - ngôn ngữ đó phải là JavaScript.

Hãy bắt đầu mọi thứ bằng cách khám phá cách lập trình hiện đang được dạy ở trường.

Khoa học máy tính 101

Các trường đại học có truyền thống dạy lập trình dưới sự bảo trợ của khoa học máy tính, mà bản thân nó thường được coi là một phần mở rộng của toán học, hoặc gắn liền với một mức độ kỹ thuật điện.

Tất nhiên, như bạn có thể đã nghe đến bây giờ:

Giáo dục khoa học máy tính không thể làm cho bất cứ ai trở thành một lập trình viên chuyên gia, ngoài việc nghiên cứu bút vẽ và bột màu có thể khiến ai đó trở thành một họa sĩ chuyên gia. - Eric S. Raymond

Kể từ năm 2016, nhiều trường đại học vẫn coi chương trình như khoa học máy tính và khoa học máy tính giống như toán học.

Do đó, nhiều khóa học lập trình giới thiệu tập trung vào các ngôn ngữ trừu tượng ở mức độ thấp như C hoặc các ngôn ngữ tập trung vào toán học như MATLAB.

Và các bộ phận thường ở lại khóa học, chỉ vào bảng xếp hạng ngôn ngữ lập trình hàng năm như Chỉ số TIOBE, hoặc bảng này từ IEEE:

Hầu hết các bảng xếp hạng này trông gần giống với cách chúng 10 năm trước.

Nhưng thay đổi không xảy ra. Ngay cả trong học viện.

Vào năm 2014, Python đã vượt qua Java như một ngôn ngữ giảng dạy phổ biến nhất tại các chương trình Khoa học Máy tính hàng đầu của Hoa Kỳ.

Và một sự thay đổi khác bị ràng buộc với việc cuối cùng là xảy ra.

Bởi vì nếu bạn nhìn vào các ngôn ngữ thực sự được sử dụng bởi lực lượng lao động, nó sẽ vẽ ra một bức tranh rất khác:

JavaScript cho đến nay là ngôn ngữ phổ biến nhất được sử dụng bởi 49.397 nhà phát triển đã trả lời Khảo sát năm 2016 của Stack Overflow.

Hơn một nửa số nhà phát triển sử dụng JavaScript. Nó rất quan trọng đối với phát triển web front-end và ngày càng phù hợp để phát triển back-end. Và nó nhanh chóng mở rộng sang các lĩnh vực như phát triển trò chơi và Internet of Things.

Các bài đăng công việc cũng đề cập đến JavaScript nhiều hơn bất kỳ ngôn ngữ lập trình nào khác ngoài Java:

Dữ liệu từ công cụ tổng hợp đăng công việc lớn nhất thế giới, Truth.com

Không phải ngẫu nhiên mà chúng tôi xây dựng chương trình giảng dạy của cộng đồng nguồn mở xung quanh JavaScript. Trong hai năm qua, hơn 5.000 người đã sử dụng Free Code Camp để có được công việc phát triển đầu tiên của họ.

Tôi không ủng hộ JavaScript vì tôi dạy nó. Tôi dạy JavaScript vì đó là con đường chắc chắn nhất cho công việc nhà phát triển đầu tiên.

Nhưng JavaScript có phù hợp với bạn không? Có xứng đáng là ngôn ngữ lập trình đầu tiên của bạn? Hãy khám phá những yếu tố tôi đã đề cập trước đó.

Yếu tố số 1: Thị trường việc làm

Nếu bạn đang học lập trình hoàn toàn vì tò mò trí tuệ, hãy bỏ qua yếu tố này. Nhưng nếu bạn - như đại đa số những người học lập trình - muốn sử dụng kỹ năng này để có việc làm thì đây là một sự cân nhắc quan trọng.

Như tôi đã đề cập trước đó, Java được đề cập trong các bài đăng công việc nhiều hơn bất kỳ ngôn ngữ lập trình nào khác. JavaScript là một thứ hai gần.

Nhưng đây là vấn đề về JavaScript: mặc dù đã tồn tại được 20 năm, nhưng gần đây nó đã trở thành một công cụ nghiêm túc mà các công ty như Netflix, Walmart và PayPal sẽ xây dựng toàn bộ ứng dụng.

Kết quả là, rất nhiều công ty đang thuê các nhà phát triển JavaScript, nhưng không có nhiều công ty trên thị trường việc làm.

Dữ liệu từ Truth.com

Có 2,7 nhà phát triển Java cạnh tranh cho mọi vị trí Java mở. Cạnh tranh cho các công việc PHP và iOS cũng rất khốc liệt.

Nhưng đối với mỗi vị trí JavaScript mở, chỉ có 0,6 nhà phát triển JavaScript. Đây là thị trường dành cho các nhà phát triển có kỹ năng JavaScript.

Yếu tố số 2: Triển vọng dài hạn

Dự án JavaScript trung bình nhận được gấp đôi số yêu cầu kéo so với dự án Java, Python hoặc Ruby trung bình. Và trên hết, JavaScript đang phát triển nhanh hơn bất kỳ ngôn ngữ phổ biến nào khác.

Nguồn: Nhà nước tháng 10 năm 2016 của GitHub

Hệ sinh thái của JavaScript cũng được hưởng lợi từ một khoản đầu tư lớn về tiền bạc và tài năng kỹ thuật từ các công ty như Google, Microsoft, Facebook và Netflix.

Ví dụ, TypeScript (một siêu mã JavaScript được gõ tĩnh) có hơn 100 người đóng góp mã nguồn mở, nhiều người trong số họ là nhân viên của Microsoft và Google được trả tiền để làm việc với nó.

Kiểu hợp tác liên công ty này khó tìm thấy hơn với Java. Oracle - người sở hữu hiệu quả Java thông qua việc mua lại Sun microsystems - thường kiện các công ty cố gắng mở rộng nó.

Yếu tố số 3: Khó học

Đây là một nhại lại của một truyện tranh XKCD.

Hầu hết các lập trình viên sẽ đồng ý rằng các ngôn ngữ kịch bản cấp cao tương đối dễ học. JavaScript rơi vào danh mục này, cùng với Python và Ruby.

Mặc dù các trường đại học vẫn dạy các ngôn ngữ như Java và C ++ như các ngôn ngữ đầu tiên, chúng vẫn khó học hơn đáng kể.

Yếu tố số 4: Các dự án bạn có thể xây dựng với nó

Đây là nơi JavaScript thực sự tỏa sáng. JavaScript chạy trên bất kỳ thiết bị nào có trình duyệt, ngay trên trình duyệt. Về cơ bản, bạn có thể xây dựng mọi thứ bằng JavaScript và chia sẻ nó ở bất cứ đâu.

Vì tính phổ biến của JavaScript, đồng sáng lập Stack Overflow Jeff Atwood đã đặt ra luật lệ nổi tiếng hiện nay của mình:

Bất kỳ ứng dụng nào có thể được viết bằng JavaScript, cuối cùng sẽ được viết bằng JavaScript.

Và với mỗi tháng trôi qua, Luật của Atwood giữ vững.

Java cũng từng hứa sẽ chạy ở mọi nơi. Bạn có thể nhớ các ứng dụng Java. Oracle đã chính thức giết họ vào đầu năm nay.

Python chịu nhiều vấn đề tương tự:

Làm thế nào tôi có thể cung cấp trò chơi này tôi đã làm cho bạn bè của tôi? Thậm chí tốt hơn, có cách nào tôi có thể đặt cái này vào điện thoại để tôi có thể cho trẻ xem ở trường mà không cần phải cài đặt không? Ừm - James Hague trong việc nghỉ hưu Python như một ngôn ngữ giảng dạy

Ngược lại, đây là một số ứng dụng mà các thành viên của cộng đồng nguồn mở của chúng tôi xây dựng trong trình duyệt của họ trên CodePen. Bạn có thể nhấp qua và sử dụng các quyền này trong trình duyệt của mình:

Trò chơi Simon phong cách thập niên 1970Trò chơi cuộc sống của ConwayTìm kiếm Wikipedia theo chủ đề Chiến tranh giữa các vì saoMột trò chơi thu thập dữ liệu roguelike

Học tốt một ngôn ngữ. Sau đó học một cái thứ hai.

Nếu bạn tiếp tục nhảy từ ngôn ngữ này sang ngôn ngữ khác, bạn sẽ không đi được xa.

Để vượt ra khỏi những điều cơ bản, bạn cần học tốt ngôn ngữ đầu tiên của mình. Sau đó, ngôn ngữ thứ hai của bạn sẽ dễ dàng hơn nhiều.

Từ đó, bạn có thể phân nhánh và trở thành một nhà phát triển toàn diện hơn bằng cách học nhiều ngôn ngữ:

  • C là một cách tuyệt vời để tìm hiểu cách máy tính thực sự hoạt động về mặt quản lý bộ nhớ và rất hữu ích trong điện toán hiệu năng cao
  • C ++ rất tốt cho phát triển game.
  • Python là tuyệt vời cho khoa học và thống kê.
  • Java rất 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ọc JavaScript trước.

OK, bây giờ tôi sẽ cố gắng không thể - Tôi sẽ thử và dự đoán sự phản đối từ phần bình luận.

Phản đối # 1: Nhưng JavaScript không chậm?

JavaScript là - cho hầu hết các mục đích thực tế - nhanh như các ngôn ngữ hiệu suất cao.

JavaScript (Node.js) là các đơn đặt hàng có cường độ nhanh hơn Python, Ruby và PHP.

Nó cũng nhanh gần như các ngôn ngữ hiệu suất cao như C ++, Java và Go.

Dưới đây là kết quả của điểm chuẩn ngôn ngữ chéo toàn diện gần đây nhất:

Phản đối # 2: Nhưng JavaScript không được nhập tĩnh

Giống như Python và Ruby, JavaScript được gõ động, thuận tiện. Nhưng bạn có thể gặp rắc rối. Ở đây tôi dự định exampleArray là một mảng. Tôi đặt giá trị của nó, sau đó kiểm tra độ dài của nó - nghĩa là số phần tử mà nó chứa.

exampleArray = [1, 2] -> [1, 2] exampleArray.length -> 2

Nhưng sau đó tôi vô tình gán nó là một chuỗi.

exampleArray = văn bản của người Hồi giáo -> văn bản của người Nhật Bản exampleArray.length -> 4

Những loại lỗi này xảy ra mọi lúc trong các ngôn ngữ được gõ động. Hầu hết các nhà phát triển chỉ cần đặt kiểm tra tại chỗ để ngăn chặn chúng và viết các bài kiểm tra phù hợp.

Nếu bạn hoàn toàn phải gõ tĩnh trong ngôn ngữ lập trình đầu tiên của mình, thì tôi vẫn khuyên bạn nên học JavaScript trước. Sau đó, bạn có thể nhanh chóng chọn TypeScript.

Các loại mô tả có một đường cong học tập, nhưng nếu bạn đã biết JavaScript, nó sẽ rất trơn tru. - Alex Ewerlöf trên TypeScript

Phản đối # 3: Nhưng tôi thực sự muốn tạo một ứng dụng di động

Tôi vẫn khuyên bạn nên học JavaScript trước.

  1. JavaScript có một số công cụ để tạo các ứng dụng di động gốc, như Angular Cordova và React Native.
  2. Để ứng dụng di động của bạn thực sự làm được bất cứ điều gì thú vị, có lẽ nó sẽ cần một back end thích hợp, mà bạn sẽ muốn xây dựng với một khung phát triển web phù hợp, như Node.js + Express.js.

Ngoài ra, cũng đáng để chỉ ra rằng những ngày tốt nhất của sự phát triển ứng dụng di động rất có thể đứng sau nó.

Đối với người mới bắt đầu, nhiều như mọi người sử dụng ứng dụng di động, gần một nửa số công việc của nhà phát triển là phát triển web. So sánh điều này với chỉ 8% công việc liên quan đến phát triển ứng dụng di động.

Nghề nghiệp của 49.525 nhà phát triển, dựa trên các câu trả lời cho khảo sát Stack Overflow 2016.

Tầm nhìn rộng lớn về việc có một ứng dụng cho điều đó đã không được thông qua. Thay vào đó, hầu hết chủ sở hữu điện thoại thông minh đã ngừng tải xuống ứng dụng mới.

Chắc chắn - họ vẫn sử dụng ứng dụng. Chủ yếu là Facebook, Google Maps và một số ít người khác. Do đó, phần lớn nhu cầu cho các nhà phát triển ứng dụng di động tập trung ở một số nhà tuyển dụng lớn.

Triển vọng cho những công việc phát triển di động là khó dự đoán. Nhiều khía cạnh phát triển, duy trì và phân phối ứng dụng di động dễ dàng hơn với JavaScript. Vì vậy, các công ty như Facebook và Google đang đầu tư mạnh vào các công cụ tốt hơn để xây dựng những công cụ này bằng JavaScript.

Tính đến năm 2016, khá nhiều sự phát triển là phát triển web. Mọi thứ đều chạm vào nền tảng lớn đó là trên mạng. Và làn sóng thiết bị tiếp theo mà bạn sẽ nói chuyện xung quanh nhà của bạn và những chiếc ô tô đón con bạn đi học - tất cả chúng cũng sẽ được kết nối với nhau bằng cách sử dụng web.

Và điều đó có nghĩa là JavaScript.

Phản đối số 4: Không phải JavaScript là ngôn ngữ đồ chơi được viết trong 10 ngày sao?

JavaScript có một lịch sử kỳ quặc.

Bạn chắc chắn sẽ nghe thấy mọi người cười đùa với chi phí của nó.

Mọi người cũng thích ghét trên C ++. Và giống như JavaScript, C ++ đã thành công bất chấp sự ghét bỏ này và bây giờ nó cũng xuất hiện ở mọi nơi.

Vì vậy, nếu bất cứ ai từng cho bạn một thời gian khó khăn để học JavaScript thay vì ngôn ngữ ưu tú trong tuần, chỉ cần nhớ những từ nổi tiếng của anh chàng đã tạo ra C ++:

Chỉ có hai loại ngôn ngữ lập trình: những người đó luôn chê bai và những người không sử dụng. - Bjarne Stroustrup

Tôi chỉ viết về lập trình và công nghệ. Nếu bạn theo dõi tôi trên Twitter, tôi sẽ không lãng phí thời gian của bạn.