Если значение логического выражения истинно, то вычисляется выражение1, в противном случае вычисляется выражение2.
Пример:
count < < n == 2 ? «да» : «нет» ; //если n=2 то в консоль выводится «да» в противном случае «нет»
Оператор «switch»:
switch(‘выражение целого типа’)
case ‘значение1’ :
break;
case ‘значение2’ :
break;
case ‘значение n’:
break;
default
/*ветку default можно не описывать. Она выполняется, если ни один из вышестоящего выражения не удовлетворено*/
‘последовательность операторовn+1’;
Пример:
case 1 : cout < < «один» ; //если n=1 то выводится строка «один»
case 2 : cout < < «два» ; //если n=2 то выводится строка «два»
default : cout < < «не один и не два» ; //если n равно другому числу, то выводится строка «не один и не два»
Операторы цикла:
Оператор «while»:
while (‘логическое выражение’) //цикл с проверкой условия на верху
Я пытался изучить программирование с нуля за 7 дней и вот что получилось в итоге
Пример:
while ( n < 100 ) ++ n ; //Пока n меньше 100 прибавлять 1.
Оператор «do..while»:
do
while (‘логическое выражение’); //Цикл условия проверки внизу
Пример:
while ( ‘n>0’ ) ; //Пока n больше нуля повторять процедуру
Оператор «for»:
for(‘инициализация’; ‘проверка’; ‘новое_значение’)
Пример:
for ( i = 0 ; g [ i ] = 0 ; i ++ ) ; //В начале i=0 и пока g[i]!=0, к i прибавляется 1 и выполняется пустой оператор ;
Оператор «;»:
; /*Пустой оператор применяется когда синтаксис языка требует присутствие оператора, однако по логике программы оператор должен отсутствовать.*/
Пример:
for ( i = 0 ; g [ i ] = 0 ; i ++ ) ; //В начале i=0 и пока g[i]!=0, к i прибавляется 1 (оператор после оператора for() не нужен)
Массивы:
‘тип данных’ ‘имя массива’ [‘размер массива’];
Адресация к массивам:
‘имя массива’ [‘значение индекса’];
Пример:
int mas [ 255 ] ; //Описывается массив целых чисел mas размер его 255 элементов (первый элемент 0)
mas [ 5 ] = 0 ; //6 элементу массива массива mas присваивается значение 0
Константы:
‘тип’ ‘имя константы’ = ‘значение константы’; //Описание константы
Пример:
int a = 100 ,
c = 50 ; //Описываются две константы a,C. a равна 100, а c равна 50
Классы:
Объявление классов:
class ‘имя класса’
‘закрытые функции и переменные класса’;
public:
‘имя класса’(‘список параметров’); //Конструктор
~‘имя класса’(); //Деструктор
‘открытые функции и переменные класса’;
> ‘список объектов’;
Определение функции-члена:
‘тип возращаемого значения’ ‘имя класса’::‘имя функции’ (‘список параметров’)
‘тело функции’;
Определение конструктора:
‘имя класса’::‘имя класса’ (‘список параметров’)
‘тело конструктора’;
Определение деструктора
‘имя класса’::~‘имя класса’ (‘список параметров’)
‘тело деструктора’;
Объявление класса:
‘имя класса’ ‘имя объекта’(‘список параметров’);
Обращение к членам класса:
‘имя класса’.‘член класса’;
‘имя класса’->‘член класса’;
Пример:
class myclass < //Класс с именем myclass
int a ; //Закрытый элемент класса
myclass ( int b ) ; //Конструктор
void set_a ( int num ) ; //Отрытые элементы класса
void myclass : : set_a ( int num ) //определение функции-члена set_a класса myclass
void myclass : : myclass ( int b ) //определение конструктора класса myclass
myclass clas1 ( 4 ) , clas2 ( 2 ) ; //Объявление классов clas1, clas2 типа класса myclass
clas1 . set_a ( 5 ) ; // Обращение к члену класса
Структуры:
struct ‘имя структуры’
‘имя структуры’(‘список параметров’);//Конструктор
~‘имя структуры’(); //Деструктор
‘открытые функции и переменные структуры’;
private:
‘закрытые функции и переменные структуры’;
> ‘список объектов’;
Определение функции-члена, конструктора, деструктора, объявление структуры, обращение к членам структуры такие же как у класса.
Встраиваемые функции:
inline ‘тип возращаемого значения’ ‘имя функции’(‘список параметров’)
‘тело функции’;
Пример:
inline int even ( int x )
return ! ( x % 2 ) ;
Встраиваемые функции в объявлении класса:
public:
‘тип возвращаемого значения’ ‘имя функции’(‘список параметров’)‘тело функции’;>
Пример:
class samp <
int devisible ( ) < return ! ( i % j ) ; >//Встраиваемая функция
Дружеские функции:
class ‘имя класса’
public:
friend ‘тип возвращаемого значения’ ‘имя функции’(‘список параметров’);
‘тип возвращаемого значения’ ‘имя функции’ (‘список параметров’);
Пример:
class myclass <
friend int istfactor ( myclass ob ) ;
ВКонтакте ( X )
Facebook ( X )
1. Точка с запятой после using namespace std не нужна;
2. В for’е то, что стоит в круглых скобках разделяется точками с запятыми, а не запятыми;
3. Для кода на любом языке всегда используй моноширинный шрифт (Courier, Courier New, Consolas, monospace), даже если этот код не выделен в отдельный абзац;
4. Там, где написано «Обращение к членам класса» используется один символ двоеточия, не верно;
5. #include без .h — это не устаревший стиль, это заголовочные файлы, пришедшие из чистого С. В C++ заголовочные файлы часто без расширения и все идентификаторы, объявленные в этих заголовочных файлах группируются в пространство имён std. А так, неплохой краткий справочник по синтаксису=)
Здравствуйте.
Большое спасибо, что вы захотели сделать мой справочник лучше, это мне очень льстит. >1. Точка с запятой после using namespace std не нужна;
К сожалению многие компиляторы с вами не согласяться. Возможно вы имели ввиду конструкцию:
namespace std
…
>
Тогда да, точка с зяпятой после неё дейтсвительно не нужна.
Или можете сказать название компилятора или IDE, где это работает? >2. В for’е то, что стоит в круглых скобках разделяется точками с запятыми, а не запятыми;
Да, косяк поправил. >3. Для кода на любом языке всегда используй моноширинный шрифт (Courier, Courier New, Consolas, monospace), даже если этот код не выделен в отдельный абзац;
посмотрел на Courier, стало скучнее. Лан, пусть дети привыкают. 4. Там, где написано «Обращение к членам класса» используется один символ двоеточия, не верно;
>> поменял на точку и стрелочку. >> 5. #include без .h — это не устаревший стиль, это заголовочные файлы, пришедшие из чистого С. В C++ заголовочные файлы часто без расширения и все идентификаторы, объявленные в этих заголовочных файлах группируются в пространство имён std. Убрал слова «в поздних версиях компилятора». В данное время это вызывает смущение у людей.
То, что он прешёл из C оно не отменяет «устаревший стиль», это и было «в поздних версиях компилятора». Объясню, я хотел этим сказать себе, что данный стиль объявления библиотек использовать не стоит, так как он пришёл из «прошлого» и сейчас есть механизмы намного лучше. >А так, неплохой краткий справочник по синтаксису=) И ещё раз спасибо, что обратили внимания на данную статью.
Ещё одна проблема:
n=2 ? str=’да’ : str=’нет’;
некорректно.
Используй следующее:
str = (n == 2 ? «да» : «нет»);
Обрати внимание, что строки-константы заключаются в двойные кавычки.
Весь тернарный оператор возвращает либо часть между символами «?» и «:», либо часть после символа «:». Возвращать результат операции присваивания является избыточным, как в твоём примере.
Сорре, что так много написал, кратко просмотрел, просто хотелось, чтобы справочник был лучше, он же вылез одним из первых в google-поисковике, а значит меньше ошибок должно быть, особенно таких критических.
Я очень люблю фидбеки. Так что извинятся вообще не стоит.
здесь был вопрос в понятности этого написания для не подготовленного человека.
здесь str = (n == 2 ? «да» : «нет»); сильно много равно рядом, и глазу не за что зацепиться решил разбавить написал:
count
Источник: coolcode.ru
Уровни языков программирования
Какие бывают языки программирования? Что за концепции в них заложены? Как они развивались? В данной статье рассмотрим виды языков программирования основываясь на так называемых уровнях — от машинных кодов (низкий уровень, приближённый к компьютерному «железу») до таких языков, как Java или С# (высокий уровень). Чем меньше преобразований пройдёт текстовый листинг программы по пути превращения в набор нулей и единичек – тем ниже уровень.
- Языки низкого уровня (машинные коды и ассемблер)
- Средний уровень ( C, Фортран …. )
- Высокий уровень (C++, Java, Python, Ruby, JavaScript . )
Машинные языки (Самый низкий уровень)
Нам придётся совершить краткий визит из Software области в Hardware. Рассмотрим в упрощенном виде. Процессор – основной «мозг» компьютера. Материнская плата, на которой он установлен, содержит контроллеры, служащие для взаимодействия с прочими устройствами через шины (каналы данных для связи).
Некоторые работают с большой скоростью (красные стрелки): процессор черпает из памяти команды и манипулирует данными, видеокарта – особенно в 3D играх, потребляет огромные объёмы текстур, фигур, координат пикселей и прочих объектов для построения изображения на экране монитора. Другим (в силу ограничения скорости обмена информацией) столь высокие показатели и не нужны. Разнообразные внутренние и внешние устройства подключены на схеме зелёными стрелками.
Внутренний мир процессора
Все команды процессора поступают из памяти на выполнение в двоичном виде. Формат, количество, подмножество инструкций зависят от его архитектуры. Большинство из них несовместимо друг с другом и следуют разным идеологиям. А также вид команды сильно зависит от режима (8/16/32… разрядность) и источника данных (память, регистр, стек…), с которыми работает процессор.
Одно и то же действие может быть представлено различными инструкциями. Процессор имеет команды сложения двух операндов (ADD X,Y) и прибавления единицы к указанному (INC X). Добавление тройки к операнду можно выполнить как ADD X,3 или троекратно вызвав INC X. И, в отношении разных процессоров, нельзя предсказать какой из этих способов будет оптимальным по скорости или объёму занимаемой памяти. Для удобства двоичную информацию записывают в 16-ричном виде. Рассмотрим часть привычной программы (язык C, синтаксис которого сходный с Java)
int func()
- Мы полностью хозяева положения, имеем самые широкие возможности использования процессора и аппаратуры компьютера.
- Для нас доступны все варианты организации и оптимизации кода.
- Необходимо обладать обширными знаниями по функционированию процессоров и учитывать большое количество аппаратных факторов при выполнении кода.
- Создание программ чуть более сложных чем приведенный пример приводит к резким увеличениям затрат времени по написанию кода и его отладку.
- Платформозависимость: программа, созданная для одного процессора, как правило, не будет функционировать на других. Возможно, и для данного процессора, в остальных режимах его работы, потребуется редактирование кода.
Язык ассемблера (низкий уровень)
- Сопоставим группам цифровых инструкций процессора, выполняющих соответствующие действия, одну символьную команду.
- Выделим аргументы инструкций процессора отдельно.
- Введем возможность именовать области памяти, переменные, местоположение отдельных команд.
2004b0 48 83 ec 08 sub $0x8,%rsp 2004b4 bf bc 05 20 00 mov $0x2005bc,%edi 2004b9 31 c0 xor %eax,%eax 2004bb e8 e8 fe ff ff callq getData 2004c0 48 83 c4 08 add $0x8,%rsp 2004c4 83 c0 01 add $0x1,%eax
- Процесс написания и модификации кода упростился.
- Сохранился контроль ко всем ресурсам аппаратуры.
- Относительно легче переносить программу на другие платформы, но требуется их модификация в зависимости от аппаратной совместимости.
- Ассемблер относится к низкоуровневым языкам программирования. Создание даже небольших участков кода затруднено. К тому же также необходимо учитывать специфику работы аппаратуры.
- Платформозависимость.
public static void main(String[] args)
будет выглядеть (NASM синтаксис, с использованием Windows API и kernel32.lib) следующим образом:
Как и машинные коды, ассемблер чаще используется инженерами и системными программистами. На нём пишут аппаратно-зависимые части ядра операционных систем, критические по времени или особенностям реализации драйвера различных периферийных устройств. Но в последнее время к нему прибегают всё реже и реже, так как его применение сильно сужает переносимость программ на другие платформы. Иногда используют процесс дизассемблирования – создают ассемблерный листинг программы из цифровых кодов для разбора логики выполнения небольших фрагментов. В редких случаях, если первоначальный высокоуровневый код недоступен: анализ вирусов для борьбы с ними или потере исходного текста. Язык ассемблера причисляют к первому/второму поколению (мы не будем рассматривать отдельно псевдокоды до возникновения ассемблера и их отличие от символьных команд). Хотелось бы выделить использование ассемблера в Demo Scene (демо-сцена): сплав искусства, математики и низкоуровневого кодирования, воплощающие художественные замыслы своих создателей в виде программ, генерирующих видеоклипы при ограничениях в ресурсах. Часто общий размер файла программы и данных не должен превышать 256 байт (также популярен и формат в 4/64 килобайта). Вот пример 4 Кб программы:
Языки группы C/Фортран (средний/высокий уровень)
- Упрощение процесса создания кода: введение типов, разбивка на модули, сокращение листинга программ.
- Прозрачная логика заложенного алгоритма вследствие ухода от машинных кодов к более понятным для человека командам в семантически описательном стиле.
- Переносимость. Стало достаточно перекомпилировать текст программы для выполнения на другой платформе (возможно, с небольшой модификацией).
- Скорость откомпилированных программ.
- Отсутствие автоматического управления памятью и необходимость постоянного её контроля.
- Отсутствие реализации концепций объектно-ориентированного и функционального программирования.
Развитие языков высокого уровня
Высокоуровневые языки программирования, в плане создания ПО, стали всё по большей части удаляться от машинных кодов и реализовывать различные, помимо процедурного, парадигм программирования. К ним относят также и реализацию объектно-ориентированных принципов. C++, Java, Python, JavaScript, Ruby… – спектр языков данного типа наиболее популярен и востребован сегодня.
Они предоставляют больше возможностей для реализации разнообразного ПО и нельзя однозначно определить «специализацию» каждого из них. Но популярность применения в соответствующих областях обусловлена библиотеками/фреймворками для работы с ними, например: JavaScript – Frontend.
Язык был разработан для взаимодействия клиентского веб-браузера с пользователем и удалённым сервером. Наиболее популярные библиотеки: Angular, React и VUE. В данное время относительно активно употребляется и на web и т. п. серверах (backend), особенно популярен Node.js. Ruby – Backend. Применяется для создания скриптов (служебных сервисных файлов) и на web серверах. Основной фреймворк — Ruby On Rails.
Python – научная и инженерная сфера (помимо веб-области). Является альтернативой стандартным вычислительным и математическим пакетам (Mathematica, Octave, MatLab…), но имеет привычную семантику языка и большое число библиотек. Имеет много поклонников в области систем машинного обучения, статистики и искусственного интеллекта.
Из часто используемых библиотек необходимо упомянуть django, numpy, pandas, tensorflow. С++ – Универсал, эволюционное развитие языка C. Предоставляет возможности функционального и объектно-ориентированного программирования и не потеряв при этом способность низкоуровневого взаимодействия с аппаратным обеспечением. За счёт чего реализуется производительность и гибкость при создании ПО, но и цена соответствует: высокий порог вхождения за счёт сложной спецификации языка, необходимости самостоятельного контроля за ресурсами при выполнении программы. Многие однопользовательское и системное ПО написано с его применением: модули операционных систем (Windows, Symbian…), игры, редакторы (Adobe Photoshop, Autodesk Maya…), базы данных (MSSQL, Oracle…), проигрыватели (WinAmp…) и т. д. Следует отметить, что современное ПО является сложным продуктом, в разработке которого используется сразу несколько языков программирования и расставлять степень участия каждого из них в общий результат бывает весьма затруднительно.
Дальнейший прогресс
- Для тестирования нам необходимы только аргументы функций (результат работы не зависит от внешних переменных и т. п.).
- Программа в функциональном стиле чудесным образом готова к параллельной работе: последовательные вызовы функций можно пускать в соседних потоках (так как на них не действуют внешние факторы) и им не нужны блокировки (то есть, проблемы синхронизации отсутствуют). Хороший стимул уделить время этой теме, учитывая повальное распространение многоядерных процессоров.
Заключение
В настоящее время самые распространённые – языки ООП. Java, с момента возникновения, всегда находится в топе, обычно в тройке, востребованных языков. Помимо ООП, содержит элементы функционального программирования, и вы можете комбинировать разные стили составления ваших программ. Спектр применения Java весьма широк – это бизнес задачи, реализация веб-серверов (backend), основной язык создания Android-приложений, кроссплатформенные среды программирования и рабочих мест (IDE/АРМ) и моделирования и многое другое. Особенно сильны позиции Java в Enterprise секторе – области корпоративного программного обеспечения, которая требует качественный и долгоживущий код, реализацию самых сложных бизнес-логик.
Источник: javarush.com
Языки объектно-ориентированного программирования
Программирование и разработка
На чтение 9 мин Просмотров 11к. Опубликовано 22.11.2020
Языки объектно-ориентированного программирования (ООП) встречаются везде, куда бы мы ни посмотрели. Многие из наиболее широко используемых языков программирования, являются объектно-ориентированными. Фактически, многие компьютерные программы и большая часть веб-контента построены на объектно-ориентированных языках высокого уровня . Понимание того, как работают объектно-ориентированные языки и почему они полезны, важно почти для каждой карьеры в области вычислений.
В этой статье мы собираемся взглянуть на то, что такое объектно-ориентированные языки, и изучить их плюсы и минусы. Мы также рассмотрим краткий список некоторых из самых популярных языков ООП, используемых сегодня.
Что такое язык программирования?
Язык программирования — это набор правил и процедур, которые позволяют программистам давать компьютерам набор инструкций для выполнения. У каждого языка программирования есть собственный синтаксис, который после изучения позволяет указывать компьютеру, какие задачи он должен выполнять.
Подумайте об этом таким образом. Английский — это язык, на котором вы можете общаться с англоговорящими. Когда вы знаете основные правила английского языка, вы можете разговаривать с любым, кто понимает эти же правила. Но компьютеры не могут понимать английский или любой другой «традиционный» язык в этом отношении.
Что такое объектно-ориентированное программирование?
Компьютеры — мощные машины. С помощью компьютера мы можем очень быстро вычислять числа и создавать потрясающие программы для многих приложений. Однако, чтобы воспользоваться этой мощью, нам нужно общаться с компьютером.
Следовательно, у нас есть языки программирования, поддерживаемые уже написанным машинным кодом. Однако, чем дальше мы удаляемся от машинного кода, тем более абстрактными и специализированными языками становятся в обработке данных. Вот почему у нас так много языков. Ни один язык не идеален, и все они имеют разные и частично совпадающие приложения.
Парадигмы программирования
В этой связи языки программирования часто разделяются по парадигме программирования. Парадигма программирования — это один из способов взглянуть на данные и получить к ним доступ. Две основные парадигмы являются объектно-ориентированным и функциональным, хотя существует многие другие.
Объектно-ориентированное программирование строится вокруг объектов, которые представляют собой структуры данных, содержащие как данные (свойства или атрибуты), так и код (процедуры или методы). Объекты могут изменять себя с помощью «this» или «self». В большинстве языков ООП почти все является объектом, который может иметь как значения, так и исполняемый код. Каждый объект уникален, и хотя он может быть копией другого объекта, его переменные могут отличаться от переменных любого другого объекта.
Объекты в объектно-ориентированном программном обеспечении можно рассматривать как реальные объекты. Думайте об объекте, как о часах. У этих часов есть свойства. Он металлический, чёрный, имеет удельный вес. Но этот объект тоже что-то делает.
Он отображает время, а также может влиять на себя, вращая шестерёнки, чтобы изменить положение на руке.
Ещё одна особенность объектов заключается в том, что нам не всегда нужно знать, как работают часы, чтобы заставить их работать. Предполагая, что часы хорошо построены, они будут надёжно определять время, и нам не придётся вмешиваться в их внутреннюю работу.
В объектно-ориентированных языках есть объекты, похожие на объекты реального мира. У них могут быть свойства и функции. Они также склонны следовать определённому набору принципов.
Принципы объектно-ориентированного программирования
Объектно-ориентированные языки основаны на четырёх принципах. Эти четыре принципа являются общими свойствами, которые определяют их и делают их значительно более эффективными. Некоторые называют их четырьмя столпами объектно-ориентированного программирования.
Четыре принципа объектно-ориентированного программирования:
- Инкапсуляция.
- Абстракция.
- Наследование.
- Полиморфизм.
Четыре принципа
Давайте рассмотрим эти четыре принципа более подробно.
- Инкапсуляция — это концепция привязки данных к функциям, которая работает как функция безопасности для обеспечения безопасности этих данных. Например, многие языки ООП запрещают что-либо, кроме определённых методов в классе, владеющем данными, для доступа к этим данным. Часто это делается специально для обеспечения безопасности определённых данных.
- Абстракция — это идея о том, что, если вы делаете что-то слишком часто, это должно быть отдельное лицо. Например, если программист многократно переписывает одну и ту же функцию для разных объектов, эта функция может быть абстрагирована, чтобы стать её собственной сущностью.
- Наследование — это то, на что это похоже, и чаще всего определяется как отношения «is a». Это позволяет определённым классам находиться под зонтиком других классов. Эти классы могут наследовать информацию и функциональность от этого класса, а также иметь возможность расширять эту функциональность. Это позволяет нам повторно использовать код, который мы уже набрали в других классах.
- Полиморфизм — полиморфизм означает «принимать более одной формы». В смысле языков ООП это относится к способности обрабатывать объекты по-разному в зависимости от того, что они собой представляют. Это позволяет нам определять различные методы обработки объектов на основе их производного класса. Например, если нам нужно определить размер чего-либо, мы можем изменить способ измерения в зависимости от того, что это такое. Если это деревянная доска, я бы измерил её в дюймах. Это в отличие от объёма воды, который я бы измерял по весу. Если мы используем полиморфизм, мы можем создать функцию, которая может принимать любой объект и при этом давать нам разумные измерения.
Популярные языки объектно-ориентированного программирования
Java, Python, C ++, Lisp и Perl — всё это примеры популярных объектно-ориентированных языков программирования. Они поддерживают программирование с использованием парадигмы классов и объектов.
Пять из самых популярных объектно-ориентированных языков включают:
- Java.
- Python.
- C++.
- Ruby.
- C#.
- Java — есть повсюду, и это один из самых используемых и востребованных языков всех времён. Девиз Java — «напиши один раз, запусти где угодно», и это отражается на количестве платформ, на которых она работает, и местах её использования.
- Python — универсален и используется во многих местах. Однако Python прочно обосновался в машинном обучении и науке о данных. Это один из предпочтительных языков для этой новой и постоянно растущей области.
- C ++ — обладает скоростью C с функциональностью классов и объектно-ориентированной парадигмой. Это скомпилированный, надежный и мощный язык. Фактически, он даже используется для создания компиляторов и интерпретаторов для других языков.
- Ruby — ещё один язык программирования общего назначения. Он был построен для простоты. С учётом сказанного, Ruby — невероятно мощный язык. Создатель Ruby, Юкихиро «Мац» Мацумото, сказал: «Ruby очень прост на вид, но очень сложен внутри, как и наше человеческое тело».
- C # — это язык программирования, разработанный Microsoft. Он был разработан для улучшения существующих концепций C. C # поддерживает платформу Microsoft.NET вместе со многими веб-приложениями, играми, настольными приложениями и мобильными приложениями.
Есть и другие объектно-ориентированные языки, которые мы не рассмотрели выше. Perl, Objective-C, Dart, Lisp, JavaScript и PHP тоже являются объектно-ориентированными или поддерживают объектно-ориентированные принципы.
Плюсы и минусы объектно-ориентированных языков программирования
Хотя языки ООП могут быть мощными, они полезны не для каждой ситуации и имеют некоторый багаж, который необходимо учитывать.
Плюсы
1. Возможность повторного использования
Объектно-ориентированный код имеет чрезвычайно модульную структуру. Благодаря полиморфизму и абстракции вы можете создать одну функцию, которую можно будет использовать снова и снова. Вы также можете скопировать информацию и функции, которые уже были написаны с помощью наследования. Это экономит время, снижает сложность, экономит место и упрощает программирование.
2. Параллельная разработка
Существует достаточно наработок для того, чтобы части программы разрабатывались отдельно друг от друга и при этом функционировали по объектно-ориентированным принципам. Это значительно упрощает параллельную разработку для более крупных команд разработчиков.
3. Обслуживание
Поскольку большая часть, если не весь, наш код находится в одном месте, вызывается и используется повторно, этот код намного проще поддерживать. Вместо того, чтобы по отдельности исправлять сотню различных случаев вызова функции, мы можем исправить одну модульную и полиморфную функцию.
4. Безопасность
Хотя большинство языков имеют некоторую безопасность, объектно-ориентированные языки удобны, поскольку безопасность встроена с инкапсуляцией. Другие методы и классы не могут получить доступ к личным данным по умолчанию, и программы, написанные на языках ООП, более безопасны для этого.
5. Модульность
В объектно-ориентированных языках программирования приложение разбивается на объекты и классы. Это полезно, потому что даёт вашему приложению более модульную структуру. Модульный код легче читать. Поэтому его легче обслуживать.
Минусы
1. Часто грязный
Поскольку объектно-ориентированные языки настолько настраиваемы и масштабируемы, можно легко потерять понимание того, как работает код. Код ООП может работать разными способами. Существует множество методологий программирования в ООП, которые не работают с другими методологиями, неэффективны или сложны в использовании.
2. Требуется больше планирования
Поскольку эти языки настолько модульны и масштабируемы, отказ от чёткой конструкции заранее — это рецепт катастрофы. Создание эффективной программы требует твёрдого плана в большей степени, чем при использовании других парадигм программирования.
3. Непрозрачность
Это как плюс, так и минус. Объекты и функции могут работать независимо. Они могут получать информацию и (обычно) возвращать надёжные результаты. В результате они могут оказаться чёрными ящиками, а это означает, что то, что они делают, не всегда очевидно. Хотя программист, вероятно, создал этот объект и знает, что он делает, языки ООП просто не так прозрачны, как другие языки.
4. Производительность
Объектно-ориентированные языки часто страдают от снижения производительности. Программы, написанные на языках ООП, часто больше и требуют больше вычислительных усилий для запуска, чем функциональные языки. Однако это не всегда так или важно. C ++ — язык ООП, но это один из самых быстрых доступных языков. В то же время скорость не всегда важна.
Разница в скорости становится очевидной только при обработке огромных или сложных вычислений, или в случаях, когда требуется экстремальная скорость.
Заключение
Теперь у вас есть чёткое представление о том, что такое объектно-ориентированный язык, для чего он хорош и какие из них наиболее популярны. Программирование на этих языках может быть столь же приятным, сколь и прибыльным, и ваша карьера в области разработки находится всего в нескольких шагах от вас.
Источник: bestprogrammer.ru