Najdi forum

file format

Zanima me kako nastanejo datoteke različnih formatov (končnic)?

Ali to enako izdelajo programerji, tako da izvorno kodo prevedejo, vendar ali nimajo prevedene kode, spremenjene v program vse končnico .exe (izvršilna datoteka).

Torej kako nastanjejo različni datotečni formati, ki nimajo .exe končnic ampak druge vrste končnic?
Ali s pomočjo compilerja ali brez njega?

Torej v bistvu kakšna je razlika med programom in nekim standardnim datotečnim formatom?

hvala za pojasnilo

Uhh, obstaja cel kup različnih vrst datotek. Izvršne, podatkovne, tekstovne,…

Prave izvršne (exe, com) naredi compiler (prevajalnik) ali interpreter. Torej programer napiše kodo v svojem programskem jeziku, jo prevede in rata izvršna datoteka. V ta segment sodijo tudi knjižnice, šoferji ipd (dll, vxd,…)
Tekstovne datoteke so datoteke, ki jih prosto urejaš z text editorjem, v njih pa je lahko marsikaj, od navadnega teksta, do skript, ki jih prav tako lahko poganjaš.

Podatkovne datoteke pa so tiste, katere vsebujejo neke podatke, ki jih drug program zna pravilno interpretirat. Le te ponavadi generira program, ki je namenjen obdelavi teh vrst podatkov. Npr če imaš bazo podatkov, ti vnašaš le podatke, program v katerega vnašaš, pa kreira datoteko, ki jo bojo vsi programi, ki “zastopijo” to vrsto datoteke znali prikazat.
Tako je večina datotek, ki jih imamo po mlinčkih verjetno podatkovnih, pa naj se v njih nahajaja glasba, filmi, slike, preglednice, stisnjeni podatki ali pa čisto interni podatki, ki jih posamezen program potrebuje (ponavadi binarne datoteke)

hmmm napisal:

>
> Podatkovne datoteke pa so tiste, katere vsebujejo neke podatke,
> ki jih drug program zna pravilno interpretirat. Le te ponavadi
> generira program, ki je namenjen obdelavi teh vrst podatkov.
> Npr če imaš bazo podatkov, ti vnašaš le podatke, program v
> katerega vnašaš, pa kreira datoteko, ki jo bojo vsi programi,
> ki “zastopijo” to vrsto datoteke znali prikazat.

Torej če te prav razumem določen tip datoteke izdela isti program, ki tudi obdeluje določene podatke, ki jih tak tip datoteke vsebuje?

Torej je v končni fazi določen tip datoteke, ki jo izdela program posledica prevedene kode s prevajalnikom? Ali pa ni nujno tako?

hvala

kuku napisal:

> Torej če te prav razumem določen tip datoteke izdela isti
> program, ki tudi obdeluje določene podatke, ki jih tak tip
> datoteke vsebuje?

No ja recimo tako nekako, čeprav ni čisto tako.
Poglejva kar na primeru.
Imaš wordovo datoteko, ki si jo napisal v wordu. Shraniš jo na disk in jo zopet lahko odpreš z wordom. Ker je ta datoteka standardna in je format datoteke določen, jo lahko odpreš ali uvoziš tudi v kakšen drug program, npr v urejevalnik od Open Offica ali Word Perfect, če pa sam poznaš format datoteke pa lahko tudi sam napišeš program, ki bo znal prikazati podatke iz te wordove datoteke.

Nato poglejva npr. mp3 datoteko. Obstajajo kompresorji (del kodeka), ki drugačen zvočni zapis spremenijo v mp3 format. Tako datoteko odpreš z predvajalnikom ali urejevalnikom, ki “zastopi” tak tip datoteke. In tu so to čisto drugi programi, kot tisti, s katerimi je bila datoteka ustvarjena.

Poglejva še sliko, npr jpg. Ti slikaš z digitalnim fotoaparatom in le ta(oz software, ki je v njem) vse tiste pikice zapiše v jpeg standardu. Ti tako datoteko zopet pregleduješ z drugim programom, ki zna jpeg sliko prikazati.

>
> Torej je v končni fazi določen tip datoteke, ki jo izdela
> program posledica prevedene kode s prevajalnikom? Ali pa ni
> nujno tako?

Iz zgornjega pisanja je razvidno, da ni nujno tako. Datoteko lahko ustvari tudi drug program, ki pozna standard datoteke in ni nujno da teče na računalu.
Programi pa lahko berejo ali zapisujejo tudi nestandardne datoteke in jih znajo uporabljati za svoje delo le oni sami. Npr podatki iz telefonskega imenika so zapisani v neki nestandardni obliki in do njih zna (načeloma) dostopati le program TIS. Ali pa neka igrica ima cel kup datotek, v katerih se nahajajo podatki za izris svetov, glasba in še mnogo stvari in ti podatki so smiselni le za to določeno igrico.

> hvala

prosim

hmmm napisal:

> Imaš wordovo datoteko, ki si jo napisal v wordu. Shraniš jo na
> disk in jo zopet lahko odpreš z wordom. Ker je ta datoteka
> standardna in je format datoteke določen, jo lahko odpreš ali
> uvoziš tudi v kakšen drug program, npr v urejevalnik od Open
> Offica ali Word Perfect, če pa sam poznaš format datoteke pa
> lahko tudi sam napišeš program, ki bo znal prikazati podatke iz
> te wordove datoteke.

No pa recimo da sam napišeš tak program, ki bi zapisal podatke v obliki wordove datoteke.

Ali je v tem primeru pa nujen prevajalnik ali tudi ne?

Kakšen program približno pa bi to naprimer bil?

hvala

kuku napisal:

>
> No pa recimo da sam napišeš tak program, ki bi zapisal podatke
> v obliki wordove datoteke.

No pa dajmo 🙂

> Ali je v tem primeru pa nujen prevajalnik ali tudi ne?

To pa ja (no so tudi varjante, kjer ne, ampak v 99% pa ja)

> Kakšen program približno pa bi to naprimer bil?

To bi bil približno tak program, ki bi odprl wordowo datoteko, pogledal če je to res wordova datoteka, izluščil kaj so informacije o datoteki (npr kak header) in kateri so podatki za prikazat in te podatke na koncu namal na zaslon ali tiskalnik.

Ali mogoče poznaš kakšen link do kakšne free izvorne kode, ki bi naredila približno to kar je napisal hmmm?

hmmm napisal:

> To bi bil približno tak program, ki bi odprl wordowo datoteko,
> pogledal če je to res wordova datoteka, izluščil kaj so
> informacije o datoteki (npr kak header) in kateri so podatki za
> prikazat in te podatke na koncu namal na zaslon ali tiskalnik.

hvala

kuku napisal:

>
> Ali mogoče poznaš kakšen link do kakšne free izvorne kode, ki
> bi naredila približno to kar je napisal hmmm?
>

Huh, kar je hmmm napisal se sliši zelo enostavno, ampak v resnici je to kar precej zakomplicirana zadeva, pa čeprav bi od nekje samo potegnil izvorno kodo. Poznati moraš saj malo osnov, poznati moraš jezik in okolje, v katerem je koda napisana pa imaš še lahko probleme pri prevajanju.

No pa če si ravn ože vprašal, tule je en tak primer
za doc reader za palm.

Za ta primer pa potrebujem malo več časa. 🙂

Razloži mi še eno zadevo.

Recimo omenjeni primer teče v C prevajalniku.

Sedaj me pa zanima, če imam za prevesti par vrstic napisanih v Javi.

Ali se to lahko stori v C prevajalniku ali moram za tistih par vrstic namestiti prevajalnik za Javo.
Pa mogoče še to vprašanje, na download strani za free Javo prevajalnik piše, da bo zadeva delovala edino v primeru, če imamo predhodno na računalniku že nameščen C Prevajalnik.
Zakaj pa sedaj to?
Ali sta tedva programska okolja povezana?

hvla

Se mi je zdelo, da sva za začetek vzela pretežak primer, tko da si ti kar čas vzami in ga preštudiraj 🙂

Java in C(C++) sta v bistvu kar podobna jezika, ampak vseeno ne toliko, da bi lahko imela skupen prevajalnik.

V C(C++) napišeš kodo, jo prevedeš v izvršno datoteko (native code) in jo zaženeš na platformi, za katero je prevajalnik napisan. Se pravi dobiš pravo izvršno datoteko, ki je prevedena za windows platformo in jo lahko zaženeš le tu.

Java je v osnovi bila narejena drugače. Ko napišeš kodo in jo prevedeš, sicer dobiš izvršno datoteko (bytecode), ki pa je ne moreš kar tako simpl zagnati. Za zagon potrebiješ še JIT (just in time) prevajalnik, pri javi bolj znan kot JVM (java virtual machine). Se pravi, izvorno kodo java prevajalnik prevede v java byte kodo, nato pa jo JVM prevede v pravo izvršno (native) kodo in izvede (brez da bi jo zapisoval v datoteko, zato JIT).
S tem pridobimo eno luštno zadevico, ki je bila že od vsega začetka prednost jave. JVM so napisali za veliko različnih platform in procesorjev, od windowsov na X86 do zelo exsotičnih zadev.
Ok, sliši se lepo, vendar vseeno potrebujemo JVM, ki nam zaseda prostor na disku, dostikrat pa se pozna tudi pri hitrosti, saj je kodo v bistvu treba še enkrat prevajati(JIT).
Zato so razvili Java native prevajalnike, ki java kodo prevede v pravo native kodo, ki jo lahko zaženemo brez JVM. Spet se sliši lepo, a zgubili smo prenosnost. Java native prevajalnik prevede kodo tako kot c prevajalnik, se pravi za točno določeni OS in procesor.

No in zdaj končno odgovor.
Večino Java native prevajalnikov java kodo najprej prevede v c kodo in to na koncu v native izvršno kodo. In zato potrebuješ v večini primerov tudi c prevajalnik.

Kaj bolj jasno?

jasno 🙂

Forum je zaprt za komentiranje.

New Report

Close