Programiranje - Kako začeti?


Datum: 29/12/2013


[2016:] Dodano poglavje 2. Okolja ter specifike Windows okolja s slikami.

    1. Uvod

    2. Okolja

    3. Opisi nekaterih jezikov s primeri

    4. Nabor spletnih strani povezanih z učenjem programiranja

    5. Zaključek


    1. Uvod


V letošnjem letu smo imeli predavanje na temo adolescenca. Med drugim je bila omenjena tudi "procesorska moč" v najstniških letih. Natančneje naj bi bili možgani sposobni predelali največ podatkov v najkrajšem času pri starosti 21 let. V enem razredu sem komentirala, naj to izkoristijo in naj ne zapravljajo te moči zgolj za igrice, naj to izkoristijo na primer za učenje programiranja. Pa me je dijakinja vprašala kje in kako se to naučijo?

Točno to sem se spraševala tudi sama, ko so me prepričevali naj začnem programirat, češ da bo meni zagotovo šlo dobro od rok.


In res v našem šolskem sistemu tega v večini programov ni, čeprav vsi menimo, da bi bilo to potrebno. Poleg jezikov, ki se jih dijaki učijo, bi bilo potrebno znanje vsaj enega programskega jezika, da znajo vsaj približno prebrati kodo in vedo kaj dela, saj se s programiranjem prej ali slej srečajo. Naprej ne bom argumentirala, saj je bilo že večkrat argumentirano. Za uvod predlagam ogled kratkega filma, ki izpostavi večino dejstev: Code Stars. Da se vrnem na vprašanje. Kje te naučijo programirat ne vem. Verjetno v šolah z besedo računalništvo ali informatika v nazivu, morda kakih tečajih, sicer se je pa potrebno naučiti sam. Kar je seveda samumevno: učiti se /*sebe*/. Ostali lahko le pomagajo.


Kako se naučimo?

Tukaj lahko pomagam s skromnimi nasveti iz lastnih laičnih iskušenj. Sama nisem šolana v tej smeri, niti nimam opravljenega nobenega izpita iz računalništva, niti ne poznam nobenega "resničnega" človeka, ki bi mi lahko pomagal. Tako sem si pomagala sama kot si lahko vi, le s spletom in dobrimi virtualnimi ljudmi:) Zato nisem kvalificiran človek, da sploh to pišem, ampak ker velja, da v demokraciji lahko vsakdo piše o bilo čem, zakaj pa ne?:P ali drugače /*In democracy there is no such thing as stupidity:D*/


[Pomembno:] Za programiranje ni potrebna nobena višja inteligenca. Lahko se ga nauči vsak človek tako kot branja in pisanja. Ne verjetmite ljudem, ki govorijo da je to le za ene posvečene "voodoo" ljudi!!! Vse kar je potrebno je volja in čas. Prav pride tudi določena mera matematičnega znanja, kar pa ni predpogoj. Poznam programerje, ki jim že Vietovi pravili delajo težave. Seveda pa programiranja ne gre jemati preveč z lahkoto in večina nas nikoli ne bo dosegla stopnje Denissa M. Ritchija, Linusa Torvaldsa, Petra Ferrija ipd, vendar menim, da osnovno pismenost lahko dosežemo s trudom vsi. Na temo "nauči se programiranja v 10 dneh" je napisanih kar nekaj knjig, kot protiutež pa vam v branje predlagam pisanje Petra Norviga Teach Yourself Programming in Ten Years in One does not simply learn to code. Skratka, kot vedno, če se želimo nekaj novega naučiti, moramo vložiti čas in trud. Saj veste, nihče se zjutraj ne zbudi in kar zna Japonsko, na žalost.



    2. Okolja


Tri leta so minila od kar sem pisala ta prispevek. V tem času sem svojo opremo nekoliko posodobila, tako da imam sedaj lahko nameščene tudi 64 bitne sisteme in VM-je. Prispevek, ki je v večinoma namenjen Linux ukazni vrstici, bom zato poskušala dopolniti še z Windows in OSX različico. Ob tem se bom držala principa KISS (Keep it simple stupid). Torej:

Preden začnemo, si moramo postaviti okolje, ki nam bo obogočalo spodnje primere preizkusiti.


    2.1 Linux


Večina stvari je že prednameščenih, tako da naše okolje že imamo. Potrebno je le namestiti nekatere željene jezike. Nameščeni paketi so odvisni od distribucije. Distribucija, ki ima nameščeno vse potrebno je Kali Linux. V kolikor niste še videli drugega sistema razen Windows, vam priporočam, da si Kali sliko namestite v VirtualBox, VMWare Player, Qemu, ali kakšno podobno virtualno rešitev. Tukaj omenjam le brezplačne različice. V kolikor vam sistem tega ne dopušča, Kali potrebuje najmanj 512M rama, si naredite zagonski USB (Navodila za telebane, Uradna navodila). V BIOSU izberite USB kot prvo opcijo za zaganjanje sistema.

Na Linux sistemih se ne bomo ukvarjali z Microsoftovimi posebnostmi, kot sta VB in C#.


    2.2 OS X


Tudi tukaj imamo naše programersko okolje že nameščeno. Potrebno je le odpreti Terminal, ki se skriva nekje pod Pripomočki (Utilities). Lahko pa si namestite nekoliko naprednješi iTerm2. Sicer se ne spominjam natančno, kateri jeziki so bili že v osnovi nameščeni. Če nam kakšen manjka, si v večini primerov pomagamo z Homebrew, oziroma snamemo že izdelane pakete in sledimo navodilom. Tudi tukaj se ne bomo ukvarjali z VB in C#.

Naredimo si mapo koda, kjer bomo shranjevali naše programe. Odpremo terminal in se znajdemo v svoji domači mapi. Natipkamo mkdir koda, ter se premaknemo v ustvarjeno mapo cd koda. Zapomnimo si lokacijo mape, ki jo preverimo s pwd.


    2.3 Windows


Verjetno si je na Windowsih najbolj smotrno namestiti brezplačen Visual Studio Community, ali njegovo različico brez grafičnega okolja Visual C++ Build Tools /* V nadaljevanju VS */. Ker me za Windos uporabnike najbolj skrbi, dodajam še pot do developer command prompta. Če si namestil Visual Studio Community, klikni Start → Vsi programi → Visual Studio 2015 mapa → Developer Command Prompt for VS2015. Če si namestil Visual C++ Build Tools, klikni Start → Vsi programi → Visual C++ Build Tools mapa → Visual C++ 2015 x86 Native Tools Command Prompt.


Naredimo si še mapo, v katero bomo shranjevali našo kodo. Klikni Start, napiši cmd in pritisni Enter. Verjetno si pristal v svojem domačem direktoriju C:\Users\Uporabnik. Natipkaj:

    C:\Users\Uporabnik>mkdir koda
    C:\Users\Uporabnik>cd koda
    

    2.4 Urejevalniki besedil


Linux: Vim, Emacs, SublimeText, Kate /*kde*/, Gedit /*gnome*/, nano, piko, femto... Hehe, ne femto editor ne obstaja, ampak se je tako lepo nadaljevalo... Svetujem, da si željen urejevalnik namestite s upravljalnikom paketov, ki ga na sistemu imate, saj boste tako imeli najmanj težav pri posodabljanju. Torej: $yum install vim, $apt-get install vim, $emerge vim..., ali z njihovimi grafičnimi različicami, kot so Synaptic, Adept...


OSX: TextEdit, TextWrangler, SublimeText, Vim for Mac OSX, Emacs For Mac OSX, Atom...


Windows: Notepad++, WordPad, SublimeText, Atom ali kar tekstovni urejevalnik Visual Studia, ki ga kar pohvalijo... NotePad bo za naše potrebe v tem prispevku več kot dovolj.



    3. Opisi nekaterih jezikov s primeri


Navedla bom nekaj aktualnih jezikov. Kateri jezik izberemo je odvisno od naloge/projekta, ki smo si ga zadali. Na primer: za izdelovanje dinamične spletne strani je nekako bolj primeren PHP kot C, kernel modula ne bom pisala v JavaScriptu itd...


Posamičen jezik bom najprej kratko opisala, nato navedla osnoven primer napisan v danem jeziku, PozdravljenSvet, in pokazala kako se program prevede ali tolmači. Nekateri jeziki potrebujejo prevajalnike/*compiler*/, nekateri pa tolmače /*interpreter*/. Da smo dosledni. Nekatere termine bom pisala v angleščini, saj včasih ne poznam pravega prevoda, v izogib nesporazumom. Poskušala bom posredovati čim več povezav do vsebin, ki izčrpneje pojasnujejo uporabljene termine, pojme, produkte... Nekako se moram omejit, sicer se pisanje nikoli ne konča o.O


Prevajanje ali tolmačenje programa je odvisno od operacijskega sistema in tukaj mogoče ne bom najbolj kompatibilna z vami, saj "laufam" na Linux i686, na starem računalniku in si zatorej ne morem omisliti nekega IDE-ja ali virtualnih Windowsov, saj bi mi računalnik "počepnil". Iz navedenih razlogov za programiranje uporabljam vim in terminal. Vi ste verjetno na Winowsih in tam vam ne znam konkretno pomagati, zato sem vam navedla ustrezne IDE-je in povezave nanje, da si jih lahko namestite in preberete kako se to počne z njimi. Programe sicer pišemo enako povsod, le način izvedbe prevajanja je drugačen.


    3.1. Java


Kratek opis:


Ima trenutno največ razvijalcev. Znana je po prenosljivosti. Aplikacija napisana v Javi dela praktično na vseh operacijskih sistemih, ki imajo Javo nameščeno /*crossplatform*/. V Javi je napisano veliko Android aplikacij in igric, spletnih aplikacij,... Če zanemarimo število 0day-ev, ki vsak dan pricurljajo na plano, je trenutno eden najbolj popularnih jezikov. Je OOP (object oriented programming) jezik. Predogled, kaj bi se zgodilo na svetu, če Jave ne bi bilo: Javapocalypse.

Več...


Primer:


    // PozdravljenSvetJava.java

    public class PozdravljenSvetJava{
        public static void main(String[] args){
            System.out.println("Pozdravljen svet!");
        }
    }
    

Prevajanje:


V OS X in Linux terminalu:


Prevajalnik za Javo je javac, ki si ga namestiš skupaj z jre7/8-openjdk (ime paketa je odvisno od distribucije) s pomočjo emerge, apt-get, yum, pacman ... V terminalu se premakneš v direktorij, kjer imaš datoteko PozdravljenSvet.java, ki si jo shranil s pomočjo urejevalnika besedil in izvedeš ukaz $javac PozdravljenSvet.java. Preveden program izvedeš z $java PozdravljenSvet.


Windows:


Namesti si Java SE Development Kit. Dodaj pot. Na Windows 10: Control Panel → System and Security → System → Advanced system settings → Environment Variables → System Variables → Path → Edit → New → Prilepi pot do jdk bin, v mojem primeru C:\Program Files\Java\jdk1.8.0_92\bin. Nato klikaj OK, Apply ipd. Nakar klikni start, vpiši cmd ter stisni Enter. Preveri če vse deluje. Natipkaj java -version in javac -version, ter preveri izpise. Premakni se v prej narejeno mapo koda ter natipkaj notepad PozdravljenSvetJava.java. V tako odprto beležnico skopiraj zgornjo kodo. Shrani kot PozdravljenSvetJava.java (ne kot Text files, ampak kot All files) zapri beležnico in izvedi ukaze, kot opisano prej.


IDE:


Na računalnik si namestiš IDE Eclipse in s "klikanjem" opraviš isto.


[Opozorilo:] Javo po eksperimentiranju raje odnamesti, saj prinsaša veliko nevarnosti. V kolikor želiš raziskovati naprej, si jo pač pusti nameščeno, vendar bodi previden.



    3.2. C# (C Sharp)


Kratek opis:


C# je Microsoftov klon Jave. Aplikacije napisane v C# delajo v Windows okolju in potrebujejo .NET ogrodje /*framework*/. Je splošno orientiran jezik.

O tem jeziku vem bore malo. Winsow nimam, da bi karkoli testirala, tako da ne bom pametovala. Mogoče si bom winse namestila na kako virtualno mašino, ko kupim nov računalnik, da malo raziščem ta sistem in s tem tudi C#. Do takrat vam pa posredujem povezave do strani z več informacijami.

Več...


Prevajanje:


Kot sem že povedala, okrog C# ne bom pametovala, navajam povezavo do primera: Hello World -- Your First Program (C#).

Na Windowsih imate po večini verjetno nameščen Visual Studio, tako sem vsaj opazila na Windows računalniku, ki ga imam v razredu. Sicer pa si zastojn namestite Visual Studio Express /* op. 2016: Visual Studio Comunity */ in tam sprobate kako to gre. Lahko pa plačate: Visual Studio 2013 /* op. 2016: Visual Studio 2015 je zadnja različica */.


[Dodatek 2016:] Ali pač ...


Primer:


    // PozdravljenSvetcs.cs
    public class PozdravljenSvetcs
    {
       public static void Main()
       {
          System.Console.WriteLine("Pozdravljen svet!");
       }
    }
    

Windows:


Odpri Visual Studio ukazno vrstico, kot opisano v poglavju 2.3. Premakni se v mapo koda:

    cd \
    cd C:\Users\Uporabik\koda
    

Natipkaj notepad PozdravljenSvetcs.cs in pritisni Enter, skopiraj zgornjo kodo v beležnico in jo shrani. Zapri beležnico in v ukazni vrstici natipkaj csc PozdravljenSvetcs.cs. Preveden program, ki je pri tem nastal PozdravljenSvetcs.exe izvedi tako, da v ukazni vrstici natipkaš PozdravljenSvetcs.


Na ostalih sistemih se s C# ne bomo ukvarjali, saj je ta jezik specifika Microsoftovih Windowsov.



    3.3. C/C++


Kratek opis:


C je verjetno moj najljubši jezik, K&RC "Ace of Spades" in Dennis MacAlistair Ritchie, znan tudi kot dmr, "Lemmy". Ne vem kako bi opisala mojo navezanost na C. Henry Precheur jo je opisal takole: C, old friend. Gremo k bistvu. Čeprav C in C++ velikokrat navajamo skupaj, kot v tem primeru, gre za dva različna jezika. C++ nekako izhaja iz C-ja, je pa OOP, kar C ni. C++ se široko uporablja v programski industriji: sistemi, video igrice, gonilniki, server/klient aplikacije... C je jezik Linux kernela, kar bi moralo povedati dovolj. Tu bi navedla še citat Linusa Torvaldsa: "C++ is a horrible language. In other words: the choice of C is the only sane choice." /*Kontekst: V katerem jeziku naj bo napisan Linux kernel...*/

Več o C...

Več o C++...


Primer in prevajanje C:


V OS X in Linux terminalu:


Spodaj naveden primer shraniš s pomočjo urejevalnika besedil kot PozdravjenSvet.c. Nato ga prevedeš /*compilas*/ s pomočjo gcc /*GNU Compiler Collection*/ prevajalnika, z ukazom $gcc PozdravljenSvet.c -o PozdravljenSvet. Tako dobljen program izvedeš s $./PozdravljenSvet seveda v direktoriju, kjer se nahaja program. Datoteka mora biti izvršljiva: $chmod +x PozdravljenSvet.


Windows:


Odpri Visual Studio ukazno vrstico, kot opisano v poglavju 2.3. Premakni se v mapo koda, natipkaj notepad PozdravljenSvetC.c, skopiraj spodnjo kodo v beležnico in jo shrani. Beležnico zapri. Kodo nato prevedi v VS ukazni vrstici s cl PozdravljenSvetC.c ter jo izvedi tako, da natipkaš PozdravljenSvetC v ukazni vrstici.


    // PozdravljenSvetC.c

    #include<stdio.h>

    int main(void){
        printf("Pozdravljen svet!\n");
        return 0;
    }
    

Primer in prevajanje C++:


V OS X in Linux terminalu:


Spodaj naveden primer shraniš s pomočjo urejevalnika besedil kot PozdravljenSvet.cpp. Prevedeš ga s pomočjo Gnu prevajalnika /*compilerja*/ g++, ki je vključen v že prej omenjeni gcc, z ukazom $g++ PozdravljenSvet.cpp -o PozdravljenSvet. Dobljen program izvedeš s $./PozdravljenSvet v direktoriju, kjer se nahaja program. Datoteka mora biti izvršljiva: $chmod +x PozdravljenSvet.


Windows:


Odpri Visual Studio ukazno vrstico, kot opisano v poglavju 2.3. Premakni se v mapo koda, natipkaj notepad PozdravljenSvetCpp.cpp, skopiraj spodnjo kodo v beležnico in jo shrani. Kodo nato prevedi v VS ukazni vrstici s cl /EHsc PozdravljenSvetCpp.cpp ter jo izvedi tako, da natipkaš PozdravljenSvetCpp v ukazni vrstici.


    // PozdravljenSvetCpp.cpp

    #include <iostream>

    int main(){
        std::cout << "Pozdravljen svet!" << std::endl;
        return 0;
    }
    

Programska okolja /*IDE*/:


Namesto, da delate v terminalu, si lahko namestite okolja kot so: Eclipse, NetBeans, Visual C++ (M$, menda vključen v Visual Studio), Xcode(OSX)... Tam odklikate kar je treba. Kot vidite okolja podpirajo več programskih jezikov, vključujejo razhroščevalnike /*debugerje*/, nudijo dopolnjevanje besed, te že sproti opozarjajo na napake in so primerna za velike projekte. Na posredovanih povezavah dobite navodila za namestitev teh okolj in njihovo uporabo.


Testna spletna stran napisana v C-ju na tem strežniku: first.cgi.



    3.4. JavaScript


Kratek opis:


Najprej poudarimo: JavaScript ni Java. JavaScript jezik so razvili pri Netscape-u z namenom pisanja interaktivnih spletnih strani. Podpirajo jo vsi brskalniki. Je jezik spleta in spletnih strani, ki postaja vedno bolj popularen. Skupaj s HTML-jem poživi spletne strani, omogoča izpoljnjevanje raznih obrazcev itd. Na tej strani je kar nekaj JavaScripta: snežinke, MathJax, "cowsaji" na prvi strani...

Več...


Primer:


JavaScript funkcijo zapišemo v datoteko s končnico .js, ki jo nato v HTML-ju, v glavi <head> kličemo s <script> in izvedemo v <body>.

V spodnjem primeru naj bosta datoteki .html in .js v istem direktoriju, da se ne ukvarjamo s potmi.

Najprej napišimo našo pozdrav funkcijo v JavaScriptu:

    javascript.js

    function pozdrav(){
    document.write("Pozdravljen svet!");
    }
    

Sedaj napišimo še .html dokument, ki bo uporabil našo pozdrav funkcijo:

    PozdravljenSvet.html

    <!DOCTYPE html>
    <html lang="sl">

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="javascript.js"></script>
    </head>

    <body>
    <h1>Moj prvi JavaScript</h1>
    <script>pozdrav()</script>
    </body>
    </html>
    

Tolmačenje:


Za pisanje JavaScripta ne potrebujete nobenih posebej nameščenih prevajalnikov, saj kodo interpretira (tolmači) že vaš brskalnik (Opera, Firefox, Chrome, IE, Midori...). Kodo napišete s pomočjo kakega urejevalnika besedil, nato jo vključite v vašo .html datoteko, kot opisano zgoraj, ki jo odprete z brskalnikom (.html datoteko to je...).


V kolikor je JavaScripta malo, kot v našem zgornjem primeru, ga lahko vključimo kar naravnost v .html. Zgornji primer v eni .html datoteki:

    PozdravljenSvet.html

    <!DOCTYPE html>
    <html lang="sl">

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script>
    function pozdrav(){
    document.write("Pozdravljen svet!");
    }
    </script>
    </head>

    <body>
    <h1>Moj prvi JavaScript</h1>
    <script>pozdrav()</script>
    </body>
    </html>
    

Zgornji .html na tem strežniku: PozdravljenSvet.html.



    3.5. Visual Basic


Kratek opis:


Še eden izmed jezikov s katerim nimam nobenega stika, ampak ga omenjajo kot pomembnega. Njegovo naravno okolje je Windows. Je enostaven, hitro učljiv jezik primeren za začetnike. V njem so narejene enostavne GUI (graphical user interface) aplikacije. Tudi ta jezik je del M$ Visual Studia.

Več...


Prevajanje:


Res ne poznam tega jezika, zato vam bom raje navedla povezavo do primera, kot da pametujem in c/p: Hello World in Visual Basic.

Najbližje kar sem prišla VB je VBScript, s katerim sem se igrala v poletnih mesecih, po izpolnjenih vseh obrazcih, napisanih vseh papirjih, ko moramo na šoli sedeti od 8:00-14:00 brez dijakov in gredo človeku po glavi neumnosti. Na naši šoli so povsod "Okna". Ena izmed skript, ki je takrat nastala: crke.

Na Windowsih si kodo shranite s pomočjo urejevalnika besedil kot crke.vbs in kliknete nanjo. Ne morem testirat, če še dela, saj veste... nimam Winsow...

/*Opozorili so me, da vas nod32 (morda tudi kak drugi protivirusni program) ne spusti na to stran, saj misli da je trojanec al neki... Zato sem v kodo v oklepaju ("aWScript.Shell") dodala namerno a, da strani ne blokira. Črko a od tam zbrišite, če želite, da koda deluje.*/


[Dodatek 2016:]


Windows:


Odpri Visual Studio ukazno vrstico, kot opisano v poglavju 2.3. Premakni se v mapo koda, natipkaj notepad PozdravljenSvetvb.vb, skopiraj spodnjo kodo v beležnico in jo shrani. Kodo nato prevedi v VS ukazni vrstici z vbc PozdravljenSvetvb.vb ter jo izvedi tako, da natipkaš PozdravljenSvetvb v ukazni vrstici.


Primer:

    ' PozdravljenSvetvb.vb 
    Module PozdravljenSvetvb
      Sub Main()
          MsgBox("Pozdravljen svet!")
      End Sub 
    End Module
    

    3.6. PHP


Kratek opis:


Popularen skriptni jezik pri spletnih oblikovalcih. Mišljen je bil kot jezik za dinamične spletne strani. Ponavadi se ga učimo skupaj z SQL in ga povežemo s HTML-jem in raznimi bazami, kot so MySQL, postgreSQL, MariaDB... Zadnje čase se skoraj vsak dan ukvarjam z njim. Z njim sem napisala galerijo, strani za nalaganje vsebin, brisanje vsebin, razne spletne obrazce itd... Res je zelo uporaben pri spletnem razvijanju.

Več... | PHP Manual


Primer php+html:

    PozdravljenSvet.php

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>PHP pozdrav</title>
    </head>

    <body>
    <h1>Pozdrav v PHP-ju</h1>
    <?php echo "Pozdravljen svet!"; ?>
    </body>
    </html>
    

Tolmačenje:


Za predstavitev .php spletne strani je potreben spletni strežnik kot je Apache, Nginx, Lighttp... Zgornjo kodo torej shranimo s pomočjo urejevalnika besedil kot PozdravljenSvet.php in jo naložimo na server. Do nje nato dostopamo s pomočjo brskalnika: http://primer.com/PozdravljenSvet.php


IDE:


Na domačem računalniku si pomagamo s WAMP (Winsi), MAMP (OSX), LAMP (Linux) ali kako podobno rešitvijo.

IDE-ji, ki podpirajo PHP, so že večkrat omenjeni NetBeans, Eclipse....


"Web framework": Laravel, Zend...


Zgornja koda na tem strežniku: PozdravljenSvet.php.



    3.7. Perl


Kratek opis:


Perl. Kaj naj rečem? Punce imamo rade bisere:P In Perl je res biser, čeprav ni Pearl. Imenujejo ga tudi "Duct tape of the internet". Je dinamičen, splošno orientiran, podobno kot PHP, Ruby, Python. Uporablja se za grafiko, sistemsko administracijo, spletno programiranje... Z njim lahko res vse sorte počneš: chaos, lilith.../*ups*/. Če je netcat "swiss army knife of the internet", je Perl "The Swiss Army Chainsaw of Scripting Languages". Perl skripta, podobno kot Ruby, Python... se začne s shebang vrstico, natančneje z zaporedjem znakov #! za katerim je pot do tolmača.

Več... | PerlMonks


Primer:


    PozdravljenSvet.pl

    #!/usr/bin/perl #Linux
    #!C:\Perl\bin\perl.exe #na Winsih
    print "Pozdravljen svet!\n";
    

Tolmačenje:


V OS X in Linux terminalu:


Zdornjo kodo, seveda brez prve vrstice, ki je ime datoteke, prepišemo s pomočjo urejevalnika besedil in shranimo kot PozdravljenSvet.pl. Nato jo izvedemo z ukazom: $perl PozdravljenSvet.pl ali kar $./PozdravljenSvet.pl. Pred tem se prepričamo ali je pot do "tolmača" prava: $whereis perl ali $which perl. Seveda moramo imeti na računalniku Perl nameščen.

Za Perl je napisanih tudi ogromno modulov, ki jih namestimo s pomočjo cpan-a $perl -MCPAN -e shell in ko smo v "lupini" namestimo željen modul, na primer HTML::Form $install HTML::Form.


IDE: Padre...


"Web Framework": Dancer...


V Perlu, podobno kot v Pythonu, lahko pišemo tudi razne cgi skripte. S pomočjo podobne skripte je bila generirana tudi ta stran:

    stran.cgi

    #!/usr/bin/perl -w

    use strict;
    use CGI;

    my $cgi = new CGI;

    print $cgi->header(-type => 'text/html',
                          -charset => 'UTF-8');

    print $cgi->start_html(
        -title => 'Stran',
        -style => {
            -src => 'stil.css'
        },
        -head => $cgi->Link({
            -rel => 'shortcut icon',
            -href => 'favicon.ico',
            -type => 'image/icon'}),
        -script => {
            -language => 'javascript',
            -src => 'javascript.js'
        }
    ),
    "\n",
    $cgi->div({-id => 'naslov'}, "\n", $cgi->h1('Naslov'), "\n"), "\n",
    "\n",
    $cgi->div({-id => 'vsebina'}, "\n", $cgi->p('EOF'), "\n"), "\n",
    "\n",
    $cgi->div({-id => 'bak'}, "\n", $cgi->p($cgi->a({-href => 'http://fizika.zf42.net/fizika'}, "Nazaj")), "\n"), "\n";

    print $cgi->end_html, "\n";
    

Zgornji Perl CGI na tem strežniku: stran.cgi.


[Dodatek 2016]


Na Božič 2015 je uradno izšel jezik Perl 6.


Windows:


Nameščanje Perl 6 si bomo olajšali z Rakudo Star, ki je uporabna produkcijska distribucija Perl 6. Z njihove spletne strani snamemo zadnjo stabilno verzijo namestitvenega programa za svoj operacijski sistem in jo poženemo. Ko je namestitev zaključena, preverimo ali imamo C:\rakudo\bin v poti, sicer dodamo (glej Java 3.1). Kliknemo Start, natipkamo cmd in pritisnemo Enter. Premaknemo se v mapo koda, ter natipkamo notepad PozdravljenSvetp6.p6. V tako odprto beležnico skopiramo spodnjo kodo in jo shranimo. Beležnico zapremo in program tolmačimo z perl6 PozdravljenSvetp6.p6.


Primer:


    # PozdravljenSvetp6.p6
    v6;
    say "Pozdravljen svet!";
    

Ali povedano drugače:P


    # PozdravljenSvetp6.p6
    v6:
    "Pozdravljen svet!".say;
    

    3.8. Python


Kratek opis:


Je splošno orientiran jezik in uporaben za različne namene in industrije: letalstvo, obramba, znanost, finance, programiranje v oblakih... Google App Engine je napisan v Phytonu. Veliko ljudi se ga uči kot prvi programski jezik. Je pregleden, enostaven... Navajam nekaj trditev iz The Zen of Python, ki jih ne bom prevajala, da se kakšna vsebina ne izgubi:


:: Beautiful is better than ugly.

:: Explicit is better than implicit.

:: Simple is better than complex.

:: Complex is better than complicated.


Le kako bi komu ne bil všeč tak jezik?

Več... | Non Programmer's Tutorial for Python 3


Primer:

    PozdravljenSvetpy.py

    #!/usr/bin/python3

    print("Pozdravljen svet!")
    

Tolmačenje:


V OS X in Linux terminalu:


Na sistemu moramo imeti seveda nameščen Python3, ki je zadnja različica Pythona. Med Python2 in Python3 je kar nekaj razlik. Preverimo pot do "tolmača" $which python3 ali $whereis python3, kodo primerno prilagodimo. Zgornji tekst shranimo v datoteko PozdravljenSvetpy.py, ki jo izvedemo s $./PozdravljenSvetpy.py ali $python3 PozdravljenSvet.py.

Pytonov upravitelj paketov je pip. Če želim namestiti, na primer, Django, natipkam: $pip install django.


Windows:


Snamemo in namestimo zadnjo stabilno verzijo Pythona 3 z uradne spletne strani python.org. Pri namestitvi odklikamo, naj nam namestitveni program doda Python v pot. Pot preverimo. Kliknemo Start, vpišemo cmd in pritisnemo Enter. Premaknemo se v mapo koda in natipkamo notepad PozdravljenSvetpy.py. V beležnico skopiramo zgornjo kodo, shranimo in beležnico zapremo. Program nato izvedemo s python PozdravljenSvetpy.py.


IDE: Že večkrat omenjen Eclipse, PyScripter...


"Web framework:" Django, Pyramid, Grok...


Testna Python CGI skripta na tem strežniku:test.py.



    3.9. Ruby


Kratek opis:


Še en draguljček. Uporaben za programiranje "web" aplikacij, 3D modeliranje, robotika, internet, sistemska administracija, metasploit... Jezik balansira funkcijsko programiranje in imperativno programiranje, je lep in "čist" jezik, uporaben povsod. Uporablja ga Redmine, GitHub... Paketni upravitelj za Ruby je RubyGems. Na primer: Ruby on Rails s pomočjo gem namestimo z: $gem install rails. Kolikor se spomnim, je imel ta jezik letos kar nekaj varnostnih težav, vendar verjamem, da so jih odpravili.

Več... | Ruby: A programmer's best friend


Primer:

    # PozdravljenSvetrb.rb

    #!/usr/bin/ruby  # Linux
    #C:\Ruby23-x64\bin  # Ali nekaj podobnega na Winsih, dela tudi brez
    puts "Pozdravljen svet!";
    

Tolmačenje:


V OS X in Linux terminalu:


Podobno kot Perl in Python doslej. Zgornjo kodo shranimo s pomočjo urejevalnika besedil kot PozdravljenSvetrb.rb in v direktoriju kjer se datoteka nahaja izvedemo $./PozdravljenSvetrb.rb ali $ruby PozdravljenSvetrb.rb. Pred tem preverimo pot do "tolmača" in izvršljivost datoteke. Če datoteka ni izvedljiva/izvršljiva /*executable*/ jo naredimo izvršljivo: $chmod +x PozdravljenSvetrb.rb. Za lažje ugotavljanje napak v programu, ugotavljanja ali program pravilno deluje, kako ga izboljšati ipd., ima Ruby irb. Če želimo gledati kako se program izvaja izvedemo: $irb PozdravljenSvetrb.rb.


Windows:


S spetne strani rubyinstaller.org si snamemo namestitveni program, zaenkrat priporočajo verzije 2.2.X, ki ga zaženemo in okljukamo, naj doda Ruby v pot. Ko je namestitev zaključena, odpremo cmd in preverimo namestitev z ruby -v. Če nam izpiše verzijo, vse deluje?, sicer preverimo pot (glej Java 3.1). Nakar v cmd-ju natipkamo notepad PozdravljenSvetrb.rb, skopiramo zgornjo kodo v beležnico in jo zapremo. Datoteko izvedemo z ruby PozdravljenSvetrb.rb.


IDE: Eclipse, RubyMine, Aptana...

Namesiš si okolje in odklikaš svojo pot...


"Web framework": Ruby on Rails...


Ruby na tem strežniku ni nameščen(a).



    3.10. Assembly (asm)


Kratek opis:


Zadnji v tej predstavitvi jezikov, a verjetno najpomembnejši. V slovenščini - zbirni jezik. Je nizkonivojski jezik. Nekako oče vseh jezikov, saj se veliko jezikov, ki uporabljajo prevajalnike /*compilerje*/ prevede vanj. Predstavlja najboljši približek dobesednemu prevodu navodil, ki jih računalnik izvaja, v človeku razumljivo obliko. Vezan je na arhitekturo računalnika npr: Intel asm... Uporablja se za nekatere gonilnike, bootloaderje (grub, lilo), viruse, situacije, ko nam višji programski jeziki ne pomagajo. Omejila se bom na x86 assembly, saj ga najbolj poznam zaradi arhitekture, ki jo imam, na tem 10 let starem računalniku.

Več... | x86 Assembly - knjiga


Primer:


    PozdravljenSvet.asm

    global _start

    section .data
            align 2
            str:    db 'Pozdravljen svet!',0xA
            strLen: equ $-str

    section .bss

    section .text
            _start:

    ;       op  dst,    src

            mov edx,    strLen
            mov ecx,    str
            mov ebx,    1
            mov eax,    4
            int 0x80

            mov ebx,    0
            mov eax,    1
            int 0x80

    

Prevajanje:


V OS X in Linux terminalu:


Zgornjo kodo, s pomočjo urejevalnika besedil, shranimo kot PozdravljenSvet.asm. Prevedemo jo s pomočjo nasm /*Netwide Assembler*/ z ukazom: $nasm -felf32 -g PozdravljenSvet.asm, tako dobimo PozdravljenSvet.o, ki ga nato povežemo z $ld -go PozdravljenSvet PozdravljenSvet.o. Tako dobljen PozdravljenSvet nato izvedemo z $./PozdravljenSvet. M$ uporablja masm /*Microsoft Macro Assembler*/, ki je vključen tako kot C# in VB v Microsoft Visual Studio IDE. Obstaja še FASM /*flat assembler*/.


Windows


Z namestitvijo Visual Studia smo namestili tudi MASM (Microsoft Macro Assembler), ki ga bomo uporabili za naš primer. Zgornjo kodo moramo nekoliko preurediti za naše okolje. Kliknemo Start, poiščemo Visual C++ 2015 x86 Native Tools Command Prompt ali Developer Command Prompt for VS2015 in v njem napišemo notepad PozdravljenSvetasm.asm. V beležnico skopiramo in shranimo spodnjo kodo in jo prevevedemo z ml /coff /c /Cp PozdravljenSvetasm.asm. Nakar jo povežemo z link /subsystem:windows /out:PozdravljenSvetasm.exe kernel32.lib user32.lib PozdravljenSvetasm.obj. Program nato izvedemo tako, da v VS ukazno vrstico vpišemo PozdravljenSvetasm.


Primer:


    .686
    .model flat, stdcall

    EXTERN MessageBoxA@16 : proc
    EXTERN ExitProcess@4 : proc

    .const
    msgText db 'Pozdravljen svet!', 0
    msgCaption db 'Windows assembly', 0

    .code
    Main:
    push 0
    push offset msgCaption
    push offset msgText
    push 0
    call MessageBoxA@16
    push eax
    call ExitProcess@4

    End Main
    

IDE:


Če se temu lahko tako reče ... Fresh: Uporaben na vseh sistemih, ki jih podpira FASM: DOS, Linux, FreeBSD, BeOS, MenuetOS...

Windows sistem: Kot že omenjeno Microsoft Visual Studio, winasm, RadASM...

OSX sistem: Xcode? vsebuje nasm.



    4. Nabor spletnih strani povezanih z učenjem programiranja


Zgornji PozdravljenSvet primeri nam pomagajo pri postavljanju našega programerskega okolja in testiranju, če vse dela tako kot je treba. Nato se je potrebno začeti učiti strukture, sintakse, funkcij, objektov...posamičnih jezikov. Lahko bi vzeli knjigo, svinčnik in papir ter se lotili učenja, kar je tudi zelo zaželjeno. Knjig o učenju določenih programskih jezikov je ogromno.


Povezave do nekaj knjižnic:


:: Programming, Motherfucker: Do you speak it?

:: LCodeTHW

:: IT eBooks

:: E-books

:: tutorialspoint

:: Wikibooks: Computer Programming

:: tizag

:: w3schools

:: about.com

:: Happy Codings

:: Planet Source Code


Takih in podobnih knjižnic je na internetu ogromno in ravno tako knjig. Čeprav se knjige tipa Learn PHP in 24h zdijo smešne, so mogoče za začetnike vseeno uporabne, da dobijo neko osnovo. Seveda se nobenega programskega jezika ne da naučiti v 24h... Sama sem prebrala kar nekaj knjig, ki jih mogoče, ko sem jih brala, niti nisem prav razumela, ampak potem stvari nekako padejo na svoje mesto s časom in uporabo.

Ko neko knjigo/tekst o določenem programu preberemo, si seveda želimo sprobati kako to v praksi deluje. Zato si po navodilih iz prejšnje točke 2. postavimo programersko okolje in začnemo eksperimentirati.


Pri tem nam pomagajo tudi interaktivne spletne strani s svojimi prevajaniki, ki nam določajo naloge in razložijo stvari.


Povezave do nekaj interaktivnih strani:


:: Codecademy: JavaScript, Python, Ruby, Web Fundamentals, jQuery, PHP

:: LearnPython: Python

:: code school: JavaScript, Ember.js, iOS 7, HTML & CSS, rails, jQuery, Objective-C, Ruby, Git, Node.js, Backbone.js, CoffeScript

:: Learn-C.org: C

:: LearnJava: Java

:: LearnJs: JavaScript

:: LearnPHP: PHP

:: LearnC#: C#

:: LearnShell: Shell

:: coursera: Razne vsebine

:: edX: Razne vsebine

:: Udacity: Razne vsebine


Velikokrat se učimo z opazavnjem drugih ljudi. Za boljše razumevanje nam zato pomagajo tudi razne video vsebine.


Nekaj povezav do video vsebin:


:: ShowMeDo

:: ProgrammersTube

:: SecurityTube: Plačljivo

:: Lynda: Plačljivo

:: YouTube

:: KhanAcademy: Tudi razne druge vsebine

:: Programming Knowledge - youtube

:: kudvenkat - youtube

:: Eli The Computer Guy


Testiraj kodo "online":


:: TestBed: HTML

:: writecodeonline: PHP in JavaScript

:: jsfiddle: JavaScript z jQuery, HTML, CSS

:: codepad: C, C++, D, Haskell, Lua, OCaml, PHP, Perl, Python, Ruby, Scheme, Tcl

:: labs.codecademy: Ruby, Python, JavaScript

:: jdoodle: Java

:: regexpal: Regex, Regexp, re...

:: RegExr: Izrazi

:: PHP Sandbox: PHP

:: CSSdesk: CSS

:: HTML Tidy: HTML


Kot veliko zbirko kode in forum, kjer nam pomagajo pri programskih zagatah omenjam še stackoverflow.

Kot zadnjo in eno najpopularnejših strani zadnje čase navajam GiHub, ki je ogromna baza raznih programov in si jo je omislil že omenjeni Linus Torvalds.


    5. Zaključek


V tem tekstu sem se omejila na 10 jezikov, saj sem morala narediti nek izbor. Programskih jezikov je še ogromno. Veliko jih je še, ki bi jih morala omeniti kot npr. Lisp, Lua, Tcl, Haskell, Scala... Nekateri jeziki imajo že svoja narečja. Poznamo različne stile pisanja programov. Stil kodiranja Linux kernela, si lahko ogledate tukaj. Določeni so razni standardi, kot npr. ANSI C...

Lista jezikov


Predlagam, da si izberete en jezik in se ga nekaj časa držite. V njem probate narediti čim več projektov, spoznati čim več funkcij, prebrati in sprobati čim več. Lahko pa storite tako kot jaz, ki sem naredila CodeCademy v par tednih in na koncu nisem vedla niti kako v Pythonu napisati PozdravljenSvet. Preveč informacij naenkrat pač ne gre. Saj veste 7±2 pomnilni enoti... Tak pristop iz lastnih izkušenj odsvetujem.


Kolkor sem se pozanimala učijo na nekaterih šolah najprej Python in C++, in verjetno bi bilo s tema dvema jezikoma najbolje začeti. Namestite si PyScripter ali Eclipse, preberete njuna navodila za uporabo in začnete. Pred tem naredite morda še tečaj Pythona na CodeCademy, ali preberete kak "manual", povezave do njih sem vam posredovala, in začnete s svojimi projekti. Navadno se začne s Hello World, nato razne matematične funkcije, nakar if, switch, for stavki, slovarji, "classes" in potem ideje kaj bi naredili pridejo kar same. Medtem si ogledate še kako kodo na GitHubu, jo sprobate, se igrate "scriptkiddy-je" in idej ne zmanjka.

Na IDE-je se ne spoznam, kot sem že povedala imam preslab računalnik za kaj takega, ampak kolikor sem prebrala ob pisanju tega prispevka, bi svetovala Eclipse, saj podpira največ jezikov in je kar priljubljen. Tudi Android aplikacije se da pisati s pomočjo Eclipse. Tako, da bi si lahko sami napisali kako igrico za vaš telefon ipd., saj se vedno igrate z njimi.

Ko osvojite strukturo, sintakso enega jezika, vam bo lažje naprej spoznavati še kak jezik, saj je princip podoben. Razlikujejo se imena funkcij, kako jih kličeš, imena objektov itd., ampak logika ostane ista. Od Pythona ali C++ se nato premaknete gor (Perl, Ruby...) ali dol (C, asm), odvisno v katere vode vas zanese. V glavnem brez strahu. Nič ne boste pokvarili. Če je s programom kaj narobe, pač ne bo delal in to je to. Včasih vas sicer pozdravi kaka "Kernel panika" ali na Winsih kak "Blue screen of death". Nič hujšega. Windowse je tako priporočljivo ponovno namestiti vsake toliko časa, tisti na Linuxu in freeBSD-ju se boste pa že znašli.

Učenje programskih jezikov je podobno učenju tujih jezikov. Pri slednjih spoznavaš slovnico, besedišče, skladnjo ipd. Pri programskih jezikih pa spoznavaš funkcije, sintakso itd. Slednje je verjetno veliko lažje, saj je venomer prisotna neka logika, kar pri tujih jezikih ni nujno, če izvzamemo nemščino, ki je dokaj logična. Pri tujih jezikih je vedno en kup posebnih primerov in nekaj moraš kar slišati in vedeti po posluhu o.O


Sama sem začela najprej s pisanjem Bash skript, ki sem jih na svojih sistemih potrebovala, nato malo html-ja, php-ja ipd. Prvi jezik, ki sem se ga resno lotila pa je bil C. C ni nujno dober kot prvi jezik, čeprav pravijo, da tisti ki zna C, se zelo hitro nauči vseh ostalih jezikov. Problem s C-jem je, da vam lahko hitro vzame vso voljo, saj moraš večino funkcij pisati na roke, uporabljati pointerje, znati uporabljati računalniški spomin... Kot prvi jezik je verjetno primeren za bolj trmaste ljudi, ki se ne vdajo zlahka. Meni se je nekaj podobnega zgodilo že pri sistemih, saj sem začela z Gentoo, ker je en znanec delal eksperimente na meni in je verjetno želel videti ali bom preživela. V stilu: "Force them to use Gentoo like I did. That will sort the men from of boys (or the women from the girls, if you're optimistic)." Takrat sem sedela in buljila tiste "flage" in paketke cele dneve in noči, vendar mi ni žal, saj sem se ogromno naučila, naletela sem verjetno na čisto vse možne probleme. Na srečo sem preživela in nisem izgubila razuma o.O Tako nekako je s C-jem pri programskih jezikih.


Upam, da bo ta prispevek komu pomagal pri začetkih programiranja.

V kolikor opazite kake napake, ali je potrebna kakšna izboljšava, mi prosim sporočite, saj seveda ne želim zavajati nikogar in sem sama amater na tem področju, tako da so kritike zaželjene.


    konec.f90

    program konec
        print *, "Dost mam. Lahko noč svet!!!"
    end program konec
    

Program konec je napisan v nekoč popularnem Fortranu. V terminalu program shranimo, ga s pomočjo gcc prevedemo $gfortran -o konec konec.f90 in izvedemo s $./konec.


EOF

Nazaj