Jump to content
IGNORED

Hoću da budem programerka


Recommended Posts

Skocio topik, pogledam kad je krenuo - tacno mesec dana. Mau, sta si uradila? Jelda da nista :D

Čućeš verovatno odgovor "počinjem odmah posle odmora!" ;)

 

 

Kako deluje prema tekstovima ovih stručnih časopisa, to se odradi za 3-4 nedelje. 2 ako ideš na kurs u neku od škola tipa SZR Silikoni.

Link to comment

Skocio topik, pogledam kad je krenuo - tacno mesec dana. Mau, sta si uradila? Jelda da nista :D

Nisam još uvek ništa.

 

Ali ne što sam odustala, mnogo se radujem da počnem. Nego sam u CG i u pvim uslovima ovde hendlujem neki drugi deadline.

Plus sam bila u NL na svadbi do juče. Mnogo posla i problema imam.

Link to comment

Šta mislite, koliko vremena će trebati da OOP ode u istoriju i bude zamenjen funkcionalno orijentisanim jezicima? Deceniju, dve, tri?

 

       Vidim da skoro svi uvode funkcionalnu ''paradigmu'' u svoj ekosistem (što bi rekao ProkletoĐubre (menjaj nick čoveče :D )), pa bi bilo zanimljivo da nam neko kaže koliko je to uhvatilo maha u praksi. Znam da veliki igrači (Microsoft, Google, Twitter) koriste funkcionalne programske jezike uveliko ali kakva je situacija u ostatku IT ''industrije'', na manjim projektima?

Edited by slow
Link to comment

Pa nece otici u istoriju. Obe paradigme postoje sa razlogom i koriste se za razlicite stvari. Treba forsirati jednu ili drugu u zavisnosti od toga kako predvidjas da ce tvoj kod rasti, da li ces dodavati strukture na postojece funkcionalnosti ili funkcionalnosti na postojece strukture.

 

Samim tim danas jezici teze da podrze obe paradigme. Tako recimo clojure ima sjajnu podrsku za polimorfizam, dok Java 8 ima lambde (C# odavno). Scala je svoje postojanje zasnovala na tome sto podrzavaju oboje i to veoma dobro.

Edited by Fins fleet
Link to comment

Ali zar to (pravljenje OOP-funkcionalnih paradigmatskih hibrida :D ) nije postepeno istiskivanje OOP sa scene, kao što je nekad OOP istisnuo strukturno programiranje? U nekom momentu funkcionalna paradigma će postati glavna. Koliko smo daleko od tog momenta?

Edited by slow
Link to comment

Šta mislite, koliko vremena će trebati da OOP ode u istoriju i bude zamenjen funkcionalno orijentisanim jezicima? Deceniju, dve, tri?

 

       Vidim da skoro svi uvode funkcionalnu ''paradigmu'' u svoj ekosistem (što bi rekao ProkletoĐubre (menjaj nick čoveče :D )), pa bi bilo zanimljivo da nam neko kaže koliko je to uhvatilo maha u praksi. Znam da veliki igrači (Microsoft, Google, Twitter) koriste funkcionalne programske jezike uveliko ali kakva je situacija u ostatku IT ''industrije'', na manjim projektima?

 

Ni ja ne mislim da ce otici u istoriju.

Funkcionalni pristup nije nesto novo sto kao preuzima glavnu ulogu, vec sam pomenuo da postoji samo jedan stariji jezik od Lispa a da je u kakvoj-takvoj upotrebi. Funkcionalni jezici su postojali oduvek paralelno. Ono sto je problem s njima i sto je obezbedilo strasnu dominaciju OOPu je sto je OOP laksi za razumevanje i trazi manje predznanje. Mentalni skok potreban da se shvati lambda je jako velik, ne biste ni verovali koliko ljudi samo ostane pred tom preprekom. A bez toga ne mozes bukvalno nista. Nasuprot tome, osnove OOPa su veoma logicne i jasne vecini ljudi. Imas osobine objekata, roditelje, deca nasledjuju njihove osobine... Prakticno svako moze da pojmi o cemu se tu radi i bez ozbiljnog matematickog potkivanja.

Uz to, treba uzeti u obzir da je potreba za programerima toliko velika i raste da je (meni se cini) to nezabelezeno u istoriji s nekim profilom zanimanja. To znaci da cemo morati smanjivati potrebne kvalifikacije a ne povecavati ih. Ako smanjujemo zahteve postavljene pred novopecene programere, onda ce funkcionalna paradigma ( :) ) ipak morati da ostane za manjinu koja ima potrebna matematicka znanja.

Link to comment

Šta mislite, koliko vremena će trebati da OOP ode u istoriju i bude zamenjen funkcionalno orijentisanim jezicima? Deceniju, dve, tri?

 

       Vidim da skoro svi uvode funkcionalnu ''paradigmu'' u svoj ekosistem (što bi rekao ProkletoĐubre (menjaj nick čoveče :D )), pa bi bilo zanimljivo da nam neko kaže koliko je to uhvatilo maha u praksi. Znam da veliki igrači (Microsoft, Google, Twitter) koriste funkcionalne programske jezike uveliko ali kakva je situacija u ostatku IT ''industrije'', na manjim projektima?

Na koje programske jezike mislis kad spominjes ove igrace? Koliko znam, jedino Microsoft ima hibrid koji je prvenstveno funkcionalan (F#), ali ne znam da li ga on uopste znacajnije koristi. Znam da je koriscen za neke manje projekte unutar MS-a, ali nista znacajnije. Oba Googlova jezika (Go i Dart) su prvenstveno objektno-orijentisana. U kuci se dosta koriste C++, Java i Phyton. Twitter, koliko znam nema svoj jezik, koristi sve i svasta, ali najvise Ruby (prvenstveno objektno orijentisani jezik). Znaci, svi ovi jezici (osim F#, koga MS jako malo koristi) su prvenstveno OO.

 

Ono sto je tacno je da OO jezici preuzimaju odredjene koncepte iz funkcionalnih jezika, ali to nije promena paradigme, vec unapredjenje OO koncepata (nezgrapnost klasicnog OO observer paterna, rad sa kolekcijama, ...).

Link to comment

Ni ja ne mislim da ce otici u istoriju.

Funkcionalni pristup nije nesto novo sto kao preuzima glavnu ulogu, vec sam pomenuo da postoji samo jedan stariji jezik od Lispa a da je u kakvoj-takvoj upotrebi. Funkcionalni jezici su postojali oduvek paralelno. Ono sto je problem s njima i sto je obezbedilo strasnu dominaciju OOPu je sto je OOP laksi za razumevanje i trazi manje predznanje. Mentalni skok potreban da se shvati lambda je jako velik, ne biste ni verovali koliko ljudi samo ostane pred tom preprekom. A bez toga ne mozes bukvalno nista. Nasuprot tome, osnove OOPa su veoma logicne i jasne vecini ljudi. Imas osobine objekata, roditelje, deca nasledjuju njihove osobine..

 

Mentalni skok da se shvati lambda za nekog ko zna bilo koji OO ili cisto imperativni jezik je 0. Ne mogu da shvatim kakav napor treba da shvatis da ako mozes da nekoj proceduri kao argument prosledjujes funkciju, neki jezici omogucavaju da se ta funkcija napise u samom pozivu i sto je logicno, da ona u tom slucaju ne mora da ima ime. Mislim, nemojmo mistifikovati stvari, lambda nisu nista drugo nego funkcije bez imena.

Link to comment

Mentalni skok da se shvati lambda za nekog ko zna bilo koji OO ili cisto imperativni jezik je 0. Ne mogu da shvatim kakav napor treba da shvatis da ako mozes da nekoj proceduri kao argument prosledjujes funkciju, neki jezici omogucavaju da se ta funkcija napise u samom pozivu i sto je logicno, da ona u tom slucaju ne mora da ima ime. Mislim, nemojmo mistifikovati stvari, lambda nisu nista drugo nego funkcije bez imena.

 

Nema mistifikacije i skok jeste velik. Lambda racun ne moze tek tako da se svede na 'posalji funkciju kao argument', kad krenu da se lancaju stvari vecina ljudi ne razume sta se desava. Funkcije viseg reda jednostavno nisu nacin na koji je ljudima lako da razmisljaju, dok 'automobil je vrsta vozila' to jeste.

Slicno kao sto je pointer samo adresa nekog podatka, pa se odmah na pocetku ucenja rascisti ogroman broj ljudi koji ne mogu mentalno da prihvate rad s pointerima. Ne znam da li se secas kako izgleda taj pokolj mladih programera kad se sretnu s C-om. bar 10-20% odmah tu batali i okrene se onim jezicima koji to ne traze. Svaka od tih prepreka znaci manje onih koji su je prosli, a prepreka koju funkcionalno programiranje postavlja je bas bas velika. Da nije tako, samo benefiti oko multithreadinga bi bili dovoljni da funkcionalno programiranje bude totalni pobednik za danasnju web orjentisanu situaciju.

Link to comment

Lambda racun (Churc-ov) je nesto drugo i ima jako malo veze sa prakticnim programiranjem. Sto se tice funkcija viseg reda ne slazem se, mislim da je to jednostavniji koncept od pointer-a, a pogotovo pointerske aritemtike u C-a. Pogledaj samo koliko (cak jako losih) programera bez ikakvih problema koristi jQuery u javascriptu. S druge strane u OO prica "auto je vrsta vozila..." lepo zvuci na predavanjima, ali je surova istina da je praksa sasvim drugacija. Toliko drugacija da neki savremeni OO jezici nasledjivanje ovog tipa uopste ne podrzavaju (mislim na Go, koji je razvijen sa idejom da iz jezika izbaci sve problematicne koncepte i tako omoguci pocetnicima pisanje kvalitetnog koda). Uzgred Go lepo pokazuje kako se problemi multitredinga mogu elegantno resiti i u OO svetu.

Link to comment

Lambda racun (Churc-ov) je nesto drugo i ima jako malo veze sa prakticnim programiranjem. Sto se tice funkcija viseg reda ne slazem se, mislim da je to jednostavniji koncept od pointer-a, a pogotovo pointerske aritemtike u C-a. Pogledaj samo koliko (cak jako losih) programera bez ikakvih problema koristi jQuery u javascriptu. S druge strane u OO prica "auto je vrsta vozila..." lepo zvuci na predavanjima, ali je surova istina da je praksa sasvim drugacija. Toliko drugacija da neki savremeni OO jezici nasledjivanje ovog tipa uopste ne podrzavaju (mislim na Go, koji je razvijen sa idejom da iz jezika izbaci sve problematicne koncepte i tako omoguci pocetnicima pisanje kvalitetnog koda). Uzgred Go lepo pokazuje kako se problemi multitredinga mogu elegantno resiti i u OO svetu.

 

- Lambda racun ne da ima veze sa prakticnim programiranjem nego se cesto kaze da je 'najmanji moguci programski jezik' sam po sebi. Upravo razlog sto 'nema veze s prakticnim programiranjem' lezi u tome sto funkcionalni jezici nisu toliko popularni, a ja ovde kazem da nisu popularni bas zato sto je to komplikovan koncept. Pored toga, u mnogim jezicima postoji ili bukvalno ili cesto uz neke modifikacije i specificnosti, ali postoji itekako.

- Reci da je lambda racun nesto drugo jod HOF e formalno tacno (mada nije obavezno da lambda ne bude HOF) i lambde same po sebi zaista nisu komplikovane (mozes reci da je to anonimna funkcija i cao) ali stvar je u tome sto su one cesto argumenti za HOF i onda krece strasna komplikacija. Zato sam i pomenuo pointere, tako isto kad gledas pointer sam za sebe - nista strasno, ali kad krenes u pointersku aritmetiku, onda shvatis da vecina ljudi ima ozbiljan problem da to savlada. 

 

Sto se tice Go-a i slicnih paterna iz drugih jezika (kompozicija pre nasledjivanja), ja se slazem da je to u vecini slucajeva bolji nacin, ali ne mogu previse o tome jer sam Go tek ovlas pipnuo da vidim o cemu se tu radi (nedovoljno za ozbiljnu raspravu o njemu). Svakako mi je tesko da prihvatim da i na teoretskom nivou mozemo imati bilo sta bolje od funkcionalnog pristupa za multithreading. Tako da i pored toga sto neki uspevaju da rese te probleme na prihvatljiv nacin i dalje mislim da je to natezanje kad se uporedi sa jezikom koji po definiciji nema deljeno stanje. Takvu aplikaciju je izuzetno lako multiplicirati jer ima 'ciste funkcije' bez side effect-a, a mada mozemo prilicno prici tom idealu sa immutable objektima mislim da i dalje to nije to.

Kao sto je OOP bas po meri za resavanje nekih problema (GUI npr.), u vecini slucajeva nije koristen zato sto je bas savrsen alat za to nego zato sto je covek koji moze da radi s njim jeftiniji (ima ih vise i lakse se nadju). Uostalom i ja sam za licni projekat na kome mogu da radim bukvalno sta hocu zeleo da krenem sa Clojure-om, ali sam nakon duzeg razmisljanja o tome ipak izabrao Rails. Ne samo zato sto sam bolji u Railsu nego sto sam izvrteo scenario gde treba da nadjem dodatnog coveka ako bude frka i dosao do zakljucka da nalazenje Clojure programera za neke prihvatljive pare za mene uopste nije mogucnost.

Ukratko, ako je pitanje 'kad ce funkcionalni jezici postati mainstream', po meni je odgovor nikad. Razlog za to je sto je coveku konceptualno tesko da razmislja na taj nacin, kao sto mislim da mu je intuitivno da razmislja na OOP nacin i tu ne mislim samo na nasledjivanje. Zbog svega ovoga mislim da ce se ogromna vecina ljudi odluciti za laksi put na pocecima svojih karijera sto ce samo po sebi uticati na trziste da mainstream ostane tu gde je i sada.

Link to comment

Nema mistifikacije i skok jeste velik. Lambda racun ne moze tek tako da se svede na 'posalji funkciju kao argument', kad krenu da se lancaju stvari vecina ljudi ne razume sta se desava. Funkcije viseg reda jednostavno nisu nacin na koji je ljudima lako da razmisljaju, dok 'automobil je vrsta vozila' to jeste.

Hmm, sad moram i to funkcionalno da istražim. For fun, obviously. Nemam sto života, ali imam intuiciju zašto može biti efikasnije.
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...