Архив рубрики: Публикации

Утилита htop, установка и примеры использования в Ubuntu 20.04 LTS и других версиях в 2022 году

htop — продвинутый монитор процессов, написанный для Linux. Он был задуман заменить стандартную программу top. Htop показывает динамический список системных процессов, список обычно выравнивается по использованию ЦПУ. В отличие от top, htop показывает все процессы в системе. Также показывает время непрерывной работы, использование процессоров и памяти. Htop часто применяется в тех случаях, когда информации даваемой утилитой top недостаточно, например при поиске утечек памяти в процессах. Htop написан на языке Си и использует для отображения библиотеку Ncurses. Я всегда ставлю его при установке системы и моментально забываю про утилиту top.




Установка производится из стандартного репозитория командой:




sudo apt install htop




Команда запуска:




htop




Для выхода используем клавишу F10 или комбинацию клавиш CTRL+C




Столбцы в утилите HTOP:




PID — идентификатор процесса.
USER — владелец процесса.
PRI — текуший приоритет (влияет на процессорное время, отводимое процессу, значение по умолчанию — 20; чем меньше приоритет, тем больше времени отводится процессу, следовательно он выполняется быстрее).
NI — величина изменения приоритета относительно значения PRI (клавиши F7, F8).
VIRT — общий объем виртуальной памяти, используемой процессом. Включает в себя: область кода (CODE), данные (DATA), разделяемые библиотеки (SHARED) и страницы, перемещенные в swap-область памяти. Если приложение потребовало от ядра выделить ему 100Мб памяти, а использует всего 5 Мб, данный столбец всё равно будет показывать цифру 100.
(CODE — объем памяти, содержащий исполняемый код процесса.
DATA — объем памяти, занятой данными, используемыми процессом в ходе выполнения.
SWAP — объем памяти, используемой процессом, но перемещенной в swap-область.)
RES — количество резидентной (не перемещаемой в swap) памяти в килобайтах. Если приложение потребовало от ядра выделить ему 100Мб памяти, а использует всего 5 Мб, то данный столбец покажет 5. Но здесь есть два ньюанса: 
а) RES не показывает сколько данных было перемещено в swap, 
б) часть RES-памяти может быть разделяемой.
SHR — количество разделяемой (shared) памяти программы в килобайтах, т.е. памяти, которая может быть использована другими приложениями.




S — состояние процесса:
S — так называемое состояние сна;
R — состояние выполнения;
D — состояние ожидания.




CPU% — использование процессора в процентном отношении.
MEM% — использование процессом памяти в процентном отношении.
TIME+ — время работы процесса.
Command — указывает на команду, которой был запущен процесс.
Через настройки (F2) можно добавить еще некоторые полезные параметры:
IO RATE — Операции вводавывода. Чтение + запись. Если нужно отдельно на чтение и на запись, то можно добавить:
IO READ RATE и IO WRITE RATE.
Также на экран выводятся следующие параметры:
Load average — отражает число блокирующих процессов в очереди на исполнение в определенный временной интервал, а именно 1 минута, 5 минут и 15 минут, соответственно. Блокирующий процесс — это процесс, который ожидает ресурсов для продолжения работы.
Uptime — время работы системы.




Управление HTOP




F1 — справка;
F2 — настройки;
F3 — поиск процесса;
F4 — сортировка списка процессов (от большего к меньшему или от меньшего к большему);
F5 — устанавливает древовидное отображение (корни — родительские процессы, а листья — дочерние) и наоборот;
F6 — открывает панель с выбором параметра сортировки процессов;
F7 — увеличить приоритет выполнения текущего процесса;
F8 — уменьшить приоритет выполнения текущего процесса;
F9 — убить процесс;
F10 — выйти из программы.



2022-06-24T03:00:29
Настройка web сервера

Ускоряем MySQL/MariaDB используя RAM-диск на UBUNTU 20.04 LTS SERVER в 2022 году

Перенос баз данных в оперативную память




Сначала сделайте резервную копию всех баз данных.




Скопируем его в /var/lib/mysql.bak:




sudo cp -pRL /var/lib/mysql /var/lib/mysql.bak




Создайте каталог для RAM-диска.




sudo mkdir /ramdisk




Заранее уточните размер папки с базами данных MySQL/MqriaDB командой:




 du -hs /var/lib/mysql/




Исходя из полученного размера и учитывая дальнейший рост базы нужно установить соответствующий размер RAM-диска (виртуального диска в оперативной памяти). Я назначил рамдиску размер 4ГБ.




Вам решать, сколько места вы хотите, просто убедитесь, что оно может вместить все данные, которые вы будете записывать в базу данных.




Монтируем соответствующий раздел командой:




sudo mount -t tmpfs -o size=4G tmpfs /ramdisk/




Останавливаем MySQL/MariaDB командой:




sudo service mysql stop
или
sudo /etc/init.d/mysql stop




Перемещаем файлы баз данных MySQL/MariaDB в раздел RAM-диска.




sudo mv /var/lib/mysql /ramdisk/mysql




Создаём символическую ссылку на RAM-диск.




sudo ln -s /ramdisk/mysql /var/lib/mysql




Изменяем права папки на MySQL, чтобы разрешить доступ.




sudo chown mysql:mysql /ramdisk/mysql




Перезапустите MySQL, чтобы изменения вступили в силу.




sudo service mysql restart
или
sudo /etc/init.d/mysql restart




Восстановление баз данных




Т.к. базы данных сохраняются на RAM-диске, они будут удаляться каждый раз при выключении компьютера.




Вот шаги для его восстановления.




Удалите ранее созданную символическую ссылку на mysql ramdisk.




sudo rm -rf /var/lib/mysql




Скопируйте и восстановите базы данных из резервной копии.




sudo cp -pRL /var/lib/mysql.bak /var/lib/mysql




Скрипты для удобства




Выполнение всех вышеперечисленных команд каждый раз, когда я включается/перезагружается сервер, является очень утомительной задачей, поэтому для удобства я создал сценарии для восстановления и перемещения баз данных в оперативную память.




Скрипт восстановления базы данных




#!/bin/bash

# Script for restoring backed up database that was moved to the RAM Disk.

if [ $(uname) = "Linux" ]; then

# Delete detached symlink

[ -L /var/lib/mysql ] && sudo rm -rf /var/lib/mysql

# Restore backups

[ -d /var/lib/mysql.bak ] && sudo cp -pRL /var/lib/mysql.bak /var/lib/mysql

else

echo "Unsupported platform."

fi




Скрипт для переноса базы данных в оперативную память




#!/bin/bash

# Create ramdisk if it doesn't exist.

[ ! -d /ramdisk ] && sudo mkdir /ramdisk

# Mount ramdisk has been created.

[ -d /ramdisk ] && sudo mount -t tmpfs -o size=4G tmpfs /ramdisk/

if [ -d /var/lib/mysql ]; then

# Move the mysql databases to the ramdisk if it exists

sudo mv /var/lib/mysql /ramdisk/mysql

# Create a symbolic link.

sudo ln -s /ramdisk/mysql /var/lib/mysql

# Change ownership to mysql.

[ -d /ramdisk/mysql ] && sudo chown mysql:mysql /ramdisk/mysql

else

echo "No MySQL directory at /var/lib."

fi;

# Restart mysql.

sudo /etc/init.d/mysql restart




Это то, что я выполняю каждый раз, когда перезагружаю сервер.




# Restore the data first.

./mysql-ramdisk-restore.sh

# then move it to the RAM.

./mysql-ramdisk.sh




Обязательно убедитесь, что вы создали резервную копию своих баз данных в /var/lib/mysql.bak перед выполнением этих команд.



2022-06-23T00:29:07
Веб-разработка

Хостинг/VPS/VDS/выделенный сервер на NVMe и SATA SSD: в чем разница?

В поисках идеального решения для ваших веб-проектов или приложений вы столкнетесь с множеством вариантов VPS-хостинга. И независимо от того, являетесь ли вы владельцем магазина электронной коммерции (интернет-магазина), дизайнером сайтов или экспертом-блоггером, производительность вашего проекта в решающей степени зависит от технологии хранения данных, которую использует ваш хостинг-сервер.




Тип хранилища, используемый вашим VPS/VDS/выделенным сервером или хостинг-провайдером, оказывает наибольшее влияние на воспринимаемую пользователем скорость и отзывчивость. Именно по этой причине технологии хранения данных быстро развиваются, чтобы поддерживать надежный, мощный и более быстрый веб-хостинг. Сегодня мы рассмотрим разницу между NVMe и SATA SSD. Оба они являются твердотельными, однако различия между ними могут дать вам существенно разные результаты.




Что такое технология NVMe?




NVMe расшифровывается как Non-Volatile Memory express. Это новый инновационный интерфейс связи, который устраняет ограничения, налагаемые предыдущими технологиями хранения данных. Протокол NVMe предназначен для беспрепятственного использования высокоскоростных носителей информации. Он также является твердотельным, как и SSD с интерфейсом SATA (Serial ATA), однако скорость и производительность ничем не отличаются.




Если говорить в общем, NVM (энергонезависимая память) — это память, которая может сохранять данные даже при отключении питания системы. С другой стороны, энергозависимая память теряет сохраненные данные при отсутствии питания. SSD, вращающиеся диски и другие дисковые накопители — все это примеры энергонезависимой памяти. Учитывая это, технология NVMe использует энергонезависимую память для сохранения данных даже при отключении питания.




NVMe также использует более новый интерфейс для связи с процессором и операционной системой — PCI express, или PCIe. Это гораздо более быстрый интерфейс, чем SATA или SAS. Этот новый интерфейс может напрямую взаимодействовать с центральным процессором, обеспечивая гораздо более высокую пропускную способность (и, следовательно, большую скорость), а также меньшее время отклика.




Что такое SSD (твердотельный накопитель)?




SSD (Solid State Drives) — это оборудование, использующее технологию твердотельного хранения данных с помощью флэш-памяти. Существует несколько типов флэш-памяти, однако наиболее распространенной является NAND-память.




Мы знаем, что твердотельные накопители обеспечивают значительно более высокую скорость чтения/записи по сравнению с традиционными жесткими дисками (HDD). Однако SSD также имеют некоторые ограничения, когда речь идет о максимальной скорости для протоколов хранения данных.




Твердотельные накопители обычно работают с интерфейсами SATA и SAS, которые препятствуют повышению производительности более быстрых дисков. Изначально интерфейс SATA был разработан для жестких дисков и широко использовался в ранних SSD для лучшей поддержки обратной совместимости. Но со временем интерфейс SATA стал ограничивать возможности твердотельных накопителей.




Чтобы решить эту проблему, разработчики создали протокол NVMe, который опирается на интерфейс PCI Express (PCIe). Этот интерфейс позволяет NVMe обеспечивать более высокую скорость, лучшую производительность и повышенную надежность. Все эти накопители объединены под одним названием «SSD», поскольку для хранения данных в них используется твердотельная память.




Изначально накопители NVMe предлагались в виде карт расширения с интерфейсами PCI 2.0 или PCIe 3.0. Они должны были подключаться к разъему PCIe материнской платы сервера. Позже были разработаны 2,5-дюймовые NVMe-накопители, которые подключались к материнской плате через разъем U.2 или U.3.




NVMe против SSD: В чем разница?




Как и NVMe, SSD также является разновидностью энергонезависимой памяти и считывает/записывает данные только с помощью электронных схем.




Итак, если и SSD, и NVMe являются твердотельными устройствами хранения данных, в чем между ними разница?




Как уже упоминалось выше, разница заключается в букве «e» в NVMe, которая означает Express. Express — это новый протокол, специально разработанный для усиления внутреннего параллелизма и низкой задержки твердотельных накопителей. Это означает, что система хранения NVMe подключает накопитель к материнской плате сервера с помощью более быстрого и нового интерфейса, используя прямые дорожки PCIe процессора.




В этом и заключается основное различие между NVMe и SSD — и те, и другие используют технологию твердотельных накопителей для хранения данных, но NVMe имеет для этого более новый, быстрый и качественный аппаратный интерфейс.




Поэтому, когда вы говорите SSD-хостинг, это означает, что твердотельные накопители подключены к серверу через более медленные интерфейсы SATA или SAT.




С другой стороны, хостинг NVMe означает, что твердотельные накопители подключены к серверу через более быстрый, надежный интерфейс Express нового поколения.




Преимущества технологии NVMe:




Больше операций ввода-вывода




Благодаря шине PCI express диски NVMe способны обеспечить больше IOPs (операций ввода/вывода), чем интерфейс ATA, использовавшийся в дисках ранних поколений. Интерфейсы SATA обеспечивали пропускную способность 6 Гбит/с, тогда как более поздние интерфейсы SAS-3 с последовательным подключением были рассчитаны на пропускную способность 12 Гбит/с.




Технология NVMe превосходит SATA и SAS по пропускной способности, поскольку ее интерфейс PCIe обеспечивает теоретический максимум пропускной способности 32 Гбит/с (или огромные 256 Гбит/с) с новейшим интерфейсом PCIe 4.0. В настоящее время ни один твердотельный накопитель не обеспечивает пропускную способность этого интерфейса (или даже половины ее), но это перспективный интерфейс, у которого есть пространство для роста.




Хороший SSD-накопитель, подключенный к быстрому интерфейсу SAS или SATA, может обеспечить скорость чтения/записи данных около 550 МБ/с. Кроме того, этот же SSD может обрабатывать до 10 000 операций ввода-вывода в секунду.




В то время, как хороший NVMe может считывать/записывать от 3000 до 3200 МБ/с данных и обрабатывать до 640 000 IOPs.




Одним словом, NVMe обеспечивает до 60 раз лучшую производительность IOPs и примерно в 6 раз более высокую скорость передачи данных.




Высокая глубина очереди команд




Накопители NVMe используют различные процессы постановки в очередь, в то время как твердотельные накопители SATA могут обрабатывать только одну команду за раз с глубиной очереди 32 команды.




Интерфейс SAS обеспечивает глубину очереди в 254 команды. Но самым невероятным фактом является то, что новая технология NVMe может обрабатывать 64 000 очередей и допускать 64 000 записей в каждой очереди.




Чем больше глубина очереди, тем больше запросов на чтение/запись может быть поставлено в очередь на выполнение, что позволяет повысить скорость отклика системы.




Масштабируемая технология




Поскольку технология NVMe опирается на дорожки PCIe, а не на интерфейс контроллера, она является масштабируемой. На данный момент твердотельные накопители NVMe используют 4 дорожки, но потенциально они могут использовать все 16 дорожек PCIe, что является перспективным решением.




Более экологичная технология




По сравнению с традиционными технологиями, NVMe намного экологичнее, поскольку она способна использовать режим пониженного энергопотребления для значительного снижения энергопотребления. Этот режим ожидания может снизить энергопотребление до 97%, когда система простаивает.




Безопасность в соответствии с отраслевыми стандартами




Набор команд технологии NVMe разработан для поддержки всех команд контейнера безопасности, присутствующих в интерфейсах ACS, SAS и ATA. Именно поэтому NVMe исключительно совместима с отраслевыми стандартами безопасности.




Сокращение узких мест на серверах




Предприятия в значительной степени полагаются на данные для своих веб-сайтов, веб-приложений, различных продуктов SaaS и т.д. Если ваши серверы работают на твердотельных накопителях, вы, скорее всего, столкнетесь с проблемой узких мест из-за слишком большого количества одновременных пользовательских подключений или запросов, что приводит к перегрузке системы хранения данных. Это приводит к замедлению доступа к данным, замедлению загрузки веб-страниц и ухудшению пользовательского интерфейса. Предприятия могут даже потерять клиентов из-за ухудшения пользовательского интерфейса, вызванного использованием традиционных твердотельных накопителей.




Серверы NVMe решают эту проблему благодаря высоким возможностям постановки в очередь и более высокой скорости чтения/записи.




В целом, это обеспечивает превосходную производительность сервера и бесперебойную работу как для пользователей, так и для сотрудников предприятия. Все мы знаем, что лучшая производительность сервера в конечном итоге приводит к повышению рейтинга в SERP, снижению числа отказов и увеличению конверсии.




Что такое NVMe VPS хостинг?




VPS (сокращение от Virtual Private Server) — это виртуальная среда, работающая на физическом сервере. Она предоставляется хостинг-провайдером в качестве услуги. На физическом сервере может одновременно работать несколько VPS, каждый из которых имеет свои собственные выделенные ресурсы. VPS позволяет пользователям выбирать ОС и другие параметры конфигурации, поэтому его легко развернуть и управлять им.




VPS-хостинг является экономически эффективной альтернативой дорогим выделенным серверам и при этом намного лучше виртуального хостинга. Вы можете полностью настроить сервер в соответствии с вашими потребностями, будь то сервер баз данных, веб-сервер, игровой сервер или другой.




NVMe VPS хостинг- это просто виртуальный выделенный сервер, который работает на физическом сервере, использующем твердотельные накопители NVMe. Эти накопители используют интерфейс PCIe, который разработан для обеспечения исключительной скорости передачи данных и лучшей общей производительности. Серверы NVMe умело используют низкую задержку и твердотельную природу твердотельных накопителей. В целом, NVMe VPS будет работать намного лучше, чем типичный SATA SSD VPS — другие ресурсы, такие как процессор, обычно не являются узким местом для производительности и отзывчивости посетителей.




Итоги




Учитывая все вышеперечисленные ощутимые преимущества NVMe-хостинга, становится ясно, что NVMe намного лучше SSD, когда речь идет о повышении производительности сервера и ускорении отклика вашего сайта или приложений. Его возможности позволяют справляться с ресурсоемкими проектами без каких-либо задержек или замедления загрузки.




Хостинг NVMe — это идеальное решение для компаний с высокопроизводительными приложениями, веб-сервисами или веб-сайтами, которым требуется максимальная скорость.



2022-06-23T00:01:13
wordpress

Какой язык программирования выбрать новичку?

Итак, вы поставили цель – стать программистом. С чего начать?

Для того, чтобы начать писать код, нужно владеть хотя бы одним языком программирования. Вот тут и начинается ступор. Как правильно выбрать первый язык программирования, куда податься? Об этом сегодня и поговорим.

 

А так ли важно?

Любой IT-специалист вам скажет, что язык – всего лишь инструмент, и будет абсолютно прав. Все ЯП хоть и отличаются, но в деталях, используя при этом одни и те же понятия: переменная, функция, класс. Более того, подавляющее большинство востребованных языков поддерживают одни и те же методологии: структурное программирование, объектно-ориентированное программирование.

Из этого следует два вывода. Во-первых, общий подход к написанию программ не изменится, если вы предпочтёте, например, Python, чем C++. Во-вторых, после изучения одного конкретного языка перейти к разработке на другом не станет проблемой.

Проведём аналогии. И на английском, и на русском языке вы можете узнать у прохожих дорогу до ближайшей станции метро. В обоих случаях вы используете местоимение, вопросительное слово, сказуемое и зависимые части. С языками программирования точно также.

Но проблемы реального мира в IT не работают. Например, на английском языке и русском языке практически нет одинаковых слов, тогда как в программировании используются одни и те же обороты: for, while, class, public. В Англии вас могут не понять, если вы заговорите на русском. А вот если вы написали программу на C++, то Python-разработчик в общем виде поймёт, что вы имели в виду. Да, синтаксис отличается, какие-то функции непонятны, но идея написанного будет ясна.

Поэтому главное, что вы должны понять – нет критической разницы, что вы выберите первым языком программирования. Любой выбор будет и ошибочным, и правильным одновременно. Переучиться под требуемую технологию в недалёком будущем не составит никакого труда.

 

На что обратить внимание?

При выборе конкретного языка программирования нужно обратить внимание на следующие аспекты:

 

Наличие справочного материала в большом количестве

Сюда относятся как видео с YouTube, так и учебники, написанные профессиональными разработчиками и ответы со stackoverflow. Это – важнейший критерий выбора.

Представьте, вы видите незнакомую ошибку или новую функцию. Для выяснения обстоятельств вам придётся обращаться в интернет за помощью. С гораздо большей вероятностью вы найдёте ответ, если язык популярен.

Поддержка основных методологий разработки: структурное программирование и ООП

Практически все коммерческие проекты используют наработки этих технологий, и принципы работают повсеместно. Вам не придётся переучиваться в самом главном – мышлении. А детали синтаксиса можно выучить за пару вечеров.

 

Кросс-платформенность

Почему это важно? Во-первых, это позволит вам запускать код с разных устройств: как с ноутбука дома, так и с телефона в пробке. Как раз освободите больше свободного времени для работы. Во-вторых, это позволяет не останавливаться на конкретных решениях. Откуда вы знаете, что вам больше понравится: разработка веб-сайтов или мобильных приложений? Напрямую это к кросс-платформенности не относится, но как правило языки, разработанные только под конкретное устройство, не дадут свободы выбора направления разработки. Сейчас многие языки предоставляют возможность запускать программу с любого устройства, но учесть это всё же надо.

Теперь пройдёмся по двум основным языкам, которые лучше всего подходят под то, чтобы стать вашим первым языком программирования.

 

Python

Язык программирования Python был создан в 1991 году. В 2021 он стал самым популярным в мире. В чём причина успеха?

Во-первых, он нашёл применение во многих сферах: веб-разработка, анализ данных, программирование роботов, компьютерное зрение и даже мобильные приложения. Фактически, язык позволит реализовать любую вашу творческую задумку. Помимо стандартных инструментов, сообщество выпустило кучу библиотек, существенно расширив начальный функционал языка.

Во-вторых, язык обладает малым порогом вхождения. Вам не нужно учитывать множество деталей при разработке программ, как в Си. Язык поддерживает ООП, поэтому приложение может иметь любую архитектуру.

Но Python – не панацея. Чем больше вы его изучаете, тем больше вы удивляетесь его сложности организации. В плане производительности и работы с памятью питон проигрывает многим другим языкам.

Выбор Python позволит максимально быстро понять, как устроено программирование, и увидеть первые результаты. Но впоследствии придётся изучать низкоуровневые нюансы, которых вы не замечаете, когда используете питон.

 

Cи

Язык Си, несмотря на 50-летний возраст, остаётся мощным инструментом. Операционная система Linux до сих пор пишется на этом языке.

Да, Си сложнее, чем Python. Но зато он позволяет досконально изучить структурное программирование, работу с системными ресурсами, такие вещи, как указатели. Фактически, это – фундамент многих современных технологий.

Си приучит вас писать красивый, грамотный код. Си существенно расширит ваш кругозор в IT-сфере.

Казалось бы, в Си нет ООП, почему он сюда включён? Здесь есть несколько причин. Дело в том, что объектно-ориентированный подход исправил проблемы структурного программирования, которые вы обязательно заметите, программируя на Си. Например, попробуйте написать приложение, затем добавьте одну новую функциональность, а потом замерьте время, которое вы потратили на модификацию проекта. Оно в лучшем случае будет такое же, сколько вы

потратили на написание базовой программы. Это всё нужно прочувствовать, чтобы понимать, почему сейчас в актуальной разработке используются те или иные решения.

Но при этом Си позволяет пусть и криво-косо, но реализовать все базовые принципы ООП: инкапсуляцию (которая, к слову, в С реализована идеально), полиморфизм и наследование.

Однако самое главное – существует С++. Многие программы на Си будут работать и на С++, но С++ предусматривает в свой механике объектно-ориентированное программирование. Поэтому, по сути, изучив структурный подход, вы просто перейдёте к С++, ничего не потеряв, и более досконально зная, как устроен язык изнутри.

Этот вариант более сложный, но зато – очень эффективный.



2022-06-22T19:26:08
Программирование

Какой язык программирования выбрать новичку?

Итак, вы поставили цель – стать программистом. С чего начать?

Для того, чтобы начать писать код, нужно владеть хотя бы одним языком программирования. Вот тут и начинается ступор. Как правильно выбрать первый язык программирования, куда податься? Об этом сегодня и поговорим.

 

А так ли важно?

Любой IT-специалист вам скажет, что язык – всего лишь инструмент, и будет абсолютно прав. Все ЯП хоть и отличаются, но в деталях, используя при этом одни и те же понятия: переменная, функция, класс. Более того, подавляющее большинство востребованных языков поддерживают одни и те же методологии: структурное программирование, объектно-ориентированное программирование.

Из этого следует два вывода. Во-первых, общий подход к написанию программ не изменится, если вы предпочтёте, например, Python, чем C++. Во-вторых, после изучения одного конкретного языка перейти к разработке на другом не станет проблемой.

Проведём аналогии. И на английском, и на русском языке вы можете узнать у прохожих дорогу до ближайшей станции метро. В обоих случаях вы используете местоимение, вопросительное слово, сказуемое и зависимые части. С языками программирования точно также.

Но проблемы реального мира в IT не работают. Например, на английском языке и русском языке практически нет одинаковых слов, тогда как в программировании используются одни и те же обороты: for, while, class, public. В Англии вас могут не понять, если вы заговорите на русском. А вот если вы написали программу на C++, то Python-разработчик в общем виде поймёт, что вы имели в виду. Да, синтаксис отличается, какие-то функции непонятны, но идея написанного будет ясна.

Поэтому главное, что вы должны понять – нет критической разницы, что вы выберите первым языком программирования. Любой выбор будет и ошибочным, и правильным одновременно. Переучиться под требуемую технологию в недалёком будущем не составит никакого труда.

 

На что обратить внимание?

При выборе конкретного языка программирования нужно обратить внимание на следующие аспекты:

 

Наличие справочного материала в большом количестве

Сюда относятся как видео с YouTube, так и учебники, написанные профессиональными разработчиками и ответы со stackoverflow. Это – важнейший критерий выбора.

Представьте, вы видите незнакомую ошибку или новую функцию. Для выяснения обстоятельств вам придётся обращаться в интернет за помощью. С гораздо большей вероятностью вы найдёте ответ, если язык популярен.

Поддержка основных методологий разработки: структурное программирование и ООП

Практически все коммерческие проекты используют наработки этих технологий, и принципы работают повсеместно. Вам не придётся переучиваться в самом главном – мышлении. А детали синтаксиса можно выучить за пару вечеров.

 

Кросс-платформенность

Почему это важно? Во-первых, это позволит вам запускать код с разных устройств: как с ноутбука дома, так и с телефона в пробке. Как раз освободите больше свободного времени для работы. Во-вторых, это позволяет не останавливаться на конкретных решениях. Откуда вы знаете, что вам больше понравится: разработка веб-сайтов или мобильных приложений? Напрямую это к кросс-платформенности не относится, но как правило языки, разработанные только под конкретное устройство, не дадут свободы выбора направления разработки. Сейчас многие языки предоставляют возможность запускать программу с любого устройства, но учесть это всё же надо.

Теперь пройдёмся по двум основным языкам, которые лучше всего подходят под то, чтобы стать вашим первым языком программирования.

 

Python

Язык программирования Python был создан в 1991 году. В 2021 он стал самым популярным в мире. В чём причина успеха?

Во-первых, он нашёл применение во многих сферах: веб-разработка, анализ данных, программирование роботов, компьютерное зрение и даже мобильные приложения. Фактически, язык позволит реализовать любую вашу творческую задумку. Помимо стандартных инструментов, сообщество выпустило кучу библиотек, существенно расширив начальный функционал языка.

Во-вторых, язык обладает малым порогом вхождения. Вам не нужно учитывать множество деталей при разработке программ, как в Си. Язык поддерживает ООП, поэтому приложение может иметь любую архитектуру.

Но Python – не панацея. Чем больше вы его изучаете, тем больше вы удивляетесь его сложности организации. В плане производительности и работы с памятью питон проигрывает многим другим языкам.

Выбор Python позволит максимально быстро понять, как устроено программирование, и увидеть первые результаты. Но впоследствии придётся изучать низкоуровневые нюансы, которых вы не замечаете, когда используете питон.

 

Cи

Язык Си, несмотря на 50-летний возраст, остаётся мощным инструментом. Операционная система Linux до сих пор пишется на этом языке.

Да, Си сложнее, чем Python. Но зато он позволяет досконально изучить структурное программирование, работу с системными ресурсами, такие вещи, как указатели. Фактически, это – фундамент многих современных технологий.

Си приучит вас писать красивый, грамотный код. Си существенно расширит ваш кругозор в IT-сфере.

Казалось бы, в Си нет ООП, почему он сюда включён? Здесь есть несколько причин. Дело в том, что объектно-ориентированный подход исправил проблемы структурного программирования, которые вы обязательно заметите, программируя на Си. Например, попробуйте написать приложение, затем добавьте одну новую функциональность, а потом замерьте время, которое вы потратили на модификацию проекта. Оно в лучшем случае будет такое же, сколько вы

потратили на написание базовой программы. Это всё нужно прочувствовать, чтобы понимать, почему сейчас в актуальной разработке используются те или иные решения.

Но при этом Си позволяет пусть и криво-косо, но реализовать все базовые принципы ООП: инкапсуляцию (которая, к слову, в С реализована идеально), полиморфизм и наследование.

Однако самое главное – существует С++. Многие программы на Си будут работать и на С++, но С++ предусматривает в свой механике объектно-ориентированное программирование. Поэтому, по сути, изучив структурный подход, вы просто перейдёте к С++, ничего не потеряв, и более досконально зная, как устроен язык изнутри.

Этот вариант более сложный, но зато – очень эффективный.



2022-06-22T19:26:08
Программирование

Восстанавливаем загрузчик Grub на Linux

Сегодня разберём пример, как можно восстановить загрузчик GRUB после его поломки.

Если у вас поломался загрузчик GRUB, то в этой статье я расскажу как его можно восстановить. Для систем c ext и btrfs Читать