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.
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 Frontend và Backend . 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 HTML và CSS .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 , PureBasic và Pascal . 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.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но-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:
И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода. Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения. А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми. |
- ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.
- Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.
- Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
-
Кроссплатформенность.
Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».
-
Документация.
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 =)
-
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.
-
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.
-
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 |
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ó.
GO TO FULL VERSION