Ba chuyên gia và ba loại lĩnh vực lập trình. Ngôn ngữ lập trình. Khái niệm, phân loại, chủng loại. Sự liên quan của kiến ​​thức và hiểu biết về ngôn ngữ lập trình

Ngôn ngữ lập trình là một hệ thống ký hiệu chính thức được thiết kế để viết các chương trình máy tính. Ngôn ngữ lập trình xác định một tập hợp các quy tắc từ vựng, cú pháp và ngữ nghĩa xác định diện mạo của chương trình và các hành động mà người thực hiện (máy tính) sẽ thực hiện dưới sự kiểm soát của nó.

Ngôn ngữ lập trình cấp cao là ngôn ngữ lập trình được thiết kế để lập trình viên sử dụng nhanh và dễ dàng. Tính năng chính của ngôn ngữ cấp cao là tính trừu tượng, nghĩa là giới thiệu các cấu trúc ngữ nghĩa mô tả ngắn gọn các cấu trúc dữ liệu và hoạt động trên chúng, các mô tả trong mã máy (hoặc ngôn ngữ lập trình cấp thấp khác) rất dài và khó hiểu.

Ngôn ngữ lập trình cấp thấp (ngôn ngữ lập trình cấp thấp) là ngôn ngữ lập trình gần với lập trình trực tiếp bằng mã máy của bộ xử lý thực hoặc ảo (ví dụ: Java, Microsoft .NET) được sử dụng. Ký hiệu ghi nhớ thường được sử dụng để biểu thị các hướng dẫn của máy. Điều này cho phép các lệnh được ghi nhớ không phải dưới dạng một chuỗi các số nhị phân và số 0 mà là các chữ viết tắt có ý nghĩa của các từ trong ngôn ngữ của con người (thường là tiếng Anh).

Ngôn ngữ lập trình cấp thấp

Những máy tính đầu tiên phải được lập trình bằng mã máy nhị phân. Tuy nhiên, lập trình theo cách này là một công việc khá tốn thời gian và phức tạp. Để đơn giản hóa nhiệm vụ này, các ngôn ngữ lập trình cấp thấp bắt đầu xuất hiện, giúp con người có thể chỉ định các lệnh máy ở dạng dễ hiểu hơn đối với con người. Để chuyển chúng thành mã nhị phân, các chương trình đặc biệt đã được tạo ra - trình dịch.

Hình.1. Một ví dụ về mã máy và cách biểu diễn nó trong trình biên dịch mã

Người dịch được chia thành:

    trình biên dịch - chuyển đổi văn bản chương trình thành mã máy, có thể được lưu và sau đó được sử dụng mà không cần trình biên dịch (ví dụ là các tệp thực thi có phần mở rộng *. exe);

    trình thông dịch - biến một phần chương trình thành mã máy, thực thi nó và sau đó chuyển sang phần tiếp theo. Trong trường hợp này, mỗi lần chương trình được thực thi, một trình thông dịch sẽ được sử dụng.

Một ví dụ về ngôn ngữ cấp thấp là hợp ngữ. Các ngôn ngữ cấp thấp tập trung vào một loại bộ xử lý cụ thể và tính đến các tính năng của nó, vì vậy để chuyển một chương trình hợp ngữ sang nền tảng phần cứng khác, nó phải được viết lại gần như hoàn toàn. Cũng có những khác biệt nhất định trong cú pháp của các chương trình dành cho các trình biên dịch khác nhau. Đúng vậy, bộ xử lý trung tâm dành cho máy tính của AMD và Intel thực tế tương thích và chỉ khác nhau ở một số lệnh cụ thể. Nhưng bộ xử lý chuyên dụng dành cho các thiết bị khác, chẳng hạn như card màn hình và điện thoại, có những khác biệt đáng kể.

Thuận lợi

Ngôn ngữ cấp thấp tạo ra các chương trình hiệu quả và nhỏ gọn vì nhà phát triển có quyền truy cập vào tất cả các khả năng của bộ xử lý.

sai sót

    Một lập trình viên làm việc với các ngôn ngữ cấp thấp phải có trình độ chuyên môn cao và hiểu biết tốt về cấu trúc của hệ thống vi xử lý mà chương trình đang được tạo. Vì vậy, nếu một chương trình được tạo cho máy tính, bạn cần biết thiết bị của máy tính và đặc biệt là thiết bị và tính năng vận hành của bộ xử lý của nó;

    chương trình kết quả không thể được chuyển sang máy tính hoặc thiết bị có loại bộ xử lý khác;

    thời gian phát triển đáng kể cho các chương trình lớn và phức tạp.

Ngôn ngữ cấp thấp thường được sử dụng để viết các chương trình hệ thống nhỏ, trình điều khiển thiết bị, mô-đun giao diện với thiết bị không chuẩn, lập trình bộ vi xử lý chuyên dụng, khi yêu cầu quan trọng nhất là sự nhỏ gọn, tốc độ và khả năng truy cập trực tiếp vào tài nguyên phần cứng.

Hợp ngữ là một ngôn ngữ cấp thấp vẫn được sử dụng rộng rãi cho đến ngày nay.

Những lập trình viên nào đang được yêu cầu nhiều nhất ở nước ta?

Nếu bạn nói với một người bình thường rằng bạn làm lập trình viên, thì bạn có thể nghe thấy một trong những nhận xét sau:

  • “Tôi cần cài đặt lại Windows. Tôi đã chờ đợi suốt cuộc đời mình một người sẽ làm điều này cho tôi. Và sau đó chúng ta sẽ đi sửa máy nướng bánh mỳ.”;
  • "VỀ! Bạn có thể giúp tôi với lab VBA của tôi không!”;
  • “Bạn sẽ mất bao lâu để làm một trang web cho cửa hàng của mẹ tôi?”;
  • "Ừ! Một nghề nhàm chán và ngu ngốc. Bằng cách nào đó tôi đã cố gắng tìm ra nó với 1C…”

Nếu để đáp lại, bạn nói rằng bạn chưa bao giờ tạo trang web hoặc phòng thí nghiệm bằng VBA và bạn chỉ nhìn thấy Windows trong những cơn ác mộng, thì người đối thoại có thể thực sự ngạc nhiên và khuôn mặt của anh ta sẽ phản ánh sự nghi ngờ thực sự về khả năng phù hợp nghề nghiệp của bạn. Một số nhà phát triển suy yếu trước cái nhìn này và cố gắng chứng minh rằng họ có thể làm được điều gì đó. Bởi vì như thế đồ ngu Trong suy nghĩ của người bình thường, từ “lập trình viên” đồng nghĩa với khái niệm “trợ giúp máy tính miễn phí”.

Suy cho cùng, nhiều người không biết lập trình viên thực sự làm gì và đánh giá nó qua kỹ năng của người thân/người quen. Nhưng những đại diện khác nhau của chuyên ngành làm những việc hoàn toàn khác nhau và không thể nói thay cho tất cả mọi người.

Bài viết này sẽ nói về chuyên môn chính của lập trình viên, vốn có nhu cầu cao nhất trên thị trường Nga. Đối với mỗi loại, các tổ chức có thể tìm thấy nó thường xuyên nhất và các công nghệ mà nó cần để có thể hoạt động sẽ được chỉ định.

Bài viết sẽ chỉ đề cập đến những kiến ​​thức cơ bản, rất cần thiết trong một team tương xứng, nơi lập trình viên không bị bắt buộc phải siết chặt ốc vít, vẽ thiết kế và đăng bài lên website.

1. Nhà phát triển web front-end

Nếu chúng ta truy cập một trang web và có các nút thay đổi vị trí và màu sắc khi bạn di chuột qua chúng thì đây là công việc của một nhà phát triển front-end. Anh ấy viết tất cả mã bằng JavaScript, chạy mà không cần tải lại trang ở phía máy khách.

Anh ấy làm việc ở đâu?

Anh ta đang làm gì vậy?

Phát triển động lực giao diện người dùng. Nếu công ty không có người thiết kế bố cục thì họ cũng dịch các mẫu PSD thành mã HTML.

Công nghệ

  • Các khung HTML và UI (Bootstrap, Foundation, Pure);
  • CSS và bộ tiền xử lý (SASS/LESS);
  • JavaScript + các framework/thư viện bằng ngôn ngữ này (Jquery, ReactJS, AngularJS, BackboneJS);
  • Tiện ích cho dự án xây dựng (Grunt, Gulp, Bower).

2. Nhà phát triển back-end

Người gánh trên vai gánh nặng chính trong việc phát triển một dự án web. Giống như anh ấy đang xây dựng một nền tảng để nhà phát triển giao diện người dùng gắn “các yếu tố trang trí” vào đó.

Anh ấy làm việc ở đâu?

Trong các công ty nghiêm túc tham gia vào việc tạo ra các trang web và ứng dụng web. Việc tách biệt frontend và backend là một trong những dấu hiệu cho thấy một công ty có trình độ văn hóa phát triển nhất định.

Anh ta đang làm gì vậy?

Phát triển “cốt lõi” của trang web hoặc ứng dụng web: mã được thực thi trên máy chủ và kiến ​​trúc cơ sở dữ liệu.

Công nghệ

Một trong những ngôn ngữ và khung/thư viện sau cho nó:

  • hồng ngọc;
  • Trăn;
  • Java;
  • JavaScript.
  • Cơ sở dữ liệu MySQl/PostgreSQL/NoSQL.

3. Nhà phát triển web full-stack

Một người có thể tạo ra một trang web có độ phức tạp bất kỳ từ đầu đến cuối.

Anh ấy làm việc ở đâu?

Thường xuyên nhất trong các công ty khởi nghiệp và studio thiết kế web nhỏ. Ở các công ty lớn, họ được đưa vào nhóm cùng với các nhà phát triển front-end và back-end để kiểm soát và điều phối công việc của mình.

Anh ta đang làm gì vậy?

Trang web và ứng dụng web. Thực hiện đồng thời công việc của nhà phát triển front-end và back-end.

Xem danh sách của hai loại trước đó.

4. Nhà phát triển trò chơi

Một khái niệm rất rộng bao gồm ít nhất ba loại lớn: nhà phát triển trò chơi trên máy tính để bàn, nhà phát triển trò chơi trên thiết bị di động và nhà phát triển MMORG.

Anh ấy làm việc ở đâu?

Trong studio trò chơi.

Anh ta đang làm gì vậy?

Phát triển trò chơi.

Anh ấy muốn biết những công nghệ gì?

  • C#/C++/Java;
  • Mở GL hoặc DirectX;
  • Một trong những công cụ trò chơi (Unity, Unreal Engine, Torque và các công cụ khác).

5. Nhà phát triển ứng dụng Android

Anh ấy làm việc ở đâu?

Anh ta đang làm gì vậy?

Phát triển các ứng dụng cho hệ điều hành Android.

Anh ấy muốn biết những công nghệ gì?

  • Java;
  • SDK Android;
  • OpenGL;
  • Studio Android.

6. Nhà phát triển ứng dụng iOS

Anh ấy làm việc ở đâu?

Trong các studio ứng dụng di động, các công ty khởi nghiệp hoặc các công ty lớn quyết định tự mình tạo một ứng dụng di động.

Anh ta đang làm gì vậy?

Phát triển ứng dụng cho hệ điều hành iOS.

Công nghệ

  • Mục tiêu-C
  • Mã X;
  • OpenGL;
  • Ca cao cảm ứng;
  • Dữ liệu cốt lõi;
  • CoreGraphics.

7. Lập trình viên 1C

Nhiều nhà phát triển không coi ngôn ngữ được tích hợp trong 1C là ngôn ngữ lập trình và những người viết trong đó là lập trình viên. Họ có lý do của họ cho việc này. Tuy nhiên, có rất nhiều người tự gọi mình là lập trình viên 1C và có rất nhiều vị trí tuyển dụng dành cho họ.

Anh ấy làm việc ở đâu?

Trong bất kỳ công ty tích cực tiến hành hoạt động kinh tế. Thường không được đưa vào đội ngũ chính mà đến vài lần một tháng hoặc ít hơn.

Anh ta đang làm gì vậy?

Viết chương trình tự động hóa luồng tài liệu trong công ty.

Công nghệ

  • “1C: Quản lý thương mại”;
  • “Kế toán 1c”;
  • “1C: Tiền lương và nhân sự”;
  • T-SQL.

8. Kỹ sư phần mềm

Nếu bạn có thể trở thành một trong 7 loại trên bằng cách tham gia các khóa học hoặc thông qua tự học thì chỉ các trường đại học kỹ thuật mới tốt nghiệp kỹ sư phần mềm. Thông thường, những vị trí này được đảm nhận bởi những người trên 40 tuổi đã được đào tạo từ thời Xô Viết.

Anh ấy làm việc ở đâu?

Trong sản xuất hoặc trong một tổ chức khoa học.

Anh ta đang làm gì vậy?

Phát triển các chương trình điều khiển nhiều loại thiết bị: từ lò nướng trong tiệm bánh đến robot hút bụi.

Công nghệ

Một trong những ngôn ngữ sau:

  • Java;
  • Delphi (đã sống, đang sống và sẽ sống!);
  • Người lắp ráp.

Một lượng kiến ​​thức kỹ thuật khổng lồ tương ứng với ngành mà người đó làm việc.

Nếu bạn xem các quảng cáo tuyển dụng lập trình viên trên các trang web của Nga, 90% trong số đó sẽ phù hợp với bảy loại người này. Ở phương Tây, thị trường việc làm có phần đa dạng hơn. Bất kỳ ai quan tâm có thể đến Odesk và xem ở đó có những loại công việc gì.

Tôi rất buồn khi nhận thấy rằng những đứa trẻ Pakistan 14 tuổi ở đó yêu cầu 500 rúp mỗi giờ cho việc viết mã HTML.

Và bạn có thể đánh giá ngôn ngữ nào hiện phổ biến nhất trên thế giới bằng cách sử dụng Chỉ số Tiobe. Đánh giá này dựa trên số lượng truy vấn trong công cụ tìm kiếm đề cập đến các ngôn ngữ lập trình khác nhau.

tái bút Cuối cùng, một giai thoại cuộc sống về chủ đề này.

Nếu tài xế được thuê giống như lập trình viên:
Vị trí tuyển dụng: tài xế.
Yêu cầu: kỹ năng chuyên nghiệp về lái ô tô và xe tải, xe điện, xe điện, tàu điện ngầm và tàu hỏa, máy xúc và máy ủi, xe bánh xích đặc biệt, xe chiến đấu bộ binh và xe tăng hạng nhẹ/trung hiện đại phục vụ cho các nước CIS và NATO. Cần có kỹ năng lái xe tập trung và cực đoan. Có kinh nghiệm lái xe Công thức 1 là một lợi thế. Kiến thức và kinh nghiệm sửa chữa động cơ piston và động cơ quay, hộp số tự động và số tay, hệ thống đánh lửa, máy tính trên xe, hệ thống chống bó cứng phanh, hệ thống định vị và hệ thống âm thanh ô tô từ các nhà sản xuất hàng đầu. Có kinh nghiệm về sơn và thân xe là một lợi thế. Ứng viên phải có chứng chỉ Mercedes, BMW, General Motors, cũng như chứng chỉ tham gia các cuộc thi quốc tế lớn không quá hai năm.
Mức lương: xác định dựa trên kết quả phỏng vấn.

Hiện tại có rất nhiều hướng trong lập trình. Mọi người đều có thể tìm thấy thứ họ thích, nhưng để làm được điều này, bạn cần biết chính xác mình sẽ làm gì trong lĩnh vực của mình.

Phát triển ứng dụng web

Hướng này tập trung vào phát triển các ứng dụng web (hay nói cách khác là các trang web, nhưng ngày nay các trang web có chức năng phong phú đến mức có thể gọi là ứng dụng chính thức).

Lập trình web có thể được chia thành backend (viết kịch bản máy chủ - PHP, Python, Ruby) và frontend (phát triển giao diện người dùng - Javascript, HTML, CSS).

Phát triển ứng dụng máy tính để bàn

Phát triển phần mềm cho các hệ điều hành khác nhau. Tất cả các loại phần mềm mà chúng ta sử dụng trong cuộc sống hàng ngày. Nếu bạn muốn viết trình xử lý ảnh, trình phát âm thanh hoặc trình soạn thảo văn bản của riêng mình thì đây là nơi dành cho bạn.

Phát triển ứng dụng máy chủ

Đây là các máy chủ trò chơi khác nhau (Dotka, CS: GO yêu thích của bạn), dịch vụ IM (phần máy chủ Skype, ICQ, MSN), cơ sở dữ liệu ngân hàng.

Phát triển ứng dụng di động

Rất nhiều ứng dụng Java. VK, Viber, Yandex.Maps, dịch giả, độc giả điện tử.

Lập trình hệ thống nhúng

Một nhánh lập trình thú vị cho các thiết bị gia dụng khác nhau: máy hút bụi, tủ lạnh, máy giặt, đầu đĩa, thiết bị định vị, cân điện tử. Ở đây có sự phát triển khoa học sử dụng các ngôn ngữ chuyên ngành như MATLAB.

Lập trình hệ thống

Viết các driver cho thiết bị, lập trình kernel của hệ điều hành. Nhân tiện, việc tạo ra trình biên dịch và trình thông dịch cho các ngôn ngữ lập trình đều thuộc về đây.

Sự phát triển trò chơi

Một ngành công nghiệp khổng lồ. Điều này bao gồm phát triển trò chơi cho PC, bảng điều khiển và thiết bị di động.

Lập trình Olympic và giải quyết vấn đề

Lập trình bằng nhiều ngôn ngữ “không thực tế” và không phổ biến (Pascal, Delphi) để giải quyết một số vấn đề ban đầu đòi hỏi cách tiếp cận không chuẩn, sự khéo léo và chỉ số IQ trên 160.

Lập trình cho các sản phẩm kế toán và tài chính

"1C: Doanh nghiệp". Tất cả kế toán ở Nga đều gắn liền với sản phẩm này. Nhưng chỉ biết ngôn ngữ thôi thì chưa đủ; điều quan trọng là phải hiểu những kiến ​​thức cơ bản về kế toán. Ưu điểm là có rất nhiều việc và bạn sẽ không thiếu bánh mì.

Lập trình cơ sở dữ liệu

Hướng nghiêm túc. Nếu bạn muốn phát triển cơ sở dữ liệu có khả năng lưu trữ hàng tỷ hàng thông tin về tất cả người dùng VKontakte hoặc Facebook mà không bị chậm thì đây chính là nơi dành cho bạn.

Khoa học

Khoa học và thế là xong. Mạng lưới thần kinh, mô hình hóa cấu trúc DNA, phóng vệ tinh, mô hình hóa Vụ nổ lớn.

Nhân tiện, gần đây có tin tức được đăng trên trang web của NASA về việc tìm kiếm một lập trình viên bằng ngôn ngữ Fortran “cổ”, vốn đã hơn 60 năm tuổi. Cần một lập trình viên để phát triển các chương trình điều khiển tàu thăm dò robot Voyager 1 và Voyager 2, phần mềm được viết bằng Assembly, Fortran và COBOL vào những năm 1970. Bạn không bao giờ biết được kiến ​​thức nào có thể hữu ích.

Tôi không biết giáo dục bây giờ thế nào, nhưng 10-15 năm trước, cả ở phổ thông lẫn đại học, không ai giải thích một cách nghiêm túc rằng lập trình có những loại hình riêng, mỗi loại đòi hỏi một kiểu tư duy đặc biệt. Không phải điều này sẽ làm tê liệt số phận của bất kỳ ai, nhưng việc nghiên cứu các ngành phần mềm có thể tiến triển nhanh hơn nhiều nếu ở giai đoạn đặt nền móng, chúng tôi đã trình bày nhiều ngôn ngữ và cách tiếp cận khác nhau, đồng thời không dạy C++ bằng zombie trong các biểu hiện trên bảng điều khiển của nó. .

Nhiều người trước nhu cầu viết mã chức năng thường tiếc nuối vì lối suy nghĩ thủ tục đã ăn sâu vào não bộ đến mức không dễ thay đổi khỏi nó. Vì vậy, tốt hơn hết bạn nên bắt đầu con đường trở thành lập trình viên không phải bằng cách chọn ngôn ngữ mà bằng cách chọn một loại hình lập trình.

Các loại lập trình

Hãy đồng ý ngay: sẽ có sáu loại. Đây là sự phân chia khá chi tiết. Thông thường 3-4 được phân bổ, nhưng vì chúng ta phải đối mặt với nhiệm vụ chọn đường cho người mới bắt đầu nên điều đó là hoàn toàn hợp lý.

Lập trình thủ tục cũng là bắt buộc.

Nó đặt ra nhiệm vụ tạo mã bằng ngôn ngữ mà máy sử dụng có thể hiểu được. Trường hợp nổi tiếng nhất là máy Turing; trong số các ngôn ngữ lập trình nổi tiếng - C/C++, Ada, Pascal, Go. Các nhiệm vụ ở đây được giải quyết một cách có hệ thống: đầu tiên, một đối tượng được khai báo, sau đó được xác định và sau đó một hành động được thực hiện trên nó:

var
S: Dây;

S:= ‘Xin chào!’;

Lập trình khai báo.

Trong trường hợp thủ tục, vectơ tối ưu hóa ngôn ngữ được hướng từ cấp độ máy sang ngôn ngữ người dùng bằng cách sử dụng các nguyên tắc cơ bản của OOP, các lớp, phương thức, v.v. Ở đây, bản thân nhiệm vụ được đặt lên hàng đầu và phương thức thực hiện nó là sơ trung. Một ví dụ nổi bật là ngôn ngữ đánh dấu HTML. Nếu bạn muốn đặt một nút, bạn không cần phải tạo một đối tượng và gán thuộc tính cho nó một cách chính thức:

Lập trình chức năng.

Như bạn đã biết từ khóa học toán, kết quả của việc thực hiện bất kỳ hàm nào có thể được trình bày dưới dạng dữ liệu dạng bảng, câu hỏi duy nhất là tần suất lấy mẫu và phạm vi giá trị. Nghĩa là, cho dù hàm có được thực thi bao nhiêu lần, bất kể vị trí của nó trong bài toán là gì thì kết quả cho các giá trị giống nhau sẽ vẫn như cũ. Trong lập trình mệnh lệnh, điều này không phải lúc nào cũng được thực hiện, vì giá trị của các biến có thể thay đổi trong quá trình chạy chương trình, điều này sẽ khiến kết quả phụ thuộc vào các điều kiện cụ thể.

Lập trình hàm không có nhược điểm này: ở đây bạn thao tác với các hàm - ban đầu, tăng dần và kết quả - nhưng không phải với các giá trị cụ thể. Các đại diện phổ biến bao gồm Lisp, Clojure, Haskell. Lập trình chức năng được coi là phức tạp và dư thừa đối với hầu hết các ứng dụng. Do đó, nhu cầu về chuyên gia thấp nhưng điều này cũng dẫn đến mức lương cao và công việc thực sự thú vị.

Lập trình logic.

Như tên cho thấy, nó hoạt động dựa trên logic toán học đơn giản. Đại diện nổi bật là Planner và Prolog. Một tập hợp hành động khá hạn chế có thể thực sự hữu ích để tạo ra trí tuệ nhân tạo đơn giản nhất hoặc điều khiển bộ não, nhưng trong đời thực, lập trình logic hiếm khi được sử dụng riêng lẻ.

Lập trình năng động.

Đây là trường hợp khi để giải quyết một vấn đề phức tạp phức tạp, cần phải chia nó thành nhiều vấn đề đơn giản hơn, giảm thiểu số chu kỳ thực hiện. Lý tưởng nhất là mỗi nhiệm vụ đơn giản nên được thực hiện một lần, nhưng trên thực tế điều này khá hiếm. Lập trình động đúng hơn là một khái niệm có thể áp dụng cho tất cả các ngôn ngữ, vì vậy không có đại diện nào cho hướng này. Nhưng nó sẽ đòi hỏi bạn một cách suy nghĩ đặc biệt theo cách tương tự.

Lập trình đồ họa cũng là trực quan.

Nó khuyến khích nhà phát triển làm việc với hình ảnh đồ họa hơn là văn bản. Điều này có thể được thể hiện theo nhiều cách khác nhau - có những ngôn ngữ đặc biệt, như Scratch hoặc BluePrint, có những ngôn ngữ biểu đồ hoặc sơ đồ (LD hoặc FBD), có những phần lập trình đơn giản liên quan đến tương tác với các biểu mẫu và đồ họa. Trong trường hợp sau, nó có thể là bất kỳ ngôn ngữ nào; việc trực quan hóa được thực hiện bằng các công cụ phát triển (Borland Delphi/C++, Visual Studio, Adobe Dreamweaver, v.v.). Lập trình đồ họa như vậy ở dạng thuần túy là cực kỳ hiếm; nếu không hiểu ngôn ngữ và cấu trúc của mã thì không thể tạo ra thứ gì đó nghiêm túc.

Nghỉ ngơi

Lập trình được chia thành nhiều loại và người mới bắt đầu thậm chí không biết về một số loại: đồng bộ/không đồng bộ/dựa trên sự kiện, tuần tự/song song, khác nhau về nhiệm vụ họ giải quyết cũng như sự tham gia của AI và thống kê.

Chọn một mô hình lập trình khởi đầu không có nghĩa là chỉ chọn một con đường. Ngược lại, không bị ràng buộc với các ngôn ngữ, ngành nghề và môi trường phần mềm cụ thể, bắt đầu từ cách suy nghĩ “của bạn”, ban đầu bạn sẽ tự thiết lập cho mình sự hiểu biết đúng đắn về bản chất. Một chuyên gia CNTT thành công, hạnh phúc và giàu có không phải là người vào đúng ngành, mà là người mà bất kỳ ngành nghề nào cũng là cơ hội để nhận ra tiềm năng của mình.

Nếu chúng ta lấy cú pháp hình thành các công trình xây dựng của nó làm dấu hiệu phân loại, thì chúng ta có thể chia nó thành các loại sau một cách có điều kiện:

    thủ tục,

    chức năng,

    hợp lý,

    hướng đối tượng.

3.1. Ngôn ngữ thủ tục (thuật toán)

Ngôn ngữ lập trình thủ tục cho phép người lập trình xác định từng bước trong quá trình giải quyết vấn đề. Điểm đặc biệt của các ngôn ngữ lập trình như vậy là các nhiệm vụ được chia thành các bước và giải quyết từng bước. Sử dụng ngôn ngữ thủ tục, lập trình viên xác định các cấu trúc ngôn ngữ để thực hiện một chuỗi các bước thuật toán.

Ngôn ngữ thủ tục được đặc trưng bởi các tính năng sau:

    nhu cầu quản lý bộ nhớ rõ ràng, đặc biệt là mô tả các biến;

    tính phù hợp thấp cho các phép tính tượng trưng;

    thiếu cơ sở toán học chặt chẽ;

    hiệu quả thực hiện cao trên máy tính truyền thống.

Một trong những đặc điểm phân loại quan trọng nhất của ngôn ngữ thủ tục là cấp độ của nó. Cấp độ của ngôn ngữ lập trình được xác định bởi khả năng ngữ nghĩa của các cấu trúc của nó và mức độ định hướng của nó đối với người lập trình. Ngôn ngữ càng hướng tới con người thì trình độ của nó càng cao.

Ngôn ngữ thủ tục bao gồm: Ngôn ngữ hội, C, Basic, Pascal.

3.2 Ngôn ngữ chức năng (ứng dụng)

Ngôn ngữ đầu tiên như vậy là LISP.

Vai trò của cấu trúc chính trong các ngôn ngữ chức năng (ứng dụng) được thể hiện bằng cách diễn đạt. Các biểu thức bao gồm hằng số vô hướng, đối tượng có cấu trúc, hàm, nội dung hàm và lệnh gọi hàm.

Ngôn ngữ lập trình ứng dụng bao gồm các yếu tố sau:

    các lớp hằng số mà hàm có thể thao tác;

    một tập hợp các hàm cơ bản mà lập trình viên có thể sử dụng mà không cần khai báo hoặc mô tả trước;

    quy tắc xây dựng hàm mới từ hàm cơ bản;

    quy tắc hình thành biểu thức dựa trên lệnh gọi hàm.

Các thuộc tính được liệt kê đặc trưng cho các ngôn ngữ ứng dụng là ngôn ngữ lập trình cấp cao.

3.3 Ngôn ngữ logic (quan hệ)

Ngôn ngữ PROLOG được nhà khoa học người Pháp A. Colmeroe tạo ra vào năm 1973. Hiện nay, các ngôn ngữ khác đã được biết đến nhưng ngôn ngữ lập trình logic phát triển và phổ biến nhất là Prolog. Ngôn ngữ lập trình logic được sử dụng rộng rãi trong các hệ thống trí tuệ nhân tạo.

Ngôn ngữ lập trình logic có đặc điểm:

    cấp độ cao;

    tập trung chặt chẽ vào các tính toán mang tính biểu tượng;

    khả năng tính toán nghịch đảo, nghĩa là các biến trong thủ tục không được chia thành đầu vào và đầu ra;

    có thể không hoàn thiện về mặt logic, vì thường không thể biểu diễn các mối quan hệ logic nhất định trong một chương trình và cũng không thể thu được tất cả các kết luận chính xác từ chương trình.

Các cấu trúc của ngôn ngữ không tương ứng với các công thức toán học, nhưng xác định mối quan hệ giữa các đối tượng và số lượng; chúng nêu rõ kết quả mà người dùng mong muốn mà không chỉ ra cách thực hiện.

Ngôn ngữ logic và chức năng là ngôn ngữ khai báo. Những ngôn ngữ này không có khái niệm “toán tử” (“lệnh”).

3.4 Ngôn ngữ hướng đối tượng

Ngôn ngữ hướng đối tượng tạo ra một môi trường dưới dạng nhiều đối tượng độc lập. Mỗi đối tượng hoạt động giống như một máy tính riêng biệt; chúng có thể được sử dụng để giải quyết vấn đề dưới dạng “hộp đen” mà không cần đi sâu vào cơ chế hoạt động bên trong của chúng.

Các ngôn ngữ lập trình hướng đối tượng gần đây đã trở nên rất phổ biến đối với các lập trình viên, vì chúng cho phép sử dụng các ưu điểm của phương pháp hướng đối tượng không chỉ ở các giai đoạn thiết kế và xây dựng hệ thống phần mềm mà còn ở các giai đoạn xây dựng hệ thống phần mềm. thực hiện, kiểm tra và bảo trì.

Các ngôn ngữ hướng đối tượng (OO) hiện đại sử dụng các phương pháp sau: kế thừa, đóng gói, đa hình.

Trong một số ngôn ngữ hướng đối tượng, tất cả các phương thức lớp đều là ảo.

Nhiều ngôn ngữ hiện đại được thiết kế đặc biệt để hỗ trợ lập trình hướng đối tượng. Tuy nhiên, cần lưu ý rằng bạn có thể áp dụng các kỹ thuật OOP cho ngôn ngữ không hướng đối tượng và ngược lại sử dụng ngôn ngữ hướng đối tượng không có nghĩa là mã sẽ tự động trở thành hướng đối tượng.

Một số ngôn ngữ (đôi khi được gọi là “đối tượng thuần túy” - Java hoặc Ruby) được xây dựng hoàn toàn xung quanh các công cụ đối tượng - trong đó mọi dữ liệu đều là đối tượng, mọi mã đều là phương thức của một lớp nào đó và không thể viết chương trình thực hiện điều đó. không sử dụng đồ vật. Các ngôn ngữ khác (“hỗn hợp”) bao gồm hệ thống con OOP bằng ngôn ngữ thủ tục ban đầu. Chúng cho phép bạn lập trình mà không cần truy cập vào cơ sở vật chất. Ví dụ cổ điển là C++ và Delphi (Object Pascal).