7 разлога да користите Руст за свој следећи развојни пројекат

Да ли сте програмер који жели да научи Руст? Да би вам помогао да одлучите, овај чланак представља неке од карактеристика Руста, једног од најпопуларнијих системских програмских језика.

У овом чланку ћемо истражити програмски језик Руст и његове карактеристике, као што су систем типова, безбедност меморије и власништво. Такође ћемо прећи преко листе ресурса који вам могу помоћи да научите Руст.

Почнимо!

Шта је рђа?

Руст је системски програмски језик. Почео је као лични пројекат Грејдона Хоара, програмера, још 2006. За мање од једне деценије, израстао је у избор за системско програмирање и сродне апликације. Просечна плата Руст програмера је око 120 хиљада долара.

Дакле, ако желите да пређете са Ц++ на Руст или желите да научите нови језик, учење Руста може бити одличан избор! Према истраживању СтацкОверфлов Девелопер, Руст је проглашен за најомиљенији програмски језик – седам година заредом.

Извор слике: СтацкОверфлов

Руст нуди брзину системских програмских језика ниског нивоа као што су Ц и Ц++ и сигурност програмских језика високог нивоа као што је Питхон.

Од значајних пројеката као што су Дропбок и Фирефок до ВебАссембли-а и уграђеног програмирања, Руст се широко користи у свим областима развоја софтвера. Руст нуди готову подршку за управљање пакетима преко Царго-а.

Царго: менаџер пакета за Руст

Царго је менаџер пакета за Руст. Царго можете користити за инсталирање пакета из сандука, регистра пакета Руст. Поред тога што је менаџер пакета који вам омогућава да тражите, инсталирате и управљате пакетима, царго такође служи као покретач тестова, генератор докумената и систем за прављење.

Сада када имате преглед Руст-а, хајде да ближе погледамо неке од карактеристика Руста које га издвајају као системски програмски језик са широким усвајањем.

Корисне поруке о грешци

Као програмер почетник, наићи ћете на грешке и потрошити значајну количину времена на отклањање грешака у свом коду. Користићете поруке о грешкама и упозорења које је обезбедио компајлер да бисте решили те проблеме. А корисне поруке могу вам помоћи да брже отклањате грешке.

Пример поруке о грешци

Када се ваш код не компајлира успешно, Руст пружа корисне поруке о грешци које пружају објашњења шта треба да се поправи у вашем коду и где.

У овом примеру, променљива нум2 је дефинисана унутар функције иннер(). Стога је ограничен на обим функције. Ако покушате да му приступите ван функције, компајлер испушта грешку:

fn main() {
    let num1 = 10;
    fn inner(){
        let num2 = 9; 
    }
    println!("The value of num2 is: {}", num2);
}

А порука о грешци даје информације о томе шта треба да се поправи.

error[E0425]: cannot find value `num2` in this scope
 --> src/main.rs:6:42
  |
6 |     println!("The value of num2 is: {}", num2);
  |                                          ^^^^ help: a local variable with a similar name exists: `num1`

Упозорења током компилације

Компајлер такође пружа корисна упозорења у вези са проблемима у вашем коду. Када дефинишете променљиве, али их никада не користите у остатку програма, Руст вам даје поруку упозорења, као што је приказано.

fn main() {
    let num1 = 10;
    let num2 = 9;
    println!("The value of num1 is: {}", num1);
}

Овде је променљива нум2 декларисана, али се никада не користи.

warning: unused variable: `num2`
 --> src/main.rs:3:9
  |
3 |     let num2 = 9;
  |         ^^^^ help: if this is intentional, prefix it with an underscore: `_num2`
  |

Стронгли Типед Лангуаге

Други разлог због којег би требало да користите Руст за своје развојне пројекте је његов систем типова. Руст је јако куцан језик, што значи да не подржава принуду типа. Принуда типа је када језик може имплицитно да конвертује вредност из типа података у други.

  Како додати ГИФ у своју Инстаграм причу

На пример, Питхон код у следећој ћелији кода ће се покренути без грешака. То је зато што у Питхон-у број различит од нуле има вредност истинитости Тачно, и стога, иф изјава ради без грешака — иако је број 10 цео број — а не Булов.

num1 = 10
if num1:
    num2 = 9
print(f"num2 is {num2}")

# Output: num2 is 9

С друге стране, Руст не приморава типове. Дакле, следећи код ће дати грешку:

fn main() {
    let num1 = 10;
    if num1{
        let num2 = 9; 
    }
}

Грешка извештава о неподударности типа, где се очекивао Булов вредност и пронађен је цео број.

error[E0308]: mismatched types
 --> src/main.rs:3:8
  |
3 |     if num1{
  |        ^^^^ expected `bool`, found integer

Мемори Сафети

Сигурност меморије је још једна карактеристика Руста која га чини привлачним програмерима. Покушаћемо да пружимо површни преглед како ово функционише.

Променљиве морају бити иницијализоване пре него што се користе

У Русту, све променљиве морају бити иницијализоване пре него што се могу користити. У језицима као што је Ц, следећи код где нум није иницијализован ће се компајлирати и покренути без грешака. Вредност неиницијализоване променљиве је нека вредност смећа.

#include <stdio.h>

int main(void) {
    int num;
	printf("The value of num is %d", num);
	return 0;
}
// Output: The value of num is 0

Ако покушате да урадите нешто слично у Русту, наићи ћете на грешку у времену компајлирања. Руст, дакле, нема појма о одлагању смећа.

fn main() {
    let num:i32;
    println!("The value of num is: {}",num);
}
error[E0381]: used binding `num` isn't initialized
 --> src/main.rs:3:40
  |
2 |     let num:i32;
  |         --- binding declared here but left uninitialized
3 |     println!("The value of num is: {}",num);
  |                                        ^^^ `num` used here but it isn't initialized
  |

Безбедност меморије у време компајлирања

Руст обезбеђује сигурност меморије у време компајлирања. Узмимо једноставан пример. Овде, иако условна изјава иф има логичку вредност труе, што значи да ће вредност нум увек бити 100, добијамо грешку када покушамо да одштампамо вредност нум.

fn main() {
    let num:i32;
    if true{
        num = 100;
    }
    println!("The value of num is: {}", num);
}

То је зато што се условна евалуација дешава у време извођења, а компајлер неће моћи да гарантује да нум има вредност у време компајлирања.

error[E0381]: used binding `num` is possibly-uninitialized
 --> src/main.rs:6:41
  |
2 |     let num:i32;
  |         --- binding declared here but left uninitialized
3 |     if true{
  |        ---- if this `if` condition is `false`, `num` is not initialized
4 |         num = 100;
5 |     }
  |      - an `else` arm might be missing here, initializing `num`
6 |     println!("The value of num is: {}", num);
  |                                         ^^^ `num` used here but it is possibly-uninitialized

Ако боље погледате поруку о грешци, видећете да са наредбом елсе можемо да осигурамо да ће нум имати вредност. Дакле, следећи код ће радити без грешака. Зато што на овај начин компајлер може да утврди да ће нум имати вредност — у време компајлирања — тако да нема грешака.

fn main() {
    let num:i32;
    if true{
        num = 100;
    }
    else{
        num = 50;
    }
    println!("The value of num is: {}", num);
}
The value of num is: 100

Непроменљивост променљивих

Такође је корисно напоменути да су променљиве у Русту подразумевано непроменљиве. То значи да као програмер не морате да бринете да ћете случајно преписати вредност одређене променљиве. Ево примера:

fn main() {
    let num1 = 10;
    num1 = 5;
    println!("The value of num1 is: {}", num1);
}

Пошто је број 1 иницијализован на 10, када покушате да му доделите вредност од 5, добијате поруку о грешци која гласи „не може се двапут доделити непроменљивој променљивој нум1“.

error[E0384]: cannot assign twice to immutable variable `num1`
 --> src/main.rs:3:5
  |
2 |     let num1 = 10;
  |         ----
  |         |
  |         first assignment to `num1`
  |         help: consider making this binding mutable: `mut num1`
3 |     num1 = 5;
  |     ^^^^^^^^ cannot assign twice to immutable variable

Власништво и задуживање

Власништво осигурава сигурност меморије. Функционално, власништво у Русту се може сумирати на следећи начин:

  Претражујте и пређите на отворену картицу помоћу гласовне команде [Chrome]

Сваки објекат треба да има једног и само једног власника. Ако власник изађе из оквира, онда се објекат испушта.

Узмимо једноставан пример. Овде иницијализујемо стринг стр1 и затим померамо његову вредност у стр2. Пошто сваки објекат може имати само једног власника, стр1 објекат се испушта чим се његова вредност премести у стр2.

fn main() {
    let str1 = String::from("Rust");
    let str2 = str1;
    println!("The value of str1 is: {}", str1);
}
error[E0382]: borrow of moved value: `str1`
 --> src/main.rs:4:42
  |
2 |     let str1 = String::from("Rust");
  |         ---- move occurs because `str1` has type `String`, which does not implement the `Copy` trait
3 |     let str2 = str1;
  |                ---- value moved here
4 |     println!("The value of str1 is: {}", str1);
  |                                          ^^^^ value borrowed here after move

Иако ово изгледа интуитивно, да бисте боље разумели и ценили како власништво функционише, корисно је научити концепте позајмљивања и референци.

Брзи развој

До сада смо разговарали о неколико корисних карактеристика програмског језика Руст. Да прегледате неколико:

  • Руст је оптимизован и за брзину и за безбедност.
  • Долази са уграђеним алатом за управљање пакетима и гради систем.
  • Такође има богату стандардну библиотеку.

У суштини, Руст нуди све што програмер може да затражи. Стога, уз Руст, можете брзо да развијате апликације са минималним отклањањем грешака и бржим израдама.

Развој више платформи

Уз Руст, можете изабрати да се развијате на платформи по вашем избору. Руст подржава најчешће платформе: Линук, МацОС и Виндовс.

Развој апликације је генерално лак јер можете компајлирати Руст изворни код у извршни фајл без зависности од других алата за прављење и екстерних компајлера.

  Како сакрити своје приватне фотографије на Андроиду

Заједница која вас подржава умногоме поједностављује ваш пут учења. Руст има огромну базу корисника која само расте сваке године.

Популарност Руста у анкети за програмере СтацкОверфлов указује на то да постоји велика заједница корисника, са пуно искусних програмера који су спремни да поделе своје знање и стручност.

Поред званичне документације, постоји и сајт за документацију коју креирају корисници и форум за дискусију. Такође можете да проверите Руст субреддит и ЛинкедИн групе за релевантне дискусије.

Ресурси за учење за почетак рада са Руст-ом

Овај одељак наводи неколико корисних ресурса који ће вам помоћи да почнете са Руст-ом. Ово није потпуна листа, али укључује неке препоручене туторијале, курсеве и књиге које ће вам помоћи на вашем путу учења.

#1. Руст Би Пример

Руст Би Екампле ће вас научити Руст основама и стандардним библиотекама кроз низ примера које можете да кодирате у онлајн уређивачу.

Обухваћене теме укључују сандуке, терет: алат за управљање пакетима за Руст, генеричке лекове, особине, руковање грешкама и још много тога.

#2. Шуштање

Рустлингс је још један званични ресурс за учење програмског језика Руст. Слично је Русту за пример. Међутим, потребно је да подесите своје локално развојно окружење, клонирате пример репо-а и решите једноставне проблеме да бисте научили ове концепте.

#3. Екерцисм Руст Трацк

Руст Трацк он Екерцисм има више од 100 вежби које ће вам помоћи да научите и тестирате своје разумевање Руста. Екерцисм је бесплатна платформа на којој можете добити менторство од стране искусних програмера поред кодирања вашег пута кроз вежбе.

#4. Ултимате Руст Црасх Цоурсе

Ултимате Руст Црасх Цоурсе који води Натхан Стоцкс на Удеми-у покрива следеће:

  • Основе Руст програмирања
  • Систем модула у Русту
  • Типови података и ток контроле
  • Референца и задуживање
  • Структуре, особине и колекције

#5. Ултимате Руст 2: Интермедиате Цонцептс

Ултимате Руст 2 је наставак курса Ултимате Руст Црасх Цоурсе и покрива следеће теме:

  • Затварања
  • Итератори
  • Грешка руковање
  • Јединични и интеграциони тест
  • Евидентирање, мултитхреадинг и канали

#6. Руст ланг: Комплетан водич за почетнике 2023

Овај Удеми курс који предаје Цаталин Стефан је свеобухватан курс о Руст програмирању. Неке од обрађених тема укључују:

  • Основе рђе
  • Типови података, контролне структуре
  • Функције, особине
  • Управљање меморијом
  • Конкуренција

#7. Програмирање Руст: Брз, сигуран развој система

Программинг Руст од О’Реиллија је популарна књига о програмирању Руст-а која ће вас научити следећем:

  • Основни типови података
  • Власништво и задуживање
  • Асинхроно програмирање
  • Брзе апликације са више нити
  • Затварања, итератори
  • Збирке

#8. Програмски језик Руст, 2. издање

Програмски језик Руст су аутори познатих сарадника Руст заједнице. Ова књига покрива све што треба да знате о Русту, укључујући:

  • Власништво и задуживање
  • Генерици, особине
  • Паметни показивачи, вишенитност
  • Тестирање и руковање грешкама

#9. Комплетан референтни водич за програмирање Руст

Комплетан референтни водич за програмирање Руст компаније Пацкт покрива следеће:

  • Имплементација структура података у Русту
  • Писање компоненти за вишекратну употребу и тестирање у Русту
  • Дизајнирање алгоритама за вишенитне апликације и
  • Примене Руста у ВебАссембли, умрежавању и апликацијама командне линије

#10. Креативни пројекти за Руст програмере

Ако сте искусан програмер који учи Руст, онда ће изградња неколико пројеката у домену вашег интересовања бити довољна да стекнете добро разумевање језика. Креативни пројекти за Руст програмере из Пацкта је књига која подучава Руст применом на пројекте као што су:

  • Изградња Рестфул веб сервиса
  • 2Д игре са
  • Развој веб апликација помоћу ВебАссембли-а
  • Емулатори машинског језика
  • и још!

Закључак

Овај чланак је представио преглед Руста као системског програмског језика, укључујући функције као што су безбедност меморије, побољшано управљање пакетима и још много тога. Такође смо набројали ресурсе за учење који ће вам помоћи да почнете да користите Руст.

Као следећи корак, можете одабрати један или више од наведених ресурса за учење да бисте покупили основе Руст-а. Срећно Руст програмирање!

Такође можете истражити неке најбоље Руст сервер хостинг провајдере.