CodeGym /Blog Java /Ngẫu nhiên /Lựa chọn ngôn ngữ lập trình
John Squirrels
Mức độ
San Francisco

Lựa chọn ngôn ngữ lập trình

Xuất bản trong nhóm
Lần đầu tiên tôi biết đến lập trình ở trường, trong các bài học về khoa học máy tính. Chúng bao gồm một số giải thích tẻ nhạt về cách thức hoạt động của hệ thống số n-ary. Và, tất nhiên, có một bài kiểm tra yêu cầu bạn viết trang web của riêng mình. Vào thời điểm đó, đối với tôi, dường như không thể có một công việc nào nhàm chán hơn thế. Tôi đã sai như thế nào! Thật không may, một chương trình khoa học máy tính ở trường trung học không cung cấp một bức tranh hoàn chỉnh về công việc CNTT và nó không giải thích cách chọn ngôn ngữ lập trình. Trước khi hỏi "Tôi nên học ngôn ngữ lập trình nào?", người mới bắt đầu nên tự làm quen với những ngôn ngữ hiện có và chúng khác nhau như thế nào. Chọn ngôn ngữ lập trình - 1

Ngưỡng đầu vào: Cao, thấp, trung bình

Các lập trình viên thường nói về "ngưỡng đầu vào" — một khái niệm phản ánh mức độ nỗ lực cần thiết đối với bất kỳ "nhà phát triển cơ sở" nào để thành thạo một ngôn ngữ lập trình đủ tốt để viết chương trình nghiêm túc đầu tiên của họ và tìm được việc làm. "Ngưỡng đầu vào" bao gồm kiến ​​thức về:
  • đặc thù cú pháp và sắc thái của ngôn ngữ
  • thư viện
  • thuật toán và cấu trúc dữ liệu.
Làm việc trong Excel thậm chí có thể được gọi là một loại lập trình. Nhân tiện, chương trình văn phòng quen thuộc này không đơn giản như vẻ ngoài của nó. Đối với một người dùng, ngưỡng đầu vào có thể là khả năng tạo bảng. Mặt khác, đó có thể là kiến ​​thức về các công thức và macro phức tạp. Trong cả hai trường hợp, ngưỡng này là nhỏ. Tiếp đến là các ngôn ngữ bán phần, chẳng hạn như lập trình 1C . Sau đó, có những ngôn ngữ đơn giản nhất để học, ví dụ: PHP . Hơn nữa, chúng tôi có các ngôn ngữ có cú pháp gốc (thường bắt nguồn từ tiếng Anh) không yêu cầu bạn xử lý việc quản lý bộ nhớ, ví dụ: JavaJS . Sau đó, có những ngôn ngữ yêu cầu xử lý bộ nhớ, cấu trúc dữ liệu và thuật toán cực kỳ cẩn thận, chẳng hạn như CC++ . Các ngôn ngữ đa mô hình trẻ, chẳng hạn như Scala , có lẽ có ngưỡng đầu vào cao nhất, bởi vì việc thành thạo chúng đòi hỏi bạn phải tìm hiểu sâu về rất nhiều mô hình lập trình. Nhưng trước khi chọn một ngôn ngữ, bạn nên quyết định xem mình muốn làm gì tiếp theo: phát triển cho web, doanh nghiệp, máy tính để bàn hoặc thiết bị di động .

Web hay không web?

mạng

Các lập trình viên web có thể được chia thành các nhà phát triển FrontendBackend . Bạn nên hiểu ý nghĩa của những thuật ngữ này. Các nhà phát triển giao diện người dùng tham gia vào phía máy khách, tức là những gì người dùng nhìn thấy. "Phần phụ trợ" là thao tác và lưu trữ dữ liệu — một phần của dịch vụ chạy trên máy chủ. Đối với một nhà phát triển Frontend quyết định nên học ngôn ngữ lập trình nào, JavaScript và các khung JavaScript (Angular JS, React và các ngôn ngữ khác) là rất cần thiết. Các phương ngữ JS, chẳng hạn như CoffeeScript và TypeScript, không phổ biến như cha mẹ của chúng, nhưng chúng cũng có thể hữu ích. Ngoài ra còn có Flash AS, và đã từng có JScript và VBScript, nhưng chỉ có khủng long mới nhớ điều này =) Bên cạnh tất cả những điều này, bạn cần hiểu HTMLCSS . Chọn ngôn ngữ lập trình - 2Nhiều người mới bắt đầu nghĩ rằng JavaScript và Java gần như giống nhau. Đừng nhầm lẫn giữa các ngôn ngữ này. JS trước đây được gọi là "LiveScript" và có tên hiện tại chỉ vì sự phổ biến của từ "Java". Đối với nhà phát triển phụ trợ web , PHP, Python, Ruby, Perl và Java là phù hợp. Ở đây tôi muốn tập trung vào PHP (chúng ta sẽ nói về các ngôn ngữ khác sau). PHP là một trong những ngôn ngữ dễ học nhất, có ngưỡng đầu vào thấp. Theo một cuộc khảo sát của các nhà phát triển web nổi tiếng, Ruby đang dần trở nên phổ biến — nó được yêu thích vì tính đơn giản và đẹp mắt.

Không phải web (doanh nghiệp, máy tính để bàn, thiết bị di động)

Tôi đã cố tình kết hợp các ngôn ngữ lập trình sau vào danh mục này với một cái tên lạ. Bạn có thể sử dụng hầu hết chúng để viết các ứng dụng dành cho doanh nghiệp, máy tính để bàn và thậm chí cả thiết bị di động. Python là ngôn ngữ lập trình hướng đối tượng dễ hiểu và gần đây đã trở nên cực kỳ phổ biến nhờ sự phát triển của máy học (ML): Các nhà phát triển ML sử dụng rộng rãi Python. máy họclà một lĩnh vực khá mới trong CNTT, và mặc dù chúng ta đã thấy nó đơm hoa kết trái, nhưng tôi sẽ không lao vào ngành này khi chọn ngôn ngữ lập trình. Đầu tiên, bạn sẽ cần một sự hiểu biết TUYỆT VỜI về toán học. Thứ hai, làn sóng phổ biến có thể trôi qua giống như cách đã xảy ra với "blockchain" hoặc "công nghệ nano". Điều đó nói rằng, bạn có thể nhớ rằng Python được sử dụng trong phát triển web. C++: một ngôn ngữ cổ điển mà mọi thứ được xây dựng trên toán tử "cộng-cộng". Ngôn ngữ này là tổ tiên của tất cả các ngôn ngữ lập trình hướng đối tượng phổ biến và người mới bắt đầu chắc chắn nên chú ý đến nó. Nhiều ứng dụng phổ biến đã được viết bằng cách sử dụng nó. Nhưng cơ hội tuyệt vời để "tự bắn vào chân mình" và cú pháp khó hiểu khiến xác suất một người mới bắt đầu thành thạo lập trình mastodon này trở nên bằng không. Kotlin, giống như Java dành cho những người sành điệu, là sự kết hợp điên rồ giữa OOP và lập trình chức năng. Nó đã trở nên phổ biến gần đây do thực tế là một nhà phát triển có kinh nghiệm khi chuyển từ Java sang Kotlin có thể cải thiện đáng kể năng suất của họ. Một nhà phát triển có kinh nghiệm sẽ nhanh chóng cảm thấy thoải mái với ngôn ngữ lập trình này. Nhân tiện, điều tương tự cũng áp dụng cho Scala, nhưng Kotlin phổ biến trong thế giới Android. Java rất dễ dàng cho người mới bắt đầu học. Đặc biệt với sự trợ giúp của CodeGym =) Cú pháp Java có thể hiểu được và mặc dù có nguy cơ "tự bắn vào chân mình", nhưng điều đó không quan trọng.

OOP hay POP?

Phương pháp thủ tục

Cách tiếp cận hướng thủ tục liên quan đến việc viết một chương trình bao gồm các câu lệnh tuần tự có thể được lắp ráp thành một thể thống nhất để giải quyết một cách hiệu quả một tập hợp các vấn đề cụ thể. Những ngôn ngữ như vậy bao gồm C , PureBasicPascal . Nói cách khác, những ngôn ngữ mang lại sự tuyệt vọng cho học sinh trung học và sinh viên đại học. Ngoài ra còn có GO tương đối trẻngôn ngữ. Điều đó nói rằng, làm quen với các ngôn ngữ thủ tục là rất hữu ích cho một nhà phát triển tiềm năng. Sự đắm chìm của tôi trong các ngôn ngữ thủ tục đến với hệ thống Wolfram Mathematica và nghiên cứu của trường đại học. Các thuật toán phù hợp và quy trình đơn giản, di chuyển tuyến tính từ đầu đến cuối chương trình, cho phép tôi tính toán các giá trị phù hợp với vật lý lý thuyết hiện đại. Ngôn ngữ lập trình "tuần tự" này chỉ là thứ giúp bạn hiểu rằng đôi khi việc viết mã thực hiện các phép tính theo cách thủ công sẽ dễ dàng hơn. Học lập trình hướng thủ tục (POP) cung cấp đào tạo thuật toán tốt, điều mà nhà tuyển dụng hầu như luôn muốn thấy ở một ứng viên xin việc. Tất cả mọi thứ trong CNTT đều được xây dựng trên nền tảng của các ngôn ngữ thủ tục, vì vậy đừng đánh giá thấp chúng. Nhân tiện, những người mới bắt đầu quyết định học ngôn ngữ lập trình nào thường nghĩ rằng chỉ các ngôn ngữ OOP mới hỗ trợ đa luồng. Đây không phải là sự thật. Các ngôn ngữ lập trình thủ tục cũng cho phép tính toán song song. Chọn ngôn ngữ lập trình - 3

Cách tiếp cận hướng đối tượng

Những người bắt đầu với ngôn ngữ thủ tục thường thành thạo về toán học, thuật toán và cấu trúc dữ liệu (do các trường đại học kỹ thuật chú trọng vào các lĩnh vực này). Tuy nhiên, thực tế ngày nay là những lập trình viên thành công thường là những người đã thành thạo một cách tiếp cận lập trình khác: mô hình hướng đối tượng. Hệ tư tưởng OOP cho phép bạn xây dựng các hệ thống toàn cầu thực sự. Một tính năng của phương pháp này là sự tương đồng của nó với thế giới thực:
  • Các đối tượng khác nhau tương tác với nhau và tồn tại độc lập với nhau.
  • Các đối tượng có một hệ thống phân cấp và có thể áp dụng hoặc thay đổi hành vi của tổ tiên của chúng.
  • Bạn có thể sử dụng các khái niệm trừu tượng, nhưng chỉ những đối tượng thực sự tồn tại mới có thể tương tác.

Ví dụ

Ngôn ngữ hướng thủ tục là công cụ để giải quyết các vấn đề cụ thể. Nếu nhiệm vụ của bạn thay đổi, dù chỉ một chút, có lẽ bạn sẽ phải dành thời gian và công sức để viết lại tất cả các thuật toán.

Hãy tưởng tượng một chương trình mô tả một đại lý ô tô bán ô tô và xe tải, cả mới và đã qua sử dụng. Trong ngôn ngữ thủ tục, bạn cần xác định các hàm xử lý đầu vào hoặc đầu ra của dữ liệu cho từng thực thể: ô tô mới, ô tô tải mới, ô tô cũ và ô tô tải đã qua sử dụng. OOP cung cấp những gì? Với cách tiếp cận hướng đối tượng, chúng ta chỉ cần định nghĩa một lớp cơ sở Xe lưu trữ các đặc điểm được chia sẻ bởi tất cả các loại xe:

  • Làm
  • Công cụ chuyển
  • mã lực
  • Năm
  • Mới hoặc đã qua sử dụng
  • Giá

Và các phương pháp tiếp nhận và gửi thông tin. Sau đó, chúng tôi tạo các đối tượng kế thừa các đặc điểm của lớp Xe: Ô tô và Xe tải. Chúng chứa thông tin liên quan cụ thể đến các loại phương tiện này, cũng như các phương thức nhập/xuất.

Đột nhiên, ban quản lý của đại lý quyết định mở rộng dòng sản phẩm bằng cách cung cấp cả xe máy. Theo cách tiếp cận thủ tục, chúng tôi sẽ phải tạo lại tất cả logic cho xe máy mới và đã qua sử dụng, trong khi ngôn ngữ OOP cho phép chúng tôi tạo một lớp Xe máy mới kế thừa tất cả các đặc điểm của siêu lớp Xe và chứa các cải tiến dành riêng cho xe máy.

Và điều gì sẽ xảy ra nếu chúng ta thêm nhiều phương tiện khác nhau? Việc triển khai theo thủ tục sẽ yêu cầu nhiều công việc hơn OOP. Hơn nữa, đội hình càng lớn thì càng cần ít hoạt động liên quan đến các đối tượng.

Vì vậy, OOP là một phong cách lập trình cho phép bạn kết hợp dữ liệu và phương thức thành một thực thể duy nhất và làm việc với chúng như một đối tượng thống nhất. Các thực thể có thể được sắp xếp theo thứ bậc và tương tác với nhau mà không cần đi sâu vào chi tiết triển khai nội bộ của nhau. Tôi sẽ chỉ ra ba lý do tại sao OOP là cách tiếp cận tiến bộ hơn đối với tôi:
  1. OOP liên quan đến sự phát triển độc lập của các mô-đun riêng lẻ, cho phép lập trình viên hoặc nhóm chọn phương pháp và ranh giới liên hệ và trao đổi thông tin.
  2. Mã được phân vùng thành các mô-đun nhỏ dễ đọc hơn nhiều so với các thủ tục nguyên khối. Nhờ đó, người ngoài có thể nhanh chóng hiểu mã của bạn và tương tự như vậy, bạn có thể tham gia một dự án mới nếu cần.
  3. Một lớp có thể được thay đổi mà không ảnh hưởng đến sự tương tác của lớp khác, nhưng sự thay đổi như vậy có thể ảnh hưởng đến hệ thống phân cấp của các đối tượng con. Khi bạn đã thành thạo cách tiếp cận này, việc mở rộng và sửa đổi một chương trình trở nên đơn giản.
Hãy nhớ rằng một cách tiếp cận không xung đột với cách tiếp cận khác, nhưng OOP vẫn cao hơn trong hệ thống phân cấp. Vì vậy, tại sao tôi khuyên dùng Java? Tôi xin nhấn mạnh những lý do sau:
  1. Đa nền tảng.

    Java hoạt động ở mọi nơi nhờ máy ảo Java (JVM). Một trong những ưu điểm chính của ngôn ngữ này là tính chất đa nền tảng của nó: không cần phải suy nghĩ về việc thêm thư viện nào hoặc kiến ​​trúc của một bộ xử lý cụ thể. "Viết một lần, chạy mọi nơi."

  2. Tài liệu.

    Có một cơ sở tài liệu khổng lồ: tài liệu chính thức của Oracle, cổng đào tạo và một cộng đồng không ngừng phát triển. Câu trả lời cho hầu hết các câu hỏi phát sinh trong quá trình phát triển có thể được tìm thấy trong vài phút. Điều chính là hiểu những gì cần nhập vào công cụ tìm kiếm =)

  3. Phổ biến.

    Java là ngôn ngữ lập trình phổ biến nhất trên thế giới: ngoài các nhà phát triển web và Android đã nói ở trên, hầu hết mọi nhà phát triển doanh nghiệp đều viết bằng Java. Doanh nghiệp đề cập đến sự phát triển nội bộ của công ty cần thiết cho nhu cầu của các tập đoàn lớn.

    Hàng năm, những kẻ thù ghét dự đoán "cái chết của Java". Họ nói, " Oracle sẽ ngừng hỗ trợ nó. Bạn đang hoàn toàn lãng phí thời gian của mình. " Điều này không đúng! Họ hứa sẽ phát hành các phiên bản Java mới sáu tháng một lần.

    Đối với tôi, các biểu thức lambda trong Java 8 là một cuộc cách mạng và là một sự khám phá, chưa kể đến các phiên bản mới! Tôi hiện đang làm việc trong một dự án "di sản", vì vậy tôi không đi sâu vào những cải tiến mới nhất, nhưng thực tế là Java vẫn còn tồn tại.

    Chọn ngôn ngữ lập trình - 4
  4. Android.

    Trong 4 năm qua, Android đã liên tục nắm giữ hơn 80% thị trường điện thoại di động . TV, trình phát đa phương tiện và thậm chí cả hệ thống thông tin giải trí trên ô tô đều chạy trên hệ điều hành này. Và việc phát triển ứng dụng cho hệ điều hành này chủ yếu diễn ra bằng Java. Chỉ cần tưởng tượng những triển vọng đang mở ra. Khi tôi nhận công việc là một nhà phát triển Android, tôi tự hỏi sản phẩm mà tôi đang phát triển đáng giá bao nhiêu? Hóa ra, giá là khoảng 5 đô la một năm. Điều đó đặt ra câu hỏi, "vậy thì tiền từ đâu ra cho văn phòng này, tiền lương, phòng ăn nhẹ, bàn bóng bàn, rô-bốt và các đặc quyền khác? Câu trả lời nằm ở số lượng: ứng dụng của chúng tôi có 20 triệu người dùng.

  5. Lương.

    Và bây giờ là điều tuyệt vời nhất: lương của nhà phát triển Java thuộc hàng cao nhất trong ngành. Xét cho cùng, bạn dự định học lập trình vì một mục đích cụ thể: để kiếm được một công việc tốt.

Sự phổ biến của ngôn ngữ lập trình

Có những nguồn thông tin chính thức, vì vậy hãy chuyển sang chúng. Theo TIOBE , Java đứng đầu vào tháng 10 năm 2019. Trong bảng xếp hạng PYPL , Java đứng thứ hai, vượt xa JS và là đối thủ của Python thời thượng.

Phần kết luận

Khi một người mới bắt đầu dự tính chọn một ngôn ngữ lập trình, đây là điều họ nên chú ý:
  • Mức độ phổ biến (Java luôn chiếm vị trí hàng đầu)
  • Ngưỡng đầu vào (đối với Java là trung bình: nhà tuyển dụng yêu cầu nhiều kỹ năng khác nhau)
  • Tài liệu có sẵn (chào mừng bạn đến với CodeGym =))
  • Lĩnh vực ứng dụng: càng nhiều lĩnh vực sử dụng ngôn ngữ lập trình thì càng cần nhiều chuyên gia trên thị trường. Tôi đã đề cập đến cách Java hỗ trợ phát triển đa nền tảng, nhưng tôi không bao giờ chán việc lặp lại nó.
Tất nhiên, có những cạm bẫy ở khắp mọi nơi, nhưng ai tiến một bước thì sẽ tiến lên phía trước: chỉ bạn mới có thể quyết định nên chọn ngôn ngữ lập trình nào. Chúc may mắn trong học tập!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION