» »

vaša sintaksa pri programiranju

vaša sintaksa pri programiranju

«
1
2

mh8759a ::

Zanima me, kako kej pišete spremenljivke, metode, funkcije, pointerje itd., mislim kakšna imena jim dajete, uporabljate madžarsko notacijo, uporabljate angleška ali slovenska imena, skratka kaj se vam zdi najbolj uporabno ?

Jaz se dosedaj nisem resno držal nobene notacije, sedaj pa razmišljam da bi uporabljal recimo str spredaj za string, pa i za int itd. saj vesta kaj mislim.

Lp

Thomas ::

Vsaka spremenljivka naj ima kolikor se da natančno slovensko ali angleško ime. Lahko tudi iz kakšnega drugega jezika ali iz slanga. Kjerkoli najdeš zase najbolj natančno zadeti pomen.

tanotranji_index ali pa X_odXYZ.

Števike ki jih pripopaš zraven naj bodo tkole, padirane:

joint_015

Potem veš, da naj bi bila simetrija med joint_015 in joint_016. Z editorjem prešteješ joint_0??? in mora biti cel mnogokratnik kot če prešteješ joint_015. Če ni, moraš odkriti vzrok nesimetrije.

C++ editor zabriši proč. Samo Ultraedit kaj velja.

Večkrat moraš renajmati spremenljivke, če se jim je spremenila vloga. Najdeš napake.

Mah ... cela znanost.

:)

Man muss immer generalisieren - Carl Jacobi

darh ::

Thomas uporablja UE ? divje :) ni ga čez UE...

jest se držim tega...
classi se začnejo z veliko začetnico in so brez podčrtajev:
PrviRazred, DrugiRazred

funkcije se začnejo z malo in so brez podčrtajev
funkcijaEna, funkcijaDve

spremenjivke imajo med besedami podčrtaje in kar se da natančno opisujejo lasten namen < seveda ne pretiravamo z dolžino...

striktno uporabljam angleščino za vse kar programiram, razen za komentarje

vse je napisano čim bolj na široko da ne pride do zmede:
funct1( funct2( nekej ) );

zamik vedno 2 prazna prostorčka
Excuses are useless! Results are priceless!

Tr0n ::

Vse z malo in podcrtaji. Nekako mi ni vsec prva beseda z malo, nato z veliko. Drugo pa po pravilih lepega pisanja programov :).

funkcija nekaj_lepega() {
}

Sicer pa uporabljam Dreamweaver MX za editor, ker se mi je UE zameril :).

Monster ::

vse locujem z vlkmi zacetnicami npr. PreberiDatoteko(), OdstraniStringIzDatoteke()

pr spremenljivkah pa nekak gledam da prvi trije opisejo zakaj se rabi drugi del pa je ime... npr HWND FrmMAin.. pac tole je handler za neko okno(iz vja pac :))
Ka zaboga...

napsy ::

jezik spr, klas, ... v slovenščini
funkcije: BeriTekst(), beri_tekst()
makre: PRINT_MSG
klase: test
spr.: max_velikost, zacetek

pol pa še te navadne sintaksne pravile.
npr:

#define __MEM_C "/usr/src/linux-2.4-3/kernel/mem.c"
int main()
{
long velikost = 0;

velikost = fsizeof(__MEM_C);
printf("Velikost datoteke '%s': %d", MEM_C, velikost);

/* čeprav primer daje bolj malo smisla */
return(0);
}
"If you die, you die. But when you live you live. There is no time to waste."

Mercier ::

Uporabljam madžarsko notacijo, besede v imenih ločujem z velikimi črkami in so v angleščini (samoglasnike pa poberem ven). Angleščina, ker se mi zaradi literature, tutorialov ipd. sama vsiljuje - večkrat se težko spomnim domačega izraza (BTW, kako se prevede ID?). Mešat pa ne maram. Moram pa večkrat it gledat v slovar.

Zgodovina sprememb…

  • spremenil: Mercier ()

Thomas ::

> kako se prevede ID

Ajdi. Nič drugače. :D

Sicer mam pa veliko za nakladat na to temo. Sicer pa - na kero nimam? :D

No in zdej bom naložu, kar mi na srcu leži.

Se ne morem načudit, kako je programiranje smatrano za handcraft umetnost še zmeraj! Kako se uči programiranje kot kodiranje 100 in 1000 in 10000 in celo več programskih vrstic v C++.

Upoštevanje vseh pravil sintaxe in načel dobrega programiranja in vsega tega. Nobenih GOTO stavkov, striktno strukturiranje, objekti ...

Žal ... se z vsem tem ne morem strinjati. Moj pogled na to zadevo je precej drugačen in radikalen.

Kratka ilustrativna drama:

Programer: V čem programiraš ti Thomas?

Jest: Oh, v nekem manj znanem programskem jeziku, ki se imenuje PowerBasic.

Programer: Aja Thomas... BASIC uporabljaš - zanimivo! >:D. Jest programiram v C++, C in mogoče kdaj napišem kaj v assemblerju še zraven, da je koda hitrejša, ker delam zahtevne reči. 8-) Kaj pa potem delajo tvoji programi Thomas?

Jest: Ponavadi moj program izpiše samo eno TXT datoteko, nič drugega.

Programer: In kaj je v tej z B A S I C O M skreirani T X T datoteki Thomas?

Jest: Nekaj megabajtov source kode za C++ in/ali MMX assembler, s 100 in večkrat nested IF, FOR, WHILE ipd. in stavki v desetetisočlinijskih programih. To, so te TXT datoteke. ;)

Programer: 8-O

No .. TO je moj pogled na programiranje. Z manufakturo se ne pride daleč. Treba napisat program, ki napiše program, ki napiše program ...

Rokodelstvo je na zatonu.

:)
Man muss immer generalisieren - Carl Jacobi

Mercier ::

Huh, nekaj takega kot .net :D


Lahko še smisel tega razložiš. Meni ni jasno baš nič.

Thomas ::

Ja čisto tako - tole s štrikanje s programiranjem v C++ je demode.

Lahko narediš seveda kratek programček ki dela nekaj trivialnega ... ampak zanašati se na to, da bo nekdo napisal v C++ nekaj resnega - je ... preoptimistično.

Hočem recimo optimalni program, ki bo prižigal semforje po Ljubljani. Krmiljen z nekaj Web kamerami.

Živ človek tega ne zna. Čeprav bi se mnogi trudili - z ambicijo in vero da znajo, štrikajo v C++ deset let, dokler jim operacijskega sistema UNIX na katerem so začeli, ne povozi čas.

Lahko pa nekdo naredi nekdo nekaj trivialnih programčkov.

Enega, ki random prižiga semafor, drugega ki šteje sive pixle na ekranu ... in še par.

Vse v odvisnosti od nekih random cifer.

Potem požene "random paket" teh programov in odčitava sive pixle.

Drugi dan (teden) ga random malo popravi in spet odčitava. Kadarkoli je bolje - več sivih pixlov ki pomenijo prazno cesto - izda novo verijo. Patch ali upgrade.

Prej kot letu dni, se promet odvija gladkeje.

;)

p.s.

Tista skupina s "projektom" - je pa že propadla.

:D







ABX ::

Zdaj vem komu jebat mater ko dobim rdečo, programerjem!

Mamico vam!
Vaša inštalacija je uspešno spodletela!

rasta ::

Pravo orodje za pravo stvar. Če pišeš gonilike, boš pač uporabil C ali assembler ...

Za velike projekte oz. združevanje 'trivialnih programčkov' v velike projekte pa so iznašli OOP!

daking ::

Okej, spremenljivke majo vedno slovenska imena, ampak so dostkrat taka ibr cudna, pac tist kr mi prvo na pamet pade pa da je cimbol odstekana beseda, tko si jo vsaj ful dobr zapomnm, tko da mi ni treba skos nazaj hodt pa gledat kaksn ime je mela pa tko. Pa zelo vazn pogoj je da je cimkrajsa beseda, da ni treba ful pisat, pa ko ze piss je manjsa moznost da bos kej zaj*, narobe prepisu al pa kej tazga. Prfoxi mi ful pravjo da mam ful eno tako terminalano napako pr pisanju programov, za vsako malenkost dam nov oklepaj. Tko da v kksnih mojih programih najds take funkcije k so mi ble sam na zacetku jasne pol so pa prevec zakomplicirane ratale, da jih se kks hud matematik nebi znov rest. Pol pa ko skompajlas en moj progy pol se pa se kompajlerju cist odtrga lih pr kksnih takih funkcijah >:D , prov lepo je gledat kva kompajlerju dogaja k mele tist source>:D >:D >:D

rasta ::

Slovenščina pa se mi ne zdi preveč primerna za imena spremenljivk, ker so besede predolge in se jih težko skrajša v smiselno in lahko zapomljivo kratico.

Sicer pa se mi zdi smiselno uporabljati standrdna imena za tip spremenljivk (npr. i za integer v for stavku) ipd.

Thomas ::

> Za velike projekte oz. združevanje 'trivialnih programčkov' v velike projekte pa so iznašli OOP

Se ne morem strinjat. OOP je bil izumljen v duhu manufakture. Torej ročnega programiranja, ki ga jest označujem za preživelega. Me prav zanima, kdo bi lahko - z uporabo OOP ali brez - lahko pohendlal 80.000 depended IF stavkov?

En "trivialen" programček, ki ga pa razume človeški programer - pa lahko.

Ponavadi se takim monstrumom kar odrečejo - ampak na škodo moči končnega izdelka.

:)
Man muss immer generalisieren - Carl Jacobi

Tr0n ::

Heh, ya right.

mh8759a ::

en je reku, da daje za metode velike crke na zacetku..sam raje uporabljam Javin standard, torej prva beseda z malo ostale z veliko in po moznosti seveda glagoli.

dosedaj madzarske notacije nisem uporabljal, ampak je se najbolj smiselna in zdej zacenjam..

drugace pa Thomas zdej ze mal pretiravas s to manufakturo pa tem. OOP je cist kul in za kaksne normalno kompleksne sisteme najbolj primeren. Tisto, kar je sprogramirano na nacin kot ti govoriš je zelo vezano na programerja potem in v bistvu malokdo razume za kaj gre. In potem firma zgubi programerja in nima več kaj s tem početi. Poleg tega v večini programov ni ne vem kakšne orto kompleksne matematike in podobnih zadev.

BTW kaj sploh je to o čemer govoriš in kaj ti programi delajo oz. kaj potem tista zgenerirana koda o kateri govoriš dela?

lp

Thomas ::

Vzemimo naprimer šahovski program.

Iskanje po ogromnih napol praznih tabelah, ko je na šahovnici samo še 10 figur - je neekonomično.

Vedno je najbolje imeti program, inačico programa, ki handla le šah s temi 10 figurami. Kot da bi oni z 32 ne obstajal sploh. Niti s kakršnokoli drugo kombinacijo.

Zakaj? Marsikomu morda ni povsem očitno.

Zato, ker mrtva koda - zdaj mrtva, ker naprimer konjev ni več - trati dragocen prostor v procesorskem cachu. Ker se mogoče celo sprašuje: "If je tam konj then ..." in potem še direktno trati čas. Vso tako kodo je najbolje izrezati (programsko) iz sourca, skompilirati in reloadati program.

To se lahko zgodi vse v sekundi. Po vsakem jemanju figure. Človeški programer pa bi rabil seveda (pre)več časa.

Bi lahko imeli vse naprej skompilirane? Težko. Težko bi tudi človeški programer naklepal milijardo različnih sourcov. Ti se morajo generirati in kompilirati on fly.

Vse to gre le, če je že koncipirano prav. Če ni handmade (rokodelsko) zastavljeno že v začetku.

Jest ne programiram ravno šaha. Pač pa sem poskusil tako pohandlati šolske urnike. Ravnokar.

Fascinantno! - če sem primerno skromen.

Okornemu splošnemu programu enostavno zmanjka realnega časa. Assembler, ki pa ga na kožo pogojem šole skreira nek BASIC - ki je umetno skreiran tudi sam (!) - pa izčrpa ves prostor rešitev in najde dobesedno tisoče rešitev.

Imamo torej sledečo verigo:

INI-->BAS-->EXE-->BAS-->EXE-->ASM-->EXE.

Predzadnji je velik cca 1 MB in z nekaj tisoč pogojnimi jumpi, ki so pravzaprav same optimizacije.

Human programer ima čez le prvi BAS. 1000 vrstic. Če ni napake tam - je skoraj zagotovo tudi ni naprej.

Lahko bi pa seveda za vsako šolo najeli nekaj top C++ programerjev.

:)






Man muss immer generalisieren - Carl Jacobi

Monster ::

tomas... pa kaj ti je zdej sporno no.. :)... ce te prav razumem bi rad da se program sam programrira sproti v runtimu da nebi ponuical resourcev.... to je butasto... programrias delas funkcije... funkcije klicesko jih rabis... poglej sebe...

oz sloveka
vzemimo primer da igrama šah... mam sm se deset figur, kaj boš naredu .. prvo boš MORAL prečekirat kere ti stojijo.. se pravi if konj=true then..... ipd... računalnik isto dela.. pogleda katere vhodne parametre bo dal funkciji... to je neizogibno...

to je tk ko da bi z sslepim igral sah.. pa se ta bi figuro prej otipal...

da se pa cash ne prazni je pa kriv OS oz kompajler oz APiji ker so tk napisani itak pa obstojajo free() funkcije...


lp
Ka zaboga...

Thomas ::

Ne razumeš Monster. Večina ne - itak.

Ampak primera s šahom je zelo jasna. Ko pade figura s šahovnice - recimo bela kraljica - ni nobene potrebe, da je v programu še kakršenkoli stavek, ki bi se nanašal nanjo.

Že če samo je - niža performanse. Ko pa se eventualno nek kmet promovira v kraljico spet, recimo zadnji, ni potrebe po "kmečki kodi", je pa po "damski".

Ne samo, da ni potrebe - celo škoduje, če je po nepotrebnem v inštrukcijskem pajpu.

Da se pa ne splača to online ven rezat - je pa tp klasična handmade šola.

Ja?

:)
Man muss immer generalisieren - Carl Jacobi

rasta ::

Ko pade figura s šahovnice - recimo bela kraljica - ni nobene potrebe, da je v programu še kakršenkoli stavek, ki bi se nanašal nanjo.

To se da rešit tu z navadnim bufferjem (razredom), ki pač vsako figuro, ki pade s šahovnice, pobriše iz bufferja in tako program sploh ne ve, da je kdaj obstajala, saj on dela samo s figurami v bufferju. Right?

Thomas ::

Not right!

Če ti nekaj izbrišeš iz bufferja, ga je najbolje tudi na novo alocirati.

"Stara šola" sicer pravi da je isto - ker to spada v "načela dobrega programiranja" - vendar je jasno, da temu ni tako.

Imeti podprto 3D gibanje v programu, ki nenadoma simulira le gibanje po premici - letalo je pristalo na stezi - je škodljivo za performanse.

Če sta Y in Z oba nič, je za X bolje uporabljati skalar vrednosti X, kot pa vektor (X,0,0).

Jasna stvar.

Takih primerov mrgoli in se vedno srečamo z njimi.

Moj point je ta, da je editor prešvoh stvar za pisanje programa. Poleg tega rabiš še en BASIC ali nekaj podobnega, s katerim ga kreiraš. Pa morda sploh še ne pišeš programa samega, pač pa njegovega makerja. Če delaš le ročno - si nekoliko handikepiran pri končnem rezultatu. Je pa res, da ta način še skoraj vsi forsirajo.

But do think about it!

:)
Man muss immer generalisieren - Carl Jacobi

Monster ::

jao thomas... valda da ne kapiram ce "težiš" pr neki zadevi, ki je cisto logicna... itak pa je vazno da zadeva dela in nc vec...
Ka zaboga...

Thomas ::

> itak pa je vazno da zadeva dela in nc vec...

Ni važno samo da dela. Mora delati tudi čimbolje.

Vsaj za uporabnika, če je že programer zadovoljen s tem, da pač neki programira.

Moj point je pa kristalno jasen - in mislim da nekateri tu ga razumejo.

  • Z zgolj ročnim pisanjem sorsov ne moreš narediti niti zdaleč toliko, kot z uporabo programov za kreacijo sorsov programov.


  • To ti odpre naprej pot, da imaš potencialno milijarde različic programov - pač glede na okolje v katerem se znajdejo.


  • Bistveno večje polje je tako pokrito, kakor ga more tako čislani handcraft.

    :)
    Man muss immer generalisieren - Carl Jacobi

    Primoz ::

    Thomas: mam samo eno vprašanje... uporaba tega principa pri velikih problemih... se mi zdi logična. Se mi zdi pa vprašljivo do kako majhnih programčkov se to splača (do trenutka, ko je kode z opisom več kot generiranega programa?)
    There can be no real freedom without the freedom to fail.

    .:joco:. ::

    Thomas, who the f**k are you? Dej, vsaj namigni nam če že nočeš drugega.

    Skotraj točno tako tudi človek razmišlja. Tole prvič slišim in se zdi hudičevo blizu AI.
    "Is science true?"
    You don't get it.
    Science is the process of trying to find out what's true.

    Thomas ::

    Čez palec - natančneje ne znam - bi reku, da pri ene 1000 ali 2000 programskih vrsticah, se začne splačat.

    Kar se tiče hitrosti programiranja. Pri zanesljivosti - pa že prej.

    Je pa jasno odvisno od vsebine programiranja.

    Primer:

    Zakomprimirati moramo Jurčičevega Desetega brata za http://www.muljava.com.

    Če se zadeve lotimo klasično, bomo vzeli nek algoritem in ga prekucali v JAVA. Ali pa kar vzeli nek lib, ki nam štorijo stisne, pri uporabniku pa razpre, da ma ta kaj brat.

    Če bi se pa jest lotu tega, bi najprej JAVA skonvertiral v BAS, ki naredi ta JAVA.

    Vsakemu TXT (JAVA source je en TXT) lahko priredimo BAS, ki ne naredi nič drugega, kot (skompiliran) napiše ta TXT (source).

    Oziroma ... ene 1000 različic, pač glede na bitnost kompresa, velikost bufferjev in podobno. Ki so lahko variabile za Makerja.

    Vse skompilira in preskusi kako se bo Deseti Brat komprimiral.

    Pri nekih čudnih vrednostih se najbolje.

    Tako modificiran, Jurčiču na kožo pisan kompres, je potem na sajtu.

    V resnici maker za Java source lahko varira še kaj drugega. Vrže kakšno vrstico drugam v program. Saj se ima čas igrati celo noč.

    :)



    Man muss immer generalisieren - Carl Jacobi

    Thomas ::

    joco

    Nobena znana oseba nisem in nič. Gray face in the crowd.

    Se vidimo na kakšnem slotech žuru, če ne bom ravno spet kaj štrajkal. :D
    Man muss immer generalisieren - Carl Jacobi

    Monster ::

    no comment tomas...

    jest ne vidim fore v tem tvojem bluzenju.. razen da bi neki rad optimiziral na nek very beden nacin oz da nebi nkol uporabu cisto funkcijo ki bi jo npr jest naredu zato kej funkcija genericna in ma pac mogoce mal pocasnejsi dela al pa se to n bi jo sol takoj predelat al kaj.... to ti je bedarija..

    itak pa so proci vedno mocnejsi in nismo vec v 16bitnih racunalnikih tk da nevem kej je blem kar se brzine tice...
    Ka zaboga...

    Phil ::

    Treba napisat program, ki napiše program, ki napiše program
    Kolk zapletene programe pa lahko dela ta tvoj program. Kompleksnejsih od sebe IMO ne more (pa ne mislim dolzine..). Ali pac?

    Če ti nekaj izbrišeš iz bufferja, ga je najbolje tudi na novo alocirati.
    Drugega dela tega stavka pa ne razumem sploh. Kaj mislis s tem, da je najbolje na novo alocirati?

    Pa se en glede saha: zakaj pa ne bi naredil za vsako figuro en razred, kakor je ze rasta predlagal. V razredu bi blo zapisano tut katere premike lahko izvede... Tko racunalnik sploh ne bi vedel s katero figuro dela, samo kaj lahko ta figura naredi. Pol bi pa vse te razrede v mnozico dal in bi z eno zanko sel skozi to mnozico. Ce figura pade pa samo pobrises razred in ime razreda iz mnozice. Ce pade zadnji kmet na sahovnici, v programu ne bo nobene vrstice vec povezane z njim.
    LP

    Thomas ::

    cman

    > Kolk zapletene programe pa lahko dela ta tvoj program.

    Konkretno: en maker ima nekaj čez 200 linij pa naredi - odvisno od vhodnih argumentov - 10000 linij dolg program, ki ga indentacija na sredini "porine desno od ekrana". Precej desno.

    Kaj potem ta naredi? Reši nek kombinatorični (urniški) problem.

    > Kompleksnejsih od sebe IMO ne more (pa ne mislim dolzine..). Ali pac?

    Lahko. Celo praviloma ga.

    >> Če ti nekaj izbrišeš iz bufferja, ga je najbolje tudi na novo alocirati.

    > Drugega dela tega stavka pa ne razumem sploh. Kaj mislis s tem, da je najbolje na novo alocirati?

    Takoimenovane redke matrike vsebujejo malo informacije. Pomeni da moraš delat velik promet z read, da prebereš kar te zanima.

    Boljš imet array s tremi in to polnimi elementi, kot takega s 3 polnimi in 997 praznimi.

    > zakaj pa ne bi naredil za vsako figuro en razred, kakor je ze rasta predlagal.

    Ker figura (in s tem njen programski model) ni neodvisna od ostalih figur ki so. Dokler je mnogo kmetov, se trdnjava MORA obnašati drugače, kot ko jih ni več. Milijone konfiguracij obstaja. CASE za vse primere je neoptimalen po sebi. Kadarkoli imamo CASE (switch v C++) in je en od CASE stavkov nemogoč - je odvečen. Priporoča se recompile brez njega.

    Dalje:

    IF A then IF B then ...

    ni enako ugodno kot

    IF B then IF A then ...

    Manj verjetni pogoj naj bo spredaj.

    Tudi zato, fiksni source ni optimalen.


    > Pol bi pa vse te razrede v mnozico dal in bi z eno zanko sel skozi to mnozico.

    Boljš, če je množica manjša.

    > Ce pade zadnji kmet na sahovnici, v programu ne bo nobene vrstice vec povezane z njim.

    Samo, če so bo spremenil source. Potem je res ne bo.

    :)
    Man muss immer generalisieren - Carl Jacobi

    Phil ::

    Boljš, če je množica manjša
    Kako pa je lahko število elementov v množici manjše kot število figur na šahovnici?
    LP

    rasta ::

    Vse skompilira in preskusi kako se bo Deseti Brat komprimiral.

    Če jaz prav razumem ta "čudežni programator", je to nek evolucijski algoritem, ki izbolšuje program?
    Nekakšen jezik pete generacije, kjer samo napišeš REPORT THE BASE SALARY AND YEARS OF SERVICE BROKEN DOWN BY THE COUNTRY AND CITY FOR CALECLERKS IN GORENJSKA AND PRIMORKSA. in potem compajler naredi optimizirano source kodo?

    Takoimenovane redke matrike vsebujejo malo informacije. Pomeni da moraš delat velik promet z read, da prebereš kar te zanima.

    Sploh ni nujno, da je ta bufer matrika, lahko je link-list ali hash table, kjer za vsako vzeto figuro sprostiš tudi pomnilnik.
    Sicer pa naj bi ta program spreminjal oz. kompajlov med run-time? 8-O In to samo, da bi bil hitrejši?
    Tlele men logika malo zašteka. Daj kakšen link, da si malo razjasnim tole.

    Z zgolj ročnim pisanjem sorsov ne moreš narediti niti zdaleč toliko, kot z uporabo programov za kreacijo sorsov programov.

    Vsekakor. Velikih aplikacij danes nihče več ne piše v asseblerju (razen najbolj delikatnih zadev). Koda višjih programskih jezikov pa gre še skozi razne optimizerje in se najprej prevede v assembler (ali še prej v kakšno vmesno stopnjo). Vprašanje pa je kvaliteta programa za "kreacijo sors programov". Nišem pa še videl takega compajlerja, ki bi znal bolje, kot izkušen programer. Ampak v prihodnosti zagotovo kaj takega bo.

    Če sta Y in Z oba nič, je za X bolje uporabljati skalar vrednosti X, kot pa vektor (X,0,0).

    Problem pač razbiješ na mnjše procedure, in vsaka potem obdeluje svoj skalar, kličeš pa samo tiste, ki so potrebne. Ali pa imaš neko univerzalno enačbo, ki jo potem po potrebi oklestiš in okleščeno uporabljaš do nadaljnega.
    In ta "čudežni compajler" oz. AI naj bi potem glede na vneseno dato, naredila program, ki bi znal delati samo s tem (on the fly)? In koliko "hitrosti" bi to pobralo?

    Res ne razumem, v čem je tle fora. Nek super optimizator, ki je toliko pametnejši od programerja, da lahko pregleda več možnih situacij in kodo temu primerno optimizira? In ti imaš delujoč primer?

    Thomas ::

    cman

    > Kako pa je lahko število elementov v množici manjše kot število figur na šahovnici?

    Število figur na šahovnici pada. Kadarkoli neka figura izgine iz šahovnice, se mora odstraniti tudi iz kode.

    Kaj ti bo:

    Case Kmet
    ...............
    Case Konj
    ...............
    Case Tekač
    ...............
    Case Trdnjava
    ...............


    - če tekačev ni več?

    Seveda pa v začetku ta Case potrebuješ, saj tekači so.

    :)
    Man muss immer generalisieren - Carl Jacobi

    Thomas ::

    Jah pri vsem kar sem rekel, ostanem.

    Se pa tukaj da povedati še mnogo več.

    Nekaj je, kar počnem jest, nekaj je, kar počnejo drugi.

    Novamente.

    Jest sem zlo SEED usmerjen. Ne samo za GAI (G=General) - pač pa tudi za bolj preproste reči.

    Narediti torej maximalno tisoč linij kode, ki potem napiše(jo) eno večjo kodo.

    Po moje bi morali "vsi" tako delat. Želod in hrast. Hrast je težko narest - mogoče je želod lažje. Sem pa še zelo osamljen v teh pogledih. ;)

    SEED princip je pogruntal Eliezar Yudkovsky. Le da bo on z njim stesal FAI. Jest pa (zaenkrat) probavam na manjših zadevah, da vidim če deluje. :D

    8-)

    Man muss immer generalisieren - Carl Jacobi

    Thomas ::

    Se pa spodobi da povem, da implementira tele reči 95% nevone - in ne jest sam.

    :)
    Man muss immer generalisieren - Carl Jacobi

    napsy ::

    ne, sam men se pa avstralija ful zanimiva zdi. res da je bol malo naseljena. sam to je krivo podnebje. tm najdeš ful ene zanimive žvali... (če razumete, kaj mislim s tem postom)
    "If you die, you die. But when you live you live. There is no time to waste."

    Thomas ::

    octo

    Heh, ti predvidevaš da jest bluzim. Potem si pa misliš, zakaj ne bi še ti nekoliko. :D

    Man muss immer generalisieren - Carl Jacobi

    DavidJ ::

    Thomas, pripravi se! Ludizem nove dobe se bo vsak cas zacel! :D
    "Do, or do not. There is no 'try'. "
    - Yoda ('The Empire Strikes Back')

    Thomas ::

    hornet

    Zelo prav imaš!

    Kaj imam proti ludistom? Žal (še) nič učinkovitega. >:D
    Man muss immer generalisieren - Carl Jacobi

    Phil ::

    > Kompleksnejsih od sebe IMO ne more (pa ne mislim dolzine..). Ali pac?
    Lahko. Celo praviloma ga.


    Kaj pa so v takem primeru vhodni argumenti? Če je to cel program (zapisan v nekem tvojem lastnem jeziku), pol ne mores reci, da ga je program naredil, ampak si ga ti. A nam lahk pokazes vsaj en del teh argumentov, s katerimi tvoj program sestavi das urnik maker™.

    tha_man ::

    Thomas, praviš da je rokodelstvo na zatonu. Do sedaj tvoji primeri ne počnejo drugega kot rešujejo logične/matematične probleme. Kako bi ti s tem tvojim orodjem generiral npr. 3D pogon, user interface ali karkoli ki ni povezano z neke vrste AI? Rokodelstvo je še daleč od zatona :D

    Poleg tega nekateri ne programirajo samo zato ker morajo ali jim je to služba, ampak tudi iz čistega veselja. To pa lahko enačiš z umetnostjo - nardiš nekaj zase in je pri tem bolj pomemben potek kot sam rezultat. Seveda *je* pomemben tud rezultat, ampak tu ni bistvena maksimalna učinkovitost programa (kot pri glasbi npr. ni bistvena tehnična dovršenost), ampak predvsem to da je prog takšen kot sam hočeš (spet podobnost z glasbo).


    Sm ona ideja s semaforji mi je pa zelo všeč ;)


    Aha, kar se stila programiranja tiče: jaz programiram predvsem v Delphiju (C/C++ je preveč 'geek' :D )
    - vsi zamiki so 2 znaka
    - funkcije/procedure imajo vsako prvo črko besede veliko, brez podčrtajev
    - tipi imajo prvo črko veliko
    - spremenljivke so 100% lowercase, s podčrtaji med besedami
    - konstante so 100% uppercase, s podčrtaji med besedami
    - za imena uporabljam slovenščino in angleščino, odvisno kaj se mi zdi v danem trenutku bolj primerno
    - pa še kar precej malenkosti, ampak ne bom vsega našteval.
    (c) 1982 Sinclair Research Ltd

    Thomas ::

    Pravzaprav smo pri Peryjevem argumentu. Da mora biti povzročitelj kompleksnejši od svojega učinka.

    Navidez je res - ampak že možgani so bolj komplicirani kot DNA, ki jih je povzročila.

    Pa že DNA je bolj zapletena od molekul, ki so jo - povzročile.

    Ampak naj bom konkreten:

    > A nam lahk pokazes vsaj en del teh argumentov, s katerimi tvoj program sestavi das urnik maker™.

    Lahko.

    Brute force program, ki sestavi urnik za 3 oddelke je preprost.

    Potem ga pa "Maker" random opremlja z exiti, ifi, gotoji .. - in ni več brute force. Seveda ga ubije, če njegov rezultat ni enak rezultatu brute forca. Ubije ga tudi, če se ne uvrsti med TOP 100 po hitrosti. Maker mu potem veča število oddelkov ... itd.

    Rezultat ni enostaven.

    Urniki pa .. okay. Zelo okay.

    :)


    Man muss immer generalisieren - Carl Jacobi

    mnlkpo ::

    Thomas: ne vem, če bom povedal kaj novega, razumel sem takole:

    1. dobiš nek problem in veš kakšna mora biti (idealna) rešitev
    2. zapraviš x ur, da si izmisliš nek algoritem, ki reši problem, ali se dovolj približa rešitvi
    3. v glavi/na papirju se alg. zdi ok in ga precediš v kodo
    4. če prog. ne dela tako hitro/natančno kot si želel, goto 2

    Ti pa napišeš program, ki z genetskim alg. išče boljše in boljše algoritme, torej računalnik namesto tebe ponavlja korake 2,3,4, jap?

    Za iskanje urnika - mogoče ni potrebno napisati brute-force programa, ni dovolj samo neka brihtna funkcija, ki oceni trenutno stanje urnika?

    Thomas ::

    Napisati brute force je (često in tudi v tem primeru) - preprosto. Maker zanj pa tudi.

    (Digitalna) evolucija pa potem dela svoje "čudeže" na kodi.

    (1200 urnikov za šolo s 25 oddelki medtem ko sem spal.)

    S tem (se) pa evolucija še ni končala. Postprodukcija (urnika) je tudi pravšnja naloga zanjo. Denimo da nismo zadovoljni z razporeditvijo praznih ur pri učiteljih pri povsem legalnem urniku. (Učenci jih tako ali tako ne smejo imeti). "Rečemo" da bi jih več in digitalna evolucija potem pusti preživeti samo tistim urnikom, ki imajo več lukenj za učitelje kot predniki. Ali pa obratno. Kamor pač usmerimo ta selekcijski pritisk.

    :)

    Man muss immer generalisieren - Carl Jacobi

    mspiller ::

    V bistvu te zastopim Thomas. Jaz sem delal zelo podobne stvari, tako da sem napisal en programcek, ki mi je zgeneriral ponavadi del kode, za katero bi porabil drugace dosti vec casa. To sem uporabil tudi pri generiranju form, recimo kakih vprasalnikov, kjer imas vedno isto strukturo. Ti helper programi so vsaj pri meni bili vedno strogo specificni. En cist simpl primer moras nastaviti 200 parametrov na eno vrednost s pomocjo ene funkcije. Zdej lahko 200 copy-paste. Al pa napises prog k ti zgenerira 200 vrstic, kjer so ze vse vrstice taksne kot morajo biti (2 min dela namesto 10 min dela). tuki da sele copy--paste :).

    Evolucijski programi so gut, ce mas zadosti casa za izvedbo le teh. Development time vs. execution time.

    Glede sahovskega problem pa takole. Ce recompajlas program traja vsekakor prevec casa. Pika. Lahko pa une case on the fly spreminjas. Spreminjas binarno kodo programa. Enostavno mas strukturo if-ov. Potem pa te if-e menjas ko ti zmanjka npr konjev z goto ukazi vse v asemblerju direktno v memoriju, medtem ko se program izvaja... Nekje moras samo imeti doloceno (memory space) za kero figuro se kje kaj preverja. Lahko seveda tudi dinamicno zgeneriras celotno case strukturo v asemblerju (da nimas rabitega case)

    Monster: Procesorji so vedno hitrejsi, samo kaj ti pomaga enkrat hitrejsi processor ce imas algoritm, ki je O(n) = n^3 pri velikih n.

    Thomas ::

    mspiller

    Če predvidevam, da lahko hitro izgubim trdnjavo - in bom imel le še kralja, damo, 4 kmete lovski par, nasprotnik pa še kmeta več - se mi splača na 8. procesorju zagnati čiščenje sourca (trdnjav) in recompile. IMO.

    :)

    tha_Man

    > Kako bi ti s tem tvojim orodjem generiral npr. 3D pogon

    Vzameš enega "butastega" in ga spustiš skozi evolucijo. Ne rečem da je enostavno. Ampak tudi sicer 3D pogon ni ravno enostavna reč.


    > Poleg tega nekateri ne programirajo samo zato ker morajo ali jim je to služba, ampak tudi iz čistega veselja

    Se strinjam. Ampak formula ena je (še) bolj zanimiva od peš teka. Na nek drug nivo portaš zabavo in jo imaš še več. Why not?


    :)
    Man muss immer generalisieren - Carl Jacobi

    virtual_reality ::

    Thomas: a imas mogoce kak link, kjer je konkretno kak source code o zadevi o kateri pises. Zadeva se mi zdi zelo kul in uporabna, zato bi zelel malo eksperimentirati s tem.
    "C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg."

    Thomas ::

    Govorijo in nakladajo nekateri o tem evolucijskem programiranju ogromno. (Kot tudi jest).

    Da bi pa kje dobil kakšen uporaben sors - pa bolj težko. Poslovna tajna ipd.

    Ker hudič se skriva v podrobnostih, ki jih v nekaj letih človek skapira, če te reči dela. Najprej poskuša delat - pa ne gre.

    Namreč - prva ovira na katero naletimo je zatik. Evolucija se pimpla okrog nekaterih obstojnih oblik - krokodilov - ki se ne premaknejo nikamor. Tukaj obupa večina tistih, ki se jim že prej ni "zdelo škoda CPU za tak beden način" - glej više. :D

    Uspešen source mora polel zatika premagati še nekaj težav - in "sorsov ni".

    :)

    Poišči pa Johna Kozo!


    Man muss immer generalisieren - Carl Jacobi

    CWIZO ::

    Imena funkcij in spremenljivk začnem z Veliko :

    $NekiDruzga

    function Neki ( $neki ) {


    Pri funkcijah puščam space :


    if ( isset ( $neki ) ) {

    blblblbl


    Ker se mi tko velik bl pregleden zdi, velik jih uproablja tkole :

    if( isset($neki) ) {

    jest pa zmeri space dam vmes.

    Imena spremenljivk in funkcij pišem v angleščini, in tut komentarje v večini v angleščini pišem..
    hancic.info
    I can't uninstall it, there seems to be some kind of "Uninstall Shield"...
    «
    1
    2


    Vredno ogleda ...

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

    Thomasov problem (strani: 1 2 3 )

    Oddelek: Znanost in tehnologija
    1319480 (5297) Pixy222
    »

    Digitalna evolucija (strani: 1 2 3 426 27 28 29 )

    Oddelek: Znanost in tehnologija
    141673464 (23633) pietro
    »

    It means business (strani: 1 2 3 4 5 6 7 8 )

    Oddelek: Znanost in tehnologija
    37427251 (13250) Thomas
    »

    Petaflopsu naproti (strani: 1 2 3 )

    Oddelek: Novice / Procesorji
    1058216 (8216) Marjan
    »

    Izbirni predmeti

    Oddelek: Šola
    301660 (1232) Mercier

    Več podobnih tem