Goran Paulin 02.02.10

Često me pitaju "Kako naučiti programirati?". Ne sjećam se da me itko ikada pitao "Zašto naučiti programirati?" iako bi to, po zdravoj logici, trebalo biti polazno pitanje. Jesu li svi koji odmah skoče na "Kako?" već objasnili sebi "Zašto?" pa požuruju prijeći na stvar? Ako ćemo suditi prema praksi - nisu. Valjda je u evolucijskom ciklusu pojedinaca genetski predisponirano "programiranje" koje čuči u njima dok ne osjete "poziv". I onda, bez filozofskog "Zašto?", jednog dana samo zapitaju - "Kako?". I nastane tišina.

Zašto?

No, zahvaljujući školskom sustavu, tišina ne potraje dugo. Već u osnovnoj školi može vam se ukazati odgovor na pitanje "Kako?". Zanimljivo je da ni njih ne zanima "Zašto?". Kad vas sustav uzme u "obradu", očekivat će se od vas da krajem osmogodišnjeg školovanja upravljate kornjačom crtajući linije na papiru. Došli ste do puberteta, "naučili" ste LOGO, a nemate pojma zašto.

Logo
Iako su mi kornjače simpatične, LOGO i ja nismo nikada bili prijatelji.
Oduvijek sam se pitao da li bi se Wolfram snašao u njemu...

I sad vas je već sram pitati. Imate druge probleme u životu, pubertet je prava ratna zona. Ali sustav počinje galamiti! Vrijeme je da se u vaš mozak preslika logika koju je osmislio Niklaus Emil Wirth, osobno. Negdje između materinjeg jezika, matematike i vjeronauka svladali ste i Pascal. Čestitke! Ne samo da znate razliku između "ije" i "je", izračunati napamet drugi korijen i nabrojiti sve goste posljednje večere - znate i razliku između Integera i Reala! Možda ste danas, puno godina kasnije, uvjereni da je potonji isključivo madridski nogometni klub, a integer je definitivno pao u zaborav... kao i Šimun Kananaj.

Turbo Pascal
Turbo Pascal: ovoga, srećom, nema na Macu. :)

Naravoučenje: uvijek pitajte "Zašto?"! Dakle - zašto? Zašto naučiti programirati?

I perilice programiramo, zar ne?

Wikipedia kaže da je programiranje "vještina pomoću koje korisnik stvara i izvršava algoritme koristeći određene programske jezike da bi napravio računalni program". OK. To JE programiranje, ali krajnji cilj koji se u definiciji spominje ("da bi napravio računalni program") daje do znanja da se u definiciji misli na računalno programiranje. O tome i govorimo, naravno. Ali! Što je s perilicom za rublje? Video-recorderom? Mikrovalnom?

I njih "programiramo", zar ne? I to, pogotovo perilicu i mikrovalnu, na ništa sofisticiraniji način od preklapanja sklopki u pionirsko doba računala. Nekako nam se proces uvukao pod kožu: vjerojatno jer je komotniji od odlaska do obližnjeg potoka da bi oprali robu ili paljenja vatre kremenom da bi pripremili jelo. Ukratko, programiramo ih iz potrebe. A i, budimo realni, nisu neka mudrost za "programirati". Okrenemo sklopku na željeno mjesto, pokrenemo "program" i stroj će učiniti sve ostalo. Dovoljno je znati koju opciju odabrati za konkretan slučaj. AKO je konkretan slučaj svila, ONDA je konkretna opcija ona za pranje svilene odjeće. Primijetite uvjetovanje.

iPerilice
iPerilice! Samo za hard-core programere. :)

Video-recorder, odnosno njegovi hi-tech nasljednici, znaju biti bitno složeniji. U praksi, mame su najčešće briljantni programeri perilica i mikrovalnih, ali kad uhvate daljinski u ruke, s namjerom da isprogramiraju snimanje omiljene im sapunice, Murphy se pobrine da nešto krene po zlu i situaciju obično spase potomci (a ne tata, kako bi se ishitreno moglo zaključiti). "Problem" spomenutih uređaja je u tome što kompliciraju postupak. Na raspolaganju su memorije (zahvaljujući kojima uređaj može sapunicu snimati sve dane dok smo na godišnjem odmoru, daleko od civilizacije), uvjeti (početak snimanja nije zadan vremenski nego se oslanja na signal za početak snimanja koji se, u naprednijim zemljama, emitira unutar TV signala - dakle AKO primiš signal, ONDA počni snimati) i još štošta. Ali i to se nekako svlada. Najčešće glasovnom naredbom: "Dragi, snimi mi sapunicu!".

Osamdesete

Nekoć, ne tako davno, računala su bila jednostavnija. I zvali smo ih "kompjuteri". Nisu prikazivala Flash, nisu multitaskala, nisu imala USB ni ugrađenu kameru... zlobnici bi mogli reći "Bili su poput iPada!". ;) Ali nisu. Bila su prozor u neistraženi svijet njih samih. I nisu nam davala puno izbora: nakon paljenja dočekao bi nas ekran na kojem bi obično pisala verzija BASIC-a i trepčući kursor. Mogli smo satima gledati u njega i čekati da se nešto počne događati. Ali ne bi se počelo događati baš ništa. Ovisila su o nama. Morali smo započeti komunikaciju. Diranje crno-bijelog televizijskog ekrana nije urodilo nikakvim znakovima inteligencije našeg sugovornika pa je sljedeći logičan korak bilo prebiranje po tipkama. Mogli smo natipkati bilo što. Recimo: "ZDRAVO!". I opet se ne bi događalo ništa. Ali prije ili kasnije, pritisnuli bi tipku RETURN/ENTER i tako, ni ne sluteći, započeli protokol Prvog kontakta! Naravno, na naše "ZDRAVO!" računalo bi odgovaralo porukom o grešci, obično nekakvim "syntax errorom". I što god mu kažemo, uzvratio bi istim: "Syntax error". Ideja o inteligenciji našeg sugovornika počela je hlapjeti.

C64
Ja gledam njega. On gleda mene. Valjda me gleda. Gleda li me?

Kažu: upornost se isplati. Uporno upisivanje "ZDRAVO!" i čitanje uvijek iznova iste "Syntax error" poruke i nije neki znak inteligencije. Ovoga puta naše. Sad kad znamo da računalo reagira na podražaje, moguće da postoji "nešto" na što nam neće uzvratiti iritantnim syntax errorom. Vjerojatnoća je bila na strani korisnika s engleskog govornog područja jer bi nerijetko i "HELP" (ali bez uskličnika) rezultirao porukom različitom od "Syntax error". Isto to, ali s uskličnikom, rezultiralo bi još jednim u nizu syntax errora. Već poluishlapljela ideja o inteligenciji sugovornika ponovo je poprimila čvrst oblik! Ono govori!

Rezultat vikanja "upomoć" na starom dobrom engleskom, bio bi popis nekakvih riječi: INPUT, PRINT, PEEK, POKE... i bilo je beskonačno zagonetno dokučiti što zapravo taj popis predstavlja. Nije imao nikakvog smisla!

A kad ljudima nešto nema smisla, što čine? Ponavljaju. I to obično podignutih obrva i širom otvorenih očiju. Već smo jednom prošli fazu u kojoj bi, nakon što čujemo "ma-ma" i "ta-ta" ponavljali upravo te slogove. Tako smo, malo po malo, spajajući akciju (AKO "ma-ma") i reakciju (ONDA dođe mama) učili jezik. Naoružani tim isksutvom, imamo samo jednu opciju: upisati neku od riječi koje vidimo na ekranu. I pritisnuti RETURN, naravno.

"PRINT" zvuči nekako poznato (valjda zato jer smo čuli i za "printer"). Pokušajmo s tim. PRINT. RETURN. Ništa. Baš ništa? OK, kursor se premjestio u novi red, nije se ispisalo "Syntax error"... ali nemamo baš osjećaj da se nešto dogodilo. Ponovimo, za svaki slučaj. PRINT. RETURN. Opet isto. OK. Možemo zaključiti da SVAKI PUT kad upišemo PRINT i pritisnemo RETURN dolazimo u novi red. Nemam pojma što ćemo s tim zaključkom, ali barem možemo reći da smo dokučili obrazac ponašanja. I to je nešto.

Ali taj "PRINT" ipak zvuči poznato. Zvuči kao... "piši". Piši što? Hmm... Probajmo ovo: PRINT TEST. RETURN. Opet isto - kursor u novom redu. U trenutku inspiracije poželjeli smo riječ nakon PRINT staviti u navodnike. PRINT "TEST". RETURN. Šok! Nevjerica! Kursor trepće dva reda niže, a povrh njega piše TEST. Ili smo pogodili što moramo napisati ili... što bi bilo da napišemo PRINT "ZDRAVO"? PRINT "ZDRAVO". RETURN. ZDRAVO. Wow! Radi! Kužim! Štogod piše nakon PRINT, u navodnicima, ispisat će se na ekranu! Genijalno! Mama, tata! Programiram!

I tako krene.

Ljetni praznici

PRINT oduševljenje splasne za nekoliko dana jer, ako malo bolje razmislimo, doista ne služi ničemu. Zašto reći računalu PRINT ZDRAVO, ako možemo napisati samo ZDRAVO, ne pritisnuti RETURN i gledati u to cijeli dan. Efekt je isti. Mda.

OK, OK, možemo mi to. Na onom popisu bile su još neke riječi. HELP. ENTER. Pokušajmo... INPUT. RETURN. "Syntax error". OK, navikli smo. Slijedeći logiku PRINT-a, pokušavamo s INPUT "ZDRAVO". RETURN. "Syntax error". Možda bez navodnika? INPUT ZDRAVO. RETURN. Pojavljuje se upitnik! Ali štogod upišemo ponovo rezultira greškom. Veselimo se: nije "Syntax error"! Ovoga puta je "Type mismatch". Koji sad tip i s čim se ne podudara? Nedokučivo. Pokušat ćemo težim putem: nakon INPUT ZDRAVO unosimo sve što nam padne napamet. Izmoreni unošenjem riječi kojima smo iscrpili vlastiti vokabular, prisjetimo se što bi mogao biti smisao svemira i utipkamo: 42. Ha! Nema poruke o grešci. Nema ni povratne informacije, ali barem nije krivo. Što li je onda? Za sad znamo da radi s 42. Radi li s 41? Očekujemo da ne radi, ali... radi! I sa 100? Aha. I sa 1000? Yup. A radi li s milijun? 1000000. RETURN. "Overflow". OK, idemo nekud. Skupljamo različite poruke o greškama i ovo nam je već treća! Tko zna koliko ih ima...

Sljedeće dane provodimo pogađajući zašto radi s 1000, ali ne i s milijun. Ima li praktičnijeg načina za to provjeriti nego upisati sve brojeve između 1000 i milijun? Čini nam se da nema pa krećemo od 1000 i hipnotiziramo sami sebe. INPUT TEST. 1001. RETURN. Radi. INPUT TEST. 1002. RETURN. Radi. I tako se smjenjuju godišnja doba. Onda se nađe netko pametan i taman kad smo stigli negdje do 65530 predloži: "Zašto ne promjeniš način traženja? Probaj s pola milijuna pa ako ne radi ni tada, probaj s 250 tisuća pa sa 125 tisuća... i tako prepolovljuj - ako postoji fiksna granica, na ovaj način ćeš najbrže dokučiti gdje je - sjećaš se da smo tako igrali pogađanje brojeva?". K vragu. SAD mi to kaže. Pola sata kasnije uslijedila je spoznaja o granici na 65535. Kud baš 65535? Možemo samo pretpostaviti da taj broj ima neko važno značenje u Kabali.

BASIC
Mac je bio uskraćen za BASIC. Šteta.

PRINT i INPUT mogli su biti zabavni cijele jedne ljetne školske praznike, ali većinu nas čekala je ipak nogometna karijera, a ne odgonetavanje ekranskih hijeroglifa.

I tako stane.

RTFM

Što smo isprogramirali, isprogramirali smo. A nismo isprogramirali ništa.

Sve bi bilo puno jednostavnije da nam se dalo prolistati neku od knjižica koja je stigla s kompjuterom. Ako ne njih, onda barem neku od onih koja nam je na materinjem jeziku objašnjavala što nam je činiti - i to još s kvalitetnim primjerima! Meni je bila posebno draga ona s kolegom Pasarićem u mladim danima na naslovnoj stranici. :)

U tim knjižicama sve je bilo lijepo objašnjeno. Pisalo je da je računalo u modu za programiranje i da će tamo ostati dok god ne utipkamo RUN i pritisnemo RETURN, nakon čega će se unešeni program pokrenuti i izvršiti. Tamo su napisane i sve NAREDBE koje računalo poznaje te njihova SINTAKSA: način na koji ih moramo pisati da bi ih računalo moglo razumjeti. Tamo je pisalo i sve o VARIJABLAMA u koje možemo privremeno pohraniti svoje podatke. Da smo pročitali samo to poglavlje, znali bi da nakon INPUT možemo, odvojeno razmakom, dopisati naziv varijable te da INPUT ZDRAVO računalo shvaća kao "Pitaj korisnika da unese broj i spremi ga u varijablu ZDRAVO". Pisalo je i da ako dodamo "$" govorimo računalu da varijabla nije numerička nego tekstualnu pa bi tako na INPUT ZDRAVO$ mogli odgovoriti i s "BOK!", a da pritom ne dobijemo poruku o grešci "krivog tipa" (jer kad računalo očekuje broj, ne želi prihvatiti ne-broj). Svašta je tamo pisalo i zato: RTFM!

Lakoća odustajanja

Kompjuter iz gornjeg primjera vjerojatno je odavno umirovljen na informatičkoj Floridi, u PEEK&POKE-u, a i njegov bivši vlasnik je u međuvremenu vjerojatno okačio kopačke o klin i otvorio kafić. Perilicu i mikrovalnu programira žena, video snimaju djeca i život je ponovo lijep.

Ali kakve sve to ima veze s tipičnim Jabučarom?

Ima veze utoliko što njemu nije ni na kraj pameti programirati. Sama ideja programiranja Maca graniči s herezom!

Maca kupimo, raspakiramo (i pritom doooobro omirišemo!), spojimo na Internet i to je to. Pardon, nije. Moramo izvaditi i malu bijelu naljepnicu iz kutije i zalijepiti je na auto da user experience bude potpun. ;)

Slijede godine uživanja u bezbrojnim aplikacijama koje se nude za Maca. Ako, nekim čudom, takva aplikacija ne postoji, nije nam strano prilagoditi se. Diplomirao sam strojarstvo, ali ne mogu koristiti AutoCAD na Macu? Pih. Diplomirat ću i arhitekturu pa ću koristiti ArchiCAD. Zapravo nisam nikad ni želio biti strojar. ;)

Pravi Think Different bio bi u skladu s razmišljanjima kućnih programera u osamdesetima: ako ne postoji, napravit ćemo! No, budimo realni, u slučaju jednog AutoCAD-a danas je definitivno jednostavnije završiti i arhitekturu nego u one-man-band modu pokušati napisati AutoCAD za isto to vrijeme. Opciju korištenja AutoCAD-a na Mračnoj strani nećemo ni razmatrati koliko god bila praktična. :)

Dakle, ljudi smo, nismo programeri?

Zato

Zar je moguće da ste baš vi (da, vi!) onaj sretnik ili sretnica čije su softverske potrebe apsolutno zadovoljene? Svi programi koje koristite rade baš onako kako bi radili da ste ih osobno dizajnirali? Ne prilagođavate se softveru, on se prilagođava vama. Proizvođači softvera koji opslužuju milijune korisnika čitaju baš vaše misli i u skladu s njima planiraju roadmap pojedine aplikacije. Binarna idila!

Ili nije baš tako? :)

Bez obzira za što koristite računalo, vrlo je vjerojatno da povremeno (često?) nailazite na situacije u kojima vam se čini da neki postupak obavljate suboptimalno. Ili, još gore, radite nešto što uopće ne bi trebali raditi - nešto što bi računalo trebalo napraviti UMJESTO vas.

Možda se samo igrate. U tom slučaju, vjerojatno ste u pravu - niste i ne morate biti programer. Čak ni u onim rijetkim trenucima kreativne inspiracije kada pomislite da bi mogli osmiliti (ne nužno i napraviti) bolju igru, odoljevate porivu okušati se u tome. "Jer je komplicirano". A kad u World of Warcraft programirate macroe? To vam nije komplicirano? Nije bilo problem naučiti nekoliko naredbi i logiku kojom se koriste? "To je drugo". OK, drugo je, niste programer.

WOW
Warrior-programer! Što je sljedeće: Druid-administrator? :)

Možda samo radite u Photoshopu. Tamo se i tako većinu toga radi "rukama". Miš, tablet... oko, ruka. Ponekad se neke situacije počnu ponavljati pa si odlučite olakšati posao a actionima. Snimite action, playate action. Ne programirate? OK. Actioni su sjajni, imaju samo jedan bitan nedostatak: linearni su. Nije ih moguće kondicionirati pa tako banalne situacije tipa "ako je slika u landscape modu, odreži je ovako, a ako je u portrait modu, odreži je onako" dovode do toga da ćete morati potražiti neki programčić koji radi baš to. A ako vam treba to u kombinaciji s nekim od actiona? Nema veze, potrpit ćete. Prvo ćete obaviti jedno pa onda drugo. I uopće vas ne zanima da svoj dragi Photoshop možete programirati koristeći AppleScript ili JavaScript, iskoristiti blagodati automatiziranog odlučivanja i prilagoditi workflow svojim potrebama. Ne zanima vas čak ni kad je primjer ilustriran uvijek rado prepričavanom crticom iz života u kojoj se 4 sata "ljudskog" posla zamijenilo s 31 sekundom izvršavanja skripte? OK. Imate višak vremena u životu i iskreno vam zavidim na tome.

Photoshop
Photoshop actioni: tako blizu upotrebljivosti...

Možda ste Office-tip. Excel je vaš glavni alat i veseli vas biti kreativno ograničen kombiniranjem postojećih formula unutar cellova, pišući takve kobasice da pet dana kasnije ni uz najbolju volju ne možete shvatiti kako vaša tablica radi. Ali radi pa je ne dirate. I ne smeta vam što dio posla radite pješke? Iste podatke kopirate s Interneta svaki dan, koristeći kopipejst. Opušta vas? U redu. Ommmmmm.

Excel
Formule u Excelu - tko ih ne bi volio!

Možda masterizirate DVD-ove? Svidio vam se DVD Studio Pro, rodila se ljubav na prvi pogled i nikad u životu vam nije zatrebalo skriptanje DVD izbornika jer vaši klijenti su jednostavni ljudi. Ne kompliciraju, ne traže puno, daju vam dovoljno vremena da odradite posao i plaćaju na vrijeme. Zašto onda uopće razmišljati o nečem tako prljavom kao što je programiranje izbornika i to još u programskom jeziku koji je na nivou assemblera! Potpuno ste u pravu. Klijenti vole uniformnost, znati će cijeniti to što svaki sljedeći DVD nalikuje prethodnom. Osim toga, lakše će zapamtiti kako navigirati po izbornicima, a to je važno. Važno je, zar ne?

DVD Studio Pro
mov, and... Jump... uh?

Možda često browsate kroz AppStore i primjetili ste da je programiranje iPhone aplikacija unosan biznis? Pali vam se lampica da bi mooooožda i vi mogli nešto, ovo, ono...? Vas ćemo preventivno na lomaču, naginjete herezi!

A možda na svom Macu zapravo ne radite ništa. Imate ga samo zato jer lijepo izgleda. Respect! :)

Sitnim koracima

Pretpostavit ću (iako mi je svojevremeno eksplicitno rečeno da ništa ne pretpostavljam) da ste shvatili poantu. Čime god se bavili, dok god to radite s računalom, programiranje vam može samo pomoći.

Pritom ne mislim na programiranje tijekom kojeg će (konačno!) nastati AutoCAD za Mac već na programiranje u svrhu rješavanja svakodnevnih problema. Ispravniji (i manje "strašan") termin bila bi "automatizacija". Korištenje Automatora je prvi korak u tom smjeru. Automator je, u teoriji, sjajan alat koji može, u skladu s nazivom, automatizirati puno toga. Ali kad se ALGORITAM "iskomplicira" postaje beskoristan i potrebno je koristiti "nešto" što se može uspješno izboriti s algoritmom na način da računalu objasni što zapravo od njega želite.

Automator
Automator: bezbolan ulazak u svijet programiranja.

I tu počinje programiranje.

Algoritam ne mora imati nikakve veze s računalima. I svi se njima bavimo. Svaki dan.

Wikipedia za algoritam kaže da je to "konačan slijed dobro definiranih naredbi za ostvarenje zadatka". U vicu u kojem žena pošalje muža programera po maslac i na odlasku doda "ako ima jaja, kupi 10", muž se vratio s 10 maslaca. I nije pogriješio, držao se zadanog algoritma. :)

Naš dnevni algoritam, krajnje pojednostavljeno, izgleda ovako nekako:

  1. ustani iz kreveta
  2. odi na posao
  3. radi
  4. skuhaj ručak
  5. jedi
  6. zabavi se
  7. spavaj

I funkcionira savršeno do vikenda. Ponekad smetnemo s uma da je neradni dan pa se, na auto-pilotu, nakon ustajanja počnemo baviti radnjama nakon kojih bi uslijedio odlazak na posao. Onda nam se upali lampica da je subota i vratimo se u krevet. Unaprijeđeni algoritam, koji uzima i vikend u obzir mogao bi glasiti:

  1. ako je vikend skoči na 5
  2. ustani iz kreveta
  3. odi na posao
  4. radi
  5. skuhaj ručak
  6. jedi
  7. zabavi se
  8. spavaj

Razlika je samo u početnom uvjetu kojim provjeravamo da li je vikend. Ako NIJE nastavljamo u sljedećem koraku, a ako JE, preskačemo nekoliko koraka i nastavljamo od kuhanja ručka. Kada ne bismo mogli "preskakati" korake, svaki algoritam bi se ponašao kao actioni u Photoshopu - bio bi linearan, uvijek bi se izvršavao istim slijedom. Zahvaljujući mogućnosti "skakanja", koja sadrži testiranje uvjeta (AKO) i potom definiciju što nam je činiti ako je uvjet zadovoljen (ONDA), možemo svakom algoritmu dati "inteligenciju" - kroz mogućnost odlučivanja.

Htjeli ili ne htjeli, u stanju ste algoritmirati (pa čak i AutoCAD, ako se malo potrudite) bez ikakve dodatne obuke. Čini li vas to programerima? Ne čini - ali ste na dobrom putu. :)

Kodiranje... ključeva?

Svaki računalni program začinje se algoritmom. Bez obzira na kompleksnost budućeg programa algoritam u početku može biti krajnje jednostavan. Potom ga se "usitnjava" dok god se ne iscrpi svaka mogućnost na koju program putem može naići. Nakon što je algoritam gotov i provjereno dovodi do ostvarenja zadatka, moramo ga nekako "ubaciti" u računalo. Mnogi misle da tek tada počinje "programiranje", ali varaju se - "program" je zapravo sadržan u algoritmu, ono što slijedi je pisanje koda - kodiranje. Dovoljno dobar razlog da Apple svoju razvojnu okolinu (za programiranje) nazove Xcode, a ne Xprog. ;)

Xcode
Xcode: uspjeli križanac file browsera i text editora. Ali svejedno u njemu nećete moći programirati u BASIC-u.

Kodiranje je zanatski posao. Njime se program (algoritam) prevodi u računalu razumljiv oblik. Kodiranje prestaje biti zanatski posao kada osoba koja kodira zapravo nema razrađen algoritam nego ga namjerava dokučiti "dok tipka". Tada kodiranje postaje izazov. :) Istina, postoje ljudi koji to mogu (John Carmack mi prvi pada na pamet), ali većina programirajući na takav način zapravo "programira" bugove. :)

Dok algoritmiranje počiva na (zdravoj) logici, kodiranje počiva na sintaksi i semantici. U prijevodu: ono što napišemo mora biti napisano "gramatički" ispravno (sintaksa) i mora imati smisla (semantika). Primjerice:

IN-PUT A

...nije "gramatički" ispravno jer računalo ne poznaje naredbu IN-PUT, već INPUT (bez crtice). I zato nam kaže "Syntax error". Dok je:

INPUT A
PRINT B

..."gramatički" savršeno ispravno, ali semantički pogrešno ako nam je namjera bila pitati korisnika da unese broj i potom ISTI taj broj ispisati - u gornjem primjeru korisnik unosi broj u varijablu A, a program ispisuje sadržaj varijable B (a trebao bi ispisati sadržaj varijable A). Računalo se ne buni jer je iz njegove perspektive sve u redu - ne tiče ga se semantika.

Uredna sintaksa i semantika doveli bi nas do ovoga:

INPUT A
PRINT A

Što i nije neka mudrost. :) Ali vrlo brzo se pretvori u mudrost jer različita sintaksa zapravo znači različite programske jezike, a različiti programski jezici svojom internom logikom diktiraju način implementacije našeg algoritma, odnosno semantiku. I tu ponovo osjetimo poriv baviti se nogometom, a ne programiranjem.

Neki počeci su teži od drugih

Nekad nismo imali puno izbora. Postojala je samo miješana pizza, a sokove smo dijelili na crvene i žute. Računala su imala BASIC i BASIC je bio ono što se učilo i u čemu se programiralo. Danas imamo izbora, ali izabrati nije nimalo jednostavno. Nije jednostavno zato što od trenutka izbora do trenutka spoznaje da suvereno baratate odabranim područjem može proći dosta vremena - vremena provedenog u učenju. A nakon što sve lijepo naučite, može se dogoditi da je to što ste s mukom svladali - upravo izašlo iz upotrebe. :)

Učenje programiranja pretpostavlja dvije kompomenente: učenje jezika u kojem ćete programirati i učenje APIja koje ćete prilikom programiranja koristiti. Učenje jezika podrazumijeva i učenje okoline (IDE - Integrated Development Environment) u kojoj ćete programirati.

Tek ako imate odgovor na pitanje ZAŠTO bi uopće programirali, moći ćete pristupiti smislenom izboru svega toga.

Generalno, 3 su razloga zašto programirati:

  1. da bi sebi olakšali posao (pisanje skripte/aplikacije za vlastite potrebe)
  2. da bi drugima olakšali posao (i, po mogućnosti, pritom zaradili)
  3. jer vas zabavlja :)

Ovo pod (3) odavno izumire (ako već nije izumrlo), a ovo pod (1) i pod (2) je u praksi postalo isključivo: oni koji programiraju za druge i od toga žive, nerijetko ne koriste to što su isprogramirali, a oni koji pišu skripte/aplikacije za vlastite potrebe ne olakšavaju drugima posao (jer su problemi koje rješavaju vrlo specifični) niti na tome zarađuju (poklanjajući skripte, ako su primjenjive širem krugu korisnika). Naravno, uvijek postoje izuzeci.

Heretik

Unatoč prethodnom zaključku da je spominjanje programiranja na Macu hereza, ta tvrdnja ne može biti dalje od istine. :)

Kako drugačije shvatiti činjenicu da nakon što izvadite svoj novi Mac iz kutije i uljučite ga - možete početi programirati? OK, možda ne možete jer ne znate odakle bi krenuli, ali sastavni dijelovi vašeg OS-a su AppleScript i PHP - da spomenemo samo neke. Ako vam ni to nije dovoljno, skinut ćete s Appleovog weba potpuno besplatne Developer Tools i tako instalirati Xcode i sve prateće alate, uključujući Dashcode i Quartz Composer. Xcode će vam omogućiti programiranje u Javi ili u nekom od C jezika i staviti na raspolaganje vrhunske alate za debugging.

No, prije nego nakrcate disk s gomilom radnih okolina koje ne bi stigli proučiti (a kamo li koristiti) ni za dva života, dogovorite se sami sa sobom što zapravo želite napraviti.

Ako ste se odlučili za programiranje da biste sebi olakšali posao (1), vjerojatno imate na umu skriptanje neke postojeće aplikacije. U tom slučaju postojeća aplikacija diktira dvije stvari: jezik kojim je možete programirati i raspoložive APIje (Application Programming Interface - skup "protokola" koje koristite u programiranju kako bi upravljali s aplikacijom koju programirate). Primjerice, većina Adobeovih aplikacija je programabilna i to koristeći AppleScript, JavaScript i VisualBASIC. Pritom AppleScript radi samo na Macu, VisualBASIC samo na Windowsima, a JavaScript se identično ponaša na obje platforme te je, u ovom slučaju, optimalan izbor - pod uvjetom da vam JavaScript nije stran. Naravno, ako vam je JavaScript nepoznanica, a briljirate u AppleScriptu i ne namjeravate skripte koristiti pod Windowsima - nema razloga da ne koristite AppleScript. Dapače! AppleScript ima jednu veeeeeeliku prednost: njime možete upravljati s većinom aplikacija u vašem Applications folderu te ih povezivati - nakon što riješite banalan zadatak cropanja slike ovisan o njenoj orijentaciji u Photoshopu, vaša skripta može tako obrađenu sliku proslijediti Mailu i poslati na odabrane adrese iz Address Booka, a adrese odabrati pretražujući kriterije unutar jedne od vaših Bento baza.

Script Editor
/Applications/AppleScript/Script Editor - da ga ne promašite.

I za AppleScript i za JavaScript (a i za VisualBASIC) ste vjerojatno već čuli, ali neke egzotičnije aplikacije imaju vlastite skriptualne jezike pa tako, primjerice, Maya ima MEL (Maya Embedded Language), a u novije vrijeme podržava i Python (koji spada među one jezike koji dolaze preinstalirani s Mac OSom). To u teoriji znači da Mayu ne možete uključiti u "globalnu automatizaciju" putem AppleScripta, ali, srećom, praksa je drugačija pa je moguće uspostaviti i komunikaciju između njih uz malo trikova i crne magije. I MEL i Python nisu vezani za Mac platformu pa će skripte pisane u njima raditi i na drugim OS-ovima. Zgodno!

Blagodati programiranja za pojedinu aplikaciju (gornji primjeri) su u tome što morate svladati samo jedan jezik i, u većini slučajeva, samo jedan API (te konkretne aplikacije).

Ako se pak odlučite programirati tako da svoju aplikaciju krojite od nule, ne koristeći postojeće aplikacije i njihove mogućnosti, slijedi najteži dio: junačka borba s APIjima.

Učiti, učiti i samo učiti

Borbu s APIjima odlično ilustrira algoritam programiranja za iPhone. :)

Zanemarimo li administrativne zavrzlame koje Apple postavlja pred svakog iPhone programera (registracija, plaćanje godišnje licence...), možemo krenuti tako što instaliramo Developer Tools. Developer Tools instalira gomilu svega i svačega pa pomaže kad netko sa strane šapne: "Pssst! Xcode!" da bi znali odakle krenuti. Xcode je Appleov IDE koji se oslanja na brojne alate instalirane u sklopu Developer Toolsa (jedan od vidljivijih je Interface Builder - alat za dizajniranje korisničkog sučelja). Pomaže pročitati (i to barem dvaput!) neko štivo tipa "Xcode Unleashed" (Fritz Anderson) kako bi se upoznali s logikom rada u samom IDE-u. Nakon što se upoznamo s logikom IDE-a, od nas se očekuje da znamo programirati i to koristeći konkretan jezik, odnosno jezike. U slučaju iPhonea to bi bio Objective-C, uz malo "običnog" C-a. Ako se smatramo naprednima i volimo pedantno optimizirati vlastite aplikacije, svakako će nam pomoći i znanje assemblera. :) Ali zadržimo se ipak samo na C-ovima. Objective-C je "superset" (nadogradnja) običnog C-a. Drugim riječima, njega se obično ne uči od nule nego ga se uči tako da se svladaju samo razlike koje donosi u odnosu na C. A C znamo "od ranije". :) Ako ne znamo C, onda programiranje za iPhone nije najpametnija ideja - dok ne svladamo C. Sve opisano samo po sebi zvuči kao gomila posla, truda i utrošenog vremena, ali! Sve je to zapravo lakši dio. I sve navedeno je "reciklabilno" - Xcode, jednom naučen, možemo koristiti i za AppleScript programiranje (daje nam mogućnost izrade korisničkog sučelja, što koristeći ScriptEditor - osnovni alat za AppleScript programiranje - nemamo), a C (odnosno njegov "stil") je osnova mnogih jezika (pa tako i JavaScripta). Ono što nije reciklabilno su APIji.

Jedna jednostavna iPhone aplikcija koja nekakve podatke prikazuje tablično može sadržavati bazu podataka, animirane izbornike i poneki zvuk koji pritom čujemo. Svaka od navedene 3 komponente zahtijeva da se upoznamo sa određenim APIjem: za bazu podataka, za animaciju i za zvuk. To, u praksi, znači pročitati dokumentaciju za svakog od njih kako bi spoznali koje metode ti APIji sadrže i kako ih možemo koristiti.

APIja ima puno. Dokumentacije još više. I, najgore od svega - stalno se mijenja. :) Jedina dobra vijest je da nakon što shvatite čemu pojedini API služi, u budućnosti možete čitati samo "što je novo" i upute za konkretnu metodu koju planirate pozivati iz svog programa. Na žalost, ako, nakon što programirate animacije, to ne radite godinu dana i onda poželite nastaviti tamo gdje ste stali, shvatit ćete da vas je vrijeme pregazilo i da je pred vama ponovo gomila učenja jer su marljivi Appleovi inženjeri u međuvremenu sve izvrnuli. Ne zato jer nemaju pametnijeg posla već zato što je paleta proizvoda proširena s, recimo, iPadom pa je APIje trebalo prilagoditi tako da odgovaraju i njemu. TO je mučan dio. Jedini mučan dio, usudio bih se reći. :)

API
Deseci tisuća stranica teksta. Koje se svakodnevno mijenjaju. :/

S druge strane, nisu ni APIji toliko nereciklabilni koliko se čine na prvi pogled - sve što svladate za iPhone bit će izravno primjenjivo i za iPad, a većinu svladanog možete koristiti u programiranju desktop aplikacija.

No, što ako spadate među one programere koji programiraju NA Macu ali ne nužno isključivo ZA Mac? :) Takve možemo zvati Praktičnim programerima jer sama ideja programiranja JEDNE aplikacije koja radi na VIŠE platformi zvuči itekako praktično po pitanju umnožavanja potencijalnih prihoda od prodaje dotične aplikacije.

U tom slučaju Xcode vam neće puno pomoći - njegova namjera je "deployment" aplikacije primarno na Appleovim platformama (Mac i ostale iĐiđe).

Platformske igre

Možda ste sretnik koji ideju više platformi doživljava kroz web pa ciljate na PHP? U tom slučaju nećete imati problema. Ali vjerojatnije je da ste (ne)sretnik koji cilja Windowse ili Linux.

REALbasic
BASIColjupci, samo za vas!

Donedavno je taj problem rješavao samo jedan alat - REALbasic. Zapravo, REALbasic je rješavao još jedan problem - to je jedini (visual) BASIC za Mac. REALbasic je u mnogočemu sličan VisualBASICu (što će mnogi switcheri znati cijeniti), ali njegova ključna prednost je mogućnost deploymenta na Mac, Windows i Linux platformu. U praksi postoje problemi s optimizacijom GUI-a za pojedinu platformu, ali, uz malo više truda, i to je rješivo. Za razliku od svega prethodno nabrojenog: nije besplatan!

QtCreator
Qt Creator. Alternativa Xcode-u. Kjut. :)

A ako vam je GUI presudan (i pomirili ste se s idejom da za komercijalno korištenje razvojne okoline platite licencu)? Onda zapravo imate samo jedno rješenje: Qt. Nokijina akvizicija većinu svojih aduta stavlja na ideju dosljednosti GUI-a neovisno o platformi. I, moram priznati, u tome imaju uspjeha. Na žalost, ako ste prethodno utrošili beskonačno puno sati u svladavanje Objective-C-a, razočarat će vas činjenica da Qt od vas očekuje da programirate u C++. :)

O jeziku, rode

No, nije sve tako crno. Ako ste doista svladali C, a nije vam strana paradigma objektno orijentiranog programiranja (OOP), C++ i/ili Objective-C svladat ćete tako da za par dana pročitate njihove manuale, zasukate rukave i počnete kodirati. Kao i u većini situacija u životu, i ovdje su dobri temelji ključ uspjeha. Programski jezici umiru, rađaju se novi, neki opstaju duže, neki kraći - u idealnom slučaju svladat ćete one koji su očiti kandidati za preživljavanje, kako bi vam novostečeno znanje što duže trajalo. C je i danas, 38 godina nakon nastanka, odličan temelj za "pravo programiranje". Bez obzira što je proceduralan (nije objektan!) utjecao je na oblikovanje većine današnjih "mainstream" jezika (C++, C#, Java, JavaScript, Perl, PHP...) pa je njihovo svladavanje kao učenje španjolskog nakon što prethodno svladate talijanski. :)

AppleScript je pak svijet za sebe. Izrastao je iz još egzotičnijeg HyperTalka. Kad svladate AppleScript... svladali ste AppleScript. :) Niti će vam C pomoći u svladavanju AppleScripta niti ćete nakon što svladate AppleScript lakše svladati bilo što drugo. Ako želite u svojim skriptama žonglirati s postojećim aplikacijama na Macu i optimizirati workflow, AppleScript je itekako vrijedan truda, ali ako ciljate na programiranje aplikacije "od nule", definitivno nije sretan izbor. Naravno, najsretniji izbor je naučiti sve nabrojene jezike (i još pritom memorirati cijelu Encyclopediu Britannicu!), ali - život je kratak.

Svodi li se izbor na AppleScript ili C? Ne, naravno. Nemoguće je dati univerzalnu preporuku odakle početi jer je to pitanje slično onome "Kojeg Maca kupiti?", a odgovor prvenstveno ovisi o tome kako i za što će se koristiti. To vrijedi i ovdje.

Alternativna scena

Možda se niste prepoznali u ničemu od navedenog - vaš san je raditi igre. I to 3D igre. U tom slučaju mogao bih od srca preporučiti Unity (o kojem smo već pisali na Jabučnjaku), a vama da svladate JavaScript, C# ili Boo (da, i to je jezik iako se ne bih kladio da će preživjeti čitavo desetljeće) s kojima se u njemu programira. Osim što ćete moći na najelegantniji način ostvariti svoj san, dobit ćete i nevjerojatno široku paletu raspoloživog deploymenta: od Maca i Windowsa, preko iPhonea do Wiia i Xboxa (uz odgovarajuće licence!).

Unity
Unity: najbolje što se programiranju na Macu moglo dogoditi!

A ako se samo malo želite "poigrati"? Nemate namjeru učiti APIje, proučavati AppleScript... već ste naučili nešto malo JavaScripta za web i želite to nekako pametno iskoristiti? Probajte Dashcode - Appleov alat za razvoj Dashboard widgeta. Potrebno vam je malo znanja HTML-a, malo znanja JavaScripta i moći ćete zagušiti Dashboard widgetima vlastite proizvodnje! :)

Dashcode
Red HTML-a, red JavaScripta i... widget je spreman! Žličicu Vegete možete izostaviti.

I to vam je "preprljavo"? Vi bi nešto... vizualnije? Onda se probajte poigrati s Quartz Composerom. U njemu definitivno nećete "napisati" novu bazu podataka ili napraviti bilo što ne-vizualno (iako... možete). :) Ako vam se svidjelo Reasonovo "ubadanje kablova" u svrhu spajanja različitih zvučnih komponentni, Quartz Composer bi vas mogao zabaviti. U njemu, koristeći tzv. "patcheve" (komponente), možete spajati "izlaze" i "ulaze" koji zapravo predstavljaju tijek obrade podataka. Prvi patch vam može biti prihvaćanje ulaza s ugrađene kamere, drugi blur efekt, a treći prikaz svega toga na ekranu - rezultat je blurana slika s kamere, prikazana u realnom vremenu. Ljepota novonastalih Quartz "kompozicija" je u tome što ih možete spremiti i proslijediti kolegi programeru koji će ih "ubaciti" (doslovno, drag&drop) u aplikaciju koju izrađuje u Xcode-u i u prozoru će se odvijati ono što ste pripremili za njega. Da bude zabavnije, kolega programer se na vašu kompoziciju može "spojiti" iz aplikacije i kontrolirati pojedine parametre patcheva (ako ste mu to omogućili) - primjerice, količinu blura. Ako vam kolega programer nije pri ruci (a znamo da vlada deficit programera), zabavit će vas i korištenje vlastite kompozicije kao screen savera. A ako vam ni to nije dosta, možete kompoziciju proslijediti kolegi korisniku Final Cuta (tu, srećom, imamo suficit) da je iskoristi kao efekt za generiranje pozadine, tranziciju ili nešto deseto. :)

QuartzComposer
Samo spajam ove "kućice"? Mogu ja to!

Mašta je jedina granica. A AppStore je, pokazuje praksa, može obilato nagraditi.

Dilema

I, nakon svega, što želite biti: čovjek... ili programer? ;)

 

Komentari  

Defou
02-02-2010 | 20:27
Hoces reci da pocenmo raditi aplikacije za App Store :-)
Ja bi drage volje, samo moram nauciti programirati :D
mali od palube
02-02-2010 | 21:07
Sve pohvale savrsen clanak , uzivao sam u citanju svake rijeci. A sad ajmo na posao App Store ceka (a mozda i neka lovica) :-)
dpasaric
02-02-2010 | 21:24
:-) Ljudska rasa, barem u razvijenim dijelovima planeta, postala je vrlo razmažena. Sve dobivamo "na pladnju". Gotovo da je teško zamisliti bilo kakav korisni alat za ovu ili onu platformu koji još nije napisan - samo je pitanje postoji li više verzija i koja je bolja. Gomila toga raspoloživo je potpuno besplatno, mnogi su sate, dane, pa i godine rada na nekim aplikacijama dali u nasljedstvo i za dobrobit sviju nas. Drugi pak to rade krajnje profesionalno i od toga žive. Treći su čak postali prave programerske zvijezde i na svom znanju i radu izgradli su softverske kuće koje drmaju svijetom zabave i profesionalnih aplikacija.

Sve to do ekstrema dovodi iPhone i App Store koncept. Njihov slogan: "Need a XYZ? There is an App for that..." mnogo govori i nije uopće daleko od istine! Kako je mnogo ljudi inertno po prirodi, naravno da se neće truditi učiti i raditi nešto što je netko već napravio - mada možda postojeća solucija i nije baš jako pametna i elegantna, tj. vi znate bolje! No, znači li to da ljudi sve manje programiraju? Ne bih rekao...

Prošli su pionirski dani programiranja. Danas je drugo doba, druge su potrebe i tehnike programiranja. Upravo mislim da je iPhone/iPad sjajan generator interesa da se mnogi vrate - ili započnu programiranje. Platforma je zatvorena i jasnih pravila (ponekad ograničava, ali je lakše raditi softver za takve strojeve) i nagrada za ostvarenu zamisao je velika! Ne! Tu ne mislim na novac koji se može zaraditi prodajom aplikacija na App Storeu, već na onu najveću nagradu - osjećaj zadovoljstva i ponosa kada nešto uspješno isprogramirate, kada izvadite svoj iPhone iz džepa i pokažete prijatelju kako mu vaša aplikacija može olakšati život.

Znam koliko sam se veselio vlastitim umotvorinama još na ZX Spectrumu i Atariju ST, a tek osjećaj kada kao mulac pobjedite na kakvom natjecanju! Danas "mulci" razbijaju programerske barijere, svako toliko čitamo koliko godina ima "najmlađi programer", a programiranje više nije opskurni taboo zahvaljujući modernim alatima. Nekada se one-man-program iranje uglavnom svodilo na Basic i sado-mazo alate kao što su npr. bili DEVS i MONS - tko je imao petlje pisati u strojnom kodu. Mene je vrijeme pregazilo, zadnje što sam isprogramirao su bile neke komplicirane Starcraft mape, a Warcraft makroe neću računati kao išta vrijedno hvale. ;-)

No, i dan danas se naježim kada vidim nešto dobro isprogramirano! Tu ne mislim na Adobijeve mamutske alate, pa čak niti na OS X ili fantastične iPhone aplikacije - mislim prije svega na lude Ruse i Skandinavce koji kodiraju nevjerojatne demoe u 64KB (da, samo 64 kilobajta) i slične čarobnjake strojnog koda i optimizacija. Njima kapa dolje!

Jednog dana vjerojatno će računala i sama programirati druga računala, a mi moramo paziti da se ne ulijenimo - jer bi nam se moglo dogoditi da izgubimo kontrolu... :-)
MAK
02-02-2010 | 22:00
Zbog toga je potreban muzej računala. I da oni rade. Da se pokaže kako se s malo može mnogo.
ecvis17
02-02-2010 | 23:33
Super članak.
IgorD
03-02-2010 | 00:23
Are we humans or are we dance... programmers?!

Nadam se da će nekome ovaj grafikon biti zanimljiv - tek toliko da se vidi kakvu je pomutnju iPhone napravio u svijetu programiranja:

http://www.tiobe.com/index.php/paperinfo/tpci/Objective-C.html

Igor
smayoo
03-02-2010 | 00:50
Đipi, majstore! Pročitao sam ti članak kao najbolju beletristiku. Dozvoli mi dvije ispravke. Integer varijabla nije išla do 65535, nego do 32767 (jer je išla i do -32768 pa se jedan bit morao potrošiti na predznak). :-)

A AutoCAD je nekad postojao, za Mac OS 9. Ako se ne varam, bilo je to u vrijeme R12, ili R13 možda. Sjećam se toga pouzdano, jer mi je manual bio pun napomena tipa "korisnici AutoCAD-a za Mac ovu funkciju ne mogu koristiti / ne trebaju / ...".

Nažalost, odlučili su ne razvijati verziju za OS X. Ali predomišljaju se u zadnje vrijeme...

Inače, ja se mogu pohvaliti da još nisam skroz zahrđao. Osim Visual Basic for Applications (mahom za MS Access, nešto manje za MS Excel), radim i u nečem tako egzotičnom da ga se čak ni Đipi nije sjetio: AutoLISP! :-) Na Macu baš i nemam potrebe programirati, ali tko zna, možda se i to promijeni... :-)
john_st
03-02-2010 | 00:53
majko božja koliki članak!!!!

al je svejedno super!

osim onog dijela "vjerojatnoća" :sad: kosa mi se digla na glavi hahaha
Windows7
03-02-2010 | 01:33
Integer može biti Signed, pa ide od -32768 do + 32767, ali može biti i Unsigned, pa ide od 0 do 65535.
Povremeno odradim poslić u asembleru i C-u za mikrokontrolere .
Ne može se opisati gušt kad nešto napišeš od nule, bez pomoći OS-a, BIOS-a, raznih dll-ova, librarya i slično, nego i npr. najosnovniju obradu tipkovnice moraš sam napisati, detektirati što je pritisnuto, ispisati na display svojom rutinom, a ne nekim gotovim print, printf, writeln i slično...
Naravno, kad se projekti zaredaju i postanu složeniji, onda ti guštevi polako nestanu i sve počne biti rutina, pa se skoro sve rješava gotovim rutinama iz raznih librarya, inače ne bi bilo novaca od toga.

Uglavnom, s guštom sam pročitao članak :lol:
Breed
03-02-2010 | 06:34
Džipi Legendo :-)
dsakic
03-02-2010 | 09:04
Clanak je za svaku pohvalu.
I sam sam poceo programirati, samo da ubrzam dosadne stvari, ali automator brzo dosadi; applescript nisam ni takao. Knjigu iz C-a sam kupio ali trenutacno skuplja prasinu. Unix shell i Perl rulz!!!
Vanjuška
03-02-2010 | 09:20
Odličan članak, taman s tolikom dozom humora i ozbiljnosti da potakne neke nove klince...
Naklon!
smayoo
03-02-2010 | 12:15
Windows7, hvala na poduci. Ja sam konkretno mislio na integer u kontekstu članka, gdje je to Đipi napisao ispod slike Commodore 64 ekrana, tako da, siguran sam, nije mislio na type deklaraciju u nekom modernom C, Č ili Ć programskom jeziku. ;-)

Inače, i meni je ASM uvijek bio najdraži. Svoj sam diplomski rad (adaptivni fuzzy algoritam upravljanja elektromotorom) napisao u MC68030 asm-u, a par godina kasnije sam i neke puno krupnije stvari upravljao kontrolerima na istom procesoru. :-)

Nažalost, aplikacije za "normalna" računala odavno se više ne može (tj. ne isplati) pisati u asm-u...
Djuro genijalac
03-02-2010 | 12:48
Djipi, nakon do poda i onda još jedan. Sjajno napisano i složeno. Još ako znaš sve o čemu pišeš, onda moje divljenje nema granica. Svaka čast, u svakom slučaju :-)
edo2909
03-02-2010 | 13:31
Cisto radi egzoticnosti i pukog kurioziteta, za one koji su mozda koristili ili barem culi za OPL - na PSION masinama ili na Nokia Communicatoru (9300(i), 9500):

Moj "OPL Corner"
http://edo-vucurovic.blogspot.com/

EPOC32 OPL (Psion Revo, 5mx, netBook)
http://viewplus.myfreeforum.org/

S80 OPL (Nokia 9300,9500)
http://tech.groups.yahoo.com/group/FileNote/

Pozdrav iz Splita,
Edo
Djipi
03-02-2010 | 13:44
@Smayoo: "Integer varijabla nije išla do 65535, nego do 32767 (jer je išla i do -32768 pa se jedan bit morao potrošiti na predznak)." - bravo, primjetio si jedan od "easter eggova". Hint: ima ih još. ;-) Što se tiče Autodeskovih premišljanja vezanih uz Mac, šuška se da je uzrok upravo Qt - community stvara "pritisak" da se aplikacije portaju, putem njega, na sve bitne platforme, a neki od 3D igrača (NewTek, s LightWaveom) je već zasukao rukave u tom smjeru. I ne izgleda to uopće loše (portano kroz Qt), ali nekako je... kako jQTouch "aplikacija" u odnosu na nativni iPhone app. :-)

@Smayoo&Windows7: Potpisujem sklonost assembleru, i meni je bio favorit, pogotovo u vrijeme MC680x0.

@Djuro genijalac: "Još ako znaš sve o čemu pišeš" - a čuj, naletio sam na to na gugletu pa rekoh: da prepričam. ;-)
Windows7
03-02-2010 | 16:22
Vjerujem da je mnoge članak bar malo zainteresirao da pokušaju nešto isprogramirati.
Većina ljudi misli da se samo "standardna" računala programiraju, međutim vrlo složeni programi se mogu napraviti čak i za čip od 6 noži ca (ima seriju takvih PIC-eva).
Ovo je razvojni alat kakvog koristim u poslu:
http://www.mikroe.com/en/tools/easyavr5a/ ,
nadam se da će nekoga zainteresirati za programiranje "računala na čipu". Sam čip košta za jednostavne namjene 10-50 kn, a čuda se mogu napraviti.
Ja sam hardveraš u duši :-)
Djipi
03-02-2010 | 17:42
@Windows7: Ja osobno nisam veliki fan hardvera (doživljavam ga kao nužno zlo!), odnosno ne zabavlja me ni na koji način petljati po njemu (od zamjene hard diska do toga da sam nešto "sklepam" :->). Teško ćemo potaknuti ljude na takvo "hard core" programiranje (s lemilicom u drugoj ruci :->), ali činjenica da svatko sebi može olakšati "softverski" dio posla, a zahvaljujući *besplatnim* alatima poput Unitya "s par klikova" može napraviti i svoju prvu 3D igru, znači da su vrata za ući u svijet programiranja napokon širom otvorena na najmanje "geekovski" način (tu spada uglavnom programiranje zbog programiranja ili bjesomučno optimiziranje algoritama u kodu :->).

Osim toga, ne smatram najsretnijim pristupom ni učiti u školi (osnovna, srednja) teoriju programiranja na "apstraktnom" nivou. Mi smo u srednjoj "programirali" na papiru: profesorica bi zadavala zadatke, a rješenja (programe) smo pisali u bilježnici (interpreteri/k ompajleri su nam bili vlastiti mozgovi). :-) I nikad mi nije bilo jasno kakve koristi ima učenik koji tom metodom svlada... bubble sort. OK, svladao je jednu apstrakciju, može se posvetiti sljedećoj (dešifriranje hijeroglifa?), svakako će, na neki način, pomoći "razvoju mozga". Ali, pobogu... kome je to zabavno? Ne bi li bilo praktičnije već u školi, čak i kada se radi o programiranju (a ne "informatici", kao širem pojmu) podučavati "primjenjeno programiranje"? Pa onda svaki novi "apstraktni algoritam" (onaj za sortiranje, onaj za traženje najkraćeg puta...) bude zapravo vrlo konkretan odgovor na učenička pitanja kako riješiti pojedini problem koji vide i doživljavaju kao rješivi izazov.

Nema nam druge nego uvesti Unity u škole... na Macovima, naravno. :-) A lemilice i "računala na čipu" možemo pustiti za One Koji Žele Znati Više. Njih ćemo u startu naučiti assembler. :D
Windows7
03-02-2010 | 18:38
:-) Prije par godina sam se zatekao u sali hotela u Solarisu, kod Šibenika, seminar za profesore informatike, tamo su bile face iz ministarstva (MZOŠ), o nekima od njih sad čitam u novinama da su pod istragom.
Uglavnom, neko od profesora tamo je upitao face iz ministarstva kako će naučiti djecu nečemu kad nemaju ni računala u pojedinim školama.
Odgovor vodećih ljudi iz ministarstva je, citiram:
"Kolega, ako ne nauče u osnovnoj školi, naučit će u srednjoj. Ako ne nauče u srednjoj, naučit će na fakultetu. A ako ne na fakultetu..."
i onda se frajer počeo cerekati profesorima u lice.
Taktika "tko vas je.e".
Urezalo mi se u pamćenje.
Srećom danas računalo za male novce kupiš na pijaci uz domaći sir, vrhnje, jaja i slično, pa se može probati doma.
smayoo
03-02-2010 | 18:56
Windows7, pisali smo već o tome ovdje. Potraži temu o učenju u forumu Razno. Moj je stav i tada bio - da, istina je da su škole loše opremljene, ali veći je problem da je jako malo profesora koji zaista imaju volje sami učiti da bi djecu poučili.

Đipi - činjenica je da programiranje bez primjene nema smisla, ali ja ipak smatram da je prva stepenica učenje programiranja na apstraktnoj razini kako bi ljude naučio strukturiranom razmišljanju. I kako bi ih naučio pravilno postaviti algoritam, plan podataka i aplikacije. Najčešća stupica primijenjenih programera je u tome da su odmah u startu fokusirani strogo na konačni cilj - primjenu. I onda pišu brzi i prljavi kôd koji najkraćim putem dolazi do kratkoročnog cilja. E, a onda nakon par mjeseci korištenja ispliva što sve treba promijeniti i doraditi, ali aplikacija je tako kriš-kraš napisana da je praktički treba započeti od nule da bi se to moglo implementirati.

Promatraj to isto kao i matematiku. Matematika sama radi sebe ne služi ničemu, ali nitko nije savladao niti fiziku, ni kemiju, niti njihove nadogradnje, a da prije toga nije savladao matematiku.
Djipi
03-02-2010 | 19:15
@Windows7: Da, može se probati doma (što je dobro i možemo biti sretni na takvom životnom standardu), ali, za razliku od domaćeg sira, vrhnja i jaja, s kojima ćeš se "intuitivno" snaći kako ih "najpametnije" upotrijebiti :-), ne imajući nikakvu ili (još gore!) "krivu" informaciju čemu ti to računalo sve može služiti, završit ćeš kao tipični konzument koji se drži mainstreama: ne nužno zato jer baš to želi nego zato jer ga sa svih strana "pumpaju" informacijama da računalo služi za... Facebook. :-)

I, da ne bude zabune, ne zastupam ideju da bi sad baš svi trebali zasukati rukave i pisati vlastiti softver. Daleko od toga. :-)

Ali od programiranja se napravilo toliki bauk, a nikad nije bilo lakše ne samo programirati (sljedeći upgrade Xcode-a će vjerojatno čitati misli programeru - većinu ostalih featura su mu već implementirali) nego i (a ovo je posebno bitno!) *naučiti programirati* nego danas. I da, postoji puno više opcija odakle krenuti nego nekad i veća mudrost je u startu odabrati hoće li se "programiranje" (kao metoda) učiti na primjeru PHP-a, C-a ili... u terminalu :-) nego svladati logiku koju se može podučiti u jedno popodne te joj dodati vokabular od čak 30-ak (!) riječi koliko ih ima jezik poput C-a.

@Smayoo: Apsolutno se slažem da se ne može daleko bez osnova, a one JESU apstraktne (u odnosu na znanje koje imamo prije nego se upustimo u, ovdje konkretno, programiranje). Međutim, ono na što pokušavam ukazati je mogućnost korištenja "vizualizacije" da bi se ta apstrakcija približila Onome Tko Uči. Što će lakše shvatiti: algoritam bubble sorta "izučen" tako što se utipkao kod, unijeli testni podaci i pročitalo output (sortirani brojevi) ili isti taj algoritam vizualiziran postupkom samog sortiranja (da, mogli bi pratiti korake kroz debugger i gledati kako se mijenjaju varijable, što nije loše - u osamdesetima :->). Nekad je taj dio vezan uz vizualizaciju (ne moramo nužno govoriti o grafici, možemo govoriti i o zvuku ili bilo čemu različitom od gledanja samog koda!) bio pain in the ass jer nije bilo trivijalno ni prikazati sprite na ekranu, a kamo li vizualizirati podatke "da nam bude lakše percipirati što se zbiva". Ali danas JE trivijalno - s pravim alatom. Onaj tko krene od Xcode-a imat će isti problem kao i programeri nekad: okruženje traži apstrakciju, debugger je jedini prijatelj. Vizualne komponente (korisničko sučelje) može pomoći (prvenstveno zato jer se brzo gradi i relativno lako kontrolira), ali ipak zahtijeva nijansu "previše" predznanja. Ali onaj tko krene od Unitya (nije plaćena reklama, časna riječ :->) puno će brže vidjeti odnos između koda i onoga što taj kod radi, pa makar sortirao kuglice koristeći isti onaj bubble sort s početka priče. :-)

Quartz Composer, lišen koda (do jedne granice) je fantastičan poligon za heklati algoritme i uživati u rezultatima - vizualno. :-)
smayoo
03-02-2010 | 19:45
Kužim što želiš reći, iako ja tako ne mislim. Nikad nisam bio osobito vizualan tip. Ja sam svoja najinventivnija programerska rješenja (a bilo ih je nekoliko kojima se zaista mogu pohvaliti) listom sva - sanjao. Bez šale. Sanjao sam kako elegantno riješiti nešto što mi se preko mjere zakompliciralo i imao sam "gut feeling" da to može bolje, ali nisam znao kako. I onda bi se u snu toliko oduševio da bi se od tog oduševljenja probudio i odmah skcrkao odsanjani algoritam. Jednom sam cimera toliko prepao (jer sam valjda još u snu vikao od oduševljenja) da je nakon toga krišom razgovarao s mojim prijateljima o tome trebam li psihijatra... :-)
Windows7
03-02-2010 | 19:57
Smayo je nakucao:
"Windows7, pisali smo već o tome ovdje. Potraži temu o učenju u forumu Razno. Moj je stav i tada bio - da, istina je da su škole loše opremljene, ali veći je problem da je jako malo profesora koji zaista imaju volje sami učiti da bi djecu poučili."

Tko god zna nešto o informatici, a ostane raditi u školi, nije pametan.
Privatno se dade zaraditi nekoliko puta više novaca nego u školi. Treba podignuti plaću profesorima, pa bi u škole došao motiviran kadar.
Velik je problem naći profesora matematike, fizike i informatike. Gradivo na fakultetu je preteško da bi se čovjek kasnije spustio na razinu 7. i 8. razreda. uz nikakvu plaću. To je već problem društva u cjelini.
Ne bih htio dalje ovdje, ništa novo nisam rekao, da ne blatim temu, da ne mičem fokus s teme članka.

A programera je malo, za biti programer (kao i bilo što drugo), čovjek mora imati ono nešto u sebi.
Želim ugodan ostatak večeri ekipi, ja se neću više uključivati komentarima na ovaj članak.

GP je napisao lijep članak, zainteresirao ljude i to je bitno :-)
Djipi
03-02-2010 | 20:16
@Smayoo: Lako sanjati algoritme nakon što se već sprijateljiš s njima. :-) Ovdje je pitanje kako "novima" (koji definitivno ne sanjaju algoritme - mogu eventualno imati noćne more od nedokučivih konstrukcija viđenih u listingu nekog programa) olakšati korištenje alata (programiranje kao alat!), odnosno kako krivulju učenja (programiranja) učiniti što manje strmijom. A zaključak je da zapravo sami alati (od Quartz Composera do Unitya) u tome mogu itekako pomoći ako već vlastita nevolja i potreba da čovjek sam sebi riješi problem nije dovoljan motivator. :-)
Windows7
03-02-2010 | 21:57
Nicht komentar, samo ispravak :-)
teoretska, idealna krivulja postignuća/učen ja data je izrazom x=0.
Dakle, krivulja bi trebala biti što strmija (u najmanjem vremenu naučiti što više).
Ako se želi "što manje strma" krivulja učenja, onda ne treba učiti ništa :-) (y=0).
Ne se ljutit na mene :-)
hal9000
03-02-2010 | 22:40
ideš! da i nisam znao da je članak tvoj, po stilu se da zaključiti. 10/10
Djipi
03-02-2010 | 22:51
@Windows7: :-) "Krivulja učenja", koliko mi je poznato, standardno ima dva značenja - jedno je ovo koje navodiš (obično se koristi za "brzinu kojom učimo", kao pojedinci, u odnosu na druge), a drugo je ono koje se odnosi na lakoću/težinu svladavanja pojedine aktivnosti pri čemu strmija krivulja znači veće potrebno zalaganje pa kad neki, primjerice, softver ima "strmiju krivulju učenja" (Maya!) znači da ćemo se u početku dobro uznojiti. Za razliku od Photoshopa čija je krivulja puno blaža. Xcode (u paketu s, recimo, Objective-C-om, a sve u svrhu iPhone programiranja) ima strmiju krivulju učenja od AppleScripta (u kontekstu skriptanja pojedine aplikacije). O tome je riječ. :-)
Windows7
03-02-2010 | 23:15
Treba samo vidjeti što je na x, a što na y osi i onda je sve jasno :-)
Tako da smo oboje u pravu, svaki za parametre koje smo odabrali.
Ja sam za y odabrao količinu znanja, a za x standardno proteklo vrijeme.
Neću više majke mi, pljuck- hrač i žvaku iza ramena :-)
dpasaric
04-02-2010 | 01:03
A evo i odličan konkretan odgovor na pitanje "Zašto programirati?": http://tiny.cc/phnOP

Ivor je upravo objavio na MK izvješće s Mobile Mondaya i dao link na snimku svoje prezentacije - mene je oduševio njegov inovativni dock(?) za iPhone koji pomaže pri spašavanju unesrećenih...
Riba
04-02-2010 | 10:57
windows7, ja se pak slazem s tobom, ja sam hardverski covjek. :-) Danas ima hrpa programabilnih jeftinih procesora pristupacne cijene. Uostalom, je li bolje napisati program, ili napisati program i gledati kako isti upravlja tvojim roboticem. :-)
GP-a recimo zanimaju lego roboti, preporucam mu da baci oko na www.arduino.cc jer vjerojatno ni ne zna sto propusta i kakve sve danas postoje mogucnosti. Ja se vec dugo spremam uhvatiti se toga ali nemam vise to gdje ugurati u ionako krcatu satnicu. :sad:
A sto se programiranja tice, moram kao i obicno ubaciti notu negativnog (ili realnog). Programiranje danas nije na cijeni, tako da se bolje time baviti iz hobija nego profesionalno.. .osim za app store, jer tamo svaka glupost prolazi ;-)
Windows7
04-02-2010 | 14:10
arduino koristi Atmelov ATMega8, upravo onaj mikrokontroler kojeg koristim i ja (uz ostale). Prednost arduina za početnike je softver uz njega, da se ne kreće od nule.
Kroz desetak dana bih na oglasnik mogao ponuditi tiskane pločice za njega, ako netko bude zainteresiran, pa i dijelove u kompletu. Samo za članove Jabučnjaka, po proizvodnoj cijeni, po jedan komad. Jabučnjak mi nije mjesto gdje želim profit. Jedino kontroler je upitan, nisam detaljno pogledao web od arduina, trebam ih kontaktirati da vidim uvjete nabave predprogramiran ih kontrolera sa upečenim firmwareom. Ako ima zainteresiranih , probat ću organizirati.
Riba
04-02-2010 | 14:13
Ima, ja znam za najmanje jednog!
Djipi
04-02-2010 | 14:14
@Riba: "Uostalom, je li bolje napisati program, ili napisati program i gledati kako isti upravlja tvojim roboticem." - ovisi o tome što radi onaj prvi. Ako radi nešto nalik na ovo što je Ivor sa svojom ekipom napravio, onda definitivno nisam siguran da je robotić bolji izbor. ;-)

Ali! Dobro da si spomenuo robotiće - i oni su "vizualni" u kontekstu inputa/outputa. Ne pada mi na pamet zabavniji način za nekome objasniti A* algoritam od toga da zapravo programiramo robota koji mora doći od točke A do točke B pri čemu su između posijane nekakve prepreke. Osim toga, sama ideja upravljanja s robotima može uvući u priču i onaj dio populacije kojem hardver (ne nužno na nivou lemilice :->) nije stran.

A ovo "Programiranje danas nije na cijeni" mi fakat nije jasno jer je itekako na cijeni, samo ovisi o razlici između programera i "programera", a to dalje diktira što se zapravo programira i koliko je to netko voljan platiti. Gro današnjih "programera" su kopipejst programeri. I činjenica je da programirati možeš "naučiti" tako da preskočiš osnove i počneš na webu tražiti rješenja konkretnih problema koje implementiraš u, recimo, vlastiti web. Gledano "sa strane" - programiraš. No, to što te strah zadirati u kod da nešto ne polomiš (jer ne kužiš kako radi), to je već drugi par rukava. No, bolje krenuti i od toga nego ne krenuti uopće pa kad/ako se rodi "ljubav", kopipejster uvijek može pohvatati osnove i doživjeti Prosvjetljenje. :-)
dsakic
04-02-2010 | 14:43
Ja sam bivsi kopipejster. Ruku na srce, jos s vremena na vrijeme znam pokupiti neko polugotovo rijesenje problema, pa ga onda rastaviti; dozivjeti AHA trenutak i onda napisati tocno ono sto mi treba.
I zainteresiran sam za plocice... (LEGO mindstorm 2.0 set kosta prek 2.500 kn)
Djuro genijalac
04-02-2010 | 19:30
Djipi, sori, nisam mislio dovesti u pitanje tvoje znanje, nego mu se iskreno divim. Pital sam se (nespretno, priznajem) znaš li sve navedene programske jezike... Ja ovu godinu imam 20 godina mature (MIOC) i iz njega se još prilično maglovito sjećam (turbo)pascala i fortrana. Assembler nikad nisam (za)volio i s guštom sam ga zaboravil, ali blok dijagram znam i sad nacrtati....
A kaj se tiče rješavanja problema u snu, Smayoo, i ja to znam napraviti ili se to i meni zna(lo) dogoditi. Iako, ja se nisam nikad budil uz frenetične urlike, nego bih sam ujutro zaključil da sad znam rješenje i da mi se čini da sam to sanjal....
Djipi
04-02-2010 | 19:46
@Djuro genijalac: "Djipi, sori" - Pobogu, šalio sam se! :D A što se tiče pitanja znam li ih sve, ovisi o definiciji "znati". :-) Python sam koristio dvaput u životu pa ne bih potpisao da sam baš kompetentan za nekome "soliti pamet" u vezi njega. C++ i Java mi također nisu svakodnevni alati, ali da o mom znanju tih jezika (koji su derivati C-a) ovisi sudbina svijeta i svemira, snašao bih se u svima njima - s otvorenim helpom. :-) LOGO mi je najtvrđi orah među nabrojenima, jednostavno se ne mogu natjerati razmišljati na LOGO-način. Usput molim vanzemaljce da tijekom invazije NE koriste LOGO jer ću se osjećati bespomoćno. ;-)
Law
05-02-2010 | 08:06
Odličan članak Djipi..... Kod mene je odgovor zašto programirati ono uzbuđenje kad nešto proradi baš onako i isključivo tako kako si zamislim. Ne znam možda suluda ideja moći, u stilu ja zamislim on napravi :-)))... Početak su bili suludi pokušaji pravljenja igrica na ZX Spectrumu, tko se sjeća onih knjiga sa 1000 linija koda, i kad sve to otkucaš krene igrica i sve nešto očekuješ, a ono neki RPG gdje nema grafike nego se sve odvija putem pitanja i odgovora da poludiš :-)).

Nije da te kritiziram ali onaj algoritam ljudskog života ima jednu grešku za vikend. Ne možeš skuhati ručak ako se nisi dignuo iz kreveta zar ne :-))), osim ako pod time ne podrazumjevaš da si ženu poslao da kuha ručak, ali to je posve drugačiji algoritam i malo ga je teže napraviti :-)))....

1. ustani iz kreveta
2. ako je vikend skoči na 5
3. odi na posao
4. radi
5. skuhaj ručak
6. jedi
7. zabavi se
8. spavaj
Veco
05-02-2010 | 09:50
Epic...
/bow
Breed
05-02-2010 | 13:28
Riba : "Ima, ja znam za najmanje jednog!"

Dva!
Djipi
05-02-2010 | 13:33
@Law: još jedan easter egg manje. ;-) No, nismo ih iscrpili. :D

A ovo mi je posebno zanimljivo: "Ne znam možda suluda ideja moći, u stilu ja zamislim on napravi " - planirao sam o tome pisati u članku i odustao u zadnji čas da ga ne pretvorim u sociološku studiju. :-) No, sad kad si već načeo temu - tu svakako ima nešto. Programiranje nam omogućava totalnu kontrolu okruženja koje sami kreiramo. Za one koji se imaju ambicije igrati Boga (tko nema? :->), vjerojatno je programiranje odličan "holodeck" koji MOGU prakticirati u stvarnom životu. William Wright vjerojatno zna ponešto o tome. ;-)
smayoo
05-02-2010 | 19:54
Da. I meni je to poprilično blisko. Osjećao sam se dosta zadovoljno dok sam kotačićem miša "turirao" 400-megavatni stroj, a cijela komandna sala se u panici držala za glavu ne znajući zašto "snaga ljulja". :-)
MAK
06-02-2010 | 01:01
Mala programabilna hardversko-soft verska tajna koja povezuje CERN i Apple http://en.wikipedia.org/wiki/Xilinx
:-)
ales
06-02-2010 | 14:27
ej djipi... moj prvi pročit naslova je bio:

jesmo li ludi ili programeri


pa meni se čini da je to isto....


programeri su kao zidari samo što ih neki neke još dobro plaćaju, istočna europa je već krenula sa gadnim dampingom a kad krenu indijci i kinazi sa znanjem i organizacijom, tada će biti gotovo. moje mišljenje je da je to kulturna stvar tako da se to neće desiti već sutra nego kad odraste ova generacija koja sada živi u nekom blagostanju... znači za 20-30 godina.

nekada je važilo da ne može naprviti ništa što mogu 5 amera uz mnogo pizze i kokakole.... danas nema više toga programeri su topovska hrana

smrt fašizmu!
smayoo
06-02-2010 | 14:44
To je točno, i tome su krivi sami programeri što su dozvolili da se diletanti i kopipejsteri počnu nazivati programerima i time srozati percepciju te struke.
petros
06-02-2010 | 18:28
Programiranje! Probao sam kod frenda nekakav Games Construction Set ali baš i nsimo napravili nešto fora. Lakše je kupiti, sada je izbor superiška i za kompove i za konzole, pa i hendhelde!
Tomislav
06-02-2010 | 20:18
Wow, iako sam "pravi" macovac kako ga zamišlja većina Win/Linux juzera, tip koji vozika miša po stolu, moram priznat da me ovaj članak, ne tolko temom kolko njenom obradom, oduševio. Naprosto čovjeku da za mislit, iako je "pravi macovac".
Djipi
06-02-2010 | 21:53
@smayoo: "...tome su krivi sami programeri što su dozvolili da se diletanti i kopipejsteri počnu nazivati programerima i time srozati percepciju te struke." - dobrim dijelom je "krivo" i to što je već "sve" napisano, a i alati s kojima se povezuje to što je već napisano postaju sve ergonomičiji (što je odlika koja ih nekad definitivno nije krasila :->). Nikad nije bio kraći put od algoritma do aplikacije nego što je danas (trivia: klon Macovog TextEdita je moguće napisati dodajući *10* linija Objective-C koda defaultnom Xcode templejtu!) . Sutra će taj put biti još kraći. I kao takav će većinu današnjih "middleware" programera izbaciti iz posla.

U tome nema ništa loše jer nema smisla da ljudi rade poslove koje zapravo ne moraju raditi. Barem ne za novac. Sve to gledano iz perspektive Star Trek utopije, naravno. ;-)

Usput mi se pali lampica da bi ovom članku dobro došao nastavak koji objašnjava paradigmu objekata (s obzirom da su danas svima puna usta objektnog-progr amiranja) na trogodišnjaku razumljiv način i pritom ukazuje na činjenicu kako se današnje aplikacije, unatoč tome što su objektno programirane, ustrajne u tome da se same ne ponašaju kao objekti nego kao zatvoreni svemiri. A lijepo nam je Wirth prije puno godina, s Oberon OS-om, pokazao kako bi se objekti trebali ponašati da količina (redundantnog) programiranja počne težiti nuli. :-)
smayoo
06-02-2010 | 22:52
Ja smatram da za inteligenciju i razmišljanje uvijek ima dosta mjesta i posla. Samo, nažalost, taj dio posla jako malo ljudi želi raditi. Većina se zadovoljava za besmisleno mali novac s prstom u nosu klikati po .Netu i sl. i 70% vremena trošiti na surfanje po netu u potrazi za tuđim kodom koji bi mogli iskoristiti.

I - daleko od tog da je sve napisano. Naravno da jest ako u današnje vrijeme ideš pisati (još jedan) text editor, spreadsheet, web browser... jer si umišljaš da možeš bolje od onih par tisuća što su to već odradili prije tebe.

Ali postoji more stvari koje nisu nikad napisane jer ranije jednostavno niti je razvoj spoznaje bio na razini da korisnici unaprijede način razmišljanja, niti su računalni resursi bili dovoljni da se nešto napravi. I na kojima itekako vrijedi radii, kad bi se između mase foliranata moglo pronaći dobrog programera, a da pri tom čovjek izgubi manje vremena, nego što bi izgubio da se sâm upusti u razvoj.
MAK
08-02-2010 | 00:40
Evo zašto nema flasha na Iphoneu... i iPadu. Iskustvo tipa koji je radio i u Adobeu i u Appleu koji zna kako je do toga došlo iznutra. Ukratko: i doživljaj programiranja Jobs je spustio širim masama. Flahu tu nema mjesta (iako je bilo u pretprodukcijsk oj fazi iPhonea sve dok se nije počeo prodavati)
http://blog.anscamobile.com/2010/02/flash-iphone-and-beyond/
Windows7
08-02-2010 | 22:17
Nekidan mi je trebao pristup jednom webu koji ima flash, a nije mi se dalo nositi laptop. Instalirao VNC na iPhone i vrtio flash na konektanom PC-u.
Meni svejedno hendla li iPhone flash dok je VNC-a.
MAK
09-02-2010 | 18:53
http://www.vecernji.hr/vijesti/pretjerana-ocekivanja-ipada-uzrok-su-razocaranja-poslije-premijere-clanak-94303
Djipi
09-02-2010 | 19:17
@MAK: na što misliš s ovim - "Ukratko: i doživljaj programiranja Jobs je spustio širim masama."?

Pročitao sam članak i zapravo je cijeli samo uvertira za hvalospjev Coroni, koja s Jobsom nema nikakve veze. I koliko god dobro izgledala na prvi pogled, na drugi, za $99 godišnje "članarine" (uz isto toliko Appleu za developersku registraciju, s publiciranjem u AppStoreu na umu), dobiješ nekakav middleware (da ne kažem "bastarda" :->) koji pokušava premostiti jaz između ActionScripta (!) i iPhonove nativne platforme, pri čemu programiraš u Lui i ograničen si na 2D aplikacije koje NE koriste sistemske UI komponente. Uz obećanje da će biti bolje u sljedećim verzijama. :-) Ne sumnjam da će se popraviti, ali nisam siguran koliko je pametno naizgled si skratiti dio procesa učenja nativne platforme i njenih APIja da bi se kontinuirano kaskalo s mogućnostima programiranja jer nakon što Apple implementira nešto novo, Corona to tek mora prevesti u svoj Lua-conformed API. :/

I da, Coronine aplikacije imaju manji footprint od, recimo, Unitya, ali bez obzira na razliku u cijeni licence (i uz činjenicu da je Unity, po novom, besplatan za razvoj, barem u Indie verziji - licenca je potrebna samo za publiciranje, što je fer), Unityev JavaScript bit će dovoljno blizak Flash programerima da se u njemu ne izgube, a njegovih 7+ MB koda u kojem je sam engine i nije neki overhead osim ako autor ne planira publicirati "Hello World!" aplikaciju. :-)
macuser
12-02-2010 | 14:32
Imao je i Mac svoj BASIC, najprije MacBASIC kojeg je "ubio" Microsoft i napravio svoju varijantu MS BASIC za 128k Maca, cijela priča ovdje: http://www.folklore.org/StoryView.py?project=Macintosh&story=MacBasic.txt

slika: http://school.anhb.uwa.edu.au/personalpages/kwessen/web/stories/MSBasic1.gif

;-)
dpasaric
14-02-2010 | 01:06
I? Ima li netko da je odlučio programirati za iPhone/iPad? :-)

Osim što na poslu sjedim od iPhone (programera, drugi frend je baš friško kupio Touch da se upozna s Xcodeom i cijelom Apple okolinom, pa jedva čekam vidjeti njegove prve eksperimente obzirom da znam koliko je dobar u drugim programskim alatima...
Anonimac
19-03-2010 | 02:35
OBAVEZNO od alternativa probati Lazarus
http://en.wikipedia.org/wiki/Lazarus_(software)

Jako stabilna platforma, isti kod se kompajlira na Windowsu, Linuxu ili Macu a rezultat je jako optimizovana aplikacija koja koristi native widgete. Lazarus je inace open source Delphi klon tako da ko je nekada znao Pascal lako ce se uklopiti.

Cak bih predlozio i prikaz Lazarusa (posle malo istrazivanja naravno).

Pozdrav!
Anonimac
09-05-2010 | 00:21
ovo su riječi bačene u vjetar, po onoj narodnoj: "trla baba lan da joj prođe dan" ili "Kad vrag nema posla onda jariće krsti"

Vikalica™

Zadnja poruka: pred 5 sati, 7 minuta
  • drlovric: Za sta ti konkretno mirroring sluzi? Ja mu nisam nasao primjenu :/
  • stefanjos: affinty na popustu 50%. ja sam si uzeo novu licensu. do sada sam bio na v1
  • stefanjos: tako da, meni je to top feature
  • stefanjos: ja imam australski app store i iphone mirroring koristim svaki dan
  • drlovric: To ces probati jednom i nikad vise. Nema razloga za biti razocaran :)
  • Zdravac: - NIJE :/
  • Zdravac: Jel proradio iPhone Mirroring? :)
  • Yonkis: iOS 18.1.1 / macOS Sequoia 15.1.1 [link]
  • kupus: pretpostavljam da to ide meni, znaci fino radi.
  • kupus: hahaha
  • drlovric: Znas kako lijepo klepece. Mozes i mijenjati zvuk. Merak pravi ????????
  • kupus: svejedno hvala smayoo
  • smayoo: Ma nemoj me zajebavat... :D
  • drlovric: Prekrasna aplikacija ako zelite zvuk fancy mehanicke tipkovnice :) [link]
  • drlovric: I ja to ocekujem. Na proljece cu u USA i iskreno se nadam da ce izaci do tada. Da donesem makar dva komada :)
  • Borisone: Osim ako nisi na ti s Tim Cookom, najbliže nagađanju kada je: [link]
  • VanjusOS: zna li netko, hoće li izaći uskoro Air sa M4 čipom?
  • smayoo: Pokušao sam, ali sam odustao kad me zavrtio u krug s registracijom i sign-inom na Epic games. Najprije kaže da može iskoristiti moj AppleID, kad napravi login preko AppleID i kažem da ne želim pokazati svoj AppleID onda me opet svejedno traži login. Tako da... sorry, ne bih.
  • kupus: hvala
  • kupus: moze li netko probat ovaj besplatan virtualan masterpiece na m macovima? [link]
  • ping: @drlovric imaš besplatne konvertere na netu pdf to excel ili konvertiraj u jpeg pa potrazi online free konverter ocr to excel
  • drlovric: nemam Acrobat....smo PDF Exprt i Wondershare.... Raspadne se na oba
  • drlovric: Daj mi mail na poruku pls, pa da ti posaljem....a kakav Pentagon, prosla su ta vremena, glupost neka :)
  • Zdravac: negdje ju uploadaj, pošalji mi link pa ak hoćeš, da vidimo kak će ispasti (osim ako nisu neke secret Pentagon pi*darije :)
  • Zdravac: @drlovric - "export to excel" ?! Adobe acrobat
  • drlovric: Imam fakturu u PDF, htio bih od nje napraviti Excel file. Sta da radim? :)
  • mariolino1971: Pozdrav. Pokušavam poslati oglas no stalno dobivam poruku 413 Request Entity Too Large. U čemu je problem?
  • kupus: UK korisnici vs Apple [link]
  • Yonkis: Jeste li znali da se iPhone sam reboota ako nije otključan u 72 sata? [link]
  • Yonkis: jeste čitali komentare na [link]
  • Ender: takodje zainteresovan za neki IPTV, predlog moze u PM.
  • cariblanco: Ako hočeš ja ti svog "provajdera" kojeg koristim 4-5 godina, pošaljem na pp ?
  • cariblanco: Kako veli Zdravac dobar iptv za 10 E i imaš sve i gdjedaš od kud hočeš. Meni je to jako važno pošto puno putujem, trebam samo dobar net i mirna bosna
  • drlovric: Moj Telemach nema Arene vec Sport Klubove....ali postoji kabelska u zgradi koja ima Arene, preko koaksijalnog kabela.... Pa sam se tehnloski vratio deteljece unatrag. Ali radi evo :)
  • Zdravac: Ali to je paket ex yu kanala, nema samo sport vec sve
  • Zdravac: Kvalitetni, koji mogu preporučiti 10 eur/mj
  • Zdravac: Ima, iptv
  • kupus: hometv to go ili kako već
  • kupus: znači ide i eronet aplikacija
  • kupus: u bih prava ima arenasport ako se ne varam
  • drlovric: Jel ima neki nacin da se HNL Supersport liga gleda online? Neki app? Streaming? Iptv?
  • cariblanco: Prošlo iz petog pokušaja...bit će da je Riba na suhom ;)
  • cariblanco: Zašto mi neće primiti odgovor o ogulinskom zelju...klikam tri puta i ništa, a regan sam ?
  • Riba: Ali vjerojatno je ista prica kao i sa Studion.
  • drlovric: Raskopali su novig Minija. Izmjenjiv je disk. Vjerojatno radi njihove SKU ustede, ne radi korisnika. Uglavnom nije zalemljen.
  • kupus: nije, to je isto kao i apple.hr
  • zvone: Imaju apple.hu. Valjda je to istyle.
  • kupus: samo hoće li ti htjet prodat minija s 256gb storagea, to je pravo pitanje :P :)
  • kupus: a imaš i našeg dpasarica s foruma, pa se njemu javi. vjerujem da ti može složiti konkurentnu cijenu
  • kupus: imaš translate u browseru, čak i u firefoxu od ne toliko davno

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Komentari

Anketa

Koji Mac koristite?

Page Speed 1.21 Seconds

Provided by iJoomla SEO