JavaRush /Blog Java /Random-VI /Lựa chọn ngôn ngữ lập trình

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 lớp khoa học máy tính. Đây là một số lời giải thích tẻ nhạt về nguyên lý của hệ thống số n-ary. Vâng, để thử nghiệm, tôi phải viết trang web của riêng mình. Sau đó, đối với tôi, dường như không còn hoạt động nào nhàm chán hơn trên thế giới. Tôi đã sai lầm biết bao! Thật không may, chương trình giảng dạy khoa học máy tính ở trường không cung cấp bức tranh toàn cảnh về công việc của CNTT và cũng không rõ ràng về cách chọn ngôn ngữ lập trình. Lựa chọn ngôn ngữ lập trình - 1Trước khi đặt câu hỏi “Nên chọn học ngôn ngữ lập trình nào”, người mới bắt đầu nên làm quen với những ngôn ngữ tồn tại và sự khác biệt của chúng là gì.

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

Trong số các lập trình viên, bạn thường có thể nghe 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 để một cá nhân “cấp dưới” thành thạo ngôn ngữ lập trình ở mức đủ để viết chương trình nghiêm túc đầu tiên của mình và tìm việc làm. “Ngưỡng đầu vào” bao gồm kiến ​​thức:
  • đặc điểm 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.
Trên thực tế, ngay cả làm việc trong Excel cũng có thể được gọi là một kiểu 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ư người ta tưởng. Đối với một người, ngưỡng đầu vào sẽ là khả năng xây dựng bảng, đối với người khác - kiến ​​​​thức về các công thức và macro phức tạp. Trong mọi trường hợp, ngưỡng này là nhỏ. Tiếp theo là gần như ngôn ngữ: ví dụ: lập trình 1C . Sau đó - những ngôn ngữ dễ học nhất: ví dụ: PHP . Tiếp theo là các ngôn ngữ có cú pháp nguyên gốc (thường bắt nguồn từ tiếng Anh) không yêu cầu tương tác thủ công với bộ nhớ: ví dụ: Java , JS . 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: ví dụ: C , C++ . Có lẽ, các ngôn ngữ đa mô hình non trẻ có rào cản gia nhập cao nhất, bởi vì để thành thạo chúng, bạn cần phải ăn nhiều hơn một con chó trong các ngôn ngữ lập trình khác: ví dụ: Scala . Nhưng trước hết, khi chọn 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 ứng dụng web, doanh nghiệp, máy tính để bàn hoặc thiết bị di động .

Web hay không Web?

Web

Các lập trình viên web có thể được chia thành các nhà phát triển FrontendBackend . Thật đáng để hiểu những thuật ngữ này có nghĩa là gì. Các nhà phát triển “Frontend” xử lý cái gọi là phía khách hàng - những gì người dùng sẽ thấy. “Backend” là phần phần mềm và phần cứng của dịch vụ - những gì chạy trên máy chủ. Để một nhà phát triển Frontend quyết định chọn ngôn ngữ lập trình nào, thứ bắt buộc phải có là JavaScript và các framework của nó: Angular JS, React và các ngôn ngữ khác. Các phương ngữ JS không phổ biến như ngôn ngữ gốc nhưng cũng có thể hữu ích: CoffeeScript, TypeScript. Ngoài ra còn có flash AS, trước đây có JScript và VBScript nhưng chỉ có khủng long mới nhớ ra =)) Ngoài ra cần phải hiểu HTMLCSS .
Lựa chọn ngôn ngữ lập trình - 2
Nhiều người mới bắt đầu nghĩ rằng JavaScript và Java gần như giống nhau, không nên nhầm lẫn những ngôn ngữ này. JS từng được gọi là “LiveScript” và có tên hiện tại chính xác là do sự phổ biến của từ “Java”. PHP, Python, Ruby, Pearl, Java phù hợp cho web backend . Ở đây tôi muốn thu hút sự chú ý đến PHP - chúng ta sẽ nói về các ngôn ngữ khác sau - một trong những ngôn ngữ dễ học nhất, có ngưỡng đầu vào thấp. Ruby, được đánh giá qua một cuộc khảo sát với các nhà phát triển web quen thuộc, đang dần dần trở nên phổ biến: nó được yêu thích vì tính ngắn gọn và vẻ đẹp của nó.

Không phải Web (Doanh nghiệp, Máy tính để bàn, Thiết bị di động)

Tôi đặc biệt nhóm các ngôn ngữ lập trình này vào một danh mục có cái tên lạ lùng như vậy. Hầu hết chúng có thể được sử dụ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 , một OOLP dễ hiểu, gần đây đã trở nên cực kỳ phổ biến nhờ sự phát triển của Machine Learning : những người theo nó sử dụng rộng rãi Python. ML là một lĩnh vực khá non trẻ trong lĩnh vực CNTT và mặc dù đã thu được những thành quả đầu tiên nhưng tôi sẽ không vội đi sâu vào ngành này khi chọn ngôn ngữ lập trình. Đầu tiên, bạn cần phải RẤT giỏi toán. Thứ hai, làn sóng phổ biến có thể diễn ra tương tự như với “blockchain” hoặc “công nghệ nano”. Ngoài ra, như bạn còn nhớ, Python được sử dụng trong phát triển web. C++ : cổ điển, mọi thứ đều được xây dựng trên cơ sở “điểm cộng”. Ngôn ngữ này là tiền thân của tất cả các OOLP 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 đều dựa trên nó. Nhưng khả năng cao là "tự bắn vào chân mình" và cú pháp khó hiểu sẽ phủ nhận khả năng người mới bắt đầu thành thạo môn lập trình voi răng mấu này. Kotlin - Java dành cho dân hipster - sự kết hợp điên rồ giữa OOP và lập trình chức năng. Gần đây phổ biến do một nhà phát triển có kinh nghiệm chuyển từ Java sang Kotlin đã cải thiện đáng kể năng suất của anh ấy. Một nhà phát triển có kinh nghiệm sẽ nhanh chóng làm quen với ngôn ngữ này. Nhân tiện, điều tương tự cũng áp dụng cho Scala, nhưng Kotlin lại phổ biến trong Android. Java rất dễ học đối với người mới bắt đầu. Bao gồm cả, nhờ JavaRush : chính ở đây tôi đã hiểu cách chọn ngôn ngữ lập trình =) Cú pháp Java rõ ràng, có khả năng “tự bắn vào chân mình”, nhưng không nghiêm trọng.

OOP hay POP?

Cách tiếp cận thủ tục

Cách tiếp cận hướng thủ tục bao gồm 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 tập hợp thành một tổng thể duy nhất để giải quyết một cách hiệu quả một loạt vấn đề cụ thể. Những ngôn ngữ này bao gồm: C , PureBasicPascal . Những điều tương tự đã mang lại sự chán nản cho học sinh trung học và trung học cơ sở. Ngoài ra còn có GO tương đối trẻ . Tuy nhiên, việc làm quen với các ngôn ngữ thủ tục rất hữu ích cho một nhà phát triển tiềm năng. Đối với tôi, việc đắm mình trong các ngôn ngữ thủ tục gắn liền với hệ thống Mathematica (Wolfram) và các hoạt động nghiên cứu của trường đại học. Nhờ các phương pháp tiếp cận thuật toán phù hợp và các quy trình đơn giản, di chuyển tuyến tính từ đầu đến cuối chương trình, tôi có thể tính toán các giá trị có liên quan đến vật lý lý thuyết hiện đại. Chính nhờ những ngôn ngữ “tuần tự” này mà bạn bắt đầu hiểu rằng đôi khi viết mã còn dễ hơn là tự mình đếm. Nghiên cứu PPP cung cấp đào tạo về thuật toán tốt, điều mà nhà tuyển dụng hầu như luôn muốn thấy ở ứng viên khi tuyển dụng. Nền tảng của mọi thứ và mọi người trong lĩnh vực CNTT đều được xây dựng trên 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 chọn ngôn ngữ lập trình nào để học thường nghĩ rằng đa luồng là đặc quyền độc quyền của OOP. Cái này sai. Ngôn ngữ lập trình thủ tục cũng cho phép bạn thực hiện các phép tính song song.
Lựa 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 có kiến ​​​​thức tốt về toán học, thuật toán và cấu trúc dữ liệu (điều này là do các trường đại học kỹ thuật nhấn mạnh vào các lĩnh vực kiến ​​thức này). Tuy nhiên, trong thực tế hiện đại, những lập trình viên thành công thường là những người nắm vững cách tiếp cận lập trình khác - hướng đối tượng. Hệ tư tưởng OOP giúp xây dựng các hệ thống toàn cầu thực sự có thể thực hiện được. Điểm đặc biệt của phương pháp này là sự giống nhau 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ó hệ thống phân cấp và có khả năng áp dụng hoặc thay đổi hành vi của tổ tiên chúng.
  • Bạn có thể thao tác với 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ể. Và nếu nhiệm vụ của bạn có một sự thay đổi, dù chỉ là một thay đổi nhỏ, rất có thể bạn sẽ phải tốn thời gian và công sức để viết lại tất cả các thuật toán.

Представим программу, описывающую автосалон, который продает легковые и грузовые автомобor, How новые, так и подержанные. В proceduresном языке для каждого an object нужно описать функции, обрабатывающие ввод or вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При an objectно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый or б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними How с цельным an objectом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

    Cơ sở tài liệu rộng nhất: tài liệu chính thức của Oracle, cổng đào tạo, cộng đồng không ngừng phát triển. Bạn có thể tìm thấy câu trả lời cho hầu hết các câu hỏi nảy sinh trong quá trình phát triển trong vài phút, điều chính là hiểu nội dung 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êu trên, hầu hết mọi nhà phát triển doanh nghiệp lần đầu tiên đều viết bằng Java. Doanh nghiệp là sự phát triển nội bộ 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 đều dự đoán về “cái chết của Java”, họ nói: “ Oracle sẽ ngừng hỗ trợ nó và nói chung là bạn đang làm những điều vô nghĩa ”. Cái này sai! Các phiên bản mới của Java được hứa hẹn sẽ được phát hành sáu tháng một lần. Bạn có thể đọc những cải tiến và tính năng quan trọng nhất của phiên bản mới nhất tại đây .

    Đối với tôi, lambdas trong Java 8 là một cuộc cách mạng và một khám phá, chưa kể đến các phiên bản mới! Bây giờ tôi đang làm việc trong một dự án “ngược dòng”, vì vậy tôi không đi sâu vào các đổi mới, nhưng việc Java vẫn tồn tại là một sự thật.

    Lựa chọn ngôn ngữ lập trình - 4
  4. Android.

    Android đã tự tin chiếm lĩnh hơn 80% thị trường điện thoại di động trong 4 năm qua, TV, đầu phát media và thậm chí cả hệ thống media trên ô tô đều hoạt động theo hệ điều hành này. Và việc phát triển hệ điều hành này được thực hiện chủ yếu 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 công việc là nhà phát triển Android, tôi bắt đầu quan tâm: sản phẩm tôi đang phát triển có giá bao nhiêu? Hóa ra giá mỗi năm là khoảng 5 đô la. Một câu hỏi hợp lý được đặt ra: nguồn vốn cho văn phòng này, tiền lương, bánh quy, bàn tennis, robot và những “thứ tốt đẹp” khác đến từ đâu? Đó là vấn đề số lượng: ứng dụng của chúng tôi có 20 triệu người dùng.

  5. Lương.

    Và xin nói thêm: lương của một nhà phát triển Java là một trong những mức lương cao nhất trong ngành. Bạn sẽ học lập trình vì một mục đích cụ thể: để có được một công việc tốt.

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

Khi chọn ngôn ngữ lập trình, bạn cần nghĩ đến mục tiêu cuối cùng của việc học - có được công việc đầu tiên. Để đánh giá mức độ phổ biến của các ngôn ngữ khác nhau, tôi đã truy cập một cổng tuyển dụng phổ biến và bắt đầu xem xét số lượng vị trí tuyển dụng cho các yêu cầu khác nhau đến Moscow. Bạn có thể xem kết quả dưới đây.
Java: 277
con trăn: 227
php: 188
c#: 147
C++: 131
hồng ngọc: 40
quy mô: 24
kotlin: 20
Ngay cả Python phổ biến gần đây cũng không thể vượt qua Java. Nhưng đây là những dữ liệu chủ quan: một thành phố cụ thể, một ngày cụ thể. Có những nguồn chính thức, hãy chuyển sang chúng. Tính đến tháng 10 năm 2018, theo TIOBE, Java đứng đầu. Trong bảng xếp hạng PYPL , Java chiếm vị trí thứ 2, bỏ xa JS và cạnh tranh với Python “thời thượng”.

KẾT QUẢ

Đây là những điều người mới bắt đầu nên chú ý khi chọn ngôn ngữ lập trình:
  • Mức độ phổ biến (Java luôn chiếm vị trí dẫn đầu);
  • Ngưỡng đầu vào (Đối với Java - trung bình: phạm vi năng lực mà nhà tuyển dụng yêu cầu khá rộng);
  • Tài liệu có sẵn (không có cổng nào tương tự như JavaRush bằng tiếng Nga nên phải đoán xem ai =));
  • Lĩnh vực ứng dụng: càng có nhiều ngành sử dụng ngôn ngữ lập trình thì thị trường càng cần nhiều chuyên gia. Tôi đã nói về đa nền tảng rồi, nhưng tôi sẽ không cảm thấy mệt mỏi khi lặp lại nó.
Tất nhiên, ở đâu cũng có cạm bẫy, nhưng người đi sẽ làm chủ con đường: chỉ có 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 các nghiên cứu của bạn!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION