Novi jezici, njihove paradigme i web programiranje :)
Moderator/ica: Moderatori/ce
Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
- 4ndY
- Moderator
- Postovi: 4060
- Pridružen/a: 15 svi 2008, 18:05
- Spol: M
- OS: Fedora/KDE
- Lokacija: Hamburg, DE
- Kontakt:
Re: Novi jezici, njihove paradigme i web programiranje :)
Još jedan veliki grijeh PHP-a: ne podržava UTF-8 u svim funkcijama (već tu i tamo ima mb_* ekvivalent) i onda se dogodi da web aplikacija također ne podržava UTF-8 iako je to danas "must have".
A neutron walks into a bar; he asks the bartender, 'How much for a beer?' The bartender looks at him, and says 'For you, no charge.'
Re: Novi jezici, njihove paradigme i web programiranje :)
Čuo sam priče da jako puno banaka ima još uvijek kritične programe pisane u cobolu i da bi ih prepisivanje na modernije jezike (plus nadogradnje sustava) koštale umobolne svote novaca. No da, pazi, zašto mi se čini pisanje u C-u (ili bilo kojem drugom jeziku koji je kvalitetno ISO standardiziran), pematnije je upravo ono na što si se žalio oko PHP-a: verzije pisane za 5.2 rade vjerojatnije na 4.x seriji nego na 5.3 serverima. Ako već pišem neke core aplikacije koje znam da neću mijenjati, zašto uopće riskirati nestabilnost ili potrebu prepisivanja na najrecentnije verzije? Jednom napisani program će garantirano raditi sada i za 20 godina, problemi sa skalabilnosti će biti bitno umanjeni (zamisli da imaš caching sustav za c program, valjda bi brzien bile na 0.0001 ms). OK, istina, potrošiš inicijalno više vremena, ali kasnije imaš manje muke.
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
- 4ndY
- Moderator
- Postovi: 4060
- Pridružen/a: 15 svi 2008, 18:05
- Spol: M
- OS: Fedora/KDE
- Lokacija: Hamburg, DE
- Kontakt:
Re: Novi jezici, njihove paradigme i web programiranje :)
Moja žalopoljka o PHP-u ne znači da sam ja automatski za C jer samo s C-om nebi razvio web aplikaciju koja bi bila usporediva s današnjim standardima narednih 10 godina.
Idemo redom. Rekao bih "želim podršku za UTF-8" (koju C jasno nema), dakle uzeo bih neku biblioteku za to. Želio bih apstrakciju koja lakše radi s relacijskim bazama pa bih uzeo biblioteku za to. Želio bih kompleksnije dinamičke strukture s kojima jednostavno mogu manipulirati u memoriji (a ne da moram ručno oslobođati memoriju nakon što je zauzmem)... našao bih biblioteku i za to. I tako za svaku stvar gdje zapnem, ali onda bi se te sve biblioteke počele međusobno klati pa bih vjerojatno tražio neki apstraktniji framework da mi omogući svu tu funkcionalnost odjednom. I našao bih ga! On se zove Perl, Python, Ruby, PHP itd. Eto, web aplikacije razvijao bih u programskim jezicima koji mi nude funkcionalnost koju trebam ili bih bio primoran razviti svoj programski jezik (u C-u?) koji bi radio isto što i ovi. Eto, topla voda je tu!
Umorio sam se već od ponavljanja... C je super jezik, ali ne u svim kontekstima, pogotovo ne za web aplikacije. Da, implementirao bih dijelove web aplikacije u C-u ako bi to trebalo (kao što to radi Google, Facebook i svi drugi), ali pisati web aplikacije u potpunosti u C-u bio bi samo čin mazohizma, a ne racionalnog rješavanja problema.
Idemo redom. Rekao bih "želim podršku za UTF-8" (koju C jasno nema), dakle uzeo bih neku biblioteku za to. Želio bih apstrakciju koja lakše radi s relacijskim bazama pa bih uzeo biblioteku za to. Želio bih kompleksnije dinamičke strukture s kojima jednostavno mogu manipulirati u memoriji (a ne da moram ručno oslobođati memoriju nakon što je zauzmem)... našao bih biblioteku i za to. I tako za svaku stvar gdje zapnem, ali onda bi se te sve biblioteke počele međusobno klati pa bih vjerojatno tražio neki apstraktniji framework da mi omogući svu tu funkcionalnost odjednom. I našao bih ga! On se zove Perl, Python, Ruby, PHP itd. Eto, web aplikacije razvijao bih u programskim jezicima koji mi nude funkcionalnost koju trebam ili bih bio primoran razviti svoj programski jezik (u C-u?) koji bi radio isto što i ovi. Eto, topla voda je tu!
Umorio sam se već od ponavljanja... C je super jezik, ali ne u svim kontekstima, pogotovo ne za web aplikacije. Da, implementirao bih dijelove web aplikacije u C-u ako bi to trebalo (kao što to radi Google, Facebook i svi drugi), ali pisati web aplikacije u potpunosti u C-u bio bi samo čin mazohizma, a ne racionalnog rješavanja problema.
A neutron walks into a bar; he asks the bartender, 'How much for a beer?' The bartender looks at him, and says 'For you, no charge.'
Re: Novi jezici, njihove paradigme i web programiranje :)
Da, ja bih napisao vlastite headere u C-u da kompenziram nedostatak nekih tipičnih stvari za web-dev. Ne vidim to baš kao izmišljanje tople vode, jer bi to značilo da nitko ne bi trebao pisati ikakve CMS-e van jednog (recimo wp-a) ili bilo što dvostruko (recimo, čemu kde ako postoji gnome). Jednostavno, nisi zadovoljan postojećim rješenjima, pa napraviš novo!
Također i neki header za interakciju za bazama. Ti headeri bi inicijalno zahtijevali dosta pisanja, ali krajnji rezultat je taj da se ne moraš brinuti o trajnosti koda programa koje pišeš niti te headere mora pisati n+1 put. Ne trebaš brinuti ni o trajnosti headera koje si napisao za svoje potrebe, jer oni traju koliko i C jezik.
Dakako, ne koristiš ni "samo" PHP ili python, već tu dođe i js i slične stvari, ali u principu nema razloga zašto ne bi napisao aplikaciju u C-u sa današnjim standardima na ovakav način.
Također i neki header za interakciju za bazama. Ti headeri bi inicijalno zahtijevali dosta pisanja, ali krajnji rezultat je taj da se ne moraš brinuti o trajnosti koda programa koje pišeš niti te headere mora pisati n+1 put. Ne trebaš brinuti ni o trajnosti headera koje si napisao za svoje potrebe, jer oni traju koliko i C jezik.
Dakako, ne koristiš ni "samo" PHP ili python, već tu dođe i js i slične stvari, ali u principu nema razloga zašto ne bi napisao aplikaciju u C-u sa današnjim standardima na ovakav način.
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
- drone
- Moderator
- Postovi: 3293
- Pridružen/a: 01 pro 2010, 23:50
- OS: Arch/KDE, Debian/Armbian
- Lokacija: Nova Gradiška
Re: Novi jezici, njihove paradigme i web programiranje :)
shrike, najbolje bi bilo da pokušaš sam nešto slično složiti. Ovo što je rekao 4ndY stoji. Ja sam tako pokušao skucati nekakav prototip kase u ncursesu i s MySQL-om u C-u. Ubrzo mi se za takvu, na prvi pogled vrlo jednostavnu stvar pojavilo nekoliko problema i to baš ovakvih kakve je 4ndY naveo.
Evo konkretno: kod love treba decimal datatype, float zaboravi. Dakle, ili piši svoje preko integera ili koristi gotovi lib. Potom, C i UTF... Banalna stvar: da bi pravilno pozicionirao string trebaš znati njegovu dužinu. UTF-8 i recimo 8859-2 s našim znakom u stringu daju drugačiji rezultat za broj znakova jer u jednom slučaju "naše slovo" zauzima dva bajta u drugom jedan. Postoji i wide ncurses, ali to opet donosi neke svoje problemčiće. U to još dodaj neku bazu poput MySQL-a...
Problem je što ćeš se s C-om stalno hrvati i otkrivati toplu vodu. Svaki taj library moraš proučiti, odnosno često ih ima više, a ti onda otkrivaj koji ti odgovara. I onda pogledaš recimo Python koji to sve ima ugrađeno i ne moraš se zezati s pointerima i memorijom
Evo konkretno: kod love treba decimal datatype, float zaboravi. Dakle, ili piši svoje preko integera ili koristi gotovi lib. Potom, C i UTF... Banalna stvar: da bi pravilno pozicionirao string trebaš znati njegovu dužinu. UTF-8 i recimo 8859-2 s našim znakom u stringu daju drugačiji rezultat za broj znakova jer u jednom slučaju "naše slovo" zauzima dva bajta u drugom jedan. Postoji i wide ncurses, ali to opet donosi neke svoje problemčiće. U to još dodaj neku bazu poput MySQL-a...
Problem je što ćeš se s C-om stalno hrvati i otkrivati toplu vodu. Svaki taj library moraš proučiti, odnosno često ih ima više, a ti onda otkrivaj koji ti odgovara. I onda pogledaš recimo Python koji to sve ima ugrađeno i ne moraš se zezati s pointerima i memorijom
1986-1990: Commodore64 / 1990-1994: Amiga 500 / 1995-1996: Amiga 1200 / 1997-2001: N/A@home /
2002-2004: Windows98, XP /
2004-2005: Knoppix, Mandrake / 2005: Mandriva, Ubuntu / 2005-2009: LFS / 2009-2010: Mint /
2010-... Arch
2002-2004: Windows98, XP /
2004-2005: Knoppix, Mandrake / 2005: Mandriva, Ubuntu / 2005-2009: LFS / 2009-2010: Mint /
2010-... Arch
Re: Novi jezici, njihove paradigme i web programiranje :)
Slažem se da ću se sa C-om hrvati u početku, no za svaki problem odmah napraviš svoj header sa svojm funkcijom i problem kasnije više ne postoji. Ovo sa stringovima recimo možeš zgodno riješiti tako da ti svaki na recimo početku sadrži informaciju o svojoj duljini, tada postaje trivijalno obrađivati te veličine (osim što konzistentno koristiš utf-8 jer sam vidio dosta problema kod kombiniranja charseta).
No da , ukratko, planiram aplikaciju u C-u. Problem je jedino da ne znam ništa dizajna (tipa ne znam ni linije css-a, nemam pojma kako koristiti gimp itd), tako da sam za dizajn zamolio jednog našeg forumaša. Ukratko, kada tog bude gotovo, krećem sa kucanjem. Bit će kao gpl3 na sourceforge pa ćete i sami vidjeti.
No da , ukratko, planiram aplikaciju u C-u. Problem je jedino da ne znam ništa dizajna (tipa ne znam ni linije css-a, nemam pojma kako koristiti gimp itd), tako da sam za dizajn zamolio jednog našeg forumaša. Ukratko, kada tog bude gotovo, krećem sa kucanjem. Bit će kao gpl3 na sourceforge pa ćete i sami vidjeti.
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
- drone
- Moderator
- Postovi: 3293
- Pridružen/a: 01 pro 2010, 23:50
- OS: Arch/KDE, Debian/Armbian
- Lokacija: Nova Gradiška
Re: Novi jezici, njihove paradigme i web programiranje :)
Razumijem što želiš, ali vidjet ćeš... Ja isto nekako najviše volim C, ali za mnoge stvari ipak su ovi drugi navedeni jezici bolji izbor.
Konzistentnost korištenja UTF-8 nije upitna. Svejedno ćeš naići na probleme.
Ovo s informacijom o duljini stringa na njegovom početku... Ouch! Mislim da trebaš malo razmisliti o grozoti takvog rješenja
Osim što bi sve bilo mukotrpno za pisati, što bi s dinamičkim stringovima, onima koji se generiraju radom programa (mogu biti i brojevi koji se pretvaraju u stringove i obratno) ili onima koje je unio korisnik?
Naravno da je moguće napraviti takvu aplikaciju u C-u, u C-u je sve moguće, ali mislim da ćeš se namučiti.
Konzistentnost korištenja UTF-8 nije upitna. Svejedno ćeš naići na probleme.
Ovo s informacijom o duljini stringa na njegovom početku... Ouch! Mislim da trebaš malo razmisliti o grozoti takvog rješenja
Naravno da je moguće napraviti takvu aplikaciju u C-u, u C-u je sve moguće, ali mislim da ćeš se namučiti.
1986-1990: Commodore64 / 1990-1994: Amiga 500 / 1995-1996: Amiga 1200 / 1997-2001: N/A@home /
2002-2004: Windows98, XP /
2004-2005: Knoppix, Mandrake / 2005: Mandriva, Ubuntu / 2005-2009: LFS / 2009-2010: Mint /
2010-... Arch
2002-2004: Windows98, XP /
2004-2005: Knoppix, Mandrake / 2005: Mandriva, Ubuntu / 2005-2009: LFS / 2009-2010: Mint /
2010-... Arch
Re: Novi jezici, njihove paradigme i web programiranje :)
OK, da ne bi sada krenuli u beskonačne detalje čekajmo da dovršim aplikaciju ili da propadne pa ćemo vidjeti. Inače, baš sada gledam BBC dokumentarac o Africi (u 3 dijela) i vidim da postoje Afrički pingvini. Ne, nisam pijan ni napušen i uši mi rade. U Africi ima pingvina. E, nakon toga C u web aplikacije djeluje kompletno razumna ideja 
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!
Re: Novi jezici, njihove paradigme i web programiranje :)
Naravno da u Africi ima pingvina .. to je ekipa s Madagaskara


Re: Novi jezici, njihove paradigme i web programiranje :)
Nedavno se počela zahukatavati priča oko jednog kompleksnog sustava pisanog u javi i sjetio sam se ovog topica. U čemu je problem? Baza za sustav je pisana originalno u 90im godinama, a sustav dovršen oko 2002. Web aplikacija (zapravo nekoliko njih) sada imaju ukupno oko 300,000 linija koda , a sa time da je baza (tj sve baze) u totalitetu malo manja od 60 GB. To čudo je toliko staro da ni nema UTF-8 podršku jer je sve nastalo prije utf8. Isto je i sa svime ostalime (koristi se tomcat 5 star 10 godina itd). Sada se priča o tome da se prijeđe na novi famework i novi jezik, i tu se debatira oko toga na što i kako sve to uopće izvesti (ako bi se uopće išlo tom rutom).
U čemu je problem zapravo? web razvijatelji tipično, kao i ovdje, zagovaraju nove hip jezike ili popularne stvari tipa pyhon/django, ruby/rails, php/zend, java itd riješenja. Sve ima svoje neke prednosti, a često se spominju stvari tipa "moežmo računati na veliku podršku zajednice". Sigurno, odabirom novih jezika SADA možeš razčunati na podršku zajednice, ali za 10 godina nitko neće podržavati arhaični jezik i arhaični framework i pomoć zajednice će se svesti "stavi novu verziju", što se jednostavno ne može desiti jer nemaju backward kompatibilnost. I sada, googlam i stacktacam da li postoje klasični jezici za web koji ili drže backward kompatibilnost ili koji se ne mijenjaju i to baš za ovakve projekte. Odgovor je jednostavno ne.
Korištenje ikakvih fameworka je inicijalno prednost jer skraćuje vrijeme, ali dugoročno postaje samo još jedna stvar koju treba održavati i koja masivno ograničava. Jezik poprilično slično. U principu, koliko sam vidio na stacktrace, najbolje rješenje za tavke stvari je cca. ovo:
- napišeš backaned u nekom jeziku tipa C/fortran koji se vrti ultra brzo, a zatim porilično malen front end u nečem konvencionalnom i bez korištenja frameworka. Zašto? Istina da je ovo incijalno veoma sporo razvijanje, ALI za 10-15 godina češ i dalje moć računati na pomoć zajednice ako imaš upit oko C-a. Za 10-15-30 godina nitko ti neće pomoći sa ostalim jezicima jer ih nitko više ni ne koristi. Stvar se može relativno lagano srediti u MVC stiilu, pri čemu ti custom biblioteke služe kao kontroler i u kojima definiaš vlastiti standard, a klasični html/css kao view. time možeš mijenjati izgled koliko želiš bez da diraš kod ili kontroler, nemaš na kraju pretjeranih problema sa frameworkom niti sa ultra rhaičnim dodatnim sustavima. I pazite, govorimo o slučaju veoma limitarnog sa programerima tako da konstanto prevođenje na novu verziju nekog jezika uopće nije opcija.
Dodatni je problem isto što brdo tih điđa-miđa sa sobom donese monstruzno golemi set dodatnih paketa koji stvaraju poprilično veliki stog stvari u kojima može svašta poći po zlu.
Za kraj, opet, performanse i dugoročna stabilnost jezika su izuzetno bitne. Java je tu izuzetno loša, ruby/rails još gori, a ostali nisu daleko. I sjetite se da ovo nije web site, već ipak web aplikacija za koju u naprijed znaš da će se koristiti više od desetljeća od kada je napisana na raznim budućim verzijama OS-a. Kompatibilnost i stog na čemu tvoj web ovisi su ultra kritični dugoročno, a svako zajebavanje radi brzinske inicijalne kreacije se kasnije poprilično plaćaju.
Postoji dosta ljudi koji traži jezik/framework koji bi bio stabilan na duge periode, ali to jednostavno ne postoji. Mislim da bi zapravo moglo biti jako dobro za tržište kada bi bio nekakv prevoditelj jezika. Recimo, napišeš program u nečem ultra jednostavnom, a onda prevoditelj to prevede u neki klasični kompilirani jezik. Ili obrnuto, uzmeš klasični kod napisan prije 15 godina i program ga prevede na najnoviju verziju jezika koji voliš. Napraviš promjene koje želiš i hit compile. Dobio si brzinu i lakoću editiranja u jednom!
EDIT:
Znam, sada ćete svi opet doći i reći: "shrike, to se tako ne radi". Problem je u tome da alternativa baš i ne postoji. Također, htio bih naglasiti jednu drugu stvar, a to je da odabir C-a nije jer je star ili nešto takvo, već jednostavno zato jer je dugoročno stabilan, brz i uvijek možeš naći pomoć za C/fortran ili slične jezike. Na skali kakva je potrebna za ovakve programe to je ekstremno bitno. Zato se molim vas suzdrište od komentara tipa: instaliraj 10 godian star debian i gnome1 i slične gluposti jer samo znači da niste shvatili problematiku.
U čemu je problem zapravo? web razvijatelji tipično, kao i ovdje, zagovaraju nove hip jezike ili popularne stvari tipa pyhon/django, ruby/rails, php/zend, java itd riješenja. Sve ima svoje neke prednosti, a često se spominju stvari tipa "moežmo računati na veliku podršku zajednice". Sigurno, odabirom novih jezika SADA možeš razčunati na podršku zajednice, ali za 10 godina nitko neće podržavati arhaični jezik i arhaični framework i pomoć zajednice će se svesti "stavi novu verziju", što se jednostavno ne može desiti jer nemaju backward kompatibilnost. I sada, googlam i stacktacam da li postoje klasični jezici za web koji ili drže backward kompatibilnost ili koji se ne mijenjaju i to baš za ovakve projekte. Odgovor je jednostavno ne.
Korištenje ikakvih fameworka je inicijalno prednost jer skraćuje vrijeme, ali dugoročno postaje samo još jedna stvar koju treba održavati i koja masivno ograničava. Jezik poprilično slično. U principu, koliko sam vidio na stacktrace, najbolje rješenje za tavke stvari je cca. ovo:
- napišeš backaned u nekom jeziku tipa C/fortran koji se vrti ultra brzo, a zatim porilično malen front end u nečem konvencionalnom i bez korištenja frameworka. Zašto? Istina da je ovo incijalno veoma sporo razvijanje, ALI za 10-15 godina češ i dalje moć računati na pomoć zajednice ako imaš upit oko C-a. Za 10-15-30 godina nitko ti neće pomoći sa ostalim jezicima jer ih nitko više ni ne koristi. Stvar se može relativno lagano srediti u MVC stiilu, pri čemu ti custom biblioteke služe kao kontroler i u kojima definiaš vlastiti standard, a klasični html/css kao view. time možeš mijenjati izgled koliko želiš bez da diraš kod ili kontroler, nemaš na kraju pretjeranih problema sa frameworkom niti sa ultra rhaičnim dodatnim sustavima. I pazite, govorimo o slučaju veoma limitarnog sa programerima tako da konstanto prevođenje na novu verziju nekog jezika uopće nije opcija.
Dodatni je problem isto što brdo tih điđa-miđa sa sobom donese monstruzno golemi set dodatnih paketa koji stvaraju poprilično veliki stog stvari u kojima može svašta poći po zlu.
Za kraj, opet, performanse i dugoročna stabilnost jezika su izuzetno bitne. Java je tu izuzetno loša, ruby/rails još gori, a ostali nisu daleko. I sjetite se da ovo nije web site, već ipak web aplikacija za koju u naprijed znaš da će se koristiti više od desetljeća od kada je napisana na raznim budućim verzijama OS-a. Kompatibilnost i stog na čemu tvoj web ovisi su ultra kritični dugoročno, a svako zajebavanje radi brzinske inicijalne kreacije se kasnije poprilično plaćaju.
Postoji dosta ljudi koji traži jezik/framework koji bi bio stabilan na duge periode, ali to jednostavno ne postoji. Mislim da bi zapravo moglo biti jako dobro za tržište kada bi bio nekakv prevoditelj jezika. Recimo, napišeš program u nečem ultra jednostavnom, a onda prevoditelj to prevede u neki klasični kompilirani jezik. Ili obrnuto, uzmeš klasični kod napisan prije 15 godina i program ga prevede na najnoviju verziju jezika koji voliš. Napraviš promjene koje želiš i hit compile. Dobio si brzinu i lakoću editiranja u jednom!
EDIT:
Znam, sada ćete svi opet doći i reći: "shrike, to se tako ne radi". Problem je u tome da alternativa baš i ne postoji. Također, htio bih naglasiti jednu drugu stvar, a to je da odabir C-a nije jer je star ili nešto takvo, već jednostavno zato jer je dugoročno stabilan, brz i uvijek možeš naći pomoć za C/fortran ili slične jezike. Na skali kakva je potrebna za ovakve programe to je ekstremno bitno. Zato se molim vas suzdrište od komentara tipa: instaliraj 10 godian star debian i gnome1 i slične gluposti jer samo znači da niste shvatili problematiku.
Es gibt keinen Gott, kein Universum, keine menschliche Rasse, kein irdisches Leben, keinen Himmel, keine Hölle. Es ist alles ein Traum - ein grotesker und dummer Traum. Nichts existiert außer dir. Und du bist nur ein Gedanke - ein vagabundierender Gedanke, ein nutzloser Gedanke, ein heimatloser Gedanke, der verloren in der leeren Ewigkeit wandelt!