Šta je novo?

Kurs iOS programiranja

Swift je samo jezik, kao i bilo koji drugi. Ono na sta se zapravo trosi vreme je ucenje frameworka. Za neko solidno ovladavanje frameworkom je potrebno oko 6 meseci konstantnog rada u istom. Nisam video temu na vreme, tako da mi je zao sto moram da ti kazem da je trebalo da poslusas savete od ranije - da krenes da ucis sam par meseci dok ne pohvatas osnove, a onda da trazis neplacenu praksu u nekoj firmi. U Beogradu postoje firme koje s vremena na vreme uzimaju na praksu ljude sa osnovnim znanjem iz programiranja, i odmah ih ukljuce na rad na pravim iOS projektima jer tako se najbrze uci. Praksa obicno traje 3 meseca, a posle pocnu da te placaju (ne previse, ali dovoljno za pocetak). Ono sto je ovde bitno je da ces nakon otprilike godinu dana (ili nesto vise) rada u takvoj firmi na trzistu rada vredeti znatno vise i otvorice ti se neke veoma zanimljive mogucnosti (i sa finansijske i sa profesionalne strane).

Dakle, idealno bi bilo da si cim si zapoceo ovu temu poceo sam da ucis objective-c ili swift preko npr. vec pomenutih Stanford kurseva ili uz neku dobru knjigu. Do trenutka kada ti pocnu ti kursevi u februaru ti bi vec bio spreman da te neka firma primi na praksu. Tako bi ustedeo sebi i novac i vreme :)

Ali dobro, mozda i put koji si odabrao na kraju ispadne dobar, samo budi uporan i vredan, na kraju ce se sve isplatiti.
 
Nemoj me bacati u depresiju, nije to mala para. :)
Posveticu se 110% tome.Iskreno nemam vremena nakon posla i putovanja 1h30min do kuce da sam trazim po netu sta i kako.Videcu sta ce biti..
 
Citao sam dosta negativnih iskustva koje su imali ljudi sa iStyle vezano za garanciju,neljubazno osoblje i jos neke sitnice..kao i to da je to privatna radnja, tj nema veze sa Apple-om.
Bas me zanima ko ti je to rekao... iStyle je premium reseller za Istocnu Evropu i ima ih svuda. Da je osoblje neljubazno tesko - od radnje, preko servisa i web shopa svi su maximalno ljubazni i uvek pomazu. Pa ja kada sam kupovao neke stvari nisam ni znao da mogu ostvariti neke popuste jer nije bilo na sajtu npr. i onda ti kada vec hoces da iskesiras prodavac pita tipa - a jel imas neciji index da ti mogu dati popust na ovo. Servis takodje - ja sam nosio telefon iz Telenora gde su me zaj* za garanciju jer nisam onaj koji je potpisao ugovor prilikom kupovine telefona, a u iStyle - jel u garanciji? Jeste. Ok, daj da vidimo sta mu je... Da ne kazem sto je i neko ovde na forumu uvek bio spreman da mi pomogne preko pp i ostalo sto nikako ne spada u njegov posao. Ja sada i kad kupujem sigurno ne bih ni za 10 000 razlike na tu cenu isao kod drugih...

Sa tobom se apsolutno slazem! iPhone necu uzimati jos (trenutno koristim Samsung E1200:)) jer me iskreno nikad nije ni privlacio kao ni neki premium modeli drugih kompanija. Nemam nista protiv iPhone-a, a to da je skup jeste..stim sto bih ga uzeo uz neki paket ako bude potrebno.
Nije ti potreban cak i u nekim slucajevima kada programiras igre, mada ako krenes komercijalno da pravis app-ove e onda ces ga vec morati kupiti. Ono sto sam ti rekao i iPhone 4S, 5 ce ti raditi posao cak i u tim situacijama.

Medjutim ja i tvoj drugar se razlikujemo po nekim stvarima. To je da su me racunari uvek zanimali i da bih hteo to da iskoristim pored zelje i volje koju imam da se posvetim ovom poslu i naravno obezbedim sebi bolji zivot (ne mislim na skupa kola, firmirane krpice itd). Uvek me je zanimalo kako se prave aplikacije,web programi i kako uopste internet radi. Sa sadasnjom platom od 25.000 (koja je meni samom dovoljna, ali vec kasnije za porodicu tesko da je to dobro) mogu samo da se zadovoljim osnovnim stvarima.
Zato ne gledaj da puknes kes odjednom vec vidi kako ti sve deluje. Ti dok ne krenes na kurs ne treba ti MacBook sigurno, jer ako si hteo sam poceti, onda ti kurs i ne treba. Moj savet ti je - kreni na kurs i ako ti bas bude zanimljivo posle par dana ili nedelja onda krenes da gledas Stanford Swift Course i eventualno kupis MacBook/iMac/Mac mini ili pravis Hackintosh ako to razumes i zelis da radis.

Swift je samo jezik, kao i bilo koji drugi. Ono na sta se zapravo trosi vreme je ucenje frameworka.
Ne bih se bas u potpunosti slozio - Swift je malo drugaciji od ostalih jezika, a najvise zbog optionals promenljivih.

Za neko solidno ovladavanje frameworkom je potrebno oko 6 meseci konstantnog rada u istom.
Ja bih pre rekao za osnovno, za solidno treba jedno 2 godine, ima gomila toga da se nauci.

Nisam video temu na vreme, tako da mi je zao sto moram da ti kazem da je trebalo da poslusas savete od ranije - da krenes da ucis sam par meseci dok ne pohvatas osnove, a onda da trazis neplacenu praksu u nekoj firmi. U Beogradu postoje firme koje s vremena na vreme uzimaju na praksu ljude sa osnovnim znanjem iz programiranja, i odmah ih ukljuce na rad na pravim iOS projektima jer tako se najbrze uci. Praksa obicno traje 3 meseca, a posle pocnu da te placaju (ne previse, ali dovoljno za pocetak). Ono sto je ovde bitno je da ces nakon otprilike godinu dana (ili nesto vise) u takvoj firmi na trzistu rada vredeti znatno vise i otvorice ti se neke veoma zanimljive mogucnosti (i sa finansijske i sa profesionalne strane).
Istu stvar je mogao kod mene u firmi - ako zna te osnove da se priucava i posle nekog vremena zaposli :)

Dakle, idealno bi bilo da si cim si zapoceo ovu temu poceo sam da ucis objective-c ili swift preko npr. vec pomenutih Stanford kurseva ili uz neku dobru knjigu. Do trenutka kada ti pocnu ti kursevi u februaru ti bi vec bio spreman da te neka firma primi na praksu. Tako bi ustedeo sebi i novac i vreme :)
Ja savetujem svakome da batali Objective-C i krene sa Swift-om, posto sve sto se moze u Objective-C moze da se uradi i u Swift ako ne i vise/lakse... Takodje Swift je novo mezimce a Objective-C ce u narednim godinama da se penzionise...

Ali dobro, mozda i put koji si odabrao na kraju ispadne dobar, samo budi uporan i vredan, na kraju ce se sve isplatiti.
Najbolje da ako mu se svidi pocne i sam da radi i experimentise i gleda Stanford course :)

Nemoj me bacati u depresiju, nije to mala para. :)
Posveticu se 110% tome.Iskreno nemam vremena nakon posla i putovanja 1h30min do kuce da sam trazim po netu sta i kako.Videcu sta ce biti..
Ali nije da trazis nista, sve vec imas spremno na netu. Nekih 20 lekcija po 2 sata koje su vrv mnogo slozenije od onoga sto ces cuti na kursu, ali ok - sta si uradio, uradio si, sada se posveti tome da ne bacis pare, mozda ti bude lakse da se krene tako polako, pa da predjes na ovo malo slozenije :)
 
Ne bih se bas u potpunosti slozio - Swift je malo drugaciji od ostalih jezika, a najvise zbog optionals promenljivih.

To je samo jedna finesa jezika, tesko da se na osnovu toga moze smatrati znacajno drugacijim od ostalih jezika. Sam Swift je pozajmio gomilu dobrih stvari iz raznih objektnih i funkcionalnih jezika, tako da se tesko moze reci da nudi nesto revolucinarno novo. Ljudi koji su imali iskustva sa OOP i funkcionalnim programiranjem se nece tesko prilagoditi ni Swiftu. :)

Ja bih pre rekao za osnovno, za solidno treba jedno 2 godine, ima gomila toga da se nauci.

To vec zavisi od definicije "osnovnog" i "solidnog". Moja definicija solidnog je znanje frameworka koje je dovoljno da programer moze da manje-vise samostalno razvija iOS aplikaciju. Dve godine iskustva je po mom misljenju dovoljno da za nekog kazes da je vec iskusan iOS developer (pod uslovom da je ranije vec znao dobro da programira u nekom drugom jeziku). Ako si poslodavac onda verovatno znas da se na nasem trzistu neko sa 2 godine iskustva vec tretira kao senior iOS developer, s obzirom na nedostatak kadrova :) A da se ne lazemo, framework nije toliko veliki (bar ne onaj deo koji se koristi 90% vremena) da iskusni programeri sa drugih platformi ne mogu relativno brzo da se ubace u iOS pricu.

Ja savetujem svakome da batali Objective-C i krene sa Swift-om, posto sve sto se moze u Objective-C moze da se uradi i u Swift ako ne i vise/lakse... Takodje Swift je novo mezimce a Objective-C ce u narednim godinama da se penzionise...

Ja se ne bih zaletao sa takvim preporukama. U sustini, za dobrog iOS programera potrebno je da se znaju i C (zbog nekoliko core frameworka) i Objective-C (u kome je napisana ogromna kolicina koda i koji zbog toga nece otici u penziju toliko brzo), a u poslednje vreme i Swift. Da li ce prvo da se uci Objective-C ili Swift zavisi od vise faktora. Jedan od faktora je npr. da li osoba vec poznaje jezik C. Ukoliko poznaje C, onda mu je najbrza tranzicija verovatno na Objective-C (trebace mu maksimalno 7 dana, ne racunajuci raznorazne patterne koji se koriste u jeziku, naravno). Ali kao sto rekoh, mnogo faktora je u igri, ono sto je bitno da ce svaki od ovih jezika da mu zatreba u nekom trenutku, tako da bi sve trebalo da ih nauci tokom vremena, jedino sto je proizvoljno je redosled ucenja :)
 
To je samo jedna finesa jezika, tesko da se na osnovu toga moze smatrati znacajno drugacijim od ostalih jezika. Sam Swift je pozajmio gomilu dobrih stvari iz raznih objektnih i funkcionalnih jezika, tako da se tesko moze reci da nudi nesto revolucinarno novo. Ljudi koji su imali iskustva sa OOP i funkcionalnim programiranjem se nece tesko prilagoditi ni Swiftu. :)
Swift ima gomilu stvari sto ostali nemaju, i vecina ne zna kako to da koristi ili se nikad ne sretne sa tim jer se retko pominje u online tutorial-ima i lekcijama.



To vec zavisi od definicije "osnovnog" i "solidnog". Moja definicija solidnog je znanje frameworka koje je dovoljno da programer moze da manje-vise samostalno razvija iOS aplikaciju. Dve godine iskustva je po mom misljenju dovoljno da za nekog kazes da je vec iskusan iOS developer (pod uslovom da je ranije vec znao dobro da programira u nekom drugom jeziku). Ako si poslodavac onda verovatno znas da se na nasem trzistu neko sa 2 godine iskustva vec tretira kao senior iOS developer, s obzirom na nedostatak kadrova :) A da se ne lazemo, framework nije toliko veliki (bar ne onaj deo koji se koristi 90% vremena) da iskusni programeri sa drugih platformi ne mogu relativno brzo da se ubace u iOS pricu.
Ja kao poslodavac gledam znanje, a ne godine iskustva. Senior iOS developera tesko da mozes naci a da je radio tek 2 godine... Mozda neki intermediate, senior tesko... Pa nije bas 90% vremena da se koristi manji deo framework-a, ali se jedno u 60% koristi 40% frameworka koji se lako nauci, a ostalo retko ko zna ko je poceo pre tipa 2 godine i onda se gubi dosta vremena na ucenje, jer te stvari nisu bas da kazem "pretty straighforward".



Ja se ne bih zaletao sa takvim preporukama. U sustini, za dobrog iOS programera potrebno je da se znaju i C (zbog nekoliko core frameworka) i Objective-C (u kome je napisana ogromna kolicina koda i koji zbog toga nece otici u penziju toliko brzo), a u poslednje vreme i Swift. Da li ce prvo da se uci Objective-C ili Swift zavisi od vise faktora. Jedan od faktora je npr. da li osoba vec poznaje jezik C. Ukoliko poznaje C, onda mu je najbrza tranzicija verovatno na Objective-C (trebace mu maksimalno 7 dana, ne racunajuci raznorazne patterne koji se koriste u jeziku, naravno). Ali kao sto rekoh, mnogo faktora je u igri, ono sto je bitno da ce svaki od ovih jezika da mu zatreba u nekom trenutku, tako da bi sve trebalo da ih nauci tokom vremena, jedino sto je proizvoljno je redosled ucenja :)
Ajde sada ti meni kao developeru i poslodavcu objasni zasto neko mora da zna C i Objective-C, a ne samo Swift. To je kao da kazes - da bi ucio PHP ili Javu nauci prvo C. Zasto? Zasto ne odmah poceti sa PHP ili Javom?
Zivo me zanima posto delis savet da mi objasnis zasto bas mora C i Objective C? :)
 
Ljudi vidim da se oboje razumete u iOS, svako na svoj nacin pa se nemojte raspravljati ko je "pametniji". :)
Upisao sam kurs, platio ceo iznos unapred.Sad nema nazad.Iskreno jedva cekam da pocne februar iako ima i u januaru besplatni uvodni kurs pa cu videti sta tacno predstavlja taj deo.
Nisam rekao da sam toliko pametan da odmah nakon kursa koji traje 5 meseci mogu da radim u nekoj firmi kao ozbiljan programer za ozbiljan novac.Bicu zadovoljan da krenem negde kao volonter i da ucim od drugih i da se usavrsavam.Nemam problem sa tim da prihvatim savet pametnijeg i iskusnijeg u bilo kojim sferama zivota.
Vezano za MacBookPro ili iMac, nisam ni mislio da kupim odmah sutra nego ako vidim da mi bas ide onda bih uzeo da ne gubim vreme time sto bih zakazivao kod njih da vezbam/radim "domaci".
 
Ajde sada ti meni kao developeru i poslodavcu objasni zasto neko mora da zna C i Objective-C, a ne samo Swift. To je kao da kazes - da bi ucio PHP ili Javu nauci prvo C. Zasto? Zasto ne odmah poceti sa PHP ili Javom?
Zivo me zanima posto delis savet da mi objasnis zasto bas mora C i Objective C? :)

Na to pitanje sam vec odgovorio ranije, ali evo da ponovim: kao iOS programer ces se susresti mnogo puta sa situacijom da moras da odrzavas/prosirujes postojeci codebase, a ne samo da radis nove projekte od nule. Projekti od nule su karakteristicni za startup firme ili za projekte kraceg veka (recimo do 6/12 meseci razvoja). S druge strane imas projekte koji se razvijaju godinama i kod kojih ne mozes da kazes sad cu da sednem i da napisem sve od nule. Razmisli samo koliko C/Objective-C koda postoji napisanog u raznim projektima (pre svega u enterprise projektima i frameworksima, posto su vecina aplikacija pisanih za appstore relativno male).

Posto se autor teme buni sto smo ovde zapoceli da raspravljamo na ovu temu, predlazem da mi pises na PM ako zelis da jos raspravljamo oko ovih stvari, cisto da ne spamujemo i da mu ne unistavamo temu koju je zapoceo. :)
 
Ipak je trebalo da nastavite raspravu ovde. Ovo je svakako forum. A kroz vasu diskusiju moze dosta toga da se nauci. Nista nam ne znaci do kakvog ste zakljucka dosli ako ce on ostati u vasim privatnim porukama :d
 
Ljudi vidim da se oboje razumete u iOS, svako na svoj nacin pa se nemojte raspravljati ko je "pametniji". :)
Ne raspravljamo ko je pametniji, vec samo zelim da razjasnim za buduce ljude koji uce iOS, da ne bude konfuzije i zablude oko toga sta treba da se uci.

Na to pitanje sam vec odgovorio ranije, ali evo da ponovim: kao iOS programer ces se susresti mnogo puta sa situacijom da moras da odrzavas/prosirujes postojeci codebase, a ne samo da radis nove projekte od nule. Projekti od nule su karakteristicni za startup firme ili za projekte kraceg veka (recimo do 6/12 meseci razvoja).
Prva stvar koja se odnosi na ovaj odgovor, ali redje ces se susreti sa tim da odrzavas/prosiris postojeci app kod novog klijenta, u 90% slucajeva (da ne kazem 99%) klijenti traze novi app da se pravi, ili u jako maloj manjini da se postojeci redo zato sto uzasno radi.

S druge strane imas projekte koji se razvijaju godinama i kod kojih ne mozes da kazes sad cu da sednem i da napisem sve od nule. Razmisli samo koliko C/Objective-C koda postoji napisanog u raznim projektima (pre svega u enterprise projektima i frameworksima, posto su vecina aplikacija pisanih za appstore relativno male).
Druga stvar - ako naucis Swift razumeces veci deo Objective-C koda, ili bar otprilike sta radi, ali ono sto je najbitnije je Bridging Header. Dakle nema potrebe da se sve pise od nule, vec se iskoristi Bridging Header i mozes nastaviti sa projektom u Swiftu bez problema koristeci postojeci Objective-C kod bez da znas Objective-C. Jedino sto bi bilo dobro da znas je sta konkretne klase koje je prethodni programer pisao rade, ali za to sluzi dokumentacija, a nekad je dovoljno i sam naming convention da se to skonta. Dakle sa Bridging Header bez problema nadogradjujes postojeci kod, a isto tako mozes koristiti i open source biblioteke pisane za Objective-C u iOS/OS X projektima. Treba ravno 1 minut ako ne i manje da se napravi isti kada razumes kako funkcionise. Vise o tome na https://developer.apple.com/library...Conceptual/BuildingCocoaApps/MixandMatch.html

Zanimljivo mi je da svi Objective-C developeri koji nisu savladali Swift se uhvate ovoga bez da su pogledali Apple-ovu dokumentaciju ili bar Google-ali na netu...

Posto se autor teme buni sto smo ovde zapoceli da raspravljamo na ovu temu, predlazem da mi pises na PM ako zelis da jos raspravljamo oko ovih stvari, cisto da ne spamujemo i da mu ne unistavamo temu koju je zapoceo. :)
Mislim da je jako relevantno sa temom, i iskreno ne bih voleo da se buduci potencijalni programeri dovode u zabludu i uce bespotrebno jos jedan programski jezik.

Ipak je trebalo da nastavite raspravu ovde. Ovo je svakako forum. A kroz vasu diskusiju moze dosta toga da se nauci. Nista nam ne znaci do kakvog ste zakljucka dosli ako ce on ostati u vasim privatnim porukama :d
Bio sam zauzet pa nisam mogao odmah da odgovorim na temu, ali kao sto vidis gore delimo isto misljenje. :)
 
Poslednja izmena:
Citam temu od pocetka pa sam mislio i ja da se ukljucim. Interesuje me da probam ovu stvar oko Swifta, cisto da vidim kako ce mi ici, jer sam zaposlen pa bih se ovim bavio u slobodno vreme, kojeg imam dosta. E sad, podrzavam autora teme za pohadjanje kursa, s tim sto ja ne bih mogao da slusam predavanja i ne bih da se upustam u toliku investiciju jer nisam siguran dal sam na pravom putu. Planiram da probam sve to online kad ste vec spomenuli da moze. Dalje, vidim da je clan n1tr0 dosta ozbiljan i da se razume u celu tematiku, pa ako mozes kad budes imao viska vremena da ovde postavis kojim koracima da jurimo po netu i kojim redom da se savladjuje gradivo. Ukoliko imas konkretne linkove, jos bolje. Ja sam apsolutni pocetnik sto se tice programiranja. U srednjoj skoli sam radio malo C, ali to je bilo odavno tako da se i ne racuna. Imam laptop pod win10-kom, tako da bi mi trebao savet i sta treba da se instalira da bi probe radio pod win-om. Hvala unapred. I srecno svima koji krenu ili planiraju ;) A vama seniorima puno uspeha u daljem radu!
 
Da li se secas icega pre iz C-a (ili bilo kog drugog programskog jezika) ili same logike? Da li razumes npr. kako funkcionisu if/while i slicno?
 
Krenes npr. sa:
http://www.raywenderlich.com/114148...-with-swift-tutorial-1-welcome-to-programming (ima vise delova)

Pa krenes opet ispocetka sa ovim:
http://www.raywenderlich.com/115253/swift-2-tutorial-a-quick-start (ima vise delova)

Posle toga pocnes sa ovim sjajnim kursom :)
https://www.youtube.com/watch?v=GOEPVM5OzJk&list=PLy7oRd3ashWodnpf8rjfYEkTgwbOEsKfU

edit: za OS X na PC-u, imas varijantu da instaliras sam OS X na PC ako imas masinu/komponente koje su podrzane (aka Hackintosh), a druga varijanta je da dignes virtuelnu masinu koja vrti OS X:
https://blog.udemy.com/xcode-on-windows/

Za drugu varijantu minimum da imas 8GB RAM, ako ne i malo vise, i neki ok CPU.
 
Poslednja izmena:
Prva stvar koja se odnosi na ovaj odgovor, ali redje ces se susreti sa tim da odrzavas/prosiris postojeci app kod novog klijenta, u 90% slucajeva (da ne kazem 99%) klijenti traze novi app da se pravi, ili u jako maloj manjini da se postojeci redo zato sto uzasno radi.

Ok, sada razumem iz koje perspektive pricas. :) Ti zapravo stvari posmatras gledajuci isljucivo iz perspektive firme koja se bavi outsourcingom za razne klijente ciji projekti ne zahtevaju visegodisnju podrsku i odrzavanje, nego su vise tipa odradis projekat za 3-6 meseci i prelazis na drugi (uz eventualne sitnije izmene na starom projektu u buducnosti). Ja sam radio i u firmi poput tvoje, ali sam radio i u firmi koja razvija sopstvene enterprise proizvode i cini mi se da u tom pogledu imam siru sliku od tebe s cim se sve susrece jedan iOS developer. U firmi koja se bavi iskljucivo outsourcingom nekih kratkorocnih i srednjorocnih projekata (do 12 meseci razvoja) tvoja logika je ispravna - osim Swifta gotovo da ti nista drugo nece ni trebati. Greska u tvojoj logici je pretpostavka da se sve firme bave tim modelom poslovanja.

Postoji dosta firmi koje razvijaju svoj proizvod ili razvijaju samo jedan veliki (ili nekoliko velikih) projekat za racun klijenta. Poznavanje samo Swifta u takvom okruzenju ce te onemogucavati da radis svoj posao.

Druga stvar - ako naucis Swift razumeces veci deo Objective-C koda, ili bar otprilike sta radi, ali ono sto je najbitnije je Bridging Header. Dakle nema potrebe da se sve pise od nule, vec se iskoristi Bridging Header i mozes nastaviti sa projektom u Swiftu bez problema koristeci postojeci Objective-C kod bez da znas Objective-C. Jedino sto bi bilo dobro da znas je sta konkretne klase koje je prethodni programer pisao rade, ali za to sluzi dokumentacija, a nekad je dovoljno i sam naming convention da se to skonta. Dakle sa Bridging Header bez problema nadogradjujes postojeci kod, a isto tako mozes koristiti i open source biblioteke pisane za Objective-C u iOS/OS X projektima. Treba ravno 1 minut ako ne i manje da se napravi isti kada razumes kako funkcionise. Vise o tome na https://developer.apple.com/library...Conceptual/BuildingCocoaApps/MixandMatch.html

Zanimljivo mi je da svi Objective-C developeri koji nisu savladali Swift se uhvate ovoga bez da su pogledali Apple-ovu dokumentaciju ili bar Google-ali na netu...

Ovo gore je opet napisano iz perspektive relativno malog projekta. Kao prvo, neces ti kao programer uopste biti u poziciji da donosis odluku da li ces u projektu koji je razvijan godinama uopste smeti da koristis Swift kod. Drugo, u velikom sistemu se tesko snaci i kad odlicno poznajes Objective-C, a da ne pricamo o drugoj varijanti kad ga uopste ne znas. Arhitektura pojedinih podsistema je cesto ogledalo patterna koji su opsteprihvaceni kao dobra praksa u nekom jeziku. Ako ne poznajes te patterne tesko ces razumeti i zasto je odredjeni podsistem napravljen bas tako kako je napravljen.

Na primer jedan projekat na kome sam radio i koji je razvijan duze od tri godine ukljucuje integraciju C koda (uglavnom koriscenje core frameworka), C++ koda (integracija Ogre3D engine-a i custom engine-a za fiziku) i Objective-C koda. Codebase projekta je ogroman, na njemu je konstantno radila grupa ljudi vise od tri godine. Zivo me zanima kako bi neko ko zna samo Swift uopste bio primljen da radi na takvom projektu :)

Mogu da navedem jos gomilu primera sto iz licnog iskustva, sto iz iskustva drugih iOS developera koji su imali priliku da rade slicne projekte, ali mislim da je poenta koju zelim da kazem jasna.

Ukratko: ako je ambicija koju imate u iOS developmentu ta da radite na projektima sa relativno kracim ciklusom razvoja (uglavnom outsorcing projekti sa ciklusom razvoja do godinu dana) onda vam nista osim Swifta verovatno nece ni trebati. Ukoliko zelite da budete sposobni da radite i na projektima koji iza sebe imaju veliki codebase, onda cete morati da znate i Objective-C.
 
Da li se secas icega pre iz C-a (ili bilo kog drugog programskog jezika) ili same logike? Da li razumes npr. kako funkcionisu if/while i slicno?

Hmmm nesto vrlo malo, skoro pa zanemarljivo. Znam po kom principu radi, linije koda, naredbe, funkcije i slicno. Bacicu pogled na ovo sto si napisao, hvala puno. A sto se tice OS X, mislim da ce to tesko biti izvodljivo. Nemam dovoljno jaku masinu za pokretanje, CPU jeste i5, ali za sada imam 4GB rama. Ako mi se sve ovo svidi, bice neka nadogradnja verovatno. Pozdrav.

EDIT: A ukoliko bih se odlucio za kupovinu nekog Macbook-a(verovatno polovnog), koja je konfiguracija dovoljna za fluidan rad svega ovoga?
 
Poslednja izmena:
Jeftinije resenje bi ti bio neki Mac Mini polovni :)
U svakom slucaju da je dual core (Intel verzija pa na dalje), samo sto 2006. modeli pa do neke 2008. nemaju bas neku bateriju pa je opet Mac Mini bolja opcija onda, i kao sto uvek kazem 8GB RAM jer 4GB zna biti problem. U svakom slucaju slobodno mi baci PP sa nekim budzetom ako se odlucis pa cu da pogledam na kupujem prodajem kada stignem da li ti se nesto uklapa u budzet.
 
Ok, sada razumem iz koje perspektive pricas. :) Ti zapravo stvari posmatras gledajuci isljucivo iz perspektive firme koja se bavi outsourcingom za razne klijente ciji projekti ne zahtevaju visegodisnju podrsku i odrzavanje, nego su vise tipa odradis projekat za 3-6 meseci i prelazis na drugi (uz eventualne sitnije izmene na starom projektu u buducnosti).
I da i ne...

Ja sam radio i u firmi poput tvoje, ali sam radio i u firmi koja razvija sopstvene enterprise proizvode i cini mi se da u tom pogledu imam siru sliku od tebe s cim se sve susrece jedan iOS developer. U firmi koja se bavi iskljucivo outsourcingom nekih kratkorocnih i srednjorocnih projekata (do 12 meseci razvoja) tvoja logika je ispravna - osim Swifta gotovo da ti nista drugo nece ni trebati. Greska u tvojoj logici je pretpostavka da se sve firme bave tim modelom poslovanja.
Ne razumem sta te sprecava da se enterprise razvija u Swift - to vec gomila firmi radi, samo sto je u Srbiji svim poslodavcima zao da gube vreme da se uci Swift, a Objective C developeri su ograniceni sto se tice Swift-a i drze se kao pijani plota ne moze Swift sta moze ObjC, kad je ono zapravo suprotno :)
Takodje ako postoji enterprise resenje koje je razvijano u ObjC moze se nastaviti nadogradjivati u Swift bez problema (okacio sam ti vec link u prethodnom postu) kako se to radi. Ako se ne moze izvesti znaci da je neko radio neku spaghetti code arhitekturu i takve projekte ni jedna ozbiljna firma nece prihvatiti da odrzava ili nadogradjuje vec ce ponuditi samo da rewrite-uje takav app.

Postoji dosta firmi koje razvijaju svoj proizvod ili razvijaju samo jedan veliki (ili nekoliko velikih) projekat za racun klijenta. Poznavanje samo Swifta u takvom okruzenju ce te onemogucavati da radis svoj posao.
Opet kazem - istina je to kod vecine nasih firmi, ali na zapadu se to promenilo...

E sad reci ti meni, posto enterprise projekti traju i traju - da li ima logike poceti pisati enterprise projekat u programskom jeziku koji ce Apple da ugasi u narednih par godina? Nigde nisu konkretno jos naveli datum, ali spekulise se 4-7 godina. Kazes za manje od 1 godine da je kratak projekat. Neka enterprise projekat traje godinama tipa 5+, kakva je logika da ga pises u ObjC i onda nakon 4 godina da ga trebas rewrite citavog u Swift? To su na zapadu shvatili, ali kod nas jos nisu... Da ne govorimo o tome koliko je Swift vise optimizovan za gomilu stvari i samim tim brzi... Ovde imas neke stvari objasnjenje - http://www.infoworld.com/article/29...ive-c-10-reasons-the-future-favors-swift.html
A to je napisano za Swift 1.2. Swift 2.1 je jos optimizovaniji i doneo je gomilu novih stvari u odnosu na 1.2

Ovo gore je opet napisano iz perspektive relativno malog projekta.
Ja sam objasnio u odgovorima iznad da nije tako.

Kao prvo, neces ti kao programer uopste biti u poziciji da donosis odluku da li ces u projektu koji je razvijan godinama uopste smeti da koristis Swift kod.
Ovo si u pravu, ali doci ce poslodavcima i project managerima / product owner;scrum master / CTO / w/e u Srbiji iz dupeta u glavu, pa ces videti sta ce biti oglasa za Swift developera za godinu/dve.

Drugo, u velikom sistemu se tesko snaci i kad odlicno poznajes Objective-C, a da ne pricamo o drugoj varijanti kad ga uopste ne znas.
Izvini ali ovo apsolutno nema veze sa ObjC kao programskim jezikom vec dokumentacijom koda i naming konvencijama. Svako ko sam framework i Swift ce lako da cita i ObjC koji je lepo napisan. Zao mi je, ali tako je. To je drugo sto opet u nekim nasim firmama je praksa, izgubices 10% vremena za dokumentaciju (sto ce te inace i kasnije kostati jer ti neces se setiti sta si radio, ili "sta je Pera hteo da kaze", pa na kraju izgubis 50% vise jer je nisi napisao), to na zapadu ne funkcionise bas tako. Ne znam da li si saradjivao sa US dev firmama koje rade premium development - to postoje standardi kako se radi dokumentacija, sve je lepo citko i pregledno, cak i u ObjC koji je jako ruzan jezik.

Arhitektura pojedinih podsistema je cesto ogledalo patterna koji su opsteprihvaceni kao dobra praksa u nekom jeziku. Ako ne poznajes te patterne tesko ces razumeti i zasto je odredjeni podsistem napravljen bas tako kako je napravljen.
Izvini, ali ako si se ikad bavio project management-om onda znas da su patterni opste primenljivi na sve OO jezike... Dakle razumevanje paterna nema blage veze sa ObjC vec sa poznavanjem istih.

Na primer jedan projekat na kome sam radio i koji je razvijan duze od tri godine ukljucuje integraciju C koda (uglavnom koriscenje core frameworka), C++ koda (integracija Ogre3D engine-a i custom engine-a za fiziku) i Objective-C koda. Codebase projekta je ogroman, na njemu je konstantno radila grupa ljudi vise od tri godine. Zivo me zanima kako bi neko ko zna samo Swift uopste bio primljen da radi na takvom projektu :)
To je vec jako specifican projekat koji je bio unapred definisan. Necu sada da zalazim koliko je C i C++ bio potreban, ali ovde pricamo Swift vs ObjC. Dakle da bi ti koristio C i ObjC kod imao si neke wrappere za ObjC. Taj isti wrapper si mogao da koristis u Swift-u ako napises 3 linije koda u Bridging Headeru. Opet, onaj isti link sto sam ti dao. To je drugo ako vec imas gomilu ljudi koja radi ObjC da je glupo da ubacis nekoga da radi sa njima u Swift (iako je i to lako izvodljivo uz malo znanja).

Mogu da navedem jos gomilu primera sto iz licnog iskustva, sto iz iskustva drugih iOS developera koji su imali priliku da rade slicne projekte, ali mislim da je poenta koju zelim da kazem jasna.
Ja imam jedno pitanje - da li su ti iOS developeri isto mozda iz Srbije/Bosne i regiona?

Ukratko: ako je ambicija koju imate u iOS developmentu ta da radite na projektima sa relativno kracim ciklusom razvoja (uglavnom outsorcing projekti sa ciklusom razvoja do godinu dana) onda vam nista osim Swifta verovatno nece ni trebati. Ukoliko zelite da budete sposobni da radite i na projektima koji iza sebe imaju veliki codebase, onda cete morati da znate i Objective-C.
Opet kazem glupost... Svi tvoji zakljucci su bazirani na logici - moras da znas ObjC jer se to koristilo do sada ili zato sto postojeci projekat to koristi. Dakle - i postojeci projekat moze da se nastavi u Swift i svaki novi veliki projekat koji se pocinje se moze pisati u Swift, jer ne postoji apsolutno nista sto ObjC ima a da Swift nema.

Poslednje pitanje da bi dali konacan odgovor na ovu diskusiju - da li moze enterprise projekat da se napise u Swift i da ce uz to biti napisano manje koda, biti citljiviji i bolje raditi? Eto, samo to odgovoris i resili smo misteriju...
 
Jeftinije resenje bi ti bio neki Mac Mini polovni :)
U svakom slucaju da je dual core (Intel verzija pa na dalje), samo sto 2006. modeli pa do neke 2008. nemaju bas neku bateriju pa je opet Mac Mini bolja opcija onda, i kao sto uvek kazem 8GB RAM jer 4GB zna biti problem. U svakom slucaju slobodno mi baci PP sa nekim budzetom ako se odlucis pa cu da pogledam na kupujem prodajem kada stignem da li ti se nesto uklapa u budzet.

Hvala jos jednom. Da malo prostudiram tematku, pa ukoliko budem imao neke nedoumice, javljam se. Pozdrav
 
Ne znam da li si saradjivao sa US dev firmama koje rade premium development - to postoje standardi kako se radi dokumentacija, sve je lepo citko i pregledno, cak i u ObjC koji je jako ruzan jezik.
Ako nije problem, zamolio bih te da ovo potkrepis nekom literaturom i linkovima. Licno nisam imao priliku da vidim, a verujem da bi i druge clanove zanimalo.

Kazes, ObjC ruzan, a meni totalno suprotno, swift ogavstina nevidjena. :) Ali sta da se radi, Epl diktira uslove. Imaju svoje razloge, a to je neka druga tema.



@Bobajakuda

U tvojoj situaciji, mislim da bi ti vise odgovarao swift. Sto se masine tice, sve zavisi od toga sta zelis sa buducim znanjem. Za razvijanje sopstvenih ideja i aplikacija je neophodan Mac i bar jedan uredjaj sto je min 1500e u startu. Za ucenje i rad za neku domacu firmu moze da prodje i hakintos sa simulatorima, sto je najjeftinije resenje.
 
Ako nije problem, zamolio bih te da ovo potkrepis nekom literaturom i linkovima. Licno nisam imao priliku da vidim, a verujem da bi i druge clanove zanimalo.

Kazes, ObjC ruzan, a meni totalno suprotno, swift ogavstina nevidjena. :) Ali sta da se radi, Epl diktira uslove. Imaju svoje razloge, a to je neka druga tema.
Pricao sam o internim firminim standardima, a to naravno ne moze tek tako da se deli (pogotovo sto nije od moje firme).

Aha, a tebi je lepo kada imas milion [[[ ]]] umesto kao u svim normalnim objektno orjentisanim jezicima prosto tacku...

Da, Apple ima razloge, i mogao bi stvarno da procitas link koji sam ostavio gore - jedan od bitnih je sto ObjC zavisi od C-a poprilicno... Inace Swift je od pre neki dan Open Source.
 
@Bobajakuda

U tvojoj situaciji, mislim da bi ti vise odgovarao swift. Sto se masine tice, sve zavisi od toga sta zelis sa buducim znanjem. Za razvijanje sopstvenih ideja i aplikacija je neophodan Mac i bar jedan uredjaj sto je min 1500e u startu. Za ucenje i rad za neku domacu firmu moze da prodje i hakintos sa simulatorima, sto je najjeftinije resenje.

Uplanu mi je da zavrsim kurs i naravno sto bolje savladam Swift.Postoji opcija da koristim njihove masine u dogovorene vreme tako da cu ici tom stazom a za kasnije cu videti sta i kako.

n1tr0 ima firmu tako da cu verovatno kod njega volontirati :p
 
Poslednja izmena:
Ne razumem sta te sprecava da se enterprise razvija u Swift - to vec gomila firmi radi, samo sto je u Srbiji svim poslodavcima zao da gube vreme da se uci Swift, a Objective C developeri su ograniceni sto se tice Swift-a i drze se kao pijani plota ne moze Swift sta moze ObjC, kad je ono zapravo suprotno :)
Takodje ako postoji enterprise resenje koje je razvijano u ObjC moze se nastaviti nadogradjivati u Swift bez problema (okacio sam ti vec link u prethodnom postu) kako se to radi. Ako se ne moze izvesti znaci da je neko radio neku spaghetti code arhitekturu i takve projekte ni jedna ozbiljna firma nece prihvatiti da odrzava ili nadogradjuje vec ce ponuditi samo da rewrite-uje takav app.

Ne sprecava te nista, ako pises projekat od nule. Problem je sto je u enterprise developmentu mnogo veca sansa da ces raditi na projektu koji se vec razvija godinama nego da ces imati sansu da ga radis od nule. Ovo nema veze sa Srbijom nego je tako bilo gde u svetu, jer je u pitanju novac, a kada je rec o novcu zar mislis da smo mi stedljiviji od zapadnjaka? Firme koje su potrosile stotine hiljada ili milione evra u razvoj enterprise softvera nisu lude da sve to odbace i prepisuju kod od nule u nekom drugom jeziku samo zato sto je to nekom fetis. Takodje neko nasilno forsiranje Swifta u takav projekat apsolutno nema nikakvog smisla. Ako je vec 80% koda napisano u Objective-C jeziku, a ostalih 20% u recimo C ili C++ jeziku, zasto od codebase-a praviti jos veceg frankestajna uvodeci dodatni jezik u pricu? Da ne pricamo da to ne moze uraditi neko ko vec ne poznaje Objective-C. Zasto ne moze? Zato sto je sistem ogroman i kompleksan, a takvi sistemi su teski za razumevanje cak i kad poznajes jezik. Zato sto zivimo u realnom svetu gde je tako nesto skupo uraditi, potencijalno moze uvesti dodatne bagove. Zato sto u teoriji nesto izgleda na jedan nacin a u praksi potpuno drugacije.

E sad reci ti meni, posto enterprise projekti traju i traju - da li ima logike poceti pisati enterprise projekat u programskom jeziku koji ce Apple da ugasi u narednih par godina? Nigde nisu konkretno jos naveli datum, ali spekulise se 4-7 godina.

Nema smisla nove projekte pisati u Objective-C jeziku. Ja to nisam ni tvrdio. Ne znam da li si zaboravio, ali nasa diskusija se vodi o tome da li treba uciti samo Swift (tvoja tvrdnja) ili treba uciti i Swift i Objective-C (moja tvrdnja). Objective-C ce ostati tu mnogo duze nego sto mislis. Razlog tome je upravo gomila postojeceg koda. Niko nije lud da baca novac na pisanje novog koda ako vec ima softver koji mu obavlja posao, a ciji razvoj je papreno platio prethodnih godina.

Cak i da preptostavimo da Objective-C nece postojati za 5 godina, meni je tvoj savet ljudima da ne uce Objective-C neracionalan. Oni ce se vrlo verovatno u narednih 5 godina dosta susretati s tim jezikom (osim u slucaju da samo rade manje outsourcing projekte od nule) i poznavanje istog ce im znacajno olaksavati posao. Vreme koje im je potrebno da nauce Objective-C je maksimalno mesec dana. To je jedan vrlo jednostavan objektno orijentisani jezik, ekstenzija C-a sa pomalo cudnom sintaksom. Svako ko zna C i bilo koji drugi OO jezik zapravo nema mnogo sta ni da uci, pa tih mesec dana je zapravo prilicno pesimisticna prognoza. E sad, ako ti mislis da je maksimalno 30 dana ucenja necega mnogo u odnosu na to da ces od toga imati mnogo koristi narednih 5 godina, onda ja vise nemam sta da dodam po tom pitanju.

Kazes za manje od 1 godine da je kratak projekat. Neka enterprise projekat traje godinama tipa 5+, kakva je logika da ga pises u ObjC i onda nakon 4 godina da ga trebas rewrite citavog u Swift?

Vrlo jednostavno, kao sto sam gore objasnio neces ih nikada prebacivati u Swift jer je skupo. Nove projekte ces pisati u Swiftu, stare ces odrzavati u Objective-C-u sve do kraja zivotnog veka aplikacije. Ako su Cobol biznis aplikacije napisane pre par decenija i dalje zive jer rade posao i izdrzale su test vremena, pa kompanije nisu htele da bacaju novac da prepisuju svoje sisteme u neki jezik koji je vise fensi, ne vidim zasto bi bacale novac prepisujuci Objective-C kod u Swift ako ne moraju. Kompaniju ne zanima privlacnost jezika, kompaniju zanima upotrebna vrednost softvera.


To su na zapadu shvatili, ali kod nas jos nisu... Da ne govorimo o tome koliko je Swift vise optimizovan za gomilu stvari i samim tim brzi... Ovde imas neke stvari objasnjenje - http://www.infoworld.com/article/29...ive-c-10-reasons-the-future-favors-swift.html
A to je napisano za Swift 1.2. Swift 2.1 je jos optimizovaniji i doneo je gomilu novih stvari u odnosu na 1.2

Opet mi se cini da vodis pogresnu diskusiju. Mi ne raspravljamo o tome da li je Objective-C bolji od Swifta. Mi raspravljamo da li je bolje uciti samo Swift ili je bolje nauciti oba jezika ako zelis da budes ozbiljan iOS developer. Ja uopste ne tvrdim da je Objective-C bolji od Swifta (a ni obrnuto). Nemam osecanja prema jezicima. Oni su samo alat. Koristis onaj koji ti u datom momentu najbolje odradjuje posao.

Ovo si u pravu, ali doci ce poslodavcima i project managerima / product owner;scrum master / CTO / w/e u Srbiji iz dupeta u glavu, pa ces videti sta ce biti oglasa za Swift developera za godinu/dve.

Mislim da je sasvim jasno da ce potraznja za Swift programerima biti sve veca i veca, ali to opet nije vezano za Srbiju nego je to globalni trend. Ne vidim cemu ogorcenje prema poslodavcima kod nas, pa oni samo igraju kako im trziste diktira. Svima je jasno da je u Swiftu buducnost sto se iOS developmenta tice, ali nece poslodavac na silu da forsira Swift ako mu za vecinu projekata jos uvek treba Objective-C.


Izvini ali ovo apsolutno nema veze sa ObjC kao programskim jezikom vec dokumentacijom koda i naming konvencijama. Svako ko sam framework i Swift ce lako da cita i ObjC koji je lepo napisan. Zao mi je, ali tako je. To je drugo sto opet u nekim nasim firmama je praksa, izgubices 10% vremena za dokumentaciju (sto ce te inace i kasnije kostati jer ti neces se setiti sta si radio, ili "sta je Pera hteo da kaze", pa na kraju izgubis 50% vise jer je nisi napisao), to na zapadu ne funkcionise bas tako. Ne znam da li si saradjivao sa US dev firmama koje rade premium development - to postoje standardi kako se radi dokumentacija, sve je lepo citko i pregledno, cak i u ObjC koji je jako ruzan jezik.

E ovde si me dobro nasmejao, ovo zvuci kao iz nekog udzbenika sa fakulteta :) Bavim se programiranjem jako dugo i mislim da jos uvek nisam radio na aplikaciji koja je velika a dobro dokumentovana (i da, radio sam uglavnom u stranim firmama, tako da to nema veze sa Srbijom). Kolega sa posla je skoro naleteo na oglas Blizzard Entertainment-a gde im je jedan od "requirementa" za poziciju programera sposobnost snalazenja u ogromnom codebase-u nedokumentovanog koda :)

Izvini, ali ako si se ikad bavio project management-om onda znas da su patterni opste primenljivi na sve OO jezike... Dakle razumevanje paterna nema blage veze sa ObjC vec sa poznavanjem istih.

Pomesao si opste OO patterne i patterne i idiome koji su karakteristicni za odredjeni programski jezik. Navescu ti konkretan primer bas iz Objective-C jezika. Postoji pattern koji se zove "associative storage" pomocu koga mozes da nekoj klasi koristeci kategorije pridruzis i nove "member varijable", a ne samo nove metode. Ovaj pattern nije opsti OO pattern nego je usko vezan za Objective-C, a poznavanje istog i njegova pametna (i ispravna) upotreba ti omogucava neka arhitekturalna resenja koja bi izgledala potpuno drugacije ako ne bi koristio isti.

Taj isti wrapper si mogao da koristis u Swift-u ako napises 3 linije koda u Bridging Headeru. Opet, onaj isti link sto sam ti dao.

Naravno da nisi mogao, jer u to vreme Swift nije ni postojao. Dakle ponovo ista prica - projekat je zapoceo mnogo pre Swifta i toliko je narastao da je apsolutno nebulozno i razmisljati o portovanju istog na Swift (Zbog cega? Novca naravno.)

Poslednje pitanje da bi dali konacan odgovor na ovu diskusiju - da li moze enterprise projekat da se napise u Swift i da ce uz to biti napisano manje koda, biti citljiviji i bolje raditi? Eto, samo to odgovoris i resili smo misteriju...

1) Da li moze da se napise? Naravno da moze da se napise u Swiftu. Vec sam rekao da bi svi novi projekti trebalo da se rade u istom.

2) Da li ce biti napisano uz manje koda? Verovatno, s tim sto je pitanje besmisleno. Objective-C sa razlogom ima sintaksu kakvu ima (duge kobasice u nazivima metoda, sto uz neke druge konstrukte koje poseduje dovodi i do pisanja vise koda nego u klasicnim jezicima). Filozofija kojom su se vodili prilikom pravljenja jezika je ta da programeri mnogo vise vremena provode citajuci source code, a manje vremena pisuci isti. Iz tog razloga je za autore jezika bilo znacajnije da jezik bude deskriptivan kako bi bio nedvosmisleniji i laksi za citanje. Vreme u koje je jezik nastao je vreme u kome nisi imao intellisense i slicne alatke (jer su hardverski resursi bili ograniceni), pa je bilo veoma prakticno da u samom pozivu metode kao deo njenog potpisa imas tacne nazive parametara. Npr. poredeci C/C++ i Objective-C pozive metoda:

obj.getCell(2,3);
[obj getCellWithSection:2 index:3];

ocigledno je da je druga varijanta razumljivija za citanje.
Ovo je u novijim jezicima reseno pomocu named parametara, naravno. Ovo sam samo naveo kao ilustraciju da objasnim vec pomenutu filozofiju kojom su se vodili pre 30 i kusur godina kada su jezik pravili.

3) Da li ce bolje raditi? To zavisi iskljucivo od onog ko kod pise, a ne od jezika koji je koristen.



Odgovori sad ti meni, ali iskreno, na sledece pitanje: koliko je velik najveci projekat na kome si radio?

Zasto te ovo pitam? Zato sto na osnovu izjava:

1) o tome kako je vrlo jednostavno veliki projekat prilagoditi da se dalje razvija u Swiftu
2) o tome kako ozbiljne firme na velikim aplikacijama pisu dokumentaciju pod konac (dokumentaciju detaljno uglavnom pise samo onaj ko mora - a to su firme koje prave middleware, jer od kvaliteta dokumentacije public API-ja najcesce zavisi i uspesnost njihovog projekta)

zaista ne mogu da verujem da si radio na nekom bas velikom projektu ili u nekoj velikoj firmi. To samo po sebi nije nista lose, niti umanjuje tvoje programersko umece (manje firme i manji projekti imaju svoje prednosti), ali ne bi trebalo da komentarises kako je nesto lako uraditi ako se sa tim nisi susreo :)
Ovo ti kazem zbog toga sto kad radis na velikim projektima gotovo nista nije jednostavno i moras tri puta da meris pre nego sto doneses odluku da nesto menjas. Veliki projekti imaju tendenciju da prerastaju u zver koju je jako tesko ukrotiti. Ovo nije vezano za Srbiju, ovo je globalni fenomen. Super zvuce fraze iz raznih knjiga poput Code Complete, Refactoring i mnogih drugih kako pridrzavajuci se dobrih praksi projekat nece zavrsiti u problemima. Realnost je malo drugacija. Pridrzavajuci se dobrih praksi projekat ce moci da se zavrsi (bez tih praksi bi jos negde usput propao), ali problema ce da bude u izobilju i to je manje vise neizbezno kada na projektu radi mnogo ljudi (i to izuzetno kvalitetnih ljudi) i kada se on dovoljno dugo razvija :)
 
Ne sprecava te nista, ako pises projekat od nule. Problem je sto je u enterprise developmentu mnogo veca sansa da ces raditi na projektu koji se vec razvija godinama nego da ces imati sansu da ga radis od nule.
Opet me ne citas - ja nisam rekao rewrite, ja sam rekao da se nastavi u Swift, a ne da se pise od 0 u Swift, a sto se tice rewrite da ce se trebati raditi jednog dana (kada se bude gasio ObjC) i da ce onda biti manje posla, jer je prethodnih godina kod pisan u Swift.

Ovo nema veze sa Srbijom nego je tako bilo gde u svetu, jer je u pitanju novac, a kada je rec o novcu zar mislis da smo mi stedljiviji od zapadnjaka?
Nismo, ali nas narod uglavnom odbije da ulozi u nesto kako bi ga kasnije to isto manje kostalo, tako da u ovom slucaju izbegavas Swift i na kraju ces imati vece probleme nego da si odmah presao na isti kada je trebalo.

Firme koje su potrosile stotine hiljada ili milione evra u razvoj enterprise softvera nisu lude da sve to odbace i prepisuju kod od nule u nekom drugom jeziku samo zato sto je to nekom fetis. Takodje neko nasilno forsiranje Swifta u takav projekat apsolutno nema nikakvog smisla. Ako je vec 80% koda napisano u Objective-C jeziku, a ostalih 20% u recimo C ili C++ jeziku, zasto od codebase-a praviti jos veceg frankestajna uvodeci dodatni jezik u pricu? Da ne pricamo da to ne moze uraditi neko ko vec ne poznaje Objective-C. Zasto ne moze? Zato sto je sistem ogroman i kompleksan, a takvi sistemi su teski za razumevanje cak i kad poznajes jezik. Zato sto zivimo u realnom svetu gde je tako nesto skupo uraditi, potencijalno moze uvesti dodatne bagove. Zato sto u teoriji nesto izgleda na jedan nacin a u praksi potpuno drugacije.
Opet kazem, ne radi se od nule. Sto se tice ogromnih i kompleksnih sistema i snalazenja u istima - opet kazem, to je vise problem nestrucnosti tih sto su u firmama bili iznad tebe jer nisu forsirali dokumentovanje istih. Zamisli da ti ode par developera i dodju novi, ili stari trebaju raditi na necem drugom. Koliko vremena ces izgubiti dok ti drugi se snadju u tom ogromnom kodu koji nije dokumentovan? Takodje zar nemate negde specifikovanu arhitekturu samog sistema. Isto tako, ako si radio na ogromnim projektima onda znas da se posle par godina i sam mozes pogubiti na istom, jer kada pocnes raditi na necemu sto si radio pre 2 godine a nisi dokumentovao trebas izgubiti gomilu vremena dok pohvatas sta i kako. Kao sto rekoh, i reci cu jos milion puta (a ostali koji se bave mojim poslom ce potvrditi) - nedokumentovani projekti sa nespecifikovanom arhitekturom su odlika loseg vodjenja istih.

Nema smisla nove projekte pisati u Objective-C jeziku. Ja to nisam ni tvrdio. Ne znam da li si zaboravio, ali nasa diskusija se vodi o tome da li treba uciti samo Swift (tvoja tvrdnja) ili treba uciti i Swift i Objective-C (moja tvrdnja). Objective-C ce ostati tu mnogo duze nego sto mislis. Razlog tome je upravo gomila postojeceg koda. Niko nije lud da baca novac na pisanje novog koda ako vec ima softver koji mu obavlja posao, a ciji razvoj je papreno platio prethodnih godina.
Koliko ce ObjC ostati ne zavisi od tebe, neke srpske (ili ne daj boze strane) firme, vec iskljucivo od Apple. Onog momenta kada vise ne bude moglo da se compile za novi OS, tu je

Cak i da preptostavimo da Objective-C nece postojati za 5 godina, meni je tvoj savet ljudima da ne uce Objective-C neracionalan. Oni ce se vrlo verovatno u narednih 5 godina dosta susretati s tim jezikom (osim u slucaju da samo rade manje outsourcing projekte od nule) i poznavanje istog ce im znacajno olaksavati posao.
Zasto si i dalje ubedjen da veci outsourcing je vezan za ObjC - ja sam ti vec rekao da su US firme vec u velikom pocele da prelaze na Swift i to odavno.

Vreme koje im je potrebno da nauce Objective-C je maksimalno mesec dana. To je jedan vrlo jednostavan objektno orijentisani jezik, ekstenzija C-a sa pomalo cudnom sintaksom. Svako ko zna C i bilo koji drugi OO jezik zapravo nema mnogo sta ni da uci, pa tih mesec dana je zapravo prilicno pesimisticna prognoza. E sad, ako ti mislis da je maksimalno 30 dana ucenja necega mnogo u odnosu na to da ces od toga imati mnogo koristi narednih 5 godina, onda ja vise nemam sta da dodam po tom pitanju.
Ajde procitaj jos jednom temu - ljudi nemaju iskustva sa OO nesto, ne znaju cak ni lepo sta je petlja, a ti mislis da mogu ObjC da savladaju za 30 dana. Pa to je prosto nemoguce. Nece ni Swift koji je laksi za savladati uspeti da savladaju lepo u narednih nekih 6 meseci.

Vrlo jednostavno, kao sto sam gore objasnio neces ih nikada prebacivati u Swift jer je skupo. Nove projekte ces pisati u Swiftu, stare ces odrzavati u Objective-C-u sve do kraja zivotnog veka aplikacije.
Pa dobro, zasto onda mislis da ce neko u Srbiji ko radi sa ObjC da Swift developera stavlja da radi na starim projektima, a ne forsirati ga na nove i pustiti ga da ih radi, a kasnije i da vodi ove ObjC dev-ove koji predju na Swift.

Ako su Cobol biznis aplikacije napisane pre par decenija i dalje zive jer rade posao i izdrzale su test vremena, pa kompanije nisu htele da bacaju novac da prepisuju svoje sisteme u neki jezik koji je vise fensi, ne vidim zasto bi bacale novac prepisujuci Objective-C kod u Swift ako ne moraju. Kompaniju ne zanima privlacnost jezika, kompaniju zanima upotrebna vrednost softvera.
Istom logikom da li bi rekao programeru koji se opredeljuje za tu sferu da krene da uci Cobol? Isto tako mesas babe i zabe jer ti za iOS i OS X uredjaje moras compile kod, a to ti radi Xcode. Kada Apple ugasi ObjC kod se vise ne compile i cao zdravo. Moraces da cekas neka 3rd party resenja ako se pojave, a onda se pokrece i pitanje pouzdanosti istih. Da li se bar sa tim slazes? :)

Opet mi se cini da vodis pogresnu diskusiju. Mi ne raspravljamo o tome da li je Objective-C bolji od Swifta. Mi raspravljamo da li je bolje uciti samo Swift ili je bolje nauciti oba jezika ako zelis da budes ozbiljan iOS developer. Ja uopste ne tvrdim da je Objective-C bolji od Swifta (a ni obrnuto). Nemam osecanja prema jezicima. Oni su samo alat. Koristis onaj koji ti u datom momentu najbolje odradjuje posao.
Pa ako je Swift bolji jezik, kako onda to ne spada u ovo sto si napisao "Koristis onaj koji ti u datom momentu najbolje odradjuje posao". To je bas ono sto Swift radi u ovom trenutku :)

Mislim da je sasvim jasno da ce potraznja za Swift programerima biti sve veca i veca, ali to opet nije vezano za Srbiju nego je to globalni trend. Ne vidim cemu ogorcenje prema poslodavcima kod nas, pa oni samo igraju kako im trziste diktira. Svima je jasno da je u Swiftu buducnost sto se iOS developmenta tice, ali nece poslodavac na silu da forsira Swift ako mu za vecinu projekata jos uvek treba Objective-C.
Ne igraju oni kako im trziste diktira, vec kako se oni opredele. Kao sto rekoh za svaki novi projekat ti biras da li ces ga raditi u Swift ili ne, a svaki postojeci biras da li ces da nastavis u Swift ili ObjC. Ja mogu svaki postojeci da nastavim u ObjC koji je preuzet i ne bih imao nikakvih problema, ali zasto to nisam uradio vec smo nastavili iste da kodiramo u Swift? Zasto bih pisao vise koda, necitljiv kod i sporiji kod? To nema nikakve poslovne logike.

E ovde si me dobro nasmejao, ovo zvuci kao iz nekog udzbenika sa fakulteta :) Bavim se programiranjem jako dugo i mislim da jos uvek nisam radio na aplikaciji koja je velika a dobro dokumentovana (i da, radio sam uglavnom u stranim firmama, tako da to nema veze sa Srbijom). Kolega sa posla je skoro naleteo na oglas Blizzard Entertainment-a gde im je jedan od "requirementa" za poziciju programera sposobnost snalazenja u ogromnom codebase-u nedokumentovanog koda :)
Zasto mislis da Blizzard ima dobru praksu - nisu jedina velika kompanija koja ima problema sa losom organizacijom. Imaju i vece od nje problema takvih i pogodi sta se desilo sa svima (ovo ti govorim iz prve ruke posto imam kontakte kod nekih) - radi se verovao ili ne rewrite koda patch po patch bas zato sto je stari bio tako organizovan da su dosli do kriticne tacke kada je broj bug-ova poceo exponencijalno rasti i vise se nije mogao kontrolisati. To su ti price iz prakse firmi u kojima radi par hiljada ljudi, pa ti vidi...

Pomesao si opste OO patterne i patterne i idiome koji su karakteristicni za odredjeni programski jezik. Navescu ti konkretan primer bas iz Objective-C jezika. Postoji pattern koji se zove "associative storage" pomocu koga mozes da nekoj klasi koristeci kategorije pridruzis i nove "member varijable", a ne samo nove metode. Ovaj pattern nije opsti OO pattern nego je usko vezan za Objective-C, a poznavanje istog i njegova pametna (i ispravna) upotreba ti omogucava neka arhitekturalna resenja koja bi izgledala potpuno drugacije ako ne bi koristio isti.
To nije pattern sto pominjes i isto tako nije usko vezan za ObjC vec se koristi u Swift (kao sto sam rekao Swift moze sve sto i ObjC, plus jos vise) - opet kazem ne poznajes Swift a diskutujes o istom... Evo ti mali primer - http://stackoverflow.com/questions/25426780/swift-extension-stored-properties-alternative
To je to, zar ne? Associative Storage resen bez ikakvih problema... Nije usko vezan za ObjC, radi u Swift bez problema. Da li sada shvatas o cemu pricam citavo vreme, i zasto ce ObjC da bude ugasen?

Naravno da nisi mogao, jer u to vreme Swift nije ni postojao. Dakle ponovo ista prica - projekat je zapoceo mnogo pre Swifta i toliko je narastao da je apsolutno nebulozno i razmisljati o portovanju istog na Swift (Zbog cega? Novca naravno.)
Ne portujes ga, vec ga nastavljas develop u Swift. Zbog cega? Pa opet - kao sto ti kazes zbog novca u ObjC, bas suprotno ide - zbog novca u Swift jer ces brze dovrsiti ono sto trebas.

1) Da li moze da se napise? Naravno da moze da se napise u Swiftu. Vec sam rekao da bi svi novi projekti trebalo da se rade u istom.
Znaci slazemo se oko ovoga.

2) Da li ce biti napisano uz manje koda? Verovatno, s tim sto je pitanje besmisleno. Objective-C sa razlogom ima sintaksu kakvu ima (duge kobasice u nazivima metoda, sto uz neke druge konstrukte koje poseduje dovodi i do pisanja vise koda nego u klasicnim jezicima). Filozofija kojom su se vodili prilikom pravljenja jezika je ta da programeri mnogo vise vremena provode citajuci source code, a manje vremena pisuci isti. Iz tog razloga je za autore jezika bilo znacajnije da jezik bude deskriptivan kako bi bio nedvosmisleniji i laksi za citanje. Vreme u koje je jezik nastao je vreme u kome nisi imao intellisense i slicne alatke (jer su hardverski resursi bili ograniceni), pa je bilo veoma prakticno da u samom pozivu metode kao deo njenog potpisa imas tacne nazive parametara. Npr. poredeci C/C++ i Objective-C pozive metoda:

obj.getCell(2,3);
[obj getCellWithSection:2 index:3];

ocigledno je da je druga varijanta razumljivija za citanje.
Ovo je u novijim jezicima reseno pomocu named parametara, naravno. Ovo sam samo naveo kao ilustraciju da objasnim vec pomenutu filozofiju kojom su se vodili pre 30 i kusur godina kada su jezik pravili.
ne pricamo o istim stvarima - to bi u Swift glasilo obj. getCellWithSection(2, index: 3)
Sto ne napises neki kod sto nije pocetnicka lekcija, vec da imas vise zagrada, parametara i ostalog pa uporedis sa Swift kada u ObjC imas gomilu [[[[ ]]]], a ovde samo par tacki na pravim mestima kao u npr. Javi, C#. Nego reci mi koliko koda tek trebas da pises da bi napravio nesto poput Optional variable (ne optional parameter, vec variable). Tipa CGFloat koji moze biti bilo koji CGFloat ali i nil u isto vreme?

3) Da li ce bolje raditi? To zavisi iskljucivo od onog ko kod pise, a ne od jezika koji je koristen.
Slazem se, ali najjednostavniji kod napisan u ObjC i Swift ce brze raditi ako je napisan u Swift u vecini slucajeva. Imas gomilu benchmarka koji to pokazuju - vec u 1.2 je sibao ObjC u gomilu stvari.

Odgovori sad ti meni, ali iskreno, na sledece pitanje: koliko je velik najveci projekat na kome si radio?
Iskreno ne znam cime to meris pa samim tim i kako da ti odgovorim, ali trenutno sto se tice ObjC/Swift projekat koji je trajao oko 2.5 - 3 godine (i jos traje), a sto se tice ostalog (tipa PHP) radio sam i na sistemima koji funkcionisu unazad preko 10 godina i na kojima je radilo i radi gomila ljudi, cak sam i vodio u proslim firmama neke takve projekte.

Zasto te ovo pitam? Zato sto na osnovu izjava:

1) o tome kako je vrlo jednostavno veliki projekat prilagoditi da se dalje razvija u Swiftu
2) o tome kako ozbiljne firme na velikim aplikacijama pisu dokumentaciju pod konac (dokumentaciju detaljno uglavnom pise samo onaj ko mora - a to su firme koje prave middleware, jer od kvaliteta dokumentacije public API-ja najcesce zavisi i uspesnost njihovog projekta)
1) veoma lako ako je ispunjeno #2 koje ponavljam kao papagaj
2) ne bih se slozio sa 2, to se samo u Srbiji izbegava gde su nazalost nasi developeri vise lenji od ostalih (tipa US, UK, Nemacka) i gde ih trebas malo prevaspitati da je to jako bitno, jer na kraju krajeva ustedi i firmi vreme i njemu ili nekom drugom kasnije muke da se snadje u tom istom.

zaista ne mogu da verujem da si radio na nekom bas velikom projektu ili u nekoj velikoj firmi. To samo po sebi nije nista lose, niti umanjuje tvoje programersko umece (manje firme i manji projekti imaju svoje prednosti), ali ne bi trebalo da komentarises kako je nesto lako uraditi ako se sa tim nisi susreo :)
Provalio si me, a pretpostavljam da nemam ni 2 dev firme, niti znam da programiram ili vodim projekte? :d

Ovo ti kazem zbog toga sto kad radis na velikim projektima gotovo nista nije jednostavno i moras tri puta da meris pre nego sto doneses odluku da nesto menjas. Veliki projekti imaju tendenciju da prerastaju u zver koju je jako tesko ukrotiti. Ovo nije vezano za Srbiju, ovo je globalni fenomen. Super zvuce fraze iz raznih knjiga poput Code Complete, Refactoring i mnogih drugih kako pridrzavajuci se dobrih praksi projekat nece zavrsiti u problemima. Realnost je malo drugacija. Pridrzavajuci se dobrih praksi projekat ce moci da se zavrsi (bez tih praksi bi jos negde usput propao), ali problema ce da bude u izobilju i to je manje vise neizbezno kada na projektu radi mnogo ljudi (i to izuzetno kvalitetnih ljudi) i kada se on dovoljno dugo razvija :)
Veliki projekti i prerastu u zver pod losim vodstvom, a to se desava jer:
1) ljudi koji ih vode nemaju iskustva sa project managementom/arhitekturom
2) ljudi koji ih vode imaju iskustva sa programiranjem ali nisu bas izucavali i project management/arhitekturu
3) ljudi koji ih vode su lenji
Moze biti jedno od ta 3, a moze biti i kombinacija vise. Samo iz tih razloga u praksi takvi projekti se pretvaraju u zveri. Takodje mnogo ljudi koji rade na istom projektu dugi niz godina vodi projekat pravo u propast i maintainance mode i o tome imas gomilu textova na netu. Cak mnogo ljudi ode iz takvih firmi posle par godina jer se jednostavno smori. Evo ti jedan zanimljiv clanak na tu temu - https://blog.enki.com/coding-is-boring-unless-4e496720d664#.fzc7wwb6d
 
Pokusacu da odgovorim samo na kljucne stvari jer oduzima previse vremena citiranje svega, a sustina se vrti oko par kljucnih stvari oko kojih se ne slazemo.

Opet me ne citas - ja nisam rekao rewrite, ja sam rekao da se nastavi u Swift, a ne da se pise od 0 u Swift, a sto se tice rewrite da ce se trebati raditi jednog dana (kada se bude gasio ObjC) i da ce onda biti manje posla, jer je prethodnih godina kod pisan u Swift.

Pa ako je Swift bolji jezik, kako onda to ne spada u ovo sto si napisao "Koristis onaj koji ti u datom momentu najbolje odradjuje posao". To je bas ono sto Swift radi u ovom trenutku :)

Ovo je prva stvar gde se ne slazemo. Nastavak razvoja u Swiftu kompleksnog sistema je po mom misljenju skuplji nego da nastavis da ga razvijas u Objective-C jeziku. Takodje takva tranzicija je i rizicnija jer moze uvesti nove bagove. U tom smislu mislim da Swift jeste bolji alat za nove projekte, ali nije bolji alat za situaciju gde imas velike postojece Objective-C projekte.



Kao sto rekoh, i reci cu jos milion puta (a ostali koji se bave mojim poslom ce potvrditi) - nedokumentovani projekti sa nespecifikovanom arhitekturom su odlika loseg vodjenja istih.

Dobrodosao u softversku industriju :) Svi projekti zapocnu sa idejom da se sve radi kako bi trebalo, ali vremenom ono sto je "na papiru" i ono sto je u praksi vise nemaju dodira jedno s drugim. Npr. zavrsis sa guidelines dokumentom koji je napisan na pocetku projekta, a kad otvoris bilo koji random fajl u njemu ces naci prekrseno skoro svako pravilo iz tog dokumenta (licno iskustvo na projektu koji se razvija vise od 10 godina, na kome konstantno radi izmedju 300 i 1000 ljudi i koji je mutirao bar desetak puta u tom procesu...ovo nije vezano za iOS, ali samo navodim kao primer da je o dobrom vodjenju projekta mnogo lakse pricati nego to i ostvariti).

Koliko ce ObjC ostati ne zavisi od tebe, neke srpske (ili ne daj boze strane) firme, vec iskljucivo od Apple. Onog momenta kada vise ne bude moglo da se compile za novi OS, tu je

...

Kada Apple ugasi ObjC kod se vise ne compile i cao zdravo. Moraces da cekas neka 3rd party resenja ako se pojave, a onda se pokrece i pitanje pouzdanosti istih. Da li se bar sa tim slazes? :)

Ne mislim da ce Apple uopste gasiti Objective-C. Narocito ne vidim zasto bi to radili u narednih desetak godina.



Ajde procitaj jos jednom temu - ljudi nemaju iskustva sa OO nesto, ne znaju cak ni lepo sta je petlja, a ti mislis da mogu ObjC da savladaju za 30 dana. Pa to je prosto nemoguce. Nece ni Swift koji je laksi za savladati uspeti da savladaju lepo u narednih nekih 6 meseci.

Pa npr. kad savladaju Swift naucice i sta je petlja, a posle toga im nece trebati mnogo vremena ni da nauce Objective-C. :)

To nije pattern sto pominjes i isto tako nije usko vezan za ObjC vec se koristi u Swift (kao sto sam rekao Swift moze sve sto i ObjC, plus jos vise) - opet kazem ne poznajes Swift a diskutujes o istom... Evo ti mali primer - http://stackoverflow.com/questions/25426780/swift-extension-stored-properties-alternative
To je to, zar ne? Associative Storage resen bez ikakvih problema... Nije usko vezan za ObjC, radi u Swift bez problema. Da li sada shvatas o cemu pricam citavo vreme, i zasto ce ObjC da bude ugasen?

Naravno da jeste pattern. Izmedju ostalog opisan je i u knjizi "Cocoa Design Patterns" na strani 167.
http://www.amazon.com/Cocoa-Design-Patterns-Erik-Buck/dp/0321535022

Ali da sumiramo kako je tekla diskusija:

- Ja kazem da je bitno poznavati i patterne nekog jezika da bi razumeo ideju za neko arhitektonsko resenje.
- Ti napises da su patterni primenjivi na sve OO jezike.
- Ja napisem da pored opstih OO patterna postoje i patterni i idiomi koji su karakteristicni za odredjeni jezik, a onda ti dam primer patterna koji nije primenjiv na sve OO jezike (u ovom slucaju nije vezan za jezik nego za Objective-C runtime (tu sam napravio gresku jer sam napisao da je vezan za Objective-C), pa je zbog toga vezan za svaki jezik koji koristi taj runtime, dakle i Swift dok god isti bude koristio Objective-C runtime)
- Ti napises kako to nije pattern i kako to moze i u Swiftu.

Je l ti mene zezas? :)
Znaci ti moj primer kako postoje patterni koji nisu primenjivi na sve OO jezike koristis da pokazes kako Swift moze sve sto moze i Objective-C :D


ne pricamo o istim stvarima - to bi u Swift glasilo obj. getCellWithSection(2, index: 3)
Sto ne napises neki kod sto nije pocetnicka lekcija, vec da imas vise zagrada, parametara i ostalog pa uporedis sa Swift kada u ObjC imas gomilu [[[[ ]]]], a ovde samo par tacki na pravim mestima kao u npr. Javi, C#. Nego reci mi koliko koda tek trebas da pises da bi napravio nesto poput Optional variable (ne optional parameter, vec variable). Tipa CGFloat koji moze biti bilo koji CGFloat ali i nil u isto vreme?

Ocigledno ne pricamo o istim stvarima. Ja sam napisao objasnjenje zasto je Objective-C kod glomazan i naveo razliku u odnosu na C++, jezik koji je nastao u isto vreme. Ideja je bila da pokazem zasto je tada postojala potreba da jezik bude ovako deskriptivan. Naravno da za tim nema potrebe danas u prisustvu intellisensa i named parametara koji sada postoje u mnogim jezicima. Ti onda uzmes i poredis ga sa Swiftom, jezikom koji je nastao 30+ godina kasnije. Pa zar bi bilo normalno da jezik koji je toliko star ima bolju sintaksu od nekog novog jezika? Pa koliko puta treba da ponovim da se ovde ne radi o Swift vs Objective-C diskusiji? :D

Sto se tice optional float varijable to mi zvuci nesto kao boksovana float varijabla? (NSNumber).

Veliki projekti i prerastu u zver pod losim vodstvom, a to se desava jer:
1) ljudi koji ih vode nemaju iskustva sa project managementom/arhitekturom
2) ljudi koji ih vode imaju iskustva sa programiranjem ali nisu bas izucavali i project management/arhitekturu
3) ljudi koji ih vode su lenji
Moze biti jedno od ta 3, a moze biti i kombinacija vise. Samo iz tih razloga u praksi takvi projekti se pretvaraju u zveri.

Pa nista, onda mogu samo da ti cestitam sto uspesno vodis velike projekte i sto se ne susreces sa problemima sa kojima ne mogu na kraj da izadju ni veterani industrije :)


p.s. Pokusaj malo da grupises citate kad budes odgovarao, da ne bude liniju po liniju. Nesto slicno kao sto sam ja sada uradio.
 
Au, svaka čast za prepisku. Odavno nisam čitao bolju razmenu mišljenja!!!
 
Pokusacu da odgovorim samo na kljucne stvari jer oduzima previse vremena citiranje svega, a sustina se vrti oko par kljucnih stvari oko kojih se ne slazemo.

Ovo je prva stvar gde se ne slazemo. Nastavak razvoja u Swiftu kompleksnog sistema je po mom misljenju skuplji nego da nastavis da ga razvijas u Objective-C jeziku. Takodje takva tranzicija je i rizicnija jer moze uvesti nove bagove. U tom smislu mislim da Swift jeste bolji alat za nove projekte, ali nije bolji alat za situaciju gde imas velike postojece Objective-C projekte.
Tranzicija jeste rizicnija i treba pazljivo da se odradi, ali na duge staze je isplativija, tako da sa mog aspekta meni je bolji alat, dok tipa sa tvog aspekta nije - to su stvari oko kojih se najverovatnije necemo sloziti, a za koje ce jedino vreme biti dokaz - tipa posle 5, 10 godina ce se videti ko je napravio pogresnu pretpostavku. Za bug-ove opet - jednostavno treba biti pazljiv - nije Swift skloniji bug-ovima, vec sama tranzicija treba lepo da se odradi i to je jedini problem.

Dobrodosao u softversku industriju :) Svi projekti zapocnu sa idejom da se sve radi kako bi trebalo, ali vremenom ono sto je "na papiru" i ono sto je u praksi vise nemaju dodira jedno s drugim. Npr. zavrsis sa guidelines dokumentom koji je napisan na pocetku projekta, a kad otvoris bilo koji random fajl u njemu ces naci prekrseno skoro svako pravilo iz tog dokumenta (licno iskustvo na projektu koji se razvija vise od 10 godina, na kome konstantno radi izmedju 300 i 1000 ljudi i koji je mutirao bar desetak puta u tom procesu...ovo nije vezano za iOS, ali samo navodim kao primer da je o dobrom vodjenju projekta mnogo lakse pricati nego to i ostvariti).
Opet kazem - problem sa vodjenjem projekta. Shvatam da je u ogromnim timovima mnogo teze kontrolisati tako nesto - priznajem da nisam nikad radio u timu od 1000 ljudi, ali opet postoji nacin da se sve organizuje koliko-toliko. Samo organizovanje takvih stvari i same arhitekture je posao za sebe koji je izuzetno kompleksan, ali cesto ljudi naprave kardinalnu gresku kada posegnu za onim - ako samo ovde hardcode-ujem nesto uradicu to za 5 min umesto sat vremena, a onda ta ista stvar prouzrokuje sate i sate glavobolje kasnije. Jos kada se tako vise stvari naslaze dolazi do opsteg haosa.



Ne mislim da ce Apple uopste gasiti Objective-C. Narocito ne vidim zasto bi to radili u narednih desetak godina.
Ja sam citao neke izjave iz Apple gde su neki rekli da ce biti tu jos 10 godina i kusur, a neki su rekli jos narednih 4-7 godina da ce biti tu. Jos uvek zvanicne odluke nema, ali ocekujem da i sam Apple ceka da vidi rezultate na tipa sledecem (ili tamo 2017. godine) WWDC koliko je Swift zaziveo i ocekuj da ako predje 50% novih app-ova da je u Swift da ce da objave datum gasenja ObjC.

Pa npr. kad savladaju Swift naucice i sta je petlja, a posle toga im nece trebati mnogo vremena ni da nauce Objective-C. :)
To se u potpunosti slazem, ali kada savladaju Swift pa vide ObjC, taj isti im se vise nece uciti :)

Naravno da jeste pattern. Izmedju ostalog opisan je i u knjizi "Cocoa Design Patterns" na strani 167.
http://www.amazon.com/Cocoa-Design-Patterns-Erik-Buck/dp/0321535022

Ali da sumiramo kako je tekla diskusija:

- Ja kazem da je bitno poznavati i patterne nekog jezika da bi razumeo ideju za neko arhitektonsko resenje.
- Ti napises da su patterni primenjivi na sve OO jezike.
- Ja napisem da pored opstih OO patterna postoje i patterni i idiomi koji su karakteristicni za odredjeni jezik, a onda ti dam primer patterna koji nije primenjiv na sve OO jezike (u ovom slucaju nije vezan za jezik nego za Objective-C runtime (tu sam napravio gresku jer sam napisao da je vezan za Objective-C), pa je zbog toga vezan za svaki jezik koji koristi taj runtime, dakle i Swift dok god isti bude koristio Objective-C runtime)
- Ti napises kako to nije pattern i kako to moze i u Swiftu.

Je l ti mene zezas? :)
Znaci ti moj primer kako postoje patterni koji nisu primenjivi na sve OO jezike koristis da pokazes kako Swift moze sve sto moze i Objective-C :D
Ja bih opet pre rekao kao sto sam naveo da to nije pattern bez obzira sto to pise u Cocoa Design Patterns, i pre bih rekao da je idiom. Evo ti primer definicije sa wikipedie:
Idiom - "A programming idiom is a means of expressing a recurring construct in one or more programming languages. Generally speaking, a programming idiom is an expression of a simple task, algorithm, or data structure that is not a built-in feature in the programming language being used, or, conversely, the use of an unusual or notable feature that is built into a programming language."
Pattern - "In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into source or machine code. It is a description or template for how to solve a problem that can be used in many different situations."

Meni se vise uklapa u definiciju idioma, mada se poklapa i sa definicijom patterna delimicno. Poenta je bila da si ti tvrdio da se Swift developer nece snaci u kodu zbog patterna/idioma jer se isti upotrebljavaju iskljucivo u ObjC, a ja sam ti pokazao da se koriste i u Swift, tako da je dovoljno samo dokumentovati kod (mada moze i Swift developer da skonta ObjC kao sto sam rekao) i da se Swift dev snadje.



Ocigledno ne pricamo o istim stvarima. Ja sam napisao objasnjenje zasto je Objective-C kod glomazan i naveo razliku u odnosu na C++, jezik koji je nastao u isto vreme. Ideja je bila da pokazem zasto je tada postojala potreba da jezik bude ovako deskriptivan. Naravno da za tim nema potrebe danas u prisustvu intellisensa i named parametara koji sada postoje u mnogim jezicima. Ti onda uzmes i poredis ga sa Swiftom, jezikom koji je nastao 30+ godina kasnije. Pa zar bi bilo normalno da jezik koji je toliko star ima bolju sintaksu od nekog novog jezika? Pa koliko puta treba da ponovim da se ovde ne radi o Swift vs Objective-C diskusiji? :D
Ja sam pricao da je kompleksan Swift kod mnogo citljiviji od ObjC i da je samim tim laksi za citanje sto je jako bitno pogotovo u kompleksnim projektima.

Sto se tice optional float varijable to mi zvuci nesto kao boksovana float varijabla? (NSNumber).
Nisam dao dobar primer, ali bolje nego da kucam da pogledas ovaj clanak, kako se koriste optionals, i koje su neke od prednosti - http://appventure.me/2014/06/13/swift-optionals-made-simple/

Pa nista, onda mogu samo da ti cestitam sto uspesno vodis velike projekte i sto se ne susreces sa problemima sa kojima ne mogu na kraj da izadju ni veterani industrije :)
Ne znam koga ubrajas u veterane, ali imas gomilu "veterana" u ogromnim firmama koji lepo sve organizuju i rade :)

@Nothingman kada jednom iz "Nedostupnog polja" dodjes u Novi Sad javi se da prodiskutujemo sve uz kafu ili pivo (tvoj izbor :d ).

Au, svaka čast za prepisku. Odavno nisam čitao bolju razmenu mišljenja!!!
Trudimo se da uputimo nove generacije na pravi put. :d
 
Pricao sam o internim firminim standardima, a to naravno ne moze tek tako da se deli (pogotovo sto nije od moje firme).
Onda je u pitanju relativizovanje. Pomislio sam da postoje neke opste priznate konvencije a ispada da mislis na specificne slucajeve koji su relativni i mogu da varijaju od linije iznad koda do UML dijagrama.


Aha, a tebi je lepo kada imas milion [[[ ]]] umesto kao u svim normalnim objektno orjentisanim jezicima prosto tacku...
Nije mi tesko da razumem f-je sa par zagrada, kao sto mi nije bilo tesko da naucim par tipova promenljivih. Nekome jeste, pa su napravili samo "var". Mozda u nekoj buducnosti naprave drag&drop verziju da i starlete mogu da programiraju. ;)


Da, Apple ima razloge, i mogao bi stvarno da procitas link koji sam ostavio gore - jedan od bitnih je sto ObjC zavisi od C-a poprilicno... Inace Swift je od pre neki dan Open Source.
Eplovi razlozi uvodjenja Swifta su finansijske prirode i prevlasti na trzistu mobilnih uredjaja, ne tehnicke prirode. Ali igra je njihova, ko nece da igra ne mora.
 
@n1tr0

Bolje pivo :D
Vazi, kad budem nekad dolazio u NS najavicu se preko foruma :)
 
A sto lepo ne krenes odmah sa besplatnim resursima koje sam gore okacio par postova iznad? :)
 
E jesi me [emoji4] Hteo bih za pocetak na srpskom dok ne zavrsim engleski jer mi nije bas najbolji.Sve sto znam mi je iz filmova, muzike, rada na kompu itd
Mogao bih ja i iz tvojih linkova ali islo bi sporije [emoji3]
 
Poslednja izmena:
Nazad
Vrh Dno