» »

Petdeset let COBOL-a

1
2
3

MrStein ::

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?
Motiti se je človeško.
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.

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.
Motiti se je človeško.
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…

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 ()

noraguta ::

mr stein ja zmotu sm se.
Pust' ot pobyedy k pobyedye vyedyot!

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.

Apple ::

nebivedu, si še zmeraj zdaj v službi? :)
LP, Apple

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.

Zgodovina sprememb…

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!

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 ::

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".

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

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…

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.

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.

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…

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 ()

Apple ::

dobra :)

OK, čakamo še kodo v assemblerju :)
LP, Apple

BigWhale ::

Aja, a treba se zakljucek narest?

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

        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…

Utk ::

Ah, ta ima komentarje, ta je za pussije :)

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...
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"...
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!

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.

Zgodovina sprememb…

  • spremenilo: Looooooka ()

jype ::

Leto linux desktopa je blo še vsako od 1997 naprej.

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 &quot; 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!

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.

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.

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.
1
2
3


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

COBOL še vedno v dobri kondiciji

Oddelek: Novice / Ostala programska oprema
398776 (5360) Apple
»

COBOL še vedno poganja precej bančnih sistemov

Oddelek: Novice / Ostala programska oprema
3010715 (7931) trstenjak
»

Letališča poganja Windows 3.1, vesoljsko sondo Voyager pa Fortran (strani: 1 2 )

Oddelek: Novice / Znanost in tehnologija
5215999 (11822) krneki0001
»

Petdeset let COBOL-a (strani: 1 2 3 )

Oddelek: Novice / Znanost in tehnologija
12412600 (9818) tony1

Več podobnih tem