Jeśli z tego pliku obiektowego korzysta więcej plików wykonywalnych
niż ten jednen to trzeba je przenieść nad nie wszystkie.
</p>
+ <h2 id="14.3.lexandyacc">14.3. Lex i Yacc</h2>
+ <p>
+ Programy odczytujące pliki konfiguracyjne lub polecenia korzystają
+ z takich narzędzi jak <strong>Lex</strong> oraz <strong>Yacc</strong>.
+ Także możemy spotkać się z nimi podczas budowania niektórych
+ projektów.
+ </p>
+ <ul>
+ <li>Program <em>Lex</em> jest <strong>analizatorem leksykalnym</strong>,
+ jego zadaniem jest przekształcenie tekstu w specjalne znaczniki
+ opisane etykietami. Dostępną w dystrybucjach Linuksa implementacja
+ programu <em>Lex</em> nosi nazwę <em>flex</em>. Korzystając tego
+ programu będziemy musieli użyć opcji konsolidatora takich jak:
+ <em>-ll</em> lub <em>-lfl</em>.</li>
+ <li>Program <em>Yacc</em> jest to <strong>analizator składniowy</strong>.
+ Jego zadaniem jest odczyt składni zgodnie z wcześniej ustaloną
+ <em>gramatyką</em>. W dystrybucjach Linuksa dostępna jest
+ <em>bison</em>, który może być kompatybilny z programem <em>yacc</em>
+ w momencie gdy użyjemy opcji <em>-y</em>, natomiast dla konsolidatora
+ będziemy musieli użyć opcji <em>-ly</em>.</li>
+ </ul>
+ <h2 id="14.4.scriptlanguages">14.4. Języki skryptowe</h2>
+ <p>
+ Kiedyś poza obsługą powłoki oraz programu <strong>awk</strong>
+ użytkownik nie musiał znać żadanych innych skryptowych języków
+ programowania, zmieniło się to wraz z rozpowszechnieniem się takich
+ języków jak <strong>Perl</strong> a w poźniejszych latach
+ <strong>Python</strong>. Niektóre z narzędzi systemowych zostały
+ przepisane z klasycznego C do np. Pytona - na przykład narzędziem
+ <em>whois</em>. Języki skryptowe obecnie przechylają szalę na swoją
+ korzyść względem języków kompilowanych, mimo to zalety takich języków
+ jak C oraz wpisanie się tego języka w rdzeń nauk komputerowych
+ nie sposowoduje zaprzestania jego używania nawet w ciągu kilku
+ następnych dziesięcioleci. Język ten jest językiem niskopoziomowym,
+ wymagającym abstrakcyjnego myślenia i dość trudnym w jego bardziej
+ zaawansowanym zastosowaniu, dlatego też większość młodszych
+ programistów skupia się na językach skryptowych, w których można
+ osiągnać podobne rezultaty mniejszym kosztem.
+ </p>
+ <p>
+ W większości przypadków skrypty rozpoczynają się od wskazania
+ interpretera poniższego skryptu. Takie wskaznie rozpoczyna się od
+ od znaków <em>#!</em> (każdy plik tekstowy rozpoczynający się tych
+ znaków uznawany jest za skrypt), po których bez przerwy występuje
+ ścieżka
+ wskazująca na właściwy program interpretera danego języka. Dla języka
+ Perl, wskazanie interpretera prezentuje się w następujący sposób:
+ </p>
+<pre class="code-block">
+#!/usr/bin/perl -w
+</pre>
+ <p>
+ Natomiast dla języka Python wygląda to następująco:
+ </p>
+<pre class="code-block">
+#!/usr/bin/env python
+</pre>
+ <p>
+ W systemie może być dostępnych kilka wersji Pythona. Za pomocą tego
+ rozdzaju wskazania wybieramy pierwszą wersję, która znajduje się
+ na ścieżce wyszukiwania poleceń. Inną metodą na wskazanie
+ interpretera Pythona jest: <em>#!/usr/bin/python3</em>, wskazująca
+ konkretnie na jedną z 3 wersji Pythona, obecnie 3.12.
+ </p>
+ <p>
+ Opiszemy sobie teraz kilka ważniejszych języków skryptowych.
+ </p>
+ <ul>
+ <li><strong>Python</strong> - Python zapewnia nam bogaty zestaw
+ funkcji pozwalających rozwiązać każdy problem związany np. z
+ przetwarzeniem tesktu, obsługą baz danych czy sieci. Dostarcza on
+ interaktywną powłokę, w które możemy linia po lini testować nasze
+ rozwiązania. Język ten posiada on dość dobry model obiektowy.
+ Jego zakres zastosowań jest obecnie bardzo szeroki, podobny do języka
+ C, może poza programowaniem układowym oraz architekturą jąder
+ systemowych czy sterowników urządzeń. Jest on prosty do nauki o ile
+ nie posiada się naleciałości z innych języków takich jak np. C.</li>
+ <li><strong>Perl</strong> - język skrytowy stworzony dla systemów
+ Uniksowych. Język ten ma ogromne możliwości porównywalne z Pythonem,
+ jednak nie jest on taki prosty w użyciu. Jego głównym zadaniem jest
+ obróbka tekstu. Obecnie wiele narzędzi wykorzystuje jego możliwości
+ np. znany wszyskim system kontroli wersji - <em>Git</em>.</li>
+ <li><strong>PHP</strong> - jest językiem służacym do dynamicznego
+ tworzenie treści na stronach internetowych. Można wykorzystać go
+ do generowania stron hipertekstowych oraz do modyfikacji
+ baz danych SQL.</li>
+ </ul>
+ <p>
+ Innym wartym wspomnienia językiem jest <strong>m4</strong>
+ odpowiedzialny z przetwarzanie makr. Dostępny jest on w systemie
+ GNU <em>autotools</em>.
+ </p>
+ <h2 id="14.5.java">14.5. Język Java</h2>
+ <p>
+ Java podobnie do języka C jest językiem kompilowanym. Zapewnia on
+ prostszą składnie oraz duże możliwości progrowamowania obiektowego.
+ Dawniej służył on jako środowisko dla aplikacji internetowych, jednak
+ obecnie zmieniło się na rzecz interpretowanego przez przeglądarki
+ JavaScriptu. Nie mniej jednak możemy spotkać się z aplikacją Javy na
+ na dystrybucjach Linuksa lub z potrzebą uruchomienia takowej. Dlatego
+ też warto się zapoznać, chociaż w podstawowym stopniu z zapoznać się
+ z obsługą projektów w tworzonych w tym języku.
+ </p>
+ <p>
+ Java może być kompilowana w dwojaki sposób. Kompilator może
+ przekształcić kod źródłowy do kodu maszynowego zgodnego z naszym
+ systemem (tak samo, jak w przypadku języka C) lub może przetworzyć
+ kod źródłowy na tzw. <strong>kod bajtowy</strong> interpretowany
+ poźniej przez <em>wirtualną maszynę</em> Javy (interpreter). W
+ Uniksach najczęściej będziemy się spotykać z kodem bajtowym - pliki
+ z rozszerzeniem <em>.class</em>.
+ Wszystkie niezbędne uruchomienia narzędzia znajdują się w pakiecie
+ zwanym środowiskiem uruchomieniowym Javy (<em>JRE</em>). Jeśli mamy
+ go zainstalowanego w systemie to do uruchomienia wystarczy wydać
+ poniższe polecenie:
+ </p>
+<pre class="code-block">
+$ java file.class
+</pre>
+ <p>
+ Kod bajtowy może również występować w postaci skompresowanej,
+ wówczas będziemy mieć doczynienia z plikami z rozszerzeniem
+ <em>.jar</em>. Je również możemy uruchomić w podobny sposób jak
+ zwykły kod bajtowy wystarczy użyć opcji <em>-jar</em>, tak jak
+ pokazano to na poniższym przykładzie.
+ </p>
+<pre class="code-block">
+$ java -jar file.jar
+</pre>
+ <p>
+ Czasami do wykorzystania programów Java będzie potrzebne zdefiniowanie
+ dwóch zmiennych <strong>JAVA_HOME</strong> zawierającej ścieżkę do
+ katalogu z instalacją JRE. Drugą zmienną jest <strong>CLASSPATH</strong>,
+ zmienna ta zawiera nazwy katalogów przechowywujących pliki kodu
+ bajtowego, których dany program może wymagać.
+ </p>
+ <p>
+ Jesli zajdzie taka potrzeba, aby skompilować kod Javy to w zestaw
+ narzędzi programistycznych JDK wchodzi w skład kompilator
+ <strong>javac</strong>. Uruchmiamy go podobnie do interpretera.
+ W skład JDK wchodzi również polecenie <em>jar</em>, które może
+ kompresować kod bajtowy Javy.
+ </p>
+<pre class="code-block">
+$ javac file.java
+</pre>
</div>
<p style="margin: 15px; padding: 0; outline: 0;">
2024; COPYLEFT; ALL RIGHTS REVERSED;