Blog IT, Blog Marketing

Emacs to świetny system operacyjny, brakuje mu tylko dobrego edytora tekstu

Emacs to świetny system operacyjny, brakuje mu tylko dobrego edytora tekstu

Marcin Sarna , 22.03.2021 r.

Czyli o korzyściach z uniksowego podejścia do narzędzi i nie tylko.

Praca z tekstem i nie tylko

Przewrotna teza z tytułu znajduje co i rusz potwierdzenie, chociażby w promowaniu idei Living in Emacs przez niektórych zagorzałych użytkowników Emacsa. Na pierwszy rzut oka używanie jednego programu do „wszystkiego” wydaje się być sprzeczne z filozofią Uniksa, która faworyzuje programy jednocelowe (które dobrze ze sobą współpracują) zamiast monolitycznych systemów, które próbują rozwiązywać wiele złożonych problemów jednocześnie. Emacs w dużej mierze kieruje się filozofią Uniksa w swoim głównym zastosowaniu czyli pracy z tekstem. Ale może być też postrzegany jako dwuwymiarowa wersja interfejsu wiersza poleceń.

Wiele narzędzi wiersza poleceń przetrwało próbę czasu. Programy takie jak find, grep, awk były od dziesięcioleci niezbędne w pracy informatyków. Są efektywne, czasami bardziej niż ich odpowiedniki z graficznym interfejsem użytkownika, ponieważ interpretery wiersza poleceń, takie jak Bash, zapewniają środowisko, w którym można je łączyć w celu wykonania zadań, o których pierwotny projektant indywidualnego programu nigdy nie pomyślał. Na przykład, dzięki zestawieniu kubectl, grep, awk i base64, możesz wyświetlić certyfikat tls.crt w secrecie Kubernetesa o nazwie nioctib-tech-it-tls: kubectl get secrets nioctlib-tech-it-tls -o yaml | grep tls.cert: | awk ‘{print $2}’ | base64 -d.

Korzyści z Command Line Interpreter

Poniższe dwie sprawy to kwintesencja komponowania i rozszerzalności programów CLI:

  1. Tekst jest przesyłany strumieniowo jako uniwersalny interfejs
  2. Interpreter wiersza poleceń może służyć jako środowisko programistyczne

Korzystanie ze strumieni tekstowych jako uniwersalnego interfejsu między programami ze względu na brak struktury danych ma z pewnością wady. Ale ponadczasowość wielu programów zgodnych z tym wzorcem i korzyści, jakie wnosi do ekosystemu Basha, jest bezdyskusyjna. Tekst może być czytany zarówno przez ludzi, jak i przez programy. Można nim manipulować, drukować, przechowywać, przenosić. Jednak wersje tekstowe programów, które wymagają ustrukturyzowanych danych, takie jak przeglądarki, przeglądarki obrazów, odtwarzacze muzyki itp. zwykle stają się zabawkami absolutnych zapaleńców.

Innym ważnym czynnikiem przyczyniającym się do sukcesu wielu programów wiersza poleceń jest fakt, że żyją one w programowalnym środowisku. W Bashu programy można pisać od podstaw lub sklejać ze sobą za pomocą skryptu Basha. To sprawia, że środowisko CLI jest nieskończenie rozszerzalne. Umożliwia to mniejszym programom, które „robią jedną rzecz i robią to dobrze”, współpracę ze sobą w celu wykonywania bardziej złożonych zadań. A to tworzy środowisko, które zwiększa synergię, produktywność no i kreatywność programistów czy sysadminów.

Emacs a CLI czyli co daje Elisp

Słowo „linia” w środowisku interfejsu wiersza poleceń wskazuje na jego jednowymiarowy charakter. W przypadku programów, które potencjalnie wymagają interakcji z dwuwymiarowymi plikami tekstowymi (mają one w końcu wiersze i kolumny), Emacs oferuje środowisko o tych samych cechach, które sprawiają, że środowisko CLI jest tak skuteczne: uniwersalny interfejs tekstowy i środowisko programistyczne, które umożliwia praktycznie nieskończoną rozszerzalność.

Sprawdź oferty pracy na TeamQuest

Tą rozszerzalność GNU Emacsa zapewnia język zwany Elisp, który jest również używany do pisania większości samego Emacsa. Jest to podobne do tego, jak na przykład Bash osiąga rozszerzalność za pomocą skryptu Bash. Podobnie jak większość programów rozwijających się w środowisku Bash jest skupiona na tekście, większość popularnych programów Emacsa również koncentruje się na tekście, na przykład w trybie Magit i Org-mode. Mają również tendencję do bardzo dobrej integracji z innymi programami Emacsa, tworząc synergię podobną do tej z programami CLI.

Na przykład możesz przejrzeć historię zmian w repozytorium Git za pomocą Magit, przejść bezpośrednio do diff w commit, a następnie zacząć pracę bezpośrednio nad kodem źródłowym.

Jeden edytor by rządzić nimi wszystkimi

Wiele narzędzi CLI, takich jak chociażby grep i find jest zaimplementowanych w Elisp, a tym samym zintegrowanych również z ekosystemem Emacsa. Jest to jeden z powodów, dla których jeśli twój główny przepływ pracy koncentruje się na tekście, „życie w Emacsie” prawdopodobnie nie jest najgorszym pomysłem ze względu na synergię, którą tworzy wiele programów Emacsa.

Nie oznacza to jednak, że wszystko powinno działać w Emacsie. Emacs prawdopodobnie nie jest najlepszym narzędziem do przeglądania stron internetowych (EWW) lub słuchania muzyki (EMMS), podobnie jak Lynx nigdy nie będzie tak popularny jak Chrome. Argument, że Emacs jest „świetnym systemem operacyjnym, któremu brakuje tylko porządnego edytora”, próbuje pokazać Emacsa jako monolityczny szwajcarski scyzoryk, zdolny do uruchamiania dowolnych programów. W rzeczywistości Emacs przypomina bardziej dwuwymiarowe środowisko CLI, które obejmuje znaną nam wszystkim filozofię Uniksa: umożliwia prostym programom interakcję ze sobą za pomocą uniwersalnego interfejsu.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej