Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Wprowadzenie

Uwaga: To wydanie książki jest takie samo jak Język programowania Rust dostępny w formie drukowanej i ebooka od No Starch Press.

Witaj w Języku programowania Rust, książce wprowadzającej do Rusta. Język programowania Rust pomaga pisać szybsze, bardziej niezawodne oprogramowanie. Wysoka ergonomia i niska kontrola są często sprzeczne w projektowaniu języków programowania; Rust kwestionuje ten konflikt. Poprzez równoważenie potężnych możliwości technicznych i wspaniałego doświadczenia deweloperskiego, Rust daje możliwość kontrolowania niskopoziomowych szczegółów (takich jak użycie pamięci) bez wszystkich kłopotów tradycyjnie związanych z taką kontrolą.

Dla kogo jest Rust

Rust jest idealny dla wielu osób z różnych powodów. Przyjrzyjmy się kilku najważniejszym grupom.

Zespoły deweloperskie

Rust okazuje się być produktywnym narzędziem do współpracy między dużymi zespołami deweloperów o różnym poziomie znajomości programowania systemowego. Niskopoziomowy kod jest podatny na różne subtelne błędy, które w większości innych języków można wykryć jedynie poprzez obszerne testy i staranną weryfikację kodu przez doświadczonych deweloperów. W Ruście kompilator pełni rolę strażnika, odmawiając kompilacji kodu z tymi nieuchwytnymi błędami, w tym błędami współbieżności. Pracując obok kompilatora, zespół może poświęcić swój czas na skupienie się na logice programu, zamiast ścigać błędy.

Rust wprowadza również nowoczesne narzędzia dla deweloperów do świata programowania systemowego:

  • Cargo, dołączony menedżer zależności i narzędzie do budowania, sprawia, że dodawanie, kompilowanie i zarządzanie zależnościami jest bezbolesne i spójne w całym ekosystemie Rusta.
  • Narzędzie formatujące rustfmt zapewnia spójny styl kodowania wśród deweloperów.
  • Rust Language Server zasila integrację ze zintegrowanymi środowiskami deweloperskimi (IDE) dla uzupełniania kodu i wbudowanych komunikatów o błędach.

Dzięki tym i innym narzędziom w ekosystemie Rusta, deweloperzy mogą być produktywni podczas pisania kodu na poziomie systemowym.

Studenci

Rust jest dla studentów i tych, którzy są zainteresowani nauką koncepcji systemowych. Używając Rusta, wiele osób uczyło się tematów takich jak rozwój systemów operacyjnych. Społeczność jest bardzo otwarta i chętnie odpowiada na pytania studentów. Poprzez wysiłki takie jak ta książka, zespoły Rusta chcą uczynić koncepcje systemowe bardziej dostępnymi dla większej liczby osób, szczególnie dla tych, którzy dopiero zaczynają programować.

Firmy

Setki firm, dużych i małych, używają Rusta w produkcji do różnych zadań, w tym narzędzi wiersza poleceń, usług sieciowych, narzędzi DevOps, urządzeń wbudowanych, analizy i transkodowania audio i wideo, kryptowalut, bioinformatyki, wyszukiwarek, aplikacji Internetu Rzeczy, uczenia maszynowego, a nawet głównych części przeglądarki internetowej Firefox.

Deweloperzy open source

Rust jest dla ludzi, którzy chcą budować język programowania Rust, społeczność, narzędzia deweloperskie i biblioteki. Chcielibyśmy, abyś wniósł swój wkład w rozwój języka Rust.

Ludzie ceniący szybkość i stabilność

Rust jest dla ludzi, którzy pragną szybkości i stabilności w języku. Przez szybkość rozumiemy zarówno to, jak szybko może działać kod Rusta, jak i szybkość, z jaką Rust pozwala pisać programy. Kontrole kompilatora Rusta zapewniają stabilność poprzez dodawanie funkcji i refaktoryzację. Jest to przeciwieństwo kruchego starego kodu w językach bez tych kontroli, którego deweloperzy często obawiają się modyfikować. Dążąc do abstrakcji zerokosztowych — funkcji wyższego poziomu, które kompilują się do kodu niższego poziomu tak szybko, jak kod napisany ręcznie — Rust stara się, aby bezpieczny kod był również szybkim kodem.

Język Rust ma nadzieję wspierać również wielu innych użytkowników; ci wspomniani tutaj to tylko niektórzy z największych interesariuszy. Ogólnie rzecz biorąc, największą ambicją Rusta jest wyeliminowanie kompromisów, które programiści akceptowali przez dziesięciolecia, zapewniając bezpieczeństwo i produktywność, szybkość i ergonomię. Spróbuj Rusta i zobacz, czy jego wybory sprawdzą się dla Ciebie.

Dla kogo jest ta książka

Ta książka zakłada, że pisałeś już kod w innym języku programowania, ale nie czyni żadnych założeń co do tego, w jakim. Staraliśmy się, aby materiał był szeroko dostępny dla osób z różnych środowisk programistycznych. Nie spędzamy wielu czasu na mówieniu o tym, czym jest programowanie ani jak o nim myśleć. Jeśli jesteś zupełnie początkujący w programowaniu, lepiej będzie, jeśli przeczytasz książkę, która specjalnie wprowadza w programowanie.

Jak korzystać z tej książki

Ogólnie rzecz biorąc, ta książka zakłada, że czytasz ją sekwencyjnie od początku do końca. Późniejsze rozdziały bazują na koncepcjach z wcześniejszych rozdziałów, a wcześniejsze rozdziały mogą nie zagłębiać się w szczegóły konkretnego tematu, ale powrócą do niego w późniejszym rozdziale.

W tej książce znajdziesz dwa rodzaje rozdziałów: rozdziały koncepcyjne i rozdziały projektowe. W rozdziałach koncepcyjnych dowiesz się o pewnym aspekcie Rusta. W rozdziałach projektowych będziemy wspólnie budować małe programy, stosując to, czego nauczyłeś się do tej pory. Rozdział 2, Rozdział 12 i Rozdział 21 to rozdziały projektowe; pozostałe to rozdziały koncepcyjne.

Rozdział 1 wyjaśnia, jak zainstalować Rusta, jak napisać program „Witaj, świecie!” i jak używać Cargo, menedżera pakietów i narzędzia do budowania Rusta. Rozdział 2 to praktyczne wprowadzenie do pisania programu w Ruście, polegające na budowaniu gry w zgadywanie liczb. Tutaj omawiamy koncepcje na wysokim poziomie, a późniejsze rozdziały dostarczą dodatkowych szczegółów. Jeśli chcesz od razu zabrać się do pracy, Rozdział 2 jest do tego idealnym miejscem. Jeśli jesteś szczególnie skrupulatnym uczniem, który woli poznać każdy szczegół przed przejściem do następnego, możesz pominąć Rozdział 2 i przejść bezpośrednio do Rozdziału 3, który obejmuje funkcje Rusta podobne do tych z innych języków programowania; następnie możesz wrócić do Rozdziału 2, kiedy będziesz chciał popracować nad projektem, stosując poznane szczegóły.

W Rozdziale 4 dowiesz się o systemie własności Rusta. Rozdział 5 omawia struktury i metody. Rozdział 6 obejmuje typy wyliczeniowe, wyrażenia match oraz konstrukcje przepływu sterowania if let i let...else. Użyjesz struktur i typów wyliczeniowych do tworzenia własnych typów.

W Rozdziale 7 dowiesz się o systemie modułów Rusta i zasadach prywatności dotyczących organizacji kodu i jego publicznego interfejsu programistycznego (API). Rozdział 8 omawia niektóre popularne struktury danych kolekcji dostępne w standardowej bibliotece: wektory, ciągi znaków i mapy haszujące. Rozdział 9 bada filozofię i techniki obsługi błędów Rusta.

Rozdział 10 zagłębia się w generyki, cechy i czasy życia, które dają ci możliwość definiowania kodu, który stosuje się do wielu typów. Rozdział 11 polega na testowaniu, które nawet przy gwarancjach bezpieczeństwa Rusta jest konieczne, aby upewnić się, że logika programu jest poprawna. W Rozdziale 12 zbudujemy naszą własną implementację podzbioru funkcjonalności narzędzia wiersza poleceń grep, które wyszukuje tekst w plikach. W tym celu użyjemy wielu koncepcji, które omówiliśmy w poprzednich rozdziałach.

Rozdział 13 bada domknięcia i iteratory: cechy Rusta pochodzące z funkcyjnych języków programowania. W Rozdziale 14 dokładniej zbadamy Cargo i porozmawiamy o najlepszych praktykach udostępniania bibliotek innym. Rozdział 15 omawia inteligentne wskaźniki dostępne w standardowej bibliotece oraz cechy, które umożliwiają ich funkcjonalność.

W Rozdziale 16 omówimy różne modele programowania współbieżnego i porozmawiamy o tym, jak Rust pomaga programować w wielu wątkach bez obaw. W Rozdziale 17 rozbudujemy to, badając składnię async i await Rusta, wraz z zadaniami, futures i streams, oraz lekki model współbieżności, który umożliwiają.

Rozdział 18 przygląda się, jak idiomy Rusta porównują się z zasadami programowania obiektowego, które możesz znać. Rozdział 19 to odniesienie do wzorców i dopasowywania wzorców, które są potężnymi sposobami wyrażania idei w programach Rusta. Rozdział 20 zawiera zbiór zaawansowanych tematów interesujących, w tym niebezpieczny Rust, makra i więcej o czasach życia, cechach, typach, funkcjach i domknięciach.

W Rozdziale 21 ukończymy projekt, w którym zaimplementujemy niskopoziomowy, wielowątkowy serwer WWW!

Na koniec, kilka dodatków zawiera użyteczne informacje o języku w formacie bardziej przypominającym referencje. Dodatek A obejmuje słowa kluczowe Rusta, Dodatek B obejmuje operatory i symbole Rusta, Dodatek C obejmuje cechy możliwe do wyprowadzenia dostarczane przez standardową bibliotekę, Dodatek D obejmuje niektóre użyteczne narzędzia programistyczne, a Dodatek E wyjaśnia wydania Rusta. W Dodatku F znajdziesz tłumaczenia książki, a w Dodatku G omówimy, jak powstaje Rust i czym jest Nightly Rust.

Nie ma złego sposobu na czytanie tej książki: Jeśli chcesz przeskoczyć do przodu, zrób to! Może będziesz musiał wrócić do wcześniejszych rozdziałów, jeśli spotkasz się z jakimkolwiek zamieszaniem. Ale rób to, co działa dla ciebie.

Ważną częścią procesu nauki Rusta jest nauka czytania komunikatów o błędach wyświetlanych przez kompilator: Będą one prowadzić Cię do działającego kodu. W związku z tym, przedstawimy wiele przykładów, które się nie kompilują, wraz z komunikatem o błędzie, który kompilator wyświetli w każdej sytuacji. Pamiętaj, że jeśli wpiszesz i uruchomisz przypadkowy przykład, może się on nie skompilować! Upewnij się, że przeczytałeś otaczający tekst, aby sprawdzić, czy przykład, który próbujesz uruchomić, ma celowo wyświetlić błąd. W większości sytuacji poprowadzimy Cię do poprawnej wersji kodu, który się nie kompiluje. Ferris również pomoże Ci rozróżnić kod, który nie ma działać:

FerrisZnaczenie
Ferris ze znakiem zapytaniaTen kod się nie kompiluje!
Ferris z rękami uniesionymi w góręTen kod panikuje!
Ferris z jednym uniesionym pazurem, wzruszający ramionamiTen kod nie daje pożądanego zachowania.

W większości sytuacji poprowadzimy Cię do poprawnej wersji kodu, który się nie kompiluje.

Kod źródłowy

Pliki źródłowe, z których generowana jest ta książka, można znaleźć na GitHubie.