Šest alata koje dobar programer treba da poznaje

U prvi mah sam u naslovu umesto "treba" napisao "mora", ali, ruku na srce, ništa od navedenog nije obavezno, ali je svakako vrlo poželjno. Njhovo poznavanje daće vam "edge" nad konkurencijom, a mnoge stvari ćete obavljati nekoliko puta brže. Nekad je dovoljno poznavati nešto samo površno, ali dovoljno da vam da ideju za neki manje konvencionalni pristup rešavanju nekog problema. Dakle, idemo sa spiskom:

Regularni izrazi. Apsolutno neophodno, u bilo kom alatu ili operativnom sistemu da radite. Vrlo brzo se uče, nešto duže vreme treba dok se savlada napredno korišćenje, ali svaki uloženi sekund se posle višestruko vraća i vraća. Sledeći korak je prelazak na unixoliki operativni sistem ili instalacija paketa standardnih unix alata na Windows, što ću pomenuti kasnije.

Objektno programiranje. Nekima će ovo možda delovati apsurdno, ali dosta programera i danas kodira imperativnim stilom, pogotovu oni kojima su primarni alati ASP, PHP ili VisualBasic. Objektno programiranje se ne uči za jedno popodne, već se savlađuje godinama, pošto je usko povezano sa projektovanjem aplikacija, što je zanat sam po sebi. Sledeći korak je izučavanje dizajn šablona (patterns), odnosno sistematizacija znanja i prakse.

Barem jedan skript jezik u kome su funkcije elementi prvog reda. U njih dakle spadaju Pajton (Python), Rubi (Ruby), ali i JavaScript. U njih ne spadaju Java, PHP i ASP. Mnoge karakteristike funkcionalnog programiranja, nastale još šezdesetih godina, tek sad ulaze u opšteprihvaćene jezike, pre svega zbog sporijeg razvoja hardvera. Proučavanje nekih funkcionalnih tehnika i rad u interpretiranim jezicima sa velikom mogućnošću refleksije može fundamentalno da promeni vaš pogled na programiranje. Pažnja: posle par stotina linija koda u Pajtonu, biće vam muka kad se vratite u Javu, C# ili PHP.

Unix command-line utilities. Neko ko pređe sa Linuxa na Windows ne može da shvati kako programeri tamo mogu da prežive bez komande poput grep (sed, awk, itd), moćnog šel skriptinga i obilnog korišćenja redirekcije i pajplajna standardnog ulaza i izlaza. Vindousov šel je u poređenju sa Juniksovim kao tricikl u poređenju sa Ladom Nivom. U tom smislu, "neprosvetljeni" vindous programer će, umesto dve linije grepa, sesti i napisati jednokratnu aplikaciju od stotinak linija u C#-u, Delfiju ili Javi, što je apsurdno. Instalacija omiljenih Unix alata je dostupna i za Windows i radi savršeno, sa sve man stranicama.

ASP.NET. Ako ste veb programer i ne znate kako funkcioniše ASP.NET, uložite par dana i naučite barem osnove. Majkrosoft je iz korena promenio pristup veb programiranju i iako taj novi pristup ima i neke mane, ipak je jedan od dominantnih danas i svakako pravac kojim će se kretati i ostali alati za razvoj veb aplikacija.

Motika. Rezerve fosilnog goriva se troše i ko zna koliko ćemo još uživati u plodovima jeftine energije. Kad računari postanu neupotrebljive metalne kante a hrane i vode bude sve manje i manje, biće od koristi poznavanje tradicionalnih načina preživljavanja. Takođe, motika je, zajedno sa komplementarnim alatom, kukom, u Srbiji neophodan instrument svakih desetak godina, kako bi se politička "elita" podsetila u kom pravcu treba da vodi državu.


autor jablan | 09.05.07.

Komentari

E, ovo sa motikom ti je sjajno ;)

Inace, slazem se sa nekim stvarima, ali ne i sa asp.net. Ja bih pre preporucio Web programerima da savladaju protokole (http, smtp, pop3...) ... covek se prosto zacudi sta sve mozes da uradis jednim telnetom na odgovarajuci port i slanjem nekog tamo teksta ;)

autor Dinke | 09.05.07.

Protokoli jesu izuzetno važni, ali postaju sve manje kako se programiranje kreće od niskog nivoa ka višim. Za mrežnu komunikaciju danas postoje biblioteke za sve popularne jezike i mislim da nema mnogo potrebe znati to u prste (kao što skraćenice 8-N-1 i 7-E-1 više nikom ništa ne znače). Naravno, ono što je neophodno za jednog veb programera je dobro poznavanje funkcionisanja HTTP protokola, ali više iz konceptualnog nego iz praktičnog ugla.

autor jablan | 09.05.07.

Ja bih listi dodao još i version control sisteme. Ne mogu reći da se bez njih ne može programirati, ali su izuzetno korisni, čak i kada na projektu radiš solo. Iako ih koristim tek godinu dana, u više navrata su mi spasili podatke.

Moj izbor - Subversion (http://subversion.tigris.org). Radi fino i na Windowsu i na *nixima.

autor Ilija Studen | 09.05.07.

Btw, da ne bude da ih preporučujem samo kao backup varijantu, naveo sam primer kada se stvarno obradujete jer ih koristite. Neizrecivo olakšanje kada skontate da nešto što ste mislili da ste slučajno obrisali i da nemate kopiju imate u repositoryju... :)

Radu u timu je danas nezamisliv bez njih...

autor Ilija Studen | 09.05.07.

Не могу да се сложим за ASP.NET (пошто га не знам, а запослен сам на развоју веб апликације, између осталог), а ни за мотику (мада сам њу већ користио за примарне намене ;). У сваком случају, препоруке су махом усмерене на некога ко ради на Виндози.

Такође, „функционално програмирање“ (читај Лисп, ламбда-функције [које постоје и у Питону]...) није исто што и процедурално/императивно програмирање.

autor Данило | 09.05.07.

Lista nije konačna, ja bih dodao XML/XSL pod obavezno. Kao i za objektno programiranje, pravo je čudo koliko se "programera" uplaši kad treba isparsirati neki XML, da ne pominjem tek XSL templejte, a to je sve tehnologija koja je već 5+ godina sa nama.

ASP.NET... Lično više preferiram PHP, mada radim u .NET dosta, ali svakako da je doneo jedan novi pristup web programiranju. Taj koncept, uz podršku ajaxu, je nešto ka čemu će ići svi novi web alati. Na žalost nemam puno vremena da eksperimentišem sa Rubijem i Pajtonom i frejmvorcima tipa Ruby on rails i Django da bih video šta oni nude.

autor mileusna | 09.05.07.

@Ilija: VCS je svakako neophodan alat (koristim različite alate više od 5 godina), ali nisam ga uvrstio u listu zato što inicijativa za njegovo korišćenje obično ne polazi od programera, tj. programer se tu obično ne pita, već se prati politika firme. Inače, u Monsteru se koristi komercijalni VCS Perforce i mogu reći da sam oduševljen, naravno da ima sve neophodne funkcionalnosti i još odličan interfejs pride (obratite pažnju na skrinšotove i video tutorijale).

@Danilo: Preporuke jesu usmerene prevashodno na Vindous korisnike (jer takvih najviše i ima, jel). Što se ASP.NET-a tiče, to je moja preporuka, ti je možeš prihvatiti ili ne ;). A što se tiče FP-a, nisam ni rekao da je isto što i imperativno, samo da je korisno poznavati ga da bi pristup drugim načinima programiranja bio produktivniji i kreativniji. Inače, lambda funkcije će izbaciti iz P3000 (ostaju funkcije unutar funkcije koje imaju istu suštinu).

@mileusna: XML/XSL mi jeste pao na pamet, ali je tu više u pitanju specifična tehnologija nego alati, njihovo poznavanje ne doprinosi svakodnevnoj produktivnosti, osim u radu sa samim XML-om (kad si svejedno prinuđen da ih naučiš). Ali je tačno da XSL programiranje ume da bude "tricky" i da tu postoji veliki prostor gde se može iskazati produktivnost i kreativnost. Za razvoj XSL-a je takođe izuzetno korisno poznavanje funkcionalnog (i deklarativnog) programiranja.

autor jablan | 09.05.07.

Јаблане, да не схватиш погрешно: у осталих се 4 од 6 ставки слажем, што и није лош резултат :) Свакако бих радије препоручио познавање неког система за праћење ревизија, али и бар један добар систем за документацију кода.

За ASP.NET, не верујем да би се његова употреба поклопила са политиком Canonical-а, али свакако ћу уграбити неку прилику да видим шта је то другачије у њему у односу на Zope и сличне „подлоге“ :)

autor Данило | 09.05.07.

Одличан чланак Јаблане, овако нешто је било потребно домаћем интернетском небу. Јесте да бих твој један скрипт језик факторисао са: бар један функционални језик али добро сад. Не одушевљавају се баш сви лиспом.

Једино не могу да схватим шта ће АСП.НЕТ у друштву осталих ставки. Испада, нико није знао како се прави мрежни софтвер, док Микрософт није благоизволео да народу подари АСП.НЕТ. Некако не делује логично. АСП је само технологија за коју постоје бројни еквиваленти и не могу да замислим да су разлике у односу на рецимо Зопа фундаменталне природе. У том смислу се мотика боље уклапа у твој списак од АСП.НЕТа.

Што се тиче горе поменутог икс-ем-ела (XML) , боље да не почињем да кудим. То је један велики згубидан у кога су програмери широм света силно време уљуљали узалуд. Објашњење следи ако некога занима, у међувремену ево како све то може лакше и брже: http://okmij.org/ftp/Scheme/SXML.html

autor филмил | 09.05.07.

Vidim da je ASP.NET opšteprihvaćeno najsporniji član ekipe, pa ću probati malo da elaboriram. Ne tvrdim da je Majkrosoft izmislio tehnologiju koja stoji iza njega. Ali tvrdim da je jako dobro zamišljena, mada je malo glupo da vas ubeđujem ako nemate iskustvo iz prve ruke... Sam koncept serverskih tagova, kojima odgovaraju instance odgovarajućih klasa, smatram vrlo prirodnim i čistim načinom sastavljanja HTML stranice. Na prirodan način odvajaju se prezentacija i logika (zapravo, dva nivoa prezentacije i jedan logike). S obzirom da je na serveru .NET aplikacija, integracija sa poslovnom logikom ne zahteva bilo kakav boilerplate kod.

Bacio sam pogled na Zoup i ne sumnjam da ima mnogo dobrih ideja (na kraju krajeva, pokreće ga Pajton), ali TAL po eleganciji i mogućnostima jednostavno ne može da parira .NET-ovom konceptu serverskih tagova.

No, poenta uvrštavanja ASP.NET-a u ekipu nije bila samo state-of-the-art tehnologija koju donosi, već činjenica da se većina veb programera zadržava na PHP/HTML "red slanina - red meso" pristupu i da rad u .NETu smatram izuzetno korisnim za razvoj osećaja za slojevit razvoj aplikacije, pravilno raspoređivanje kôda, jednom rečju - za programersku higijenu.

autor jablan | 09.05.07.

Микрософт је одличан дресер за масе. Треба да им се ода признање што с времена на време натерају људе да прихвате неко добро решење. Док се није појавио тај АСП.НЕТ, човек је могао да се поломи да би објаснио предности раздвајања презентације и садржаја, иако су програми који се на томе заснивају постојали практично одвајкада. Па опет, поломиш се од објашњавања, али сви остану тврди на ушима. Сад када постоји АСП.НЕТ, сви прихватају решење, само зато што иза стоји Микрософт.

Слично, у време ДОСа нико (прецизније: велика већина редовних корисника) није могао да схвати зашто је потребно да се рачунар (под јуниксом [Unix] наравно) програмски гаси. Кад је дошао Њиндоњс 3.11 онда су сви то некако прећутно прихватили. После тога нико није могао да схвати зашто има смисла постојање више корисничких налога на једном рачунару. Онда је икс-пе (XP) донео то на десктоп (иако су икси имали исто практично одувек) па су људи опет, прећутно, прихватили.

autor филмил | 10.05.07.

Hahaha, tekst je odličan, sa sve obrtom na kraju :)

Motika se odlično uklopila u priču o alatima :) To je taj spoj mladosti (nove tehnologije) i iskustva motike. Dva standardna načina rešavanja problema elegantno ili metodom grube sile (pomenuta motika je l'). :))

autor Miodrag Ranisavljevic | 10.05.07.

Koliko kontam, motika u ovom slučaju nije brute force alat već fallback opcija. Kada sve drugo padne u vodu na nju možemo da se oslonimo :)

autor Ilija Studen | 10.05.07.

Dodajte svoj komentar:

Ime


E-mail


Lokacija


Homepage


Komentar


 
 
 
Sigurnosni kood Sigurnosni kood:



O sajtu
Autori
FAQ
Linkovi

Kategorije

Lično
Opšte
Pretraživači
Razvoj
Softver
Veb

Pretraga sajta

Arhiva

po datumu
po kategoriji

RSS 0.91

Powered by
pMachine