Novice » Znanost in tehnologija » Petdeset let COBOL-a
MrStein ::
noraguta, kaj bi naj tisti primer povedal?
C++ je nekajkrat hitrejši od F#. Si mogoče obratno interpretiral rezultate?
Malo več detajlov. Kak se vrstica obdela in kaj in kako se v bazo vpiše?
C++ je nekajkrat hitrejši od F#. Si mogoče obratno interpretiral rezultate?
- branje vrstic
- pisanje v bazo/ažuriranje baze, če vrstica že obstaja
Malo več detajlov. Kak se vrstica obdela in kaj in kako se v bazo vpiše?
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
krneki0001 ::
Vi kar po svoje, tukaj smo to sprobali in na ZOs v batchu java še dolgo ne bo dohitela cobola po hitrosti za premetavanje podatkov. Za kliente (aplikacije za vnos podatkov in ostalo) pa je java bolj primerna.
Pri batch obdelavah (recimo več deset milijonov izračunov) lahko že majhna nerodnost privede do 10x podaljšanja časa obdelave. Si prepričan, da ste pri vas enako vešči v Javi kot v Cobolu ? Kar tako na slepo težko verjamem, da razne kombinacije osnovnih matematičnih operacij (seštevanje, odštevanje, množenje in deljenje) prinesejo neko veliko razliko med dvema implementacijama jezikov. En primer, kako lahko nepoznavanje jezika postavi primerjavo pod vprašaj : C vs. Haskell
Večinoma ne gre za osnovne operacije, ampak samo za premike podatkov iz enega konca na drugega, sortiranja velikih mas podatkov, statistike in podobno, ter za polnjenje baz ali pa za branje velikanskih baz podatkov. (povprečna tabela ima vsaj po 2 do 3 miljone zapisov). In za to trdim, da je cobol še vedno pred javo.
jype ::
nebivedu> Moj program (napisan v cobolu) tole dela vsak dan in dela vse skupaj od štarta do konca celih 15 sekund. Zapisov je pa malo manj, samo 3,56 miljona vrstic s po 980 znaki na vrstico, kar mora program napolnit v različnih 64 polj v tabeli.
Js ti v assemblerju napišem še hitrejšega... V kakšnem letu pa pol.
V javi ti pa v dveh minutah napišem primerljivo hitrega.
Js ti v assemblerju napišem še hitrejšega... V kakšnem letu pa pol.
V javi ti pa v dveh minutah napišem primerljivo hitrega.
MrStein ::
Kot je že nekdo povedal: če je oni test pisal nekdo, ki ni mojster v Javi, je mimogrede lahko zagrešil kako napakico, ki stvar upočasni za faktor 10. Ali tisoč.
Se dogaja. Spomnite se svojih začetkov. Jaz recimo se spomnim dveh primerov iz ranih let, ko mi je potem mal(enkostn)a sprememba v kodi prinesla 1000 kratno pohitritev.
Se dogaja. Spomnite se svojih začetkov. Jaz recimo se spomnim dveh primerov iz ranih let, ko mi je potem mal(enkostn)a sprememba v kodi prinesla 1000 kratno pohitritev.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
krneki0001 ::
noraguta, kaj bi naj tisti primer povedal?
C++ je nekajkrat hitrejši od F#. Si mogoče obratno interpretiral rezultate?
- branje vrstic
- pisanje v bazo/ažuriranje baze, če vrstica že obstaja
Malo več detajlov. Kak se vrstica obdela in kaj in kako se v bazo vpiše?
Imaš tabelo s 64 polji. Imaš datoteko, katere vrstica je dolga 980 znakov. Prebereš vrstico, jo razbiješ na teh 64 polj. Vpišeš polja v tabelo (insert), če zapis že obstaja jo ažuriraš(update). In tako naprej za vsako naslednjo vrstico. Vrstic je okoli 4 miljone.
Kaj je tukaj nejasnega?
nebivedu> Moj program (napisan v cobolu) tole dela vsak dan in dela vse skupaj od štarta do konca celih 15 sekund. Zapisov je pa malo manj, samo 3,56 miljona vrstic s po 980 znaki na vrstico, kar mora program napolnit v različnih 64 polj v tabeli.
Js ti v assemblerju napišem še hitrejšega... V kakšnem letu pa pol.
V javi ti pa v dveh minutah napišem primerljivo hitrega.
Ne verjamem. Dokaži.
Zgodovina sprememb…
- spremenilo: krneki0001 ()
jype ::
Da prej ni bilo jasno, da gre za datoteko s fiksno strukturo, pa da še vedno ni jasno, za kakšno (katero) bazo gre.
kopernik ::
noraguta, kaj bi naj tisti primer povedal?
C++ je nekajkrat hitrejši od F#. Si mogoče obratno interpretiral rezultate?
- branje vrstic
- pisanje v bazo/ažuriranje baze, če vrstica že obstaja
Malo več detajlov. Kak se vrstica obdela in kaj in kako se v bazo vpiše?
Imaš tabelo s 64 polji. Imaš datoteko, katere vrstica je dolga 980 znakov. Prebereš vrstico, jo razbiješ na teh 64 polj. Vpišeš polja v tabelo (insert), če zapis že obstaja jo ažuriraš(update). In tako naprej za vsako naslednjo vrstico. Vrstic je okoli 4 miljone.
Kaj je tukaj nejasnega?
Daj vašo kodo v Javi na plano (tisti test, ki si ga prej omenjal), da vidimo točno, kaj ste počeli. Je pa res, da ko enkrat vpleteš v take teste še bazo, se možnost zajebkov hitro poveča.
Matako ::
Tule še primerjava "COBOL for .net" in C#: http://nerds-central.blogspot.com/2009/...
Ok.. če že dajemo primere, pojdimo k osnovam.
Dajmo raje pogledati najpogostejše paradigme, ki se jih dandanes piše v C#... hmmm... recimo:
private void button1_Click(object sender, System.EventArgs e) { button1.Text = "Call COBOL"; }
V prej omenjenem COBOL.Net je to seveda
METHOD-ID. button1_Click PRIVATE. DATA DIVISION. LINKAGE SECTION. 01 sender OBJECT REFERENCE CLASS-OBJECT. 01 e OBJECT REFERENCE CLASS-EVENTARGS. PROCEDURE DIVISION USING BY VALUE sender e. SET PROP-TEXT OF button1 TO "Call COBOL". END METHOD button1_Click.
Toliko, da mladina ne pozabi "Cobol fingers" izkušnje ;)
Ampak to niti ni težava - modernizacije so sicer super ampak niso pomembne. Tisto kar šteje in kar dejansko daje (visoke) plače je "COBOL == legacy". Večina _pomembne_ COBOL kode je skrajno old-school v dobrem in slabem. To so te milijarde vrstic, bančni sistemi in logistični centri. Tam ni šminke in bergel, samo kruta realnost ;)
/\/\.K.
Zgodovina sprememb…
- spremenil: Matako ()
krneki0001 ::
Da prej ni bilo jasno, da gre za datoteko s fiksno strukturo, pa da še vedno ni jasno, za kakšno (katero) bazo gre.
Mislim jype, pa sej bi lahko že potegnil vzporednico - cobol, mainframe, ZOs in najbrž DB2, kaj pa bo drugega na IBMovi mašini. DB2 baza je jype, DB2.
WhiteAngel ::
Kar se tiče hitrosti Jave in C, je tako, kot je jype rekel - so primeri, kjer je Java celo hitrejša med izvajanjem zaradi slabih C prevajalnikov. Še posebej pri zankah in navadni aritmetiki. Kar se tiče pa objektov (klicanje funkcij, ustvarjanje/brisanje objektov) pa je cca 10x počasnejša Java od C++. Še vedno pa po hitrosti Java poseka vse ostale višje jezike (.Net, Python itd.).
Še vedno trdim, da je Cobol grd, mrtev in nadomestljiv. Uporablja se ga samo zato, ker je toliko šare napisane v njem.
Še vedno trdim, da je Cobol grd, mrtev in nadomestljiv. Uporablja se ga samo zato, ker je toliko šare napisane v njem.
Zgodovina sprememb…
- spremenil: WhiteAngel ()
Highlander ::
Jaz sm enkrat lani izvedel test hitrosti matricnega mletja stevilk, kot ga rabim v sluzbi (znanstveni izracuni) in primerjavo med Matlabom (ki temelji na Javi) in C-jem. Najbolj zanimivo je bilo, kako zelo je pomemben kompajler za C (za isto kodo): le Intel C 10 je bil hitrejsi od Matlaba R2008b, Visual C je bil parkrat pocasnejsi, GNU C pa 10x pocasnejsi.
MrStein ::
Saj je pri vseh jezikih pomemben kompajler. Pa knjižnice. Pa CPU. Pa RAM. Pa diski. Pa...
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
noraguta ::
Jaz sm enkrat lani izvedel test hitrosti matricnega mletja stevilk, kot ga rabim v sluzbi (znanstveni izracuni) in primerjavo med Matlabom (ki temelji na Javi) in C-jem. Najbolj zanimivo je bilo, kako zelo je pomemben kompajler za C (za isto kodo): le Intel C 10 je bil hitrejsi od Matlaba R2008b, Visual C je bil parkrat pocasnejsi, GNU C pa 10x pocasnejsi.
itak matlab ma za sabo lapack pa podobne zadeve že po defaultu.
Pust' ot pobyedy k pobyedye vyedyot!
FireSnake ::
za igre je c++ dober , še kaj sistemskega gre čez, potem se pa njegov domet konča.
Tole malo precekiraj:
http://shootout.alioth.debian.org/
Pa se se najde, ampak bodi dovolj.
Poglej in se nasmej: vicmaher.si
Highlander ::
MrStein: Algoritem in masina (CPU, diski, ram, ...) sta bla ista, knjiznjic pa ni blo (v uporabi), tako da ostane samo se kompajler. Ravno tega sm pa hotu primerjat, in jezik(a).
noraguta: Po mojem niti ni melo veze, ker niso bla matricna mnozenja in druge operacije iz LAPACA. Stvar je bla zlo simpl, po elementih in nc posebnih matrikah. Matricen je bil le zapis, for-for pa je bil res 10x pocasnejsi, se pravi isto kot GNU C.
noraguta: Po mojem niti ni melo veze, ker niso bla matricna mnozenja in druge operacije iz LAPACA. Stvar je bla zlo simpl, po elementih in nc posebnih matrikah. Matricen je bil le zapis, for-for pa je bil res 10x pocasnejsi, se pravi isto kot GNU C.
noraguta ::
MrStein: Algoritem in masina (CPU, diski, ram, ...) sta bla ista, knjiznjic pa ni blo (v uporabi), tako da ostane samo se kompajler. Ravno tega sm pa hotu primerjat, in jezik(a).
noraguta: Po mojem niti ni melo veze, ker niso bla matricna mnozenja in druge operacije iz LAPACA. Stvar je bla zlo simpl, po elementih in nc posebnih matrikah. Matricen je bil le zapis, for-for pa je bil res 10x pocasnejsi, se pravi isto kot GNU C.
aja pol pa vektorizacija
za igre je c++ dober , še kaj sistemskega gre čez, potem se pa njegov domet konča.
Tole malo precekiraj:
http://shootout.alioth.debian.org/
Pa se se najde, ampak bodi dovolj.
mikrobenčmarki niso pol kurca vredni! sploh pa , da bi na kompleksne zadeve gledal preko njih.
Pust' ot pobyedy k pobyedye vyedyot!
Zgodovina sprememb…
- spremenilo: noraguta ()
l0g1t3ch ::
Em kaj manjka C++ v navezi z QT4 če to primerjamo z Javo ? Meni se zdi da si z obojim enako produktiven.
jype ::
nebivedu> Mislim jype, pa sej bi lahko že potegnil vzporednico - cobol, mainframe, ZOs in najbrž DB2, kaj pa bo drugega na IBMovi mašini. DB2 baza je jype, DB2.
No, potem komot javo optimiziraš tolk, da prideš do iste zmogljivosti - spustiš JDBC gonilnik in delaš z "native".
No, potem komot javo optimiziraš tolk, da prideš do iste zmogljivosti - spustiš JDBC gonilnik in delaš z "native".
phantom ::
Jaz sm enkrat lani izvedel test hitrosti matricnega mletja stevilk, kot ga rabim v sluzbi (znanstveni izracuni) in primerjavo med Matlabom (ki temelji na Javi) in C-jem. Najbolj zanimivo je bilo, kako zelo je pomemben kompajler za C (za isto kodo): le Intel C 10 je bil hitrejsi od Matlaba R2008b, Visual C je bil parkrat pocasnejsi, GNU C pa 10x pocasnejsi.
Samo UI od Matlaba je v Javi. Jedro je v Fortranu. Kot drugo pa ima Matlab verjetno boljše algoritme, kot pa si jih ti uporabil. Npr. že to, da dve (zelo) veliki matriki množiš po blokih, namesto cela vrstica skalarno cel stolpec, se lahko precej pozna, odvisno od cachea.
Pa kakšne parametre si uporabil? Si dal -mfpmath=sse pri GCC? Je takoj nekajkrat hitrejši, ker namesto FPU uporablja SSE in lahko več floating-point operacij paralelno izvaja.
~
~
:wq
~
:wq
Highlander ::
phantom: Aha zanimivo glede Matlab/Fortrana... Drugace pa nism "matricno" mnozil dveh matrik, pac je C(ij) element produkt A(ij) * B(ij), torej operacija C = A .* B v Matlabu. Za tisto SSE pa si nism tocno zapisal, neki sm poskusaval optimizacije, pa se ne spomnim, da bi bil kak vpliv. Pri Intel-u pa je bil obcuten vpliv pri -fast in avtomatsko vektorizacijo (na SSE3).
Apple ::
A kdo pozna kkšno sodobno orodje za programiranje v Cobolu za Windows platformo (okna, gumbki, itd...)
LP, Apple
3p ::
Še posebej pri zankah in navadni aritmetiki. Kar se tiče pa objektov (klicanje funkcij, ustvarjanje/brisanje objektov) pa je cca 10x počasnejša Java od C++. Še vedno pa po hitrosti Java poseka vse ostale višje jezike (.Net, Python itd.).
Hmm. Ne vem od kdaj Java poseka .Net... Kakorkoli, za za tipične (nesistemske, nepremetavanje golih bitov) aplikacije sta oba ok in več kot dovolj zmogljiva (seveda na sodobnem VM).
krneki0001 ::
A kdo pozna kkšno sodobno orodje za programiranje v Cobolu za Windows platformo (okna, gumbki, itd...)
Net express, powerbuilder. Zadevi delujeta odlično.
nebivedu, si še zmeraj zdaj v službi? :)
Nope, bil sem do 17h.
jype, ne verjamem da boš tok optimiziral javo. Itak pa naj bi delal "native" brez odbc-ja, sej na hostu ni nobenega odbc-ja.
Zgodovina sprememb…
- spremenilo: krneki0001 ()
3p ::
Popravljena verzija, še malo manj vrstic. Mislim očitno tudi geeki nimajo več dost pojma o cobolu.
$set sourceformat(free) 01 bottles binary-long. 01 bottle-word string value "bottles". 01 count-word string. perform varying bottles from 99 by -1 until bottles < 0 if bottles = 0 move "No" to count-word else move bottles to count-word end-if if bottles = 1 move "bottle" to bottle-word end-if if bottles not equals 99 then display "Take one down and pass it around, " count-word::"ToLower"() " more " bottle-word " of beer on the wall." end-if display count-word " " bottle-word " of beer on the wall, " count-word::"ToLower"() " " bottle-word " of beer." end-perform display "Go to the store and buy some more, 99 bottles of beer on the wall."
Eat this, Cobolaši ;)
class Program { static void Main( string[] args ) { for (int bottles = 99; bottles >= 0; --bottles) { string bottleWord = bottles == 1 ? "Bottle" : "Bottles"; string countWord = bottles == 0 ? "No" : bottles.ToString(); if (bottles != 99) System.Console.WriteLine( "Take one down and pass it around, " + countWord.ToLower() + " more " + bottleWord + " of beer on the wall." ); System.Console.WriteLine( countWord + " " + bottleWord + " of beer on the wall, " + countWord.ToLower() + " " + bottleWord + " of beer." ); } } }
Utk ::
Stari, zabluzil si.
1. System.Console.... bi res moral dat v using.
2. String bi dosti lepše skupaj spravil s String.Format.
1. System.Console.... bi res moral dat v using.
2. String bi dosti lepše skupaj spravil s String.Format.
noraguta ::
Stari, zabluzil si.
1. System.Console.... bi res moral dat v using.
2. String bi dosti lepše skupaj spravil s String.Format.
itak je to vse retardiran pa sto let za svetom, dandanes krož okrog gajba med pjančki.
Pust' ot pobyedy k pobyedye vyedyot!
krneki0001 ::
3p, tole je še manj.
Kaj porečeš?
Da ne boš misli, da kobolaši ne znamo nič drugega. Tole je ruby, če ti je kaj znano.
99.downto(3) do |number| puts <<LYRICS #{number} bottles of beer on the wall, #{number} bottles of beer. Take one down and pass it around, #{number - 1} bottles of beer on the wall. LYRICS end puts <<END_LYRICS bottles of beer on the wall, 2 bottles of beer. Take one down and pass it around, 1 bottle of beer on the wall. 1 bottle of beer on the wall, 1 bottle of beer. Take one down and pass it around, no more bottles of beer on the wall. No more bottles of beer on the wall, no more bottles of beer. Go to the store and buy some more, 99 bottles of beer on the wall. END_LYRICS
Kaj porečeš?
Da ne boš misli, da kobolaši ne znamo nič drugega. Tole je ruby, če ti je kaj znano.
Zgodovina sprememb…
- spremenilo: krneki0001 ()
BigWhale ::
for i in range (100,0,-1): print i , " bottles of beer on the wall,", i, "bottles of beer." if i == 1: break print "Take one down and pass it around,", i-1, "bottles of beer on the wall." print "Take one down and pass it around, no more bottles of beer on the wall." print "No more bottles of beer on the wall, no more bottles of beer."
Zgodovina sprememb…
- spremenil: BigWhale ()
krneki0001 ::
BW, pozabil si eno flašo - 1 bottle, ne 1 bottles. Tukaj prideta potem še 2 vrstici zraven in še zaključek, ko greš v trgovino po novih 99 flaš.
V assemblerju pa nebi šel tega pisat, bi bilo predolgo.
Tole je kopirana verzija z neta za intel x86
V assemblerju pa nebi šel tega pisat, bi bilo predolgo.
Tole je kopirana verzija z neta za intel x86
global _main extern _putchar segment .data _line_1_1 db ' bottles of beer on the wall, ', 0 _line_1_2 db ' bottles of beer.', 13, 10, 0 _line_2_1 db 'Take one down and pass it around, ', 0 _line_2_2 db ' bottles of beer on the wall.', 13, 10, 13, 10, 0 _line_2_2_one db ' bottle of beer on the wall.', 13, 10, 13, 10, 0 _ending_lines db '1 bottle of beer on the wall, 1 bottle of beer.', 13, 10 db 'Take one down and pass it around, no more bottles of beer on the wall.', 13, 10, 13, 10 db 'No more bottles of beer on the wall, no more bottles of beer. ', 13, 10 db 'Go to the store and buy some more, 99 bottles of beer on the wall.', 13, 10, 0 segment .text ; this function converts integer in range 0-99 to string _integer_to_string: mov eax, dword [esp + 08h] ; get the vavlue mov ecx, 10 ; sub edx, edx div ecx ; divide it by 10 mov ecx, dword [esp + 04h] ; get the output offset test eax, eax ; is greater than 9 jz .skip_first_digit ; skip saving 0 char if no add al, 030h ; convert number to ascii char mov byte [ecx], al ; save inc ecx ; increase pointer jmp .dont_test_second_digit ; .skip_first_digit: ; only if less then 10 test edx, edx jz .skip_second_digit .dont_test_second_digit: ; if it was greater than 10 add dl, 030h ; than second digit must by mov byte [ecx], dl ; written at no condition inc ecx .skip_second_digit: ; only skip if value was 0 mov byte [ecx], ah ; save the null ending char retn 4 ; ret and restore stack ; function prints null-terminated line to stdout _show_line: push edi ; function save registers push esi mov edi, dword [esp + 0Ch] ; get the pointer to string sub eax, eax ; look for zeros sub ecx, ecx dec ecx ; set ecx to -1 repnz scasb ; search for 0 in string neg ecx sub ecx, 2 ; get the string length w/o zero mov esi, dword [esp + 0Ch] ; get pointer once again .putchar_loop: push ecx ; keep the counter lodsb ; get the char push eax call _putchar ; print char to stdout add esp, 4 ; correct stack pop ecx ; get back the counter dec ecx jnz .putchar_loop ; if not last char then get next pop esi ; restore registers pop edi retn 4 ; prints string for only one number _bottles: push ebp ; keep the offset to call params mov ebp, esp sub esp, 4 ; reserve one local variable mov eax, dword [ebp + 08h] ; get number of bottles dec eax ; is it 1? jnz .more_than_one ; nope, it's not push _ending_lines ; print the last lines call _show_line jmp .end ; exit function .more_than_one: inc eax ; get the original value push eax ; convert it to string lea eax, [ebp - 04h] push eax ; string will be stored here call _integer_to_string lea eax, [ebp - 04h] push eax call _show_line ; 'xx' push _line_1_1 call _show_line ; ' bottles of beer on the wall, ' lea eax, [ebp - 04h] push eax call _show_line ; 'xx' push _line_1_2 call _show_line ; ' bottles of beer.' mov eax, dword [ebp + 08h] dec eax ; in second line the value is one less push eax lea eax, [ebp - 04h] push eax call _integer_to_string ; convert it to string push _line_2_1 call _show_line ; 'Take one down and pass it around, ' lea eax, [ebp - 04h] push eax call _show_line ; 'xx' cmp dword [ebp + 08h], 2 jnz .second_line_for_more_than_one push _line_2_2_one ; ' bottle of beer on the wall.' jmp .show_line .second_line_for_more_than_one: push _line_2_2 ; ' bottles of beer on the wall.' .show_line: call _show_line .end: leave retn 4 ; main function, the command line arguments are not important _main: pushad mov ecx, 99 ; printf from 99 .main_loop: push ecx push ecx call _bottles ; print lines for this value pop ecx
Zgodovina sprememb…
- spremenilo: krneki0001 ()
Brane2 ::
V bistvu je bolj queer.
Če pogledaš stringe, se jih kar nekaj v velikem delu ponavlja.
Čisto komot bi lahko imel en string, ki bi vseboval vse sorodne in bi nastavil začetek in konec željenega stringa po želji...
Če pogledaš stringe, se jih kar nekaj v velikem delu ponavlja.
Čisto komot bi lahko imel en string, ki bi vseboval vse sorodne in bi nastavil začetek in konec željenega stringa po želji...
On the journey of life, I chose the psycho path.
krneki0001 ::
crnie, večina tukaj jih sploh ne ve kaj je assembler, tko da je že prav, da si lahko pogledajo, kako se je to včasih delalo.
Mavrik ::
Kdaj v zgodovini arhitekture x86 pa se je na veliko programiralo v assembleru?
The truth is rarely pure and never simple.
Brane2 ::
Tja do 286/386 ?
No, odvisno od definicije "veliko"...
No, odvisno od definicije "veliko"...
On the journey of life, I chose the psycho path.
jype ::
nebivedu> Tukaj prideta potem še 2 vrstici zraven
Pa ne v Pythonu! Samo if premakneš eno višje in daš 1 bottle print v if.
nebivedu> Itak pa naj bi delal "native" brez odbc-ja, sej na hostu ni nobenega odbc-ja.
Kakšen odbc, človek božji, govorimo o jdbc!
Pa ne v Pythonu! Samo if premakneš eno višje in daš 1 bottle print v if.
nebivedu> Itak pa naj bi delal "native" brez odbc-ja, sej na hostu ni nobenega odbc-ja.
Kakšen odbc, človek božji, govorimo o jdbc!
fiction ::
Zakaj dragi cobol programerji?Enostavno, ker vas ni dovolj in povprasevanje dvigne ceno. Sicer (mogoce celo na sreco) ne poznam COBOL-a, ampak argument, da mora biti nekaj v COBOL-u, da je dovolj hitro pomoje ne zdrzi. IMHO opisane obdelave delas na SUPB-ju npr. v PL/SQL-u. Java nekako ne pase tukaj zraven.
Zakaj se COBOL se toliko uporablja? Pomoje samo zato, ker je kratkorocno ceneje nekaj flikati kot vse skupaj na novo napisati, posebej ce gre za velike sisteme. Kakor hitro bodo cene za COBOL programerje prevec astronomske bo pa to mogoce edina opcija.
Te primerjave programskih jezikov so cisto offtopic.
Ze pri pojavu visokonivojskih jezikov, so se zaceli ljudje navajeni assemblerja zgrazati. In dejansko je res prevajalnik naredil precej storasto pocasno kodo. Ampak bil pa je "benefit", ker je bilo lazje programirati oz. vzdrzevati programe. Scasoma so z optimizacijami zgenerirali cisto solidno kodo kot bi jo npr. en povprecen programer v assemblerju. Jasno, se vedno ekspert, ki tocno ve kaj dela, tisto naredi bolje. Samo za vecino stvari je pa tisto prvo dovolj dobro pa se ceneje (manj casa za popravljanje napak, cenejsi programerji). Enako je zdaj tudi z jeziki, ki se izvajajo v svojem "navideznem stroju". Da se doseci skoraj enako hitrost kot z native kodo (JIT prevajanje) plus celo doseci nekaj optimizacij, ki jih, ce samo staticno analiziras izvorno kodo, ne mores narediti. So pa seveda spet ljudje (prevec) navajeni na stare stvari in tega ne zmorejo razumeti.
Dober primer, da je Java lahko cisto spodobno hitra je npr. Jikes RVM. Ne recem pa da je to vedno optimalna izbira. Vse je odvisno od problema, ki ga resujes.
Looooooka ::
zdej pa primerjate jajca s testom za pico.
bl k je low level hitrej ponavad dela.
ko pa zacnes delat neki bl kompleksnega in se probavas povezat z novejsimi sistemi se pa ponavad bl splaca zadevo prepisat v necem drugem...ze sam zato, da te ti "stari programerji" ne morejo izsiljevati za ceno(vecina jih sedi na riti in pobira kesh od programov, ki so jih napisal pred 15 leti).
Ce nisi prisiljen uporablat stare masine in flikat software(zaradi cene kompletnega rewrita) potem gres takoj na kj novga...pa ce je to java al pa c(pocakas da se slo-techovci stepejo kaj je hitrejs).
Pri danasnjih cenah racunalnikov je edini razlog zakaj bi nekdo vztrajal pri teh zombijih...ker pac nimajo druge izbire.
Bl k na vase leto linux desktopa jst cakam na leto propada legacy sistemov.Takrat je treba definitivno en zur nardit.
bl k je low level hitrej ponavad dela.
ko pa zacnes delat neki bl kompleksnega in se probavas povezat z novejsimi sistemi se pa ponavad bl splaca zadevo prepisat v necem drugem...ze sam zato, da te ti "stari programerji" ne morejo izsiljevati za ceno(vecina jih sedi na riti in pobira kesh od programov, ki so jih napisal pred 15 leti).
Ce nisi prisiljen uporablat stare masine in flikat software(zaradi cene kompletnega rewrita) potem gres takoj na kj novga...pa ce je to java al pa c(pocakas da se slo-techovci stepejo kaj je hitrejs).
Pri danasnjih cenah racunalnikov je edini razlog zakaj bi nekdo vztrajal pri teh zombijih...ker pac nimajo druge izbire.
Bl k na vase leto linux desktopa jst cakam na leto propada legacy sistemov.Takrat je treba definitivno en zur nardit.
Zgodovina sprememb…
- spremenilo: Looooooka ()
MrStein ::
Ja, Yugo je bil avto leta vsakič. Šur.
Aja, share>absolute_zero šteješ za "leto linux desktopa" ? Pol pa res, se strinjam.
Leto linux desktopa bo, ko ga vsaj recimo 20% folka ne bo po par tednih s PC-ja vrglo. (če sploh zdržijo oveč kot par dni)
BigWhale, a " je del tvoje programa? (ki je kaj, varianta BASIC-a?)
Aja, share>absolute_zero šteješ za "leto linux desktopa" ? Pol pa res, se strinjam.
Leto linux desktopa bo, ko ga vsaj recimo 20% folka ne bo po par tednih s PC-ja vrglo. (če sploh zdržijo oveč kot par dni)
BigWhale, a " je del tvoje programa? (ki je kaj, varianta BASIC-a?)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
PaX_MaN ::
BigWhale, a " je del tvoje programa? (ki je kaj, varianta BASIC-a?)
Ne, je del starega S-T.
c3p0 ::
Ali je hitrejša Java ali COBOL je tukaj beside the point. Dejstvo je, da je v cobolu še vedno ogromno kritične kode, programerjev pa vedno bolj primanjkuje (zaradi naravnih razlogov).
Ravno včeraj se mi je kolega, java programer pri znanem .si podjetju, potožil, da se bo naučil cobol, ker dela ne zmanjka in je povrhu zelo dobro plačano.
Ravno včeraj se mi je kolega, java programer pri znanem .si podjetju, potožil, da se bo naučil cobol, ker dela ne zmanjka in je povrhu zelo dobro plačano.
krneki0001 ::
Ali je hitrejša Java ali COBOL je tukaj beside the point. Dejstvo je, da je v cobolu še vedno ogromno kritične kode, programerjev pa vedno bolj primanjkuje (zaradi naravnih razlogov).
Ravno včeraj se mi je kolega, java programer pri znanem .si podjetju, potožil, da se bo naučil cobol, ker dela ne zmanjka in je povrhu zelo dobro plačano.
Pa sej to govorim. Cele firme se prestavljajo na kobol, ker je tukaj pri nas še vedno dovolj dela. Pa tudi nekatere banke, ki so že šle na novejšo tehnologijo, prehajajo nazaj na VMS in kobol. Pač je zadeva za veliko število transakcij še vedno najboljša.
Zgodovina sprememb…
- zavaroval slike: Mavrik ()
Brane2 ::
Kaj je tako dobrega v Cobolu - optimizirane "hand-tuned-asm" knjižice ali kaj podobnega ?
On the journey of life, I chose the psycho path.
krneki0001 ::
Kaj je tako dobrega? Preverjen, zanesljiv, hiter za premetavanje podatkov v sistemih z ogromno transakcijami tako batch kot tudi online.
ender ::
Kaj je tako dobrega v Cobolu - optimizirane "hand-tuned-asm" knjižice ali kaj podobnega ?Ogromna količina stare (preverjeno delujoče) kode, in ki je ponavadi tako kompleksna (oz. jo je tako veliko), da se stvari preprosto ne izplača spisati na novo.
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
cache invalidation, naming things and off-by-one errors.
Zgodovina sprememb…
- spremenilo: ender ()
Utk ::
Zakaj je x86 preživel in zmagal? Ker je bil zmeraj najboljši, ali ker je bil prvi in se nikomur ni splačalo vseh programov prestavljat na kaj drugega? Edina razlika, da je bolj malo naivnežev, ki imajo x86 za arhitekturno najboljšega.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | COBOL še vedno v dobri kondicijiOddelek: Novice / Ostala programska oprema | 9631 (6215) | Apple |
» | COBOL še vedno poganja precej bančnih sistemovOddelek: Novice / Ostala programska oprema | 11484 (8700) | trstenjak |
» | Letališča poganja Windows 3.1, vesoljsko sondo Voyager pa Fortran (strani: 1 2 )Oddelek: Novice / Znanost in tehnologija | 17050 (12873) | krneki0001 |
» | Petdeset let COBOL-a (strani: 1 2 3 )Oddelek: Novice / Znanost in tehnologija | 13508 (10726) | tony1 |