gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Drugi dodatak - o XDS-u i komandnoj liniji
authorDoni Pracner <quinnuendo@gmail.com>
Thu, 20 Feb 2014 21:43:19 +0000 (22:43 +0100)
committerDoni Pracner <quinnuendo@gmail.com>
Thu, 20 Feb 2014 21:51:09 +0000 (22:51 +0100)
skripta-spa1-sadrzaj.tex
xds-komandna-linija.tex [new file with mode: 0644]

index 95c7569b4cfdcb82eb9c72d68fefb3975f463584..5edfeb8b8018cdf5497a790cd7efdc519e838313 100644 (file)
@@ -2507,6 +2507,9 @@ END Rek2.
 \pagenumbering{Roman}
 \input{xds-uputstvo}
 
+\sectionbreak
+\input{xds-komandna-linija}
+
 \mainend
 
 
diff --git a/xds-komandna-linija.tex b/xds-komandna-linija.tex
new file mode 100644 (file)
index 0000000..a1f1a26
--- /dev/null
@@ -0,0 +1,178 @@
+\section{XDS modula 2 - rad iz komandne linije}
+
+Ovo uputstvu ukratko pokriva kako se XDS kompajler može podesiti da se
+koristi iz komandne linije, na Windows, ali i *nix sistemima.
+
+Predpostavlja se da je XDS Modula 2 već instalirana (konsultovati
+odvojeno uputstvo ako nije). Takođe će se predpostavljati da je
+instalirana na podrazumevanu lokaciju ``c:/xds/''. Ako to nije slučaj,
+potrebno je zameniti putanje iz upustva sa stvarnom putanjom.
+
+\subsection{Prednosti (ili ``Zašto ovo raditi?'')}
+
+Skoro svaki jezik se može kompajlirati iz komandne linije, i onda se
+rad sa različitim jezicima svodi na rad u svom omiljenom editoru
+teksta (npr Notepad++, jEdit, joe, emacs...), koji je prilagođen
+sopstvenim zahtevima i pozivanjem odgovarajućeg kompajlera iz komandne
+linije.
+
+U konkretnom slučaju XDS kompajlera, ovim se takođe oslobađa potrebe
+kreiranja projekata koji su neophodni kad se koristi XDS windows
+okruženje - bilo koji pojedinačni modul se može direktno kompajlirati,
+fajlovi se mogu premeštati po folderima, menjati imena foldera i tako
+dalje.
+
+Još jedna prednost za studente PMF-a koji polažu ispite u okruženju
+Svetovid je što u njemu dobijaju potpuno iste poruke od kompajlera kao
+što se dobijaju izvršavanjem kompajliranja iz komandne linije.
+
+\subsection{Podešavanje sistemske putanje (ili "OK, odakle početi?")}
+
+Da bi kompajler mogao da se poziva iz bilo kog foldera na računaru, a
+ne samo iz ``C:/xds/bin'', potrebno je dodati folder kompajlera u
+sistemsku putanju (tj spisak foldera koji se pretražuju kada korisnik
+pokuša da pokrene neku komandu). Na Windows sistemima se ova
+promenljiva naziva ``PATH'', a trenutnom sadržaju se može pristupiti
+preko \%PATH\%.
+
+Putanja se može dodati privremeno komandom:
+
+\begin{codeblock}
+  path = %PATH%;c:/xds/bin
+\end{codeblock}
+
+
+ovim se proširuje spisak putanja u trenutom komandom prozoru, odnosno
+važiće samo u trenutno otvorenom cmd promptu i to dok se isti ne
+zatvori.
+
+Putanja se može i trajno dodati na nekoliko načina. Na win xp, Vista i
+7 sistemima se to može uraditi na sledeći način: otvori se ``computer
+properties'' (desni klik na "My Computer"), odabere se jezičak
+"advanced", klikne na dugme "Environment variables", u prozoru koji se
+otvori odabere se ``PATH'' i klikne na dugme "edit", nakon čega se na
+postojeću vrednost doda ``c:$\backslash$xds$\backslash$bin''. Bitno je
+da se ne obriše postojeća vrednost, kao i da se novi dodatak odvoji sa
+``;'' od postojećih.
+
+\subsection{Kompajliranje programa}
+
+Nakon što je podešena sistemska putanja, kompajleru se pristupa komandom "xc". Poziv bez parametara će dati ispis mogućnosti. Tipična upotreba za kreiranje izvršne verzije programa sadržanu u fajlu "ime.MOD":
+
+\begin{codeblock}
+  xc =make =all ime
+\end{codeblock}
+
+
+Ovim pozivom će se rekompajlirati i svi ostali potrebni moduli koji se koriste u okviru programa.
+
+Ako postoje greške u programu izvršna verzija neće biti kreirana. Ako već postoji exe napravljen nekim prethodnim kompajliranjem, on NEĆE biti obrisan.
+
+Kompajler greške prijavljuje u sledećem formatu:
+
+\begin{codeblock}
+  * [zad.mod 125.12 E020] * undeclared identifier "RStr" IO.$RStr(ime);
+\end{codeblock}
+% $ nepotrebni komentar zbog sintaksnog bojenja u nekim editorima
+
+
+Odnosno ime fajla, red greške i kolona razdvojeni tačkom i kod greške
+koji počinje sa ``E''. Sam kod greške nije previše bitan, pošto u
+sledećem redu sledi objašnjenje. Ono što jeste bitno je da se u istom
+formatu prikazuju i upozorenja kompajlera čiji kodovi počinu sa ``W'' i
+po ovome se najlakše razlikuju.
+
+Takođe treba obratiti pažnju na to da nakon objašnjenja greške sledi i
+ispis samog reda u kome je greška u koji je dodatno ubačen karakter
+``\textbf{\$}'' koji označava tačno nesto greške. Ako se on nalazi na
+početku reda često je u pitanju greška iz prethodnog reda (npr
+nedostaje ``;''). Konkretna prikazana greška je pogrešno napisano
+``RdStr''.
+
+\subsection{Linux i drugi slobodni sistemi (ili "Who needs windows anyway?")}
+
+Korisnici Linux (i srodnih) sistema takođe mogu koristiti XDS Modulu
+2, i to i okruženje i kompajler iz komandne linije.
+
+Prvo rešenje je korišćenje Linux verzije XDS kompajlera. Međutim ona
+se ponaša malo drugačije, nema vizuelno okruženje i, što je
+najznačajnije za studente PMFa, nema Top Speed Compatibility Pack koji se
+koristi na vežbama.
+
+Ono što je najbolje rešenje u ovoj situaciji je koriščenje sloja za
+emuliranje Windowsa - "Wine".
+
+Potrebno je pokrenuti instalaciju XDS paketa, isto kao i pod windowsom
+(ili alternativno preuziti strukturu foldera iz windowsa i prekopirati
+u Wine-ov ``C'' disk).
+
+Ovako instaliran XDS se može koristiti i kao normalno programsko
+okruženje koje se koristi pod Windowsom.
+
+Ono što je inače bila poenta ovog uputsva u celini je bilo korišćenje
+iz komandne linije.
+
+Da bi kompajler radio u bilo kom folderu, potrebno je namestiti PATH
+pod Wine-om. Treba obratiti pažnju da to NIJE ista PATH variabla kao
+ona od Linux sistema. Ovo se može uraditi na sledeći
+način\footnote{Link: uputstvo za sistemske promenljive na
+  zvaničnom sajtu softvera Wine:\\
+  \href{http://www.winehq.org/docs/wineusr-guide/environment-variables}{http://www.winehq.org/docs/wineusr-guide/environment-variables}}:
+\begin{itemize}
+       \item Otvori se regedit pod wine-om (wine regedit)
+       \item nađe se ključ HKEY\_CURRENT\_USER/Environment
+       \item promeni se polje ``path'' tako da uključuje i xds bin folder.   obratiti pažnju da je potrebno ubaciti dodatni "$\backslash$", pa će krajnja vrednost izgledati ovako nekako: \\
+\textbf{c:$\backslash$$\backslash$windows;c:$\backslash$$\backslash$windows$\backslash$$\backslash$system;c:$\backslash$$\backslash$xds$\backslash$$\backslash$bin}
+\end{itemize}
+
+
+Nakon ovoga se u bilo kom folderu može vršiti poziv
+
+\begin{codeblock}
+  wine xc =make =all zad
+\end{codeblock}
+
+
+predpostavljajući naravno da u folderu postoji ``zad.mod'' i da je u
+pitanju ispravan programski modul, biće kreiran ``zad.exe'' koji se
+onda može pokrenuti sa
+
+\begin{codeblock}
+  wine zad
+\end{codeblock}
+
+
+Jednostavni programi koji rade sa tekstualnim ulazom i izlazom će
+najčešće raditi bez problema. U zavisnosti od verzija programa nekad
+se dešava da kada ovako pokrenut program čeka na unos sa tastature
+pravi veliko zauzeće procesora.
+
+Postoji i opcija da se otvori novi terminal prozor koji vrši kompletnu
+emulaciju komandnog promta operativnog sistema DOS 6. Npr:
+
+\begin{codeblock}
+  wineconsole zad
+\end{codeblock}
+
+
+Ovako pokrenut program će se ponašati identično kao na Windowsu i neće
+nepotrebno povećavati zauzeće procesora. Međutim odmah nakon završetka
+rada pokrenute komande (tj programa zad u primeru) novi prozor će se
+zatvoriti, što je problem ako je trebalo pročitati izlaz
+programa. Rešenje za ovo je otvaranje terminala u kome se izvrašava
+cmd, tj klasični dos promt:
+
+\begin{codeblock}
+  wineconsole cmd
+\end{codeblock}
+
+
+U ovako otvorenom promtu se mogu naravno izvršavati sve komande, iako
+će interakcija biti nešto drugačija od naviknute u modernim konzolama
+(tipa ispisivanja čudnih kodova umesto kretanja okolo kad se
+pritiskaju strelice).
+
+%%% Local Variables: 
+%%% mode: latex
+%%% TeX-master: "skripta-spa1-jk"
+%%% End: 
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner