Programski jezik

Discussion in 'Operativni sistemi, aplikacije i programiranje' started by TopniK, Dec 20, 2006.

Thread Status:
Not open for further replies.
  1. TopniK

    TopniK Komšija

    Koji je najbolji a time i najjednostavniji programski jezik pomoću kojeg se mogu napraviti razni poslovni software-i kao što su Pos kase i drugi mnogo kompleskniji poslovni software?
     
  2. Nani

    Nani Komšija

    Gledaj, danas se sve poslovne aplikacije uglavnom rade sa .NET platformama, Oracle bazama sa implementacijama c++-a!
    tako da nema jednostavnog poslovnog software.

    Taj kompleksniji software o kojem pricas je teski c++ kod, znaci objektno orijentisano programiranje sa naglaskom na nasljedjivanjem klasa zbog kompleksnosti softwera za velike firme.

    Danas se kao osnova baza podataka koristi Oracle i SQL!
    Tu je jako bitno optimizovat program za transfer podataka izmedju firmi, znaci mora se voditi racuna o limitima koja predstavlja baza podataka sa mreznom infrastrukturom. Vodit racuna o RAT i RAR protokolima i interkacijom sa SQL kodom!
    Nek baza radi i skladisti podatke na NAS (network attached storage) serveru, bilo kakav problem na ISA serveru (koji je u 90% slucajeva spojen na NAS) se odrazava na NAS rack, ne bitno o scsi kontrolerima ili koji se tip RAID-a koristi. Baza pada zbog mrezne komponente, a problem je takav da se ne zna gdje je problem nastao, da li je u pitanju software na host mashinama, samom softweru baze podataka il na samoj mrezi. Program kod krajnjeg korisnika ne radi, gubi se vrijeme, gube se pare.
    101 zajebancija!
    Tako ako se bas ne mislis baviti sa ovim toplo preporucujem da debelo zaobidjes softwerski inzinjering u svakom smislu!
     
  3. TopniK

    TopniK Komšija

    Uh...Prepade me. :)

    Nikada nisam za tako kratko vrijeme odustao od nekih svojih ''snova''. :)

    Hvala puno!

    EDIT: Ili si ti išao planski da me ''ohladiš''. 8)
     
  4. Nani

    Nani Komšija

    Ako ti je san ne odustaj, sve se moze nauciti!
     
  5. Qler

    Qler Veteran foruma

    nani je u pravu.. jarane nije programiranje Paint :D pa da sjednes i da svrljas pa sta bude...
     
  6. Nani

    Nani Komšija

    Znamo mi qler sta je to programiranje :wink:
     
  7. Nani

    Nani Komšija

    Znamo ja i qler sta je to zajebancija oko programiranja :wink:
     
  8. TopniK

    TopniK Komšija

    Kaže se Qler i ja, a ne ja i Qler. Nikada ne stavljaj sebe na prvo mjesto (osnovno pravilo).

    I ti naš'o progamirati. :) Šega šega.

    Ma u pravu ste. Što jest jest, progamiranje je zaista kompleksno i zahtijeva inteligenciju, volju i upornost. Ovo zadnje definitivno nemam.
     
  9. Nani

    Nani Komšija

    U pravi si, do mene!

    Nego de se ti uhvati programiranja i sql-a a sta QLER i ja znamo... mislim da se oko toga trebas najmanje brinuti!

    Mislis da imas ovo prvo :D
     
  10. Guest

    Guest Guest

    Bezveze prepadas covjeka detaljima koji mu u ovoj fazi razmisljanja apsolutno nisu potrebni. Pogotovo ovaj dio o serverima, to uglavnom ni ne spada u posao programera.
    Vazani su koncepti, a znanje o detaljima se stice sa iskustvom. Kao i u svemu drugom, praksa zahtjeva vrijeme.

    Sto se tice razvoja poslovnih aplikacija, trenutno dominiraju dvije platforme:. NET i Java EE. Primjeti da ne govorimo samo o jeziku. Jezik je samo jedna od komponenti koju razvojna platforma podrazumjeva. Tu su jos biblioteke, razvojno okurzenje, izvrsno okruzenje (trenutno dominiraju virtuelne masine) i sve stvari koje se uz to podrazumjevaju. Tako se na .NET-u uglavnom koristite C# i Visual Basic, i izbor jezika je sustinski stvar ukusa.

    O C++-u ne trebas da razmisljas, on se u skorije vrijeme koristi samo kada su performanse od kljucne vaznosti, sto nije cest slucaj u poslovnim aplikacijama.

    Ovdje se namece jos jedna dilema, a to je da li zelis da radis sa Proprietary ili Open Source tehnologijama. Od toga zavisi izbor platforme, izbor baze podataka itd.

    S obzirom da je razvoj aplikativnog softvera u skorije vrijeme uglavnom zasnovan na web-u, mozda bi ti bilo najkorisnije da krenes upravo od toga. Na primjer, pisanje ASP.NET 2.0 aplikacija u C#-u, ili razvoj jednostavnijih aplikacija zasnovanih na open source tehnologijama PHP/MySQL/Apache. Kombinacija je mnogo, i univerzalne forumule nema - sve zavisi od konkretnog problema.

    Za pocetak, trebalo bi da vladas konceptima objektno orjentisanog programiranja i znas ponesto o bazama podataka i SQL-u. Fakultet bi u principu trebao biti dobo mjesto za sticanje ovih znanja :) Nemas razloga za brigu, sve se moze savladati ukoliko se ulozi dovoljno vremena i truda.
     
  11. TopniK

    TopniK Komšija

    Hvala obojici ali tek sada ste me toliko prepali da razmišljam da se riješim kompa i da pobjegnem negdje u šumu i živim od lova i stočarstva koristeći nož, sikiru, motiku i druge jednostavne predmete.

    Hvala još jednom ali progamiranje ću ostaviti za neki drugi život....ako ga uopšte ima...
     
  12. Nani

    Nani Komšija

    Ne bih se bas slozio. Dio o serverima naravno da ne spada u domenu programera prilikom ucenja programiranja ali na konkretnim zadacima itekako spada.
    Danasnji uptime servera kao i poslovnih aplikacija mora biti iznad 99%! MRP, TMT, kao i enterprise time planing itekako su vazni za jednog programera.
    Da bi bio dobar software inzinjer OSNOVNO je da ODLICNO poznajes hardware i ponasanje samog koda napisane aplikacije u interkaciji sa kernelom operativnog sistema na kojem se ona vrti.

    Prema tome softverski inzinjer ali u pravom smislu rijeci je vrh danasnje informaticke naobrazbe.
    Covjek koji odlicno poznaje objektno orijentisano programiranje, pogotovo u c++, virtulane mreze, funkcionisanje protokola, rad sa objektima u language querijima sql-a i naravno odlicno poznavanje samo mrezne infrastrukture kao i sam rad routera.
    U c# ne postoje pointeri i pokazivaci prema tome za bilo kojeg ozbiljnog programera c# je djeciji jezik namjenjen net orijentisanim aplikacijama.
    Zbog tezine i same logike pristupa memoriskom kontroleru c++ je dobio zamjenu u vidu c# ne zato jer je c# bolji vec jer je laksi ali bez dovoljno semantike kojim si ozbiljniji problemi mogli rijesiti.
    Pa mislim da svakom ko je upoznat sa strukturnim programiranjem je jasno sta znaci kad u programskom kodu nema upotrebe pointera i pokazivaca!



    Nema tu dileme nikakve. Proprietari platforme tipa Sun Solaris-a i komercijalnih verzija Unixa se itakako placaju!
    Pricamo ovde o proizvodjacima hardwera koji su striktno napisali software za svoje serverske konfiguracije. Prema tome to je preskupo.
    Dakle najjeftinija varijanta Linux/Oracle, MS Server 2003/My SQL je isto skup za vecinu nasih firmi.
     
  13. Guest

    Guest Guest

    Uskaces sam sebi u usta sa ovom recenicom :) Programer aplikativnog softvera uglavnom NE VIDI hardver, niti hadrver treba da ga zanima. API operativnog sisteme sluzi upravo da "zastiti" programera od zezanja sa harverrom. Programer pise kod koji nema veze sa fizickim uredjajima, pri cemu se kompajler, operativni sistem i device driveri garantuju da ce se sve ispravno izvrsiti.
    Ja se sa ovim slazem, ali treba biti realan. Covjek se danas moze baviti razvojem softvera, cak sto vise biti odlican developer, i ako ne poznaje neke od ovih stvari.
    Istom tom logikom bi asembler bio visestruko brzi od C++, pa ga ljudi ipak ne koriste kad ne moraju ;)
    Ne mozes tako direktno porediti C# i C++ jer im domen primjene nije isti. C# oslobadja programera od brige o stvarima koje nisu sustina problema koji rjesava. Zato je "bolji" u uslovima gdje performanse nisu od presudne vaznosti(recimo poslovni softver). Na kraju krajeva, danas je vrijeme programera skuplje od vremena masine.
    Evo ja sam upoznat, ali mi nije jasno na sta mislis:) Sa jednog viseg nivoa apstrakcije (sa kojeg situaciju posmatra programer aplikativnog softvera), automatski i manualni memory management su ekvivalenti - omogucavaju da se odradi isti posao.
    Nisam siguran da te razumijem. FOSS je postao itekako konkurentan proprietary tehnologijama, a postat ce jos vise kada za koji mjesec Sun objavi Javu pod GPL-om. Potencijal u svakom slucaju postoji, ali to je sasvim druga prica.
     
  14. ihti

    ihti Novi član

    Mozda da pokusas sa web aplikacijama, puno je lakse i brzo se uci, moja preporuka je PHP u kombinaciji sa MySQL bazom, na netu je dosta dobrih tutoriala, foruma i knjiga iz kojih osnove mozes savladat za 3 mjeseca i vec pocet radit manje skripte kao Guesbook i sl.
     
  15. Nani

    Nani Komšija

    Ti uz svo duzno postovanje nisi upoznat kako se danas rade kompleksni programi.
    Kad pricamo o programiranju uglavnom strukturalnom i onim sto se moze nazvati objektnim u c# kompajliranje je, linkiranje i prevodjenje u objektne i izvrsne fajlove je sve sto programer treba da zna! Napominjem da je to uglavnom slucaj kad se radi o programiranju na .net razvojnim alatima i jezicima.
    Sta mislis sta je razlog sto se izbacio koncept manipulisanja sa memorijskim blokovima koje su prisutne u c++ preko pointera i pokazivaca?
    Iz razloga sto za c# nije potrebna manipulacija sa hardwerom.

    Da li si radio na optmiziranju c++ koda za mrezno okruzenje i na pristupima HAL-u (hardware abstraction layeru) kad se radi o microsoftovim platformama. Sinhronizacija aplikacije sa HAL-om i ruterom na kernel nivou! Pogledaj kako se radi enkapsulacija sa c# a kako sa c++!
    Prema tome treba biti jasno, c# je prvobitno napravljen da bi olaksao koristenje c++ sa mreznom komponentom i web aplikacijama a ne da bi ga zamjenio, jer sve sto se moze uraditi u c# u c++ se moze uraditi na 10 nacina vise.
    To sto pricas da programer ne VIDI hardware i da ga hardware ne zanima je netacno!
    Znacaj interakcije sa hardwerskim layerima nije jedno vec je najbitnije znanje koji iskusan programer mora poznavati!
    Optimizacija i brzina izvodjenja aplikacije na na mreznoj komponenti vec na samoj mashini zavise od optimizacije i sinhronizacije sa vanjskim slojevima kernela koji komuniciraju direktno sa hardwerom! Ovo nije samo poznavanje OOP vec odlicno poznavanje savremenih operativnih sistema!
     
  16. Guest

    Guest Guest

    Mi kao da govorimo razlicitim jezicima. Ovdje je covjek poceo pricati o poslovnom - aplikativnom softveru. U tome domenu, jezici sa virtuelnom masinom(prvenstveno java i .net jezici) pokazali su se kao zahvalnija rjesenja jer omogucavaju programeru da ne brine o stvarima niskog nivoa, bez kojih moze. To je jasno svakome ko je iole upoznat sa modernim trendovima u razvoju softvera.

    Naravno da za razvoj sistemskog softvera i odredjenih vrsta aplikativnog softvera potrebna veca kontrola na harverskim resursima. Za te svrhe C++ je i dalje prvi izbor. Ja to ne sporim, tako da ne vidim u cemu je problem.

    Poenta je da se danas 4/5 profesionalnih programera bave razvojem neke vrste informacionih sistema, znaci cisto aplikativnog softvera. Njima je bitnija brzina razvoja, sigurnost i dodatne mogucnosti koje im virualne masine nude od sirove snage C++. Za mene je ovo kraj diskusije, stvarno ne zelim vise da se ponavljam. I rest my case.

    P.S.
    Za kraj nesto malo o terminologiji:
    - Vec dva puta kazes "pointeri i pokazivaci", predpostavljam da znas da se radi o istoj stvari :)
    - Kada kazes "strukturalno" programiranje, predpostavljam da mislis na proceduralnu paradigmu. OOP je takodje struktuirano
    - Spominjes rad sa memorijskim kontrolerom u C++-u. Stvarima kao sto je memorijski kontroler uglavnom se ne bave se ni autori operativnih sistema, a kamoli prosjecni programeri. Alokaciju memorije u C++-u vrsi standardna biblioteka, uz pomoc OS-a.

    Bas me zanima gdje si se ti bavio tako "ozbiljnim" programiranjem na niskom nivou, cudno je da ti se desavaju ovakvi konceptualni/teoretski propusti ;)
     
  17. Kingpin

    Kingpin Aktivista

    ako nemas pojima kreni sa pascalom. naucices neke osnove programiranja i sintaxe.. ako ti je pascal pretezak znaci da do nije za tebe :]

    ako ga pojedes za par mjeseci kreni na C ;)
     
  18. TopniK

    TopniK Komšija

    Ma nakon par pročitanih tekstova, uputa, savjeta i sl. odlučio sam ostati na grafičkom dizajnu pa poslije malo na izradu web stranica, flash i sl.

    Ovo progamiranje me više ne privlači. :)
     
  19. Nani

    Nani Komšija

    Nisi uopste upoznat sa sistemskim inzenjeringom i kako tece sam proces razvoje jedne aplikacije.
    To sto sam ja pricao o sinhronizaciji sa HAL-om nije masinski jezik koji si ti htio da kazes vec sam rekao i mozes pogledati sa vanjskim djelovima hardware abstraction layera!
    Da znas da je HAL podjeljen na nekoliko nivoa ne bi lupao i oporedjivao optimizaciju koda sa HAL-om i masinski jezik
    Valjda to svakom treba da bude jasno ne koje upoznat sa modernim razvojem software-a vec ko zna sta je moderni razvoj software-a!

    Kazes sirova snaga c++, pa nije ti to g80 da pricas o snazi toliko o terminologiji.
    Kad smo kod terminologije da te uputim na neke stvari pointeri i pokazivaci nikad nisu bili isto niti se obiljezavaju isto! Da si pratio razvoj kako kazes modernog programiranja da su reference u mnogoj literaturi prevedene kao pokazivaci (scase) a pointeri ostaju pointeri! To sto pola asistenata na fakultetima brka pojmove jer je pointer=pokazivac ti je vec stvar do njih i do pojedinca koji misli da ako je pokupio osnove programiranja na casu da bez citanja literature je iskusan programer.
    Dakle referenca je pokazivac na neki drugu funkciju ili parametar unutar programa dok je pointer hardwerski manipulator memorijske alokacije! :wink:
    Hajmo dalje posto se zelis praviti pametan;
    Proceduralno programiranje je svako programiranje, da bi program radio moraju postojati procedure pa makar najednostavija tipa poziva cin i cout!
    Takodjer trebas obratiti paznju da se sve u programiranju zove procedura pa cak i kad navodis nesto kao napomenu!
    Prica o sistemskim procedurama i pozivima je vec sasvim nesto drugo!
    Strukturno programiranje je uvod u logiku programiranja jer se ne radi sa objektima, naprednim, klasama, vektorskim inverznim funkcijama, nema nasljedjivanja, nema enkapsulacije itd! Toliko o torminologiji posto vidim da dobar dio pojmova trpas pod isti kos!
    Pricas o alokaciji memorije, to nema nikave veze sa onim sto sam pricao i to ko i gdje vrsi alokaciju znaju sami pocetnici na prvom kursu iz programiranja!

    A ako te bas zanima gdje sam i sta radim, trenutno radim upravo ovo o cemu ti vezes nebuloze, IN2 program za umrezavanje svih Ininih poslovnica i pumpi u Hrvatskoj i BIH, prema tome mislim uz svo duznjo postovanje da ti ipak treba konkretnog znanja sa terena da bi uopste shvatio o cemu pricam, ali ako grijesim i odlicno poznajes materiju molim te mozes li mi rec kako da rijesim enkapsulaciju baze u oraclu preko RAR protokola za sve dolazne inbound protokole sa drugih poslovnica jer nam je transfer spor a nije do linka (Kapacitet linka je preko 5GB) niti je do baze koja ima interval cascade update-tiranja postavljen na 3 mb?
     
  20. Guest

    Guest Guest

    Ovo nije ustaljena terminologija, barem ne u BiH. Kod nas se pointeri obicno prevode kao pokazivaci, dok reference zadrzavaju to ime i u nasem jeziku. Ali nema veze, posto pravis razliku izmedju ovih pojmova nesporazum je rjesen, tako da nema razloga da o ovome i dalje pricamo ;)
    Nije svako programiranje proceduralno. Postoji jos nekoliko paradigmi programiranja. Ocigledno nikada nisi cuo za funkcionalno programiranje (npr. jezik Haskell) ili logicko programiranje (npr. Prolog). Nacin razmisljanja u ovim jezicima veoma razlicit od proceduralnog, a to sto se oni ne koriste u komercijalnom softveru je druga prica. Struktuirano programiranje je podskup proceduralnog kod koga nema upotrebe goto naredbi...

    BTW, cin i cout nisu procedure, vec imena objekata ;)

    A za ovo pitanje sa kraja, iskreno, ne mogu ti odgovoriti jer se nisam bavio tim stvarima na konkretnim projektima. Ali ti opet propustas poentu. To sto se ti bavis tim stvarima, ne znaci da se svi programeri, ili cak vecina programera bavi njima. To jednostavno nije tacno.
    Sto je problem specificniji, normalno je da postoji manje ljudi sa konkretnim iskustvom. Vec sam rekao da se uz dovoljno truda moze sve skontati, mada se nekad vise isplati platiti covjeka sa konkretnim iskustvom i poznavanjem problematike da rijesi stvari.

    Treba napraviti razliku izmedju nekog osnovnog znanja, i detalja o problemima vezanim za neki konkretan problem. Ja mislim da je ovo prvo vaznije za covjeka koji je postavio pocetnicko pitanje o izboru programskog jezika.
     
Thread Status:
Not open for further replies.