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

Каким образом можно изучить C++ с нуля?

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

C++ поможет вам привить хорошие навыки программирования (то есть ясный и последовательный стиль кодирования, комментировать код по мере его написания и ограничить видимость внутренних компонентов класса для внешнего мира), а поскольку абстракции практически нет, вам необходимо определить практически все атрибуты, необходимые для работы вашего кода.

В этом посте мы познакомим вас с дорожной картой для начинающих по изучению C++ по курсам https://tutortop.ru/courses_selection/kursy_razrabotki_na_c/ или самостоятельно, чтобы вы могли чувствовать себя уверенно, начиная свой путь.

Вот что мы рассмотрим сегодня:

  • Краткая история C++
  • Обзор инструментов и программного обеспечения C++
  • Введение в язык и синтаксис C++
  • C++ Часто задаваемые вопросы
  • Следующие шаги

Давайте начнем!

Краткая история C++

Отличный способ начать работу с C++ — изучить его историю. C++ — один из старейших языков программирования, поэтому существует множество различных версий. Знакомство с этой историей поместит вас в сообщество программистов на C++ и даст вам представление о его возможностях.

Язык программирования C++ был изобретен в 1979 году Бьярном Страуструпом, когда он работал над своей докторской диссертацией в Bell Labs. C++ был разработан как расширение языка программирования C, отсюда и его первоначальное название «C с классами». Целью Страуструпа было добавить гибкости и ООП (объектно-ориентированного программирования) к языку C. Он включил такие функции, как классы, строгая проверка типов, аргументы функций по умолчанию и базовое наследование. Название было изменено на C++ в 1983 году, которое происходит от ++оператора.

C++ был выпущен для коммерческого использования в 1985 году, но еще не был стандартизирован. В 1990 году был выпущен компилятор Borland Turbo C++, который добавил много новых функций. Первый международный стандарт C++ был опубликован в 1998 году, известный как C++ 98.

Сюда входит стандартная библиотека шаблонов, предоставляющая общие функции программирования и структуры данных. На основании отзывов комитет пересмотрел эти стандарты в 2003 году, а язык обновления был переименован в C++ 03.

В 2011 году, когда был завершен C++ 11, язык претерпел еще одну ревизию. Эта версия включает auto, среди прочего, такие функции, как поддержка Regex, новые библиотеки, новый синтаксис для циклов, ключевое слово и новые классы контейнеров. С тех пор были выпущены еще две ревизии: C++ 14 и C++ 17.

Обзор инструментов C++

Чтобы правильно создавать программы на C++ во время прохождения курсов https://tutortop.ru/courses_selection/kursy_po_c_razrabotke/, вам необходимо знать несколько инструментов и программного обеспечения: текстовый редактор, компилятор C++, компоновщик и библиотеки.

Текстовые редакторы

Чтобы написать программу на C++, вам понадобится текстовый редактор. Думайте об этом как о пустом документе Microsoft Word; именно здесь вы будете писать свой код. Подойдет любой текстовый редактор, некоторые даже встроены в ваш компьютер, но мы рекомендуем использовать текстовый редактор, предназначенный для программирования. Есть много вариантов, но некоторые из наиболее распространенных текстовых редакторов для разработчиков на C++:

  • Notepad ++: открытый доступ, легкий, простой
  • Atom: бесплатно, поддерживает множество языков, ограниченное количество плагинов
  • Sublime Text: 80 долларов, уникальные функции, простой макет
  • Bluefish: легкий, быстрый, мультиплатформенный, поддерживает множество языков.

Компиляторы

Компилятор просматривает ваш исходный код для выполнения двух важных задач: во-первых, он проверяет, соответствует ли ваш код правилам языка C++; во-вторых, он переводит ваш код в объектный файл. Некоторые известные компиляторы — это GCC, Clang и компилятор Visual Studio C++. Мы не рекомендуем Turbo C++, так как он немного устарел.

Компоновщик

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

Библиотеки

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

Интегрированная среда разработки (IDE)

Многие программисты на C++ используют IDE вместо текстового редактора и компилятора. IDE — это универсальный инструмент для программирования на C++. Он включает текстовый редактор, компоновщик, компилятор и библиотеки. Не существует подходящего или неправильного компилятора. Все сводится к вашим потребностям и тому, какой макет лучше всего подходит для вас. Некоторые популярные IDE:

  • Code::Blocks: бесплатные, востребованные функции, плагины пользователей
  • Visual Studio Code: открытый исходный код, отличные функции, кроссплатформенность
  • Eclipse: открытый исходный код, простой, кроссплатформенный, необходимо установить компоненты C++

Введение в язык и синтаксис C++

C++ — объектно-ориентированный язык программирования. Это означает, что программы C++ моделируются вокруг объектов и классов, которыми вы можете управлять и манипулировать, применяя функции. Языки ООП предлагают четкую структуру программы и помогают разработчикам моделировать реальные проблемы.

Язык разработан, чтобы предоставить вам большую свободу и силу, что и хорошо, и плохо. Вы полностью контролируете, как ваша система использует ресурсы; нет автоматического управления памятью, как в Java.

У вас есть возможность выбирать, как распределяется память (например, стек или куча); в C++ нет интерпретатора, который помешал бы вам писать ошибочный код.

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

Давайте посмотрим на код C++!

Глядя на приведенный ниже код, вам может быть интересно, что все это такое и что это значит. Добро пожаловать в синтаксис C++.

Что такое синтаксис? Синтаксис подобен грамматике языка программирования. Это основная основа всего, что вы будете писать на C++.

Это правила, которые определяют, как вы пишете и понимаете код C++. Давайте посмотрим на пример кода, чтобы познакомиться с синтаксисом.

#include <iostream> //header file library 

using namespace std; //using standard library



int main() { //main function

  cout << "Hello World n"; // first object

  cout << "Learn C++ nn"; //second object with blank line

  cout << "Educative Team"; //third object 

  return 0; //no other output or return

} //end of code to exectute

Объяснение синтаксиса

#include <iostream>— это библиотека заголовочного файла. Заголовочный файл импортирует функции в вашу программу. По сути, мы просим программу скопировать содержимое из файла с именем <iostream>. Это означает поток ввода и вывода , и он определяет стандарты для объектов в нашем коде.

using namespace std означает, что мы используем имена объектов и переменных из стандартной библиотеки ( std). Этот оператор часто сокращается с помощью ключевого слова std и оператора ::. int main( ) используются для определения основной функции.

Это очень важная часть программ на C++. Функция по существу определяет действие для вашего кода. Все, что находится в фигурных скобках { }, будет выполнено.

cout это объект (произносится «видеть»). В этом примере он определяет наши выходные данные: строки слов. Мы пишем новый объект, используя cout во второй строке. Символ n заставляет текст исполняться в другой строке.

Включение двух nn создает пустое пространство. Выражением return 0 мы сообщаем программе, что ничего не вернется. Мы выводим только строки текста. Обратите внимание, что мы используем << оператор для именования наших объектов. Точка с запятой ; функционирует как точка.

Термины и словарь C++

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

Ключевые слова

Ключевые слова — это заранее определенные имена, которые можно использовать для идентификации вещей в вашем коде. Ключевые слова — это идентификаторы определенных объектов, переменных или действий. Вы также можете создавать свои собственные ключевые слова. Вот несколько примеров ключевых слов:

  • goto
  • float
  • public
  • class(1)
  • int

Переменные

Переменные подобны контейнерам, в которых хранятся значения. Чтобы объявить переменную, вы должны присвоить ей значение type и  использовать правильное ключевое слово. Всем переменным в C++ необходимо имя или идентификатор. При создании идентификаторов необходимо соблюдать несколько основных синтаксических правил.

  • Имена чувствительны к регистру
  • Имена могут содержать буквы, цифры и символы подчеркивания.
  • Имена должны начинаться с буквы или символа подчеркивания.
  • Имена не могут содержать пробелы или специальные символы (!, #, @ И т. Д.)
  • Имена не могут использовать зарезервированные ключевые слова

Есть шесть различных типов переменных:

int myNum = 5;               // Stores integers (whole numbers)

float myFloatNum = 5.99;     // Stores decimals loating point number

double myDoubleNum = 9.98;   // Floating point number

char myLetter = 'D';         // Stores single characters

bool myBoolean = true;       // Stores Boolean, values with a true or false state

string myText = "Hello";     // Stores strings of text

Типы данных

Типы данных — это классификации различных типов данных, которые вы можете использовать в программе. Типы данных сообщают нашим переменным, какие данные они могут хранить. В C++ есть три типа данных:

Примитивные типы данных: это встроенные данные, которые вы можете использовать для объявления переменных. Они включают в себя integer, character, boolean, floating point, double floating point, void, и wide character.

Производные типы данных: они являются производными от примитивных типов данных. Они включают в себя function, reference, array, и pointer.

Типы данных, определяемые пользователем: они определяются вами, программистом.

Строки

Строки — это объекты в C++. Они представляют собой набор символов в " " кавычках, как наша строка "Hello World". Поскольку они являются объектами, мы можем выполнять с ними функции, такие как функция length( ), определяющая длину строки.

Операторы

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

  • Арифметические операторы используются для математических операций. Они работают как алгебраические символы.
    cout << x + y // This adds x to y

  • Операторы присваивания предназначены для присвоения значений нашим переменным.
    int x = 10 // This defines x as 10

  • Операторы сравнения сравнивают два значения.
    x <= y // Determines x is greater than or equal to y

  • Логические операторы определяют логику между значениями.
    x < 4 && x <9 // Will return true if both statements are true about x

Объекты

Объект — это набор данных, с которыми мы можем действовать. У объекта в C++ есть атрибут (его свойства) и метод (его возможности). Вы создаете объекты, используя класс. Думайте об этом как о чертеже объекта.

Вы создаете класс, используя ключевое слово class. Вы должны определить спецификатор доступа, например public, private или protected. В ключевых словах public говорится, что класс доступен за пределами этого класса. Определив свой класс, вы можете определять свои атрибуты и объекты. Взгляните ниже на пример класса и объекта.

#include <iostream>

using namespace std;

class Dog //this is the name of our class

{

public:

  string name = "rover"; //this is an attribute

  string gender = "male";

  int age = 5;

};

int main() {

  Dog dogObj; //here we are making an object of Dog class

  cout << "Dog name is: "<<dogObj.name<<endl; //by using . operator we can access the member of class

  cout << "Dog gender is: "<<dogObj.gender<<endl; //accessing the public members of class Dog in main()

  cout << "Dog age is: "<<dogObj.age<<endl;

}

Функции

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

Они чрезвычайно важны для повторного использования кода и помогают лучше модулировать ваш код. Думайте об этом как о действиях, которые вы инициируете. В C++ есть предопределенные функции, как в main( ) нашем первоначальном примере.

Чтобы создать функцию, вы должны дать ей имя (так называемое объявление) и круглые скобки ( ). Затем вы можете вызвать эту функцию в любой момент, используя это name( ).

Есть много способов использования функций. Вы также можете присоединять к своим функциям возвращаемые значения, которые определяют, должна ли функция выводить какую-либо информацию. В ключевых словах void говорится , что не будет возврата. Ключевое слово return, с другой стороны, будет призывать к выходу типа данных.

Условные утверждения

Они позволяют выполнять проверки того, следует ли выполнять блок кода. В C++ есть четыре условных оператора:

  • if: при выполнении определенного условия будет выполнено определенное действие
  • else: вместо этого будет выполнено определенное действие, если это условие не выполнено
  • else if: новое условие будет проверено, если первое не выполнено
  • switch: проверяет переменную на соответствие списку значений

Циклы

Циклы похожи на условные операторы. Они выполняют блоки кода, пока достигается определенное условие. В C++ есть два типа циклов:

  • while циклы: этот цикл будет продолжать повторять ваш код, пока условие не возвращается true.
  • for циклы: это используется, когда вы знаете точное количество циклов в своем коде.

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

C++ FAQ

Сколько времени нужно, чтобы изучить C++?

Ну, это действительно зависит от того, что подразумевается под «учиться». Если вы серьезно относитесь к этому языку, то вы никогда не закончите его изучение. Разработчики могут посвятить всю свою карьеру C++ и при этом чувствовать, что им есть чему поучиться.

С учетом сказанного, если вы поработаете, вы сможете выучить достаточно C++ за 1-2 года и при этом оставаться отличным разработчиком.

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

Для чего используется C++?

C++ ориентирован на производительность больших систем, поэтому он используется в большом количестве программ и задач, где производительность важна. Это включает в себя, помимо прочего, операционные системы, разработку игр, 3D-анимацию, веб-браузеры (они используются в Firefox и Chrome), программное обеспечение для офисов, медицинское программное обеспечение и многое другое. C++ используется во всех играх Blizzard, большинстве консольных игр, Adobe Photoshop, Mozilla Thunderbird, технологиях PDF и сканерах МРТ.

В чем разница между C и C++?

Основное отличие состоит в том, что C++ является объектно-ориентированным языком, а C — процедурным языком программирования. C не позволяет определять функции внутри структур, в то время как C++ делает это. C и C++ также имеют несколько различных функций, ключевых слов и процедур распределения памяти.

В чем разница между C++ и C #?

C# — гораздо более новый язык (созданный Microsoft в 2000 году), он построен на C++, поэтому они имеют схожий синтаксис. Одно из основных различий между ними — их гибкость. C# показывает предупреждения компилятора при написании кода, чтобы уменьшить количество ошибок, а C++ — нет.

C# работает только в ОС Windows, а C++ может работать на любой платформе (MacOS, Linux, Windows и т. Д.). C# отлично подходит для мобильных и веб-приложений, а C++ известен производительностью и программами, которые работают напрямую с оборудованием. Они также немного по-другому обрабатывают управление памятью.

Схож ли C++ с другими языками программирования?

C++ является основой для многих других объектно-ориентированных языков программирования, таких как Java, JavaScript, Python, PHP, Rust, C # и других. Изучение синтаксиса C++ облегчит изучение других языков программирования.

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

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

Несколько преимуществ использования C++: широко распространенный синтаксис, вы вынуждены думать об управлении памятью, и он знакомит вас с множеством парадигм программирования, что является отличным способом расширить ваше мышление и найти новые подходы к решению проблем.

Насколько востребован C++? За С++ хорошо платят?

Да и да. Если вы потратите время, то будете вознаграждены. У разработчиков C++ уже есть высокие зарплаты, и ожидается, что они будут расти в ближайшие годы. C++ переживает период возрождения популярности, поскольку он отлично подходит для таких надежных приложений, как беспилотные автомобили и виртуальная реальность. Поскольку у C++ более крутая кривая обучения, чем у большинства языков, полученные вами навыки выделят вас при приеме на работу.



2021-02-11T15:37:54
Вопросы читателей

Как использовать функцию NumPy unique() в Python

Библиотека NumPy используется в Python для создания одного или нескольких размерных массивов, и у нее есть много функций для работы с массивом. Функция unique() — одна из полезных функций этой библиотеки для определения уникальных значений массива и возврата отсортированных уникальных значений. Эта функция также может возвращать кортеж значений массива, массив ассоциативных индексов и количество раз, когда каждое уникальное значение появляется в основном массиве. В этом руководстве показаны различные варианты использования этой функции.

 

Синтаксис:

Синтаксис этой функции приведен ниже.

array numpy.unique(input_array, return_index, return_inverse, return_counts, axis)

Эта функция может принимать пять аргументов, назначение которых объясняется ниже.

  • input_array: это обязательный аргумент, который содержит входной массив, из которого выходной массив будет возвращен путем извлечения уникальных значений. Если массив не является одномерным массивом, то массив будет сглаженным.
  • return_index: это необязательный аргумент, который может принимать логическое значение. Если для этого аргумента установлено значение True, он вернет индексы входного массива.
  • return_inverse: это необязательный аргумент, который может принимать логическое значение. Если для этого аргумента установлено значение True, он вернет индексы выходного массива, который содержит уникальные значения.
  • return_counts: это необязательный аргумент, который может принимать логическое значение. Если для этого аргумента установлено значение True, он вернет количество раз, когда каждый элемент уникального массива появляется во входном массиве.
  • axis: это необязательный аргумент, который может принимать любое целочисленное значение или None. Если для этого аргумента не задано значение, входной массив будет сглажен.

Функция unique() может возвращать четыре типа массивов на основе значений аргументов.

 

Пример 1: Распечатать уникальные значения одномерного массива

В следующем примере показано использование функции unique() для создания массива с уникальными значениями одномерного массива. В качестве значения аргумента функции unique() используется одномерный массив из 9 элементов. Возвращенное значение этой функции напечатано позже.

# Импортировать библиотеку NumPy



import numpy as np



# Создать массив целого числа



np_array = np. unique ([55, 23, 40, 55, 35, 90, 23, 40, 80])



# Распечатать уникальные значения



print("Массив уникальных значений: n", np_array)

 

Выход :

Входной массив содержит 6 уникальных элементов, которые отображаются на выходе.

 

Пример 2: Распечатать уникальные значения и индексы на основе входного массива

В следующем примере показано, как можно получить уникальные значения и индексы двумерного массива с помощью функции unique(). В качестве входного массива используется двумерный массив из 2 строк и 6 столбцов. Для аргумента return_index установлено значение True, чтобы получить индексы входного массива на основе уникальных значений массива.

# Импортировать библиотеку NumPy



import numpy as np



# Создать двумерный массив



np_array = np. array([ [ 6, 4, 9, 6, 2, 9 ], [ 3, 7, 7, 6, 1, 3 ] ])



# Распечатать двумерный массив



print("Содержимое двумерного массива : n", np_array)



# Создайте уникальный массив и индексный массив уникальных значений



unique_array, index_array = np. unique(np_array, return_index = True)



# Распечатать значения уникального и индексного массивов



print("Содержимое уникального массива: n", unique_array)



print("Содержимое индексного массива: n", index_array)

 

Выход :

Входной массив содержит 7 уникальных значений. На выходе отображается массив из 7 уникальных значений и 7 индексов этих значений из входного массива.

Пример 3: Распечатать уникальные значения и индексы на основе выходного массива

В следующем примере показано, как уникальные значения одномерного массива и индексы основаны на уникальных значениях с помощью функции unique (). В сценарии в качестве входного массива используется одномерный массив из 9 элементов. Значение аргумента return_inverse установлено в True, что вернет другой массив индексов на основе уникального индекса массива. И уникальный массив, и индексный массив напечатаны позже.

# Импортировать библиотеку NumPy



import numpy as np



# Создать массив целочисленных значений



np_array = np. array([ 10, 60, 30, 10, 20, 40, 60, 10, 20 ])



print("Значения входного массива: n", np_array)



# Создайте уникальный массив и обратный массив



unique_array, inverse_array = np.unique(np_array, return_inverse=True)



# Распечатать значения уникального массива и обратного массива



print("Значения уникального массива: n", unique_array)



print("Значения обратного массива: n", inverse_array)

 

Выход :

На выходе был показан входной массив, уникальный массив и обратный массив. Входной массив содержит 5 уникальных значений. Это 10, 20, 30, 40 и 60. Входной массив содержит 10 в трех индексах, которые являются первым элементом уникального массива. Итак, 0 появился в обратном массиве трижды. Остальные значения обратного массива были размещены таким же образом.

 

Пример 4: Распечатайте уникальные значения и частоту каждого уникального значения

В следующем примере показано, как функция unique () может получить уникальные значения и частоту каждого уникального значения входного массива. Значение аргумента return_counts было установлено в True для получения массива значений частоты. Одномерный массив из 12 элементов был использован в функции unique () в качестве входного массива. Массив уникальных значений и значения частоты были напечатаны позже.

# Импортировать библиотеку NumPy



import numpy as np



# Создать массив целочисленных значений



np_array = np. array([70, 40, 90, 50, 20, 90, 50, 20, 80, 10, 40, 30])



print("Значения входного массива: n", np_array)



# Создать уникальный массив и подсчитать массив



unique_array,count_array = np.unique(np_array, return_counts = True)



# Распечатать значения уникального массива и обратного массива



print("Значения уникального массива: n", unique_array)



print("Значения массива count: n", count_array)

Выход :

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

 

Заключение

Подробное использование функций unique() было объяснено в этом руководстве с использованием нескольких примеров. Эта функция может возвращать значения различных массивов, показанных здесь, с использованием одномерных и двумерных массивов.



2021-02-11T10:14:44
Python

Что такое Bitcoin Cash и является ли это хорошей инвестицией? (2021 год)

Практически весь мир к настоящему времени слышал или даже использовал Биткойн. Это маяк криптовалюты, и его невероятный рост на ранних этапах 2021 года заставил его сиять ярче, чем когда-либо. Конечно, когда в списке указан Bitcoin Cash, мы не можем не задаться вопросом, связан ли он с Биткойном или совершенно другой криптовалютой, чем Биткойн. Что ж, ответ на оба этих вопроса действительно положительный. Давайте разберемся, что такое Биткойн Кэш и является ли это хорошей инвестицией.

Что такое Bitcoin Cash?

Bitcoin Cash (BCH) был образован в августе 2017 года в результате хард-форка блокчейна Биткойн (BTC). Хард-форк — это, по сути, блокчейн, разделенный на две части, и каждый существующий остаток становится его криптовалютой с его уникальной цепочкой блоков.

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

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

Формирование BCH произошло в результате разногласий внутри сообщества BTC. Группы майнеров и разработчиков BTC были обеспокоены его масштабируемостью , и они не были убеждены в планах блокчейна BTC по внедрению технологии сегрегированного свидетеля.

Эти группы посчитали, что, хотя и необходимо (с увеличением размера сети BTC, которая изо всех сил пытается справиться с увеличением количества транзакций), предлагаемое обновление не следует децентрализованной философии создателя псевдонима Сатоши Накамото. В результате они согласились, что единственный способ преодолеть проблему масштабируемости — увеличить предельный размер блока.

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

Роджер Вер, видный ранний инвестор в BTC, известный как «Биткойн Иисус», вложивший в 2011 году 25000 долларов, когда они стоили 1 доллар каждый, стал соавтором BCH и по сей день продвигает криптовалюту вместо BTC.

В интервью Forbes в 2019 году он сказал, что работает над «партнерством с большим количеством известных имен, чтобы использовать Bitcoin Cash в реальной коммерции для реальных людей и реального бизнеса». И интригующе предсказал, что «в конечном итоге он превзойдет рыночную капитализацию BTC».

 

Как добывают Bitcoin Cash?

Технология, лежащая в основе BCH, точно такая же, как и BTC. Криптовалюта имеет блокчейн, который действует как главная книга и записывает каждую транзакцию. Как и в случае майнинга BTC , майнеры используют мощные компьютеры для решения сложных математических задач для проверки транзакций и, таким образом, добавления новых блоков в цепочку блоков. За это майнеры награждаются криптовалютой. Награда за блок для майнеров в настоящее время составляет 6,25 BCH после последнего сокращения вдвое в апреле 2020 года.

Однако, несмотря на то, что технология одинакова, между двумя криптовалютами есть некоторые фундаментальные различия.

 

Биткойн против Bitcoin Cash

Так в чем же основные различия между BTC и его младшим братом по хард-форку, BCH?

  • Масштабируемость

BCH был сформирован из-за некоторых опасений в сообществе BTC относительно проблемы масштабируемости Биткойна. Даже сегодня сеть BTC может обрабатывать только 7 транзакций в секунду (TPS) , в то время как сеть BCH может обрабатывать значительно больше. Этот факт был продан как один из основных аргументов в пользу его продажи во время запуска. В то время размер блока BTC был ограничен 1 МБ, но изначально BCH имел размер блока 8 МБ. С тех пор он увеличился до 32 МБ.

  • Сложность майнинга

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

На момент написания (14 января 2021 г.) BTC составлял около 37000 долларов, а BCH — около 500 долларов. Следовательно, для привлечения майнеров в сеть сложность сети BCH должна быть ниже, чем у BTC. Но как это работает? Через что-то, что называется Emergency Difficulty Adjustment (EDA). Это алгоритм, встроенный в блокчейн BCH, который автоматически вступает в силу при резком изменении количества майнеров.

  • Использование и адаптации

Еще одним источником разногласий в сообществе BTC было то, что к нему относились больше как к средству сбережения, чем к реальной валюте. Действительно, даже сегодня это понятное разочарование. В СМИ по-прежнему много внимания уделяется тому, что BTC является «цифровым золотом» с ограниченным предложением. Итак, если вы надеетесь, что его цена вырастет в будущем, зачем вам использовать его для покупки чего-то еще? Таким образом, с его низкими комиссиями и быстрым временем обработки, видение его создателей ожидает, что BCH обгонит BTC в использовании в качестве реальной валюты — во всяком случае теоретически. Но так ли вышло?

 

Были ли биткойны наличными успешными?

Как мы уже видели, после запуска BCH продавался как Биткойн плюс. «Биткойн… но лучше!» Итак, был ли это оглушительный успех, на который надеялись его создатели? Ну… не совсем так. Его разработчикам пришлось столкнуться с несколькими проблемами, которые в конечном итоге повлияли на его цену и успех криптовалюты на протяжении ее короткого срока службы.

 

Хард-форки Bitcoin Cash

Вы не поверите, но у BCH тоже был хардфорк! На самом деле не раз. Первый произошел в ноябре 2018 года, когда его блокчейн разделился с формированием новой криптовалюты Bitcoin SV. «SV» означает «видение Сатоши». (Сатоши — создатель Биткойна, Сатоши Накамото).

Подобно первоначальному форку BTC, форк BCH возник из-за спора между разработчиками по поводу направления блокчейна, описанного как «гражданская война» между различными фракциями сообщества BCH. По сути дело сводилось к размеру блока. С одной стороны, Роджер Вер и компания хотели сохранить размер блока 8 МБ. На другом конце были Крейг Стивен Райт и компания, которые хотели увеличить размер блока до 128 МБ.

Дальнейшее разделение цепочки происходило каждые шесть месяцев с целью обновления сети. Однако даже суперфанат BCH Роджер Вер выразил недовольство этим, заявив, что запланированные «спорные хард-форки» — это «большая проблема» и что он «хотел бы, чтобы этому пришел конец». Регулярные хард-форки, как правило, не рассматриваются как положительные для криптовалюты, поскольку они рассматриваются как дестабилизирующие, и действительно, похоже, что именно так и было в случае BCH. Это отразилось на его цене, о чем мы поговорим позже в статье.

 

Угроза атаки 51%

Угроза атаки 51% вызвала вопросы о безопасности блокчейна BCH. Такое событие происходит, когда группы майнеров могут получить более половины хэш-мощности блокчейна и, таким образом, взять на себя контроль над сетью. Если посмотреть на сеть BTC, это маловероятно из-за огромной мощности хеширования и затрат, связанных с проведением такой атаки. Однако в прошлом атака 51% случилась с другими блокчейнами, включая Bitcoin Gold в 2018 году, когда злоумышленники украли криптовалюту на сумму 18 миллионов долларов.

Хотя этого не произошло с блокчейном BCH, были высказаны опасения. В апреле 2020 года произошло последнее сокращение BCH вдвое, в результате чего вознаграждение майнеров снизилось с 12,5 BCH до 6,25 BCH. В результате хешрейт сети значительно снизился, так как майнеры устремились в более прибыльные предприятия. В свою очередь, это значительно снизило стоимость запуска атаки 51% ( менее 10 000 долларов в час на одном этапе). К счастью, такой атаки не было. Однако это вызывает постоянные тревожные вопросы у сообщества BCH, касающиеся его безопасности.

До сих пор мы были немного циничными при оценке успеха BCH, так был ли он успешен в какой-либо области?

 

Используется как способ оплаты

Поскольку BCH был основан для бесперебойной и эффективной оплаты, в последние годы в этой области был достигнут определенный успех. В качестве верного признака роста его статуса, особенно в октябре 2020 года, он был включен PayPal в список криптовалют (наряду с BTC, Ethereum и Litecoin). Теперь клиенты смогут покупать и продавать товары со своих счетов. В феврале 2020 года было подсчитано, что более 4300 продавцов по всему миру теперь принимают BCH (поэтому к настоящему времени это число, вероятно, будет выше).

 

История цен Bitcoin Cash

BCH был запущен в августе 2017 года за 240 долларов. Это было время, которое совпало со знаменитым бегством крипто-быков. Таким образом, он быстро вырос в цене и достиг пика 20 декабря 2017 года, составив 4355 долларов. В начале 2018 года, как и многие другие криптовалюты, произошла значительная коррекция. К февралю цена упала ниже 800 долларов. К маю, однако, он поднялся выше отметки 1600 долларов. Однако по мере того, как в сообществе BCH разгорелась борьба (кульминацией которой стал хард-форк с Bitcoin SV), его цена упала. Это привело к рекордно низкому уровню в 75 долларов в декабре 2018 года.

С тех пор его цена оставалась относительно стабильной. В период с января 2019 года по январь 2021 года он не опускался ниже 100 и выше 500 долларов. Даже сокращение вдвое не сильно повлияло на его цену. Тем не менее, в январе 2021 года произошел скачок цен, чему способствовал заметный скачок цены на BTC. 10 января его цена ненадолго превысила отметку в 600 долларов, это самая высокая цена за последние два года. Можно ли сохранить это оптимистичное настроение?

 

Биткойн наличные — хорошая инвестиция?

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

 

Прогнозы цен на Bitcoin Cash

  • Prime XBT прогнозирует, что к 2025 году BCH достигнет примерно 1100 долларов.
  • Цена цифровых монет более оптимистична, прогнозируя, что к 2025 году BCH может превысить отметку в 2500 долларов.
  • Wallet Investor не так уверен в его перспективах, что указывает на то, что цена BCH останется относительно неизменной и составит около 540 долларов в 2025 году.
  • Долгосрочный прогноз все же менее оптимистичен, прогнозируя, что цена BCH обесценится к 2025 году и составит около 350 долларов.

Как видите, прогнозы относительно перспектив BCH кажутся несколько неоднозначными, но что мы думаем?

 

Суть

Успех криптовалюты во многом зависит от BTC, и BCH не исключение. Действительно, он был известен как альткойн с одной из самых сильных корреляций цены с BTC. Таким образом, исторически, если BTC идет на повышение, BCH, вероятно, будет следовать за трендом, а если BTC станет медвежьим, то BCH также, вероятно, будет делать то же самое. Несмотря на то, что BCH якобы был обновлением BTC, он, скорее всего, всегда будет в его тени. Дело в том, что это не BTC, и каждая криптовалюта, вероятно, будет в своей тени только из-за этого простого факта. По сути, BTC настолько популярен, потому что это первая и самая известная криптовалюта.

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



2021-02-11T09:37:41
Криптовалюта

Как обновить Fedora Linux?

Fedora — это дистрибутив Linux, спонсируемый Red Hat. Лучше всего то, что он бесплатный и с открытым исходным кодом. Он также доступен для настольных компьютеров, серверов и систем Интернета вещей. У него другая среда рабочего стола, такая как KDE Plasma, XFCE, LXQT и т.д.

Что мы будем освещать?

В этом руководстве мы расскажем, как обновить Fedora 32 до Fedora 33. Мы увидим три различных способа обновления Fedora:

  • Обновление с помощью Software Center
  • Плагин обновления системы DNF
  • Обновление с помощью диспетчера пакетов только с dnf

Что нужно сделать перед началом

Прежде чем приступить к процессу обновления, нам необходимо выполнить определенные действия.

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

Метод 1. Обновление с помощью Software Center (рекомендуется для выпуска Fedora Workstation)

Это наиболее рекомендуемый способ обновления Fedora Workstation, а также самый простой способ для новичков. Начиная с версии Fedora 23 Workstation, уведомление о новом выпуске Fedora начинает появляться всякий раз, когда появляется новый стабильный выпуск. Просмотрите уведомление или перейдите в графический центр программного обеспечения Fedora, вам будет представлено простое окно обновления, как показано ниже:

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

Способ 2. Использование плагина обновления системы DNF

Это официально рекомендуемый метод обновления для всех установок Fedora, за исключением Fedora Workstation. При обновлении системы он использует dnf-plugin-system-upgrade. На самом деле это метод командной строки, поскольку он требует запуска некоторой команды. Хорошо, давайте посмотрим, как это будет работать.

Шаг 1. Сначала обновите вашу систему Fedora с помощью команды:

# dnf upgrade --refresh

Это позволит установить все необходимые обновления в систему перед обновлением. Фактический размер загрузки может отличаться для каждой системы.

Загрузка и установка всех обновлений может занять значительное время в зависимости от скорости вашего интернет-соединения и оборудования системы.

Шаг 2. После завершения установки обновлений перезагрузите систему.

Шаг 3. После перезагрузки системы откройте терминал и установите плагин: dnf-plugin-system-upgrade. Для этого используйте команду ниже:

# dnf install dnf-plugin-system-upgrade

Шаг 4. Теперь мы будем использовать плагин dnf для загрузки пакетов обновления выпуска. Выполните приведенную ниже команду:

# dnf system-upgrade download --refresh --releasever=33

Когда вы запустите указанную выше команду, она попросит запустить команду «dnf upgrade –refresh», чтобы убедиться, что система обновлена. Нажмите «y» и нажмите «Enter», чтобы можно было загрузить любое новое обновление.

Аргумент releasever используется для указания версии Fedora OS мы хотим установить. Здесь мы указали номер версии 33, которая на данный момент является последней доступной версией. Для обновления до разветвленной версии нам нужно использовать 34, или мы можем использовать rawhide для обновления до версии rawhide.

После завершения процесса обновления вы можете загрузить обновления, как показано ниже:

Как видите, это обновление версии имеет размер около 1,3 Гб, поэтому загрузка и установка всех этих обновлений может занять много времени. Подождите, пока процесс завершится.

Во время процесса обновления он импортирует ключ gpg и попросит вас подтвердить его, просто нажмите здесь ‘y’:

Процесс установки практически завершен, осталось выполнить команду:

# dnf system-upgrade reboot

Примечание. Не выполняйте никаких других команд, кроме «dnf system-upgrade reboot», в противном случае вам может потребоваться перезапустить весь процесс.

Система перезагрузится, чтобы применить загруженные обновления системы, как показано ниже:

После завершения процесса обновления вы должны увидеть новый экран входа в ОС Fedora 33, как показано здесь:

Мы можем проверить версию Fedora с помощью команды:

# cat /etc/os-release

Поскольку мы использовали версию Fedora 32 xfce, мы обновились до Fedora 33 xfce. Это должно быть то же самое, если вы обновляетесь с версии gnome, вам следует перейти на gnome Fedora.

Метод 3. Обновление с помощью диспетчера пакетов только с dnf (без использования подключаемого модуля обновления системы DNF)

Последний метод — использование DNF, что на самом деле не рекомендуется Fedora. При обновлении таким способом вы можете столкнуться с общими проблемами зависимости. По любым подобным вопросам вы можете обратиться к справочным страницам и другим сообщениям, связанным с руководством по установке. Это очень сложный метод, и его должны использовать только опытные системные администраторы.

Шаг 1. Откройте терминал, войдите в систему как пользователь root и выполните следующую команду:

# systemctl isolate multi-user.target

Шаг 2. На этом этапе мы должны обновить пакеты нашей текущей ОС Fedora с помощью следующей команды:

# dnf upgrade

Шаг 3. В случае обновления трех или более выпусков или обновления старой версии Fedora до Fedora 20 вам может потребоваться импортировать и установить ключ подписи пакета. В противном случае это не требуется для обновления двух или менее выпусков версии Fedora 20 или более поздней.

Итак, если требуется импортировать ключ, выполните следующую команду:

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-23-x86_64

Не забудьте заменить «23» на ваш целевой выпуск, например 32 или 33 для последней версии Fedora. Также замените «x86_64» архитектурой вашей системы.

Шаг 4. Очистите весь кеш dnf, запустив:

# dnf clean all

Шаг 5 . Запустите процесс обновления командой:

# dnf --releasever=<target_release_number> --setopt=deltarpm=false distro-sync

Шаг 6. Установите новые пакеты для новой версии:

# dnf groupupdate 'Minimal Install'

Другие группы, такие как Рабочий стол GNOME, Инструменты администрирования, также можно обновить, как показано здесь:

# dnf groupupdate "GNOME Desktop"

# dnf groupupdate “Administration Tools”

Шаг 7. Установите загрузчик для вашего загрузочного устройства с помощью команды:

# /usr/sbin/grub2-install BOOTDEVICE

Загрузочным устройством обычно является /dev/sda или /dev/sdb, в зависимости от вашего жесткого диска. Если вы используете виртуальную машину, это может быть как dev/vda.

Шаг 8. Теперь удалите ненужные файлы кеша и другие избыточные файлы, очистив систему. Эти файлы часто находятся в следующих каталогах:

  • /var/cache/dnf
  • /var/lib/mock
  • /var/cache/mock

Заключение

В этом руководстве мы увидели, как обновить Fedora Linux тремя различными способами. Мы также узнали основное различие в использовании этих методов обновления. Это руководство было успешно протестировано на Fedora 32 для обновления до Fedora 33. Если вам понравилось это руководство, поделитесь им с другими.



2021-02-10T18:41:09
Вопросы читателей

Аудит удаления сетевых папок Windows.

В локальной сети организации, в общей сетевой папке для обмена документами кто-то периодически удалял папки. Пользователей более 200. Чтоб отследить источник проблемы был применен аудит сетевой папки. Как это сделать написано далее.

Все действия выполняются на файловом сервере с Windows Server 2012 в доменной сети.  Файловый сервер не является контроллером домена.

Аудит настроен через графический интерфейс. Альтернативный вариант аудита – через скрипт. Читать

Как установить и использовать Wine в Ubuntu 20.04

Wine — это уровень совместимости с открытым исходным кодом, который позволяет запускать приложения Windows в Unix-подобных операционных системах, таких как Linux, FreeBSD и macOS. Wine — это аббревиатура от «Wine Is Not an Emulator». Он преобразует системные вызовы Windows в эквивалентные вызовы POSIX, используемые операционными системами на основе Unix, что позволяет легко интегрировать программы Windows в среду рабочего стола.

Не все приложения Windows будут работать в Wine, и даже если они это сделают, они могут вести себя не так, как обычно. Wine AppDB представляет собой базу данных , содержащую список приложений, которые были проверены и подтверждены на работу под Wine.

Wine не всегда лучший вариант для запуска программ Windows в Linux. Вы также можете использовать инструмент виртуализации, такой как VirtualBox или VMware, но они требуют больше системных ресурсов и установочного файла Windows.

В этой статье описывается, как установить Wine на Ubuntu 20.04. Мы покажем вам, как установить дистрибутив по умолчанию версии 5.0 и последней версии 6.x из репозиториев WineHQ. Те же инструкции применимы для любого дистрибутива на основе Ubuntu, включая Zorin OS, Linux Mint и Elementary OS.

Установка Wine 5.0 на Ubuntu

Пакеты Wine включены в репозитории Ubuntu по умолчанию и могут быть легко установлены с помощью aptдиспетчера пакетов. Это самый простой способ установить Wine на Ubuntu. Однако версия дистрибутива может отставать от последней версии Wine.

Большинство приложений Windows созданы для 32-битной архитектуры. Первый шаг — включить мультиархитектуру, которая позволяет устанавливать на машину как 64-битные, так и 32-битные пакеты:

sudo dpkg --add-architecture i386

sudo apt update

Установите Wine:

sudo apt install wine64 wine32

После завершения установки проверьте это, распечатав версию Wine:

wine --version

Текущая версия Wine, доступная в репозиториях Ubuntu 20.04, — это 5.0.

wine-5.0 (Ubuntu 5.0-3ubuntu1)

Вот и все. Wine установлен на ваш компьютер, и вы можете начать его использовать.

Установка Wine 6.0 на Ubuntu

В этом разделе мы предоставим пошаговые инструкции о том, как установить Wine версии 6 на Ubuntu 20.04.

Если вы используете 64-битную систему Ubuntu, включите 32-битную архитектуру и обновите список пакетов:

sudo dpkg --add-architecture i386

sudo apt update

Импортируйте GPG-ключ репозитория WineHQ:

wget -qO- https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add -

Добавьте репозиторий WineHQ в вашу систему:

sudo apt install software-properties-common

sudo apt-add-repository "deb http://dl.winehq.org/wine-builds/ubuntu/ $(lsb_release -cs) main"

Установите Wine, набрав:

sudo apt install --install-recommends winehq-stable

Это установит кучу пакетов. После завершения проверьте установку Wine, набрав:

wine --version

На момент написания этой статьи последней основной версией Wine была версия 6.0:

wine-6.0

Wine установлен и готов к использованию.

Настройка Wine

Чтобы начать настройку Wine, запустите команду winecfg в своем терминале. Команда устанавливает Mono и Gecko и устанавливает среду Wine:

winecfg

Появится диалоговое окно с вопросом, хотите ли вы установить пакет wine-mono:

Нажмите кнопку «Установить», и установка начнется. После этого появится новый диалог, предлагающий установить Gecko. Снова нажмите кнопку «Установить».

Когда установка будет завершена, отобразится диалоговое окно конфигурации Wine. Здесь вы можете настроить различные параметры Wine. В большинстве случаев достаточно настроек по умолчанию. По завершении закройте диалоговое окно.

Установка Notepad ++ в Ubuntu

Теперь, когда Wine установлен и настроен, мы объясним, как устанавливать приложения Windows на вашу Ubuntu.

В этом руководстве мы покажем вам, как установить Notepad ++, один из самых популярных текстовых редакторов Windows. Запустите браузер и загрузите установочный файл со страницы загрузки Notepad ++.

После завершения загрузки запустите установку, щелкнув .exe файл правой кнопкой мыши и выбрав «Открыть с помощью Wine Windows Program Loader».

Мастер установки запустится, выберет язык и установит Notepad ++ так же, как и любое приложение на компьютере с Windows.

Приложения Windows устанавливаются в каталог ~/.wine/drive_c/.

Чтобы запустить редактор Notepad ++, перейдите в каталог ~/.wine/drive_c/Program Files (x86)/Notepad++ и дважды щелкните файл notepad++.exe.

Вы также можете запустить приложение из панели поиска действий.

Заключение

Мы показали вам, как установить Wine на рабочий стол Ubuntu 20.04 и как устанавливать приложения Windows.

Если вы столкнулись с проблемой или хотите оставить отзыв, оставьте комментарий ниже.



2021-02-10T13:51:51
Вопросы читателей